Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonderzeichen korrekt darstellen ioBroker -> EDOMI

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

    Sonderzeichen korrekt darstellen ioBroker -> EDOMI

    Ich leite DWD-Wetterwarnungen per ioBroker an Edomi wie folgt weiter (per Fernzugriff).

    2018_12_16_09_06_05_objects_ioBroker_Opera.png

    2018_12_16_09_35_51_javascript_ioBroker_Opera.png

    Die Weiterleitung zu EDOMI funktioniert auch, nur werden Umlaute bzw. Sonderzeichen nicht korrekt dargestellt ( in diesem Fall " ° " als "?"). Offensichtlich werden ISO 8859-1 codierte Zeichen als UTF-8 dargestellt und Alles über ASCII-CODE 127 abgeschnitten und durch "?" ersetzt.

    2018_12_16_10_10_13_Window.png
    Beispiele:

    2018_12_16_08_53_51_EDOMI_Administration_Opera.png
    2018_12_16_09_12_46_EDOMI_Administration_Opera.png

    Mein Versuch war, dies über "mb_convert_encoding" ISO-8859-1 -> UTF-8 (und umgekehrt !) zu Lösen:

    2018_12_16_08_54_50_EDOMI_Administration_Opera.png

    ... Leider ohne Erfolg, der Ausgabetext ist unverändert- offensichtlich ist es so, dass, wenn schon einmal die Informationen von ASCII > 127 abgeschnitten sind, können diese auch nicht mehr wiederhergestellt werden.

    Wer kann mir weiterhelfen und hat eine Idee ?

    Gibt es evtl. eine Möglichkeit, schon beim Senden aus ioBroker das Format ISO-8859-1 vorzugeben ?

    Danke !!!
    Zuletzt geändert von ak68; 16.12.2018, 10:23.

    #2
    Hallo Andreas,

    ich bin mir nicht sicher ob ich es richtig verstanden habe, was wo ausgegeben wird und was wo ankommt bzw. falsch dargestellt wird, aber hilft utf8_encode(string) nicht ?

    https://www.w3schools.com/php/func_xml_utf8_encode.asp
    Danke und LG, Dariusz
    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

    Kommentar


      #3
      Zitat von coliflower Beitrag anzeigen
      Hallo Andreas,

      ich bin mir nicht sicher ob ich es richtig verstanden habe, was wo ausgegeben wird und was wo ankommt bzw. falsch dargestellt wird, aber hilft utf8_encode(string) nicht ?

      https://www.w3schools.com/php/func_xml_utf8_encode.asp
      Hallo Dariusz,

      ich glaube, der String kommt schon falsch (UTF-8) codiert von ioBroker (als http-Request), daher bringt mir wohl eine Änderung in Edomi nichts mehr, da in Edomi bereits der String mit durch "?" ersetzten Sonderzeichen ankommen.

      Meiner Meinung nach müsste der http-request als ISO-8859-1 gesendet werden, nur habe ich darüber überhaupt Nichts gefunden, wie dies möglich ist (Zusatz zu http://..... /xxxxx ?)

      Grüße
      Andreas

      Kommentar


        #4
        OK, habe es nun verstanden, leider habe ich NULL mit ioBroker am Hut ... aber wenn, dann sollte dort - vielleicht - eine Option / Konverter vorhanden sein, wenn es das ist was hilft ... sorry.
        Danke und LG, Dariusz
        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

        Kommentar


          #5
          Nicht die "sauberste" Lösung, aber funktionieren würde es...

          Schick den String durch mein preg_replace
          https://knx-user-forum.de/forum/proj...ieren-ersetzen

          mit
          E2: /(\?C)/i
          E3: °C

          macht aus "xyz 23 ?C" ein "xyz 23°C".
          Dann wäre zumindest das Ergebnis "ansehnlich"....
          Optional kannst Du natürlich auch das Leerzeichen vor °C entfernen oder alles... um es manuell hinzuzufügen....


          SG Joe

          Kommentar


            #6
            Zitat von givemeone Beitrag anzeigen
            Nicht die "sauberste" Lösung, aber funktionieren würde es...

            Schick den String durch mein preg_replace
            https://knx-user-forum.de/forum/proj...ieren-ersetzen

            mit
            E2: /(\?C)/i
            E3: °C

            macht aus "xyz 23 ?C" ein "xyz 23°C".
            Dann wäre zumindest das Ergebnis "ansehnlich"....
            Optional kannst Du natürlich auch das Leerzeichen vor °C entfernen oder alles... um es manuell hinzuzufügen....


            SG Joe
            Das betrifft leider alle Sonderzeichen:

            2018_12_16_17_28_34_Window.png

            und ... es muss wohl schon bei Senden auf ISO-8859-1 geändert werden !

            Trotzdem Danke
            Andreas

            Kommentar


              #7
              Hat denn Keiner von Euch einen Tipp, wie ich von ioBroker aus Sonderzeichen nach Edomi transferiere ??????

              Hier wird statt der Sonderzeichen immer nur " ° " dargestellt- was sehr unschön ist:

              Um Hilfe wäre ich sehr dankbar

              2019_01_13_16_51_01_Window.png

              Kommentar


                #8
                Immer noch keiner einen "Rat", wie ich Sonderzeichen (gesendet von ioBroker) in Edomi korrekt darstellen kann?

                2019_02_11_14_55_38_EDOMI_Visualisierung_Opera.png

                Kommentar


                  #9
                  Leider haben auch folgende Änderung im Javascript keine Veränderung gebracht:
                  escape (...)
                  encodeURI (...)
                  encodeURIComponent (...)

                  Bin ich am richtigen Weg ???
                  Zuletzt geändert von ak68; 13.02.2019, 16:29.

                  Kommentar


                    #10
                    Hast du es mal mit MQTT versucht? Ich vermute es ist das fehlende URI Encoding, wenn du Umlaute per HTTP-GET sendest.

                    Mit NodeRed (ist ja auch ein Adapter in iobroker) würde es so funktionieren:

                    Screenshot from 2019-02-15 12-19-19.png


                    Erste Node (blau) ist eine Input-Node, welche den Text mit den Umlauten repräsentiert. Dieser Text wird mit einer editString-Node (grau) mit der Funktion "encodeURIComponent" encoded. Die nächste editString-Node (grau) stellt dann dem Text die EDOMI Remote URL voran (Funktion "prepend") und gibt sie als msg.url an die http-request-Node (gelb) weiter, welche dann die URL aufruft.

                    Falls du es ausprobieren möchtest, hier der Flow, den man ganz einfach in NodeRed importieren kann:

                    Code:
                    [
                        {
                            "id": "bb49e7cb.16b338",
                            "type": "inject",
                            "z": "fae0a10b.13323",
                            "name": "Text mit Umlauten",
                            "topic": "",
                            "payload": "Es muss oberhalb 400m mit Glätte durch gerinfügigen  Schneefall gerechnet werden.",
                            "payloadType": "str",
                            "repeat": "",
                            "crontab": "",
                            "once": false,
                            "onceDelay": 0.1,
                            "x": 171,
                            "y": 223,
                            "wires": [
                                [
                                    "40f6d054.21b47",
                                    "7052de5a.85421"
                                ]
                            ]
                        },
                        {
                            "id": "54fa5f20.9ae36",
                            "type": "http request",
                            "z": "fae0a10b.13323",
                            "name": "EDOMI Remote GET Request",
                            "method": "GET",
                            "ret": "txt",
                            "url": "",
                            "tls": "",
                            "x": 970,
                            "y": 222,
                            "wires": [
                                [
                                    "116461ab.f4fb5e"
                                ]
                            ],
                            "inputLabels": [
                                "url"
                            ]
                        },
                        {
                            "id": "75a14ca6.0ebab4",
                            "type": "string",
                            "z": "fae0a10b.13323",
                            "name": "EDOMI Remote URL",
                            "methods": [
                                {
                                    "name": "prepend",
                                    "params": [
                                        {
                                            "type": "str",
                                            "value": "###.###.###.###/remote/?login=######&pass=#####&koid=###&kovalue="
                                        }
                                    ]
                                }
                            ],
                            "prop": "payload",
                            "propout": "url",
                            "object": "msg",
                            "objectout": "msg",
                            "x": 677.5,
                            "y": 222,
                            "wires": [
                                [
                                    "54fa5f20.9ae36",
                                    "fca186be.c71718",
                                    "12d07bc8.5a8254"
                                ]
                            ]
                        },
                        {
                            "id": "7052de5a.85421",
                            "type": "string",
                            "z": "fae0a10b.13323",
                            "name": "Encode URI",
                            "methods": [
                                {
                                    "name": "encodeURIComponent",
                                    "params": []
                                }
                            ],
                            "prop": "payload",
                            "propout": "payload",
                            "object": "msg",
                            "objectout": "msg",
                            "x": 405.5,
                            "y": 223,
                            "wires": [
                                [
                                    "75a14ca6.0ebab4",
                                    "ed1ed4fc.3687b8"
                                ]
                            ]
                        }
                    ]

                    Kommentar


                      #11
                      Zitat von jonofe Beitrag anzeigen
                      Ich vermute es ist das fehlende URI Encoding, wenn du Umlaute per HTTP-GET sendest.

                      Mit NodeRed (ist ja auch ein Adapter in iobroker) würde es so funktionieren:

                      Falls du es ausprobieren möchtest, hier der Flow, den man ganz einfach in NodeRed importieren kann:
                      Danke André,

                      Klar, möchte ich- Du kennst mich doch ! Ich probiere so lange, bis ich einen Lösung finde !

                      Ich gehe davon aus, dass ich Deinen Code mit "Import" "Clipboard" importieren muss- sorry ich habe noch nie mit NodeRed gearbeitet !

                      Dann kommt aber folgende Fehlermeldung:

                      2019_02_15_16_33_58_node_red_0_ioBroker_Opera.png

                      Offensichtlich ist dies kein Standard-Node. Wo finde ich den EditString.-Node ? Ist es dieser hier ?

                      2019_02_15_16_53_54_GitHub_pseudodennis_EditString_Dale_Joyce_Weems_4th_p154_30_Opera.png

                      Falls ja, Wie kann ich diesen Node importieren ? In "Settings" "Palette" kann ich ihn nicht finden !

                      Danke Andreas
                      Zuletzt geändert von ak68; 15.02.2019, 17:08.

                      Kommentar


                        #12
                        kannst du auch oben rechts installieren. Manage Palette - Install - nide red contrib string

                        Kommentar


                          #13
                          Um in ioBroker zu bleiben und nicht nach Node-Red wechseln zu müssen, müsste es doch auch so gehen:

                          2019_02_16_09_50_07_javascript_ioBroker_Opera.png

                          Auszug aus Code:

                          2019_02_16_09_50_33_javascript_ioBroker_Opera.png

                          Aber noch habe ich wohl hier einen Fehler, da der Ausgang leer bleibt !

                          Kommentar


                            #14
                            Da ich weder blockly noch JS spreche, bin ich da leider keine Hilfe ...

                            Kommentar


                              #15
                              Zitat von jonofe Beitrag anzeigen
                              Da ich weder blockly noch JS spreche, bin ich da leider keine Hilfe ...
                              trollmar Du verwendest dich auch ioBroker- oder ?!

                              Könntest Du Dir bitte den obigen JS-Code anschauen, ob das so funktioniert ???

                              DANKE ! Andreas

                              Kommentar

                              Lädt...
                              X