Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Suche Script zur Konvertierung von Unicode auf UTF-8

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Suche Script zur Konvertierung von Unicode auf UTF-8

    This topic has been deleted. Only users with topic management privileges can see it.
    • hg6806
      hg6806 Most Active last edited by

      Hallo zusammen,

      leider werden die Umlaute der Status-Meldungen meiner OpenWB Wallbox falsch in ioBroker dargestellt.
      Wahrscheinlich hat OpenWB Unicode, ioBroker aber UTF-8?

      Sieht zumindest so aus:

      "Es kann nicht mit der vorgegebenen Stromst\u00e4rke geladen werden, da der Maximal-Strom an Z\u00e4hler MQTT-Z\u00e4hler-Netzanschluss erreicht ist. Es darf um max 5A \u00fcber den aktuell genutzten Strom geregelt werden. Die Einstellungen in dem Ladepunkt-Profil beschr\u00e4nken den Strom auf maximal 10 A."
      

      Hat jemand ein Script was das fixen kann?

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @hg6806 last edited by

        @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

        nicht mit der vorgegebenen Stromst\u00e4rke geladen werden

        versuch mal

        const text = unescape(  "Es kann nicht mit der vorgegebenen Stromst\u00e4rke geladen werden, da der Maximal-Strom an Z\u00e4hler MQTT-Z\u00e4hler-Netzanschluss erreicht ist. Es darf um max 5A \u00fcber den aktuell genutzten Strom geregelt werden. Die Einstellungen in dem Ladepunkt-Profil beschr\u00e4nken den Strom auf maximal 10 A." );
        
        1 Reply Last reply Reply Quote 0
        • hg6806
          hg6806 Most Active last edited by

          @asgothian

          Danke, aber sorry, verstehe ich nicht. Das höchste der Gefühle ist Blockly.

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @hg6806 last edited by

            @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

            Das höchste der Gefühle ist Blockly

            Dann musst Du Dir eine JS-Funktion "basteln".

            f4bc90ca-8b16-4d3f-beda-9ca1206037c5-image.png

            hg6806 1 Reply Last reply Reply Quote 0
            • hg6806
              hg6806 Most Active @Codierknecht last edited by

              @codierknecht

              Sorry, ist mir noch immer zu hoch.
              Wie bringe ich den Datenpunkt der umgewandelt werden soll dort hinein?

              Asgothian paul53 2 Replies Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @hg6806 last edited by

                @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                Sorry, ist mir noch immer zu hoch.
                Wie bringe ich den Datenpunkt der umgewandelt werden soll dort hinein?

                Vielleicht beschreibst du mal das gesamte Problem, an Statt immer nur Detailfragen zu stellen. Unsere Glaskugeln sind nicht gut genug um das alles zu erraten.

                Was genau willst du tun. Wo sind die Daten, wie kommen sie da hin, wann willst du sie wie ändern, und wo sollen die geänderten Daten hin.

                A.

                1 Reply Last reply Reply Quote 2
                • hg6806
                  hg6806 Most Active last edited by

                  @asgothian

                  Also, der Datenpunkt

                  mqtt.2.openWB.chargepoint.10.get.state_str
                  

                  wirft mir den oben geposteten Text

                  Es kann nicht mit der vorgegebenen Stromst\u00e4rke geladen werden, da der Maximal-Strom an Z\u00e4hler MQTT-Z\u00e4hler-Netzanschluss erreicht ist. Es darf um max 5A \u00fcber den aktuell genutzten Strom geregelt werden. Die Einstellungen in dem Ladepunkt-Profil beschr\u00e4nken den Strom auf maximal 10 A.
                  

                  Der ist wahrscheinlich Unicode kodiert und müsste in ein UTF-8 was wohl Umlaute beinhaltet umkodiert werden.
                  Und dann in einen neuen Datenpunkt geschrieben werden.

                  Asgothian 1 Reply Last reply Reply Quote 0
                  • Asgothian
                    Asgothian Developer @hg6806 last edited by Asgothian

                    @hg6806 Also:

                    • funktion definieren
                    • Trigger auf den Datenpunkt wo der String ankommt.
                    • Im Trigger, den "wert" des Triggers in die JS Funktion stecken.
                    • Den Rückgabewert in einen 'setState' Baustein stecken.

                    Das sind die Bausteine die du brauchst. Zusammenbauen solltest du das mit der Anleitung selber können.

                    Screenshot 2025-03-10 at 15.03.31.png
                    Screenshot 2025-03-10 at 15.01.49.png

                    Screenshot 2025-03-10 at 15.01.58.png

                    Den Funktionseditor (bild weiter unten) bekommst du auf wenn du auf den ... in der Funktion clickst.

                    Screenshot 2025-03-10 at 15.04.25.png

                    Nun kommst Du.

                    A.
                    Nachtrag: nachdem du die JS Funktion 'erzeugt' hast, sprich den Block oben in dein Skript gesteckt, bekommst du unter Funktionen einen Andockbaren Baustein für Deine Funktion.

                    1 Reply Last reply Reply Quote 2
                    • hg6806
                      hg6806 Most Active last edited by

                      @asgothian

                      Danke, aber das war soweit klar.

                      Das Einzige was ich nicht verstehe ist, wie der Code in der JS Funktion aussieht, sprich, den Datenpunkt auslesen und durch @Codierknecht 's Funktion zurückgibt.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @hg6806 last edited by

                        @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                        wie der Code in der JS Funktion aussieht,

                        hat @Codierknecht dir doch hier gezeigt

                        @codierknecht sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                        f4bc90ca-8b16-4d3f-beda-9ca1206037c5-image.png

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @hg6806 last edited by paul53

                          @hg6806 sagte: Wie bringe ich den Datenpunkt der umgewandelt werden soll dort hinein?

                          Blockly_temp.JPG

                          1 Reply Last reply Reply Quote 1
                          • hg6806
                            hg6806 Most Active last edited by hg6806

                            fd3c8d64-7166-4ea0-9e3d-f42ece4421ab-image.png

                            In der Funktion steht lediglich:

                            return unescape(text);
                            

                            Passiert aber nichts bei Aktualisierung des Status.

                            Ich hätte jetzt eher damit gerechnet, dass im Code von der Funktion eher sowas stehen muss (mal von JSON abgesehen)

                            //Datenpunkt mit MQTT-Informationen im json-Format auslesen
                            json = (function () { try {return JSON.parse(getState("mqtt.0.home.OMG_ESP32_BLE.BTtoMQTT.E72E00D32042").val);} catch(e) {return {};}})();
                            //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
                            setState("0_userdata.0.OpenMQTTGateway_BLE.E72E00D32042.Temperature", getAttr(json, 'tempc'));
                            setState("0_userdata.0.OpenMQTTGateway_BLE.E72E00D32042.Humidity", getAttr(json, 'hum'));
                            setState("0_userdata.0.OpenMQTTGateway_BLE.E72E00D32042.Battery", getAttr(json, 'batt'));
                            setState("0_userdata.0.OpenMQTTGateway_BLE.E72E00D32042.RSSI", getAttr(json, 'rssi'));
                            //Log Ausgabe als return der Funktion
                            return "MQTT MI_E72E00D32042 aktualisiert";
                            
                            Codierknecht 1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @hg6806 last edited by

                              @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                              Ich hätte jetzt eher damit gerechnet, dass im Code von der Funktion eher sowas stehen muss (mal von JSON abgesehen)

                              Die Funktion nimmt lediglich den codierten Text entgegen und liefert das umcodierte Ergebnis zurück.
                              Bau doch statt (oder zusätzlich) dem "aktualisiere" mal einen Debug-Block ein. Der schreibt das Ergebnis dann auch ins Log um das mal zu überprüfen.

                              Asgothian 1 Reply Last reply Reply Quote 0
                              • Asgothian
                                Asgothian Developer @Codierknecht last edited by Asgothian

                                @codierknecht sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                                @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                                Ich hätte jetzt eher damit gerechnet, dass im Code von der Funktion eher sowas stehen muss (mal von JSON abgesehen)

                                Die Funktion nimmt lediglich den codierten Text entgegen und liefert das umcodierte Ergebnis zurück.
                                Bau doch statt (oder zusätzlich) dem "aktualisiere" mal einen Debug-Block ein. Der schreibt das Ergebnis dann auch ins Log um das mal zu überprüfen.

                                Du hast geschrieben das der State den Text beinhaltet, der in UTF8 wieder heraus geschrieben werden soll.

                                Bau bitte 2 debug Bausteine ein:

                                einmal vor dem Aktualisiere, und häng da den 'wert' rein
                                einmal nach dem Aktualisiere, und häng da den gleichen Baustein rein wie im aktualisiere.

                                Dann lass laufen, warte bis sich der Datenpunkt geändert hat und poste das hier. Dann können wir sehen:

                                • was kommt im DP rein
                                • was kommt aus der Funktion raus.

                                A.

                                1 Reply Last reply Reply Quote 1
                                • hg6806
                                  hg6806 Most Active last edited by

                                  OK, ich danke euch!

                                  7581e0e8-8fb2-4a06-a9b5-a4f70e231879-image.png

                                  11.3.2025, 07:28:10.209	[info ]: javascript.0 (157280) Stopping script script.js.common.Auto+OpenWB.Charge-Werte_auslesen
                                  11.3.2025, 07:28:10.311	[info ]: javascript.0 (157280) Start JavaScript script.js.common.Auto+OpenWB.Charge-Werte_auslesen (Blockly)
                                  11.3.2025, 07:28:10.320	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: registered 5 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                  11.3.2025, 07:28:32.169	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Die Ladung kann nicht gestartet werden, da die Einschaltschwelle nicht erreicht wird."
                                  11.3.2025, 07:28:32.169	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Die Ladung kann nicht gestartet werden, da die Einschaltschwelle nicht erreicht wird."
                                  11.3.2025, 07:29:12.253	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Control-Pilot-Unterbrechung f\u00fcr 4s."
                                  11.3.2025, 07:29:12.254	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Control-Pilot-Unterbrechung f\u00fcr 4s."
                                  11.3.2025, 07:29:21.712	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Ladevorgang wurde gestartet... (bei Problemen: Pr\u00fcfe bitte zuerst in den Einstellungen 'Ladeeinstellungen' und 'Konfiguration'.)"
                                  11.3.2025, 07:29:21.712	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Ladevorgang wurde gestartet... (bei Problemen: Pr\u00fcfe bitte zuerst in den Einstellungen 'Ladeeinstellungen' und 'Konfiguration'.)"
                                  

                                  Die Funktion läuft wohl nicht

                                  Asgothian 1 Reply Last reply Reply Quote 0
                                  • Asgothian
                                    Asgothian Developer @hg6806 last edited by

                                    @hg6806 du musst schon den funktionsblock in den 2. Debug hängen, nicht nur den “Wert” Block.

                                    A.

                                    1 Reply Last reply Reply Quote 0
                                    • hg6806
                                      hg6806 Most Active last edited by hg6806

                                      So?

                                      6c290704-8230-4615-8f30-b27d71d53d28-image.png

                                      Ergebnis ist das Gleiche

                                      11.3.2025, 07:54:11.184	[info ]: javascript.0 (157280) Stopping script script.js.common.Auto+OpenWB.Charge-Werte_auslesen
                                      11.3.2025, 07:54:11.276	[info ]: javascript.0 (157280) Start JavaScript script.js.common.Auto+OpenWB.Charge-Werte_auslesen (Blockly)
                                      11.3.2025, 07:54:11.285	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: registered 5 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                      11.3.2025, 07:54:49.125	[info ]: javascript.0 (157280) Stopping script script.js.common.Auto+OpenWB.Charge-Werte_auslesen
                                      11.3.2025, 07:54:49.263	[info ]: javascript.0 (157280) Start JavaScript script.js.common.Auto+OpenWB.Charge-Werte_auslesen (Blockly)
                                      11.3.2025, 07:54:49.265	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: registered 5 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                      11.3.2025, 07:55:32.315	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Die Ladung kann nicht gestartet werden, da die Einschaltschwelle nicht erreicht wird."
                                      11.3.2025, 07:55:32.315	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Die Ladung kann nicht gestartet werden, da die Einschaltschwelle nicht erreicht wird."
                                      11.3.2025, 07:56:01.958	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Control-Pilot-Unterbrechung f\u00fcr 4s."
                                      11.3.2025, 07:56:01.958	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Control-Pilot-Unterbrechung f\u00fcr 4s."
                                      11.3.2025, 07:56:12.509	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Keine Ladung, da der Lademodus Stop aktiv ist."
                                      11.3.2025, 07:56:12.509	[info ]: javascript.0 (157280) script.js.common.Auto+OpenWB.Charge-Werte_auslesen: "Keine Ladung, da der Lademodus Stop aktiv ist."
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • hg6806
                                        hg6806 Most Active last edited by

                                        Habe als Ausgabe mal einen neuen Datenpunkt erzeugt, in den wird nun auch was geschrieben, jedoch auch unkodiert, also noch ohne Umlaute.

                                        In den alten Ausgabepunkt konnte nichts geschrieben werden.
                                        Weil er von OpenWB/MQTT erzeugt wurde?

                                        Codierknecht 1 Reply Last reply Reply Quote 0
                                        • Codierknecht
                                          Codierknecht Developer Most Active @hg6806 last edited by Codierknecht

                                          @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                                          Die Funktion läuft wohl nicht

                                          Naja - "laufen" tut die schon. Sie bringt nur nicht das gewünschte Ergebnis 😞

                                          Dann halt erstmal die Holzhammer-Methode:

                                              let result = text.replaceAll('\u00e4', 'ä');
                                              result = result.replaceAll('\u00f6', 'ö');
                                              result = result.replaceAll('\u00fc', 'ü');
                                              result = result.replaceAll('\u00c4', 'Ä');
                                              result = result.replaceAll('\u00c6', 'Ö');
                                              result = result.replaceAll('\u00dc', 'Ü');
                                              result = result.replaceAll('\u00df', 'ß');
                                              return result;
                                          
                                          

                                          Edit
                                          Natürlich könnte man das auch generisch machen und alles was mit \u00 beginnt in den entsprechenden Code übersetzen.
                                          Das dürfte aber von der Performance noch etwas ungünstiger sein.

                                          1 Reply Last reply Reply Quote 0
                                          • Codierknecht
                                            Codierknecht Developer Most Active last edited by

                                            @hg6806 sagte in Suche Script zur Konvertierung von Unicode auf UTF-8:

                                            In den alten Ausgabepunkt konnte nichts geschrieben werden.
                                            Weil er von OpenWB/MQTT erzeugt wurde?

                                            In Datenpunkte die "einem Adapter gehören" schreibt man nur dann (und zwar ohne Ack-Flag), wenn der Adapter auch etwas damit anfangen kann. Also wenn er den Wert z.B. an ein Gerät übertragen soll etc.
                                            Zum "Umformatieren" nimmt man entweder einen Alias (wenn man den Wert per Konvertierungsfunktion verarbeiten kann) oder einen eigenen DP in 0_userdata.0 (wenn der Wert per Script umformatiert werden muss).

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            925
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            28
                                            637
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo