Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlautwandlung als Logikmodul

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Umlautwandlung als Logikmodul

    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

    #2
    Ich bin kein Python-Fachmann, aber ich denke, der Baustein matched einfach Deinen Suchstring nicht.

    Wahrscheinlich wirst Du den Backslash schon einmal maskieren müssen, d.h. im Quelltext doppelt angeben "\\", da er eine besondere Bedeutung hat. Ansonsten verwende einfach einmal eine Phyton-Shell auf dem PC, um zu testen, ob das mit dem String-Replacement passt. Das geht schneller, als immer wieder ein Projekt auf den HS hochzuladen. Der Baustein selbst sieht mir soweit in Ordnung aus.

    Gruß
    Hartmut

    Kommentar


      #3
      Hallo Hartmut,

      danke für Deinen Hinweis. Habe nun python 2.7 lokal am laufen und stelle fest, dass das konvertieren in UTF8 recht einfach ist.
      Wenn ich auf der Konsole

      test = u'K\u00FCche'
      print test

      eingebe, bekomme ich als Ergebnis

      Küche

      Vor den zu konvertierenden String muss also "nur" ein "u" vorangestellt werden.

      Ich werde mal sehen, wie ich das in die Logic bekomme.

      Gruß

      Torsten

      Kommentar

      Lädt...
      X