Da ja irgendwie niemand einen Verwendungszweck für die nun schon des öfteren erwähnte Logikfunktion KNXUF_urllib hatte, hab ich mir gedacht mal ein kleines Beispiel dafür zu schreiben.
Die eigentliche Logikfunktion wird nur beim starten in die Variable SN[1] geladen und kann dann einfach über SN[1].open verwendet werden.
z.B. in diesem Beispiel ein
wird von Google's Wetter API das Wetter für den an E1 angebenen Ort geholt (Ortname oder PLZ). Über EN[2] kann ein Header an die Googleserver gesendet werden (Accept Language) der sagt welche Sprache gewünscht ist(2 Zeichen Länderkürzel - en/de/fr/es).
Die Seite wird dann sowohl zum Debug an Ausgang 9, als auch auf SN[2] zur weiteren Verarbeitung gesendet.
Danach folgt eine (simple) Regex mit der die Inhalte als optionale Angaben in sogenannte Named-groups geteilt. Der Vorteil der optionalen Angaben ist, dass wenn ein Teil der Informationen fehlt oder anders als erwartet sind, schlägt die Abfrage NICHT fehl wie bei der HS Webabfrage.
Wenn ein bischen Zeit ist, ist angedacht das ganze 2 gestaffelt zu machen. Die erste Abfrage per urllib im Baustein holt erstmal vom KNX-Forenserver eine gültige Regex und führt erst danach die eigentliche Webabfrage durch. Versehen mit einer Kontrolle ob der Regex erfolgreich ist wäre auch möglich bei Versagen das aktuelle Regexmuster erneut vom Forenserver zu laden, und vielleicht auch diverse Info's mit zu übermitteln.
Dann könnte auf Forenserver Seite beim erhalten mehrerer dieser FAILED Meldungen eine Benachrichtigung an die Betreuer der Webabfrage geschickt werden, sodass diese das Regexmuster anpassen und die Abfrage nach kurzer Zeit wieder automatisch überall funktioniert. -- Ohne Experten und HS Neustart --
Die Werte an E1 und E2 können natürlich zur laufzeit geändert werden und aktualisieren sich sofort.
Die eigentliche Logikfunktion wird nur beim starten in die Variable SN[1] geladen und kann dann einfach über SN[1].open verwendet werden.
z.B. in diesem Beispiel ein
Code:
5012|0|"(EC[1] or EC[2]) and len(EN[1])>0"|"SN[1].open('http://www.google.com/ig/api?weather='+EN[1],lang=EN[2])"|""|9|0|2|0
Die Seite wird dann sowohl zum Debug an Ausgang 9, als auch auf SN[2] zur weiteren Verarbeitung gesendet.
Danach folgt eine (simple) Regex mit der die Inhalte als optionale Angaben in sogenannte Named-groups geteilt. Der Vorteil der optionalen Angaben ist, dass wenn ein Teil der Informationen fehlt oder anders als erwartet sind, schlägt die Abfrage NICHT fehl wie bei der HS Webabfrage.
Wenn ein bischen Zeit ist, ist angedacht das ganze 2 gestaffelt zu machen. Die erste Abfrage per urllib im Baustein holt erstmal vom KNX-Forenserver eine gültige Regex und führt erst danach die eigentliche Webabfrage durch. Versehen mit einer Kontrolle ob der Regex erfolgreich ist wäre auch möglich bei Versagen das aktuelle Regexmuster erneut vom Forenserver zu laden, und vielleicht auch diverse Info's mit zu übermitteln.
Dann könnte auf Forenserver Seite beim erhalten mehrerer dieser FAILED Meldungen eine Benachrichtigung an die Betreuer der Webabfrage geschickt werden, sodass diese das Regexmuster anpassen und die Abfrage nach kurzer Zeit wieder automatisch überall funktioniert. -- Ohne Experten und HS Neustart --
Die Werte an E1 und E2 können natürlich zur laufzeit geändert werden und aktualisieren sich sofort.
Kommentar