Hallo,
ich versuche mich gerade daran, aus einer aktuellen Auerswald-Telefonanlage über deren API
Auerswald - Beschreibung Auerswald API
aus der Anruferliste der Anlage zu bedienen, um sie im QC zu visualisieren. Diese wird im JSON-Format generiert; für den Abruf ist eine Authentifizierung via Digest erforderlich.
Hürde Nr. 1:
Auerswald erfordert für die Authentifizierung Digest. Da der HS/FS dies nicht unterstützt, habe ich einen kleinen Webserver mit PHP und Curl aufgesetzt, der die Abfrage durch den HS entgegen nimmt und damit an der Auerswald Anlage die Daten abholt. Bis dieses funktionierte, traf ich auf
Hürde Nr. 2:
Der von mir verwendete Webserver verwendet Basic Authentification. Das funktioniert mit dem HS auch über Port 80, schlägt aber über SSL / Port 443 fehl, obwohl der HS das eigentlich können söllte. Nun ja - da der interne Webserver nach außen nur über SSL 443 erreichbar ist, frage ich also intern nun mit Port 80 ab. Damit am ich zu
Hürde Nr. 3:
Auerswald verwendet innerhalb einzelner JSON-Objekte Doublequotes für die Key-/Value-Pärchen, als z.b. {"name":"wert", ... }.
Das mag der HS leider nicht, da er beim Einlesen des JSON-Objektes nach dem ersten Doublequote aussteigt, da dies intern wohl seine eigene Stringbegrenzung sein dürfte. Also habe ich im Experten (verwendete Version 4.0) unter
Projekteinstellungen - Netzwerk - IP-Telegramme - Umwandlungstabelle
0x22 zu 0x27 (Doublequotes zu Singlequotes) gewandelt.
Bis auf Umlaute funktioniert nun die Zerlegung des JSON-Objektes im Logikeditor.
Ich dachte nun daran, eigene Logikmodule zu erstellen, die die jeweiligen JSON-Objekte passend zerlegen.
Im ersten Schritt wäre da eine Wandlung der 2Byte UTF8-Zeichen in HTML-Entities erforderlich. Entsprechend der hier vorhandenen Doku
HowTo: Logikbaustein erstellen - HS/FS - Lexikon - KNX-User-Forum
Beschreibung der Variablen in der HS-Logik - HS/FS - Lexikon - KNX-User-Forum
wollte ich den vorhandenen Baustein 19872_KonvUml.hsl ein wenig für meine Zwecke umarbeiten:
#5000|"Text"|Typ(1-4)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
5000|"debug\utf82uml"|0|1|"Text UTF8"|1|"Text HTML-Entity"
#5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
5001|1|1|0|1|0
#5002|Index Eingang|Default Wert|Text
5002|1|""|1
#5003|Speicher|Initwert|Remanent
5003|1|""|0
#5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|text
5004|1|0|0|1|1
#5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
5012|0|""|"__import__('string').replace(EN[1],'\u00E4','ä')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00F6','ö')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00FC','ü')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00C4','Ä')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00D6','Ö')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00DC','Ü')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00DF','ß')" |""|0|0|1|0
5012|0|""|"SN[1]"|""|1|0|0|0
Leider ohne Erfolg. Ergebnis nach Durchlaufen des Bausteines ist weiterhin \u00FC (ü - so wie es im Eingang anlag).
Damit wäre ich jetzt bei
Hürde Nr. 4
über die ich bislang nicht springen konnte
Für einen Wink mit dem Zaunpfahl wäre ich echt dankbar.
Beste Grüße
Torsten
ich versuche mich gerade daran, aus einer aktuellen Auerswald-Telefonanlage über deren API
Auerswald - Beschreibung Auerswald API
aus der Anruferliste der Anlage zu bedienen, um sie im QC zu visualisieren. Diese wird im JSON-Format generiert; für den Abruf ist eine Authentifizierung via Digest erforderlich.
Hürde Nr. 1:
Auerswald erfordert für die Authentifizierung Digest. Da der HS/FS dies nicht unterstützt, habe ich einen kleinen Webserver mit PHP und Curl aufgesetzt, der die Abfrage durch den HS entgegen nimmt und damit an der Auerswald Anlage die Daten abholt. Bis dieses funktionierte, traf ich auf
Hürde Nr. 2:
Der von mir verwendete Webserver verwendet Basic Authentification. Das funktioniert mit dem HS auch über Port 80, schlägt aber über SSL / Port 443 fehl, obwohl der HS das eigentlich können söllte. Nun ja - da der interne Webserver nach außen nur über SSL 443 erreichbar ist, frage ich also intern nun mit Port 80 ab. Damit am ich zu
Hürde Nr. 3:
Auerswald verwendet innerhalb einzelner JSON-Objekte Doublequotes für die Key-/Value-Pärchen, als z.b. {"name":"wert", ... }.
Das mag der HS leider nicht, da er beim Einlesen des JSON-Objektes nach dem ersten Doublequote aussteigt, da dies intern wohl seine eigene Stringbegrenzung sein dürfte. Also habe ich im Experten (verwendete Version 4.0) unter
Projekteinstellungen - Netzwerk - IP-Telegramme - Umwandlungstabelle
0x22 zu 0x27 (Doublequotes zu Singlequotes) gewandelt.
Bis auf Umlaute funktioniert nun die Zerlegung des JSON-Objektes im Logikeditor.
Ich dachte nun daran, eigene Logikmodule zu erstellen, die die jeweiligen JSON-Objekte passend zerlegen.
Im ersten Schritt wäre da eine Wandlung der 2Byte UTF8-Zeichen in HTML-Entities erforderlich. Entsprechend der hier vorhandenen Doku
HowTo: Logikbaustein erstellen - HS/FS - Lexikon - KNX-User-Forum
Beschreibung der Variablen in der HS-Logik - HS/FS - Lexikon - KNX-User-Forum
wollte ich den vorhandenen Baustein 19872_KonvUml.hsl ein wenig für meine Zwecke umarbeiten:
#5000|"Text"|Typ(1-4)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
5000|"debug\utf82uml"|0|1|"Text UTF8"|1|"Text HTML-Entity"
#5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
5001|1|1|0|1|0
#5002|Index Eingang|Default Wert|Text
5002|1|""|1
#5003|Speicher|Initwert|Remanent
5003|1|""|0
#5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|text
5004|1|0|0|1|1
#5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
5012|0|""|"__import__('string').replace(EN[1],'\u00E4','ä')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00F6','ö')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00FC','ü')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00C4','Ä')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00D6','Ö')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00DC','Ü')" |""|0|0|1|0
5012|0|""|"__import__('string').replace(SN[1],'\u00DF','ß')" |""|0|0|1|0
5012|0|""|"SN[1]"|""|1|0|0|0
Leider ohne Erfolg. Ergebnis nach Durchlaufen des Bausteines ist weiterhin \u00FC (ü - so wie es im Eingang anlag).
Damit wäre ich jetzt bei
Hürde Nr. 4
über die ich bislang nicht springen konnte

Für einen Wink mit dem Zaunpfahl wäre ich echt dankbar.
Beste Grüße
Torsten
Kommentar