Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Konvertierung von Zeichenkette nach Zahl?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Konvertierung von Zeichenkette nach Zahl?

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

      @baumsass:

      Du hattest recht da hat was anderes reingeschrieben war aber mein Fehler beim kopieren….

      Das Skript sieht jetzt so aus

      var inDP = "mqtt.0.tele.sonoff.SENSOR"; // Hier den Pfad zu deinem MQTT Datenpunkt angeben!

      var inhalt = getState(inDP).val;

      inhalt = JSON.parse(inhalt);

      var a = inhalt.Time;

      var b = inhalt.SML.Total_in;

      var c = inhalt.SML.Total_out;

      var d = inhalt.SML.Power_curr;

      log("Time = " + a);

      log("Total In = " + b);

      log("Total Out = " + c);

      log("Power = " + d);

      var ZaehlerstandDP = "javascript.0.Zählerstand_Haus"; // Dein ZielDatenpunkt

      setState(ZaehlerstandDP, b, true);

      var ZaehlerstandDP = "javascript.0.Zählerstand_PV"; // Dein ZielDatenpunkt

      setState(ZaehlerstandDP, c, true);

      on({id: "mqtt.0.tele.sonoff.SENSOR", change: "ne"}, function (obj) {

      inhalt = JSON.parse(getState(id).val);

      setState("javascript.0.Zählerstand_Haus", parseFloat(inhalt.SML.Total_in), true);

      }); `

      leider wird aes immer nur einmal abgearbeitet… nur wenn ich das script neu starte.

      mach folgendes:

      on({id: "mqtt.0.tele.sonoff.SENSOR", change: "ne"}, function (obj) {
         inhalt = JSON.parse(getState(id).val);
         setState("javascript.0.Zählerstand_Haus", parseFloat(inhalt.SML.Total_in), true);
         setState("javascript.0.Zählerstand_PV", parseFloat(inhalt.SML.Total_Out), true);
      });
      

      mehr brauchst du nicht. Mit deinem Skript hast du die beide Werte mehrmals in den Datenpunkt geschrieben. Wenn das nicht hilft, dann brauche ich einen kompletten Eintrag aus mqtt.0.tele.sonoff.SENSOR um die Datenstruktur zu sehen.

      1 Reply Last reply Reply Quote 0
      • B
        baumsass last edited by

        leider funktioniert das nicht.

        habe jetzt nur dein Script da drin.

        15166_screenshot_20190125-124342_chrome.jpg

        1 Reply Last reply Reply Quote 0
        • a200
          a200 last edited by

          @baumsass:

          leider funktioniert das nicht.

          habe jetzt nur dein Script da drin. `

          Ich kann dir nicht helfen, wenn du mir nicht den Inhalt deines Inputsobjekts zeigst.

          1 Reply Last reply Reply Quote 0
          • B
            baumsass last edited by

            reicht dir das :?: Sorry screenshot vom handy… bin noch auf Arbeit
            15166_screenshot_20190125-131300_chrome.jpg

            {"Time":"2019-01-25T13:12:31","SML":{"Total_in":6021.8000,"Total_out":0.1580,"Power_curr":0}}

            War der Letyte Eintrag

            1 Reply Last reply Reply Quote 0
            • a200
              a200 last edited by

              on({id: "mqtt.0.tele.sonoff.SENSOR", change: "ne"}, function (obj) {
                 inhalt = JSON.parse(getState("mqtt.0.tele.sonoff.SENSOR").val);				// Diese Zeile wurde geändert!
                 setState("javascript.0.Zählerstand_Haus", parseFloat(inhalt.SML.Total_in), true);
                 setState("javascript.0.Zählerstand_PV", parseFloat(inhalt.SML.Total_Out), true);
              });
              

              Versuchs mal damit!

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

                Besser so:

                on("mqtt.0.tele.sonoff.SENSOR", function (obj) {
                   inhalt = JSON.parse(obj.state.val);
                   setState("javascript.0.Zählerstand_Haus", inhalt.SML.Total_in, true);
                   setState("javascript.0.Zählerstand_PV", inhalt.SML.Total_out, true);
                });
                
                1 Reply Last reply Reply Quote 0
                • B
                  baumsass last edited by

                  scheint zu funktionieren ich beobachte und Berichte morgen!!!

                  DANKE DANKE DANKE!

                  1 Reply Last reply Reply Quote 0
                  • B
                    baumsass last edited by

                    Eins noch…. was ich per Blocky nie hinbekommen habe.

                    Wie ziehe ich zb von einen aktuellen Datenpunkt(Zahl) einen in der Vergangenheit liegenden Datenpunkt ab? (zb Zählerstand aktuell-Zählerstand Vorletzter Wert oder Letzte Wert)

                    1 Reply Last reply Reply Quote 0
                    • a200
                      a200 last edited by

                      @baumsass:

                      Eins noch…. was ich per Blocky nie hinbekommen habe.

                      Wie ziehe ich zb von einen aktuellen Datenpunkt(Zahl) einen in der Vergangenheit liegenden Datenpunkt ab? (zb Zählerstand aktuell-Zählerstand Vorletzter Wert oder Letzte Wert) `

                      Schau dir mal den Adapter an: viewtopic.php?f=36&t=20897 an. Wenn du den auf deine Verbrauchsdatenpunkte setzt, dann bekommst du automatisch eine Statistik.

                      1 Reply Last reply Reply Quote 0
                      • B
                        baumsass last edited by

                        Der Adapter ist zwar toll aber ich würde mich freuen wenn mir einer helfen könnte das in Blocky oder Javascript zu machen.

                        zb Zählerstand aktuell-Zählerstand Vorletzter Wert oder Letzte Wert

                        Achso @paul53 das anderfunktioniert wie erwartet!!! toll danke

                        1 Reply Last reply Reply Quote 0
                        • a200
                          a200 last edited by

                          @baumsass:

                          Der Adapter ist zwar toll aber ich würde mich freuen wenn mir einer helfen könnte das in Blocky oder Javascript zu machen.

                          zb Zählerstand aktuell-Zählerstand Vorletzter Wert oder Letzte Wert

                          Achso @paul53 das anderfunktioniert wie erwartet!!! toll danke `

                          Wenn du was als js haben willst, dann das hier: viewtopic.php?f=21&t=5251. Ist von mir. Du musst nur als

                          var idHAGTotal = "javascript.0.Zählerstand_Haus";
                          

                          setzen. Vorher lesen. denn der erster Stundenwert, erst nach einer Stunde, der Tageswert erst morgen usw kommt.

                          1 Reply Last reply Reply Quote 0
                          • B
                            baumsass last edited by

                            danke sehr super!!!

                            1 Reply Last reply Reply Quote 0
                            • B
                              baumsass last edited by

                              Noch besser wäre für mich aber wirklich Zählerstand aktuelle Werst -Zählerstand letzter Wert.

                              Kann das jemand per Javascript oder per Blocky? Blocky wäre noch besser damit ich daran weitermachen kann.

                              Habe mittlerweile alles per Blocky durch und nichts funktioniert ….

                              1 Reply Last reply Reply Quote 0
                              • B
                                baumsass last edited by

                                jemand ne Idee`?

                                1 Reply Last reply Reply Quote 0
                                • a200
                                  a200 last edited by

                                  @baumsass:

                                  Noch besser wäre für mich aber wirklich Zählerstand aktuelle Werst -Zählerstand letzter Wert.

                                  Kann das jemand per Javascript oder per Blocky? Blocky wäre noch besser damit ich daran weitermachen kann.

                                  Habe mittlerweile alles per Blocky durch und nichts funktioniert …. `

                                  Sorry, aber mir ist nicht ganz klar,was du machen möchtest. Ansonsten kann ich gerne versuchen dir zu helfen.

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    baumsass last edited by

                                    Moin,

                                    ich würde gerne von einem Objekt zb. Zählerstand den aktuellen Wert - vorherigen Wert rechnen lassen.

                                    Das hätte den charm das ich den aktuelle Leistung ermitteln könnte.(nicht auslesbar aus meinen Zähler/vom betreiber deaktiviert)

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      danw last edited by

                                      var wert = parseFloat(obj.state.val) - parseFloat(obj.oldState.val);
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        baumsass last edited by

                                        und wo kommen die Objektnamen rein? und das neu zu schreibende Objekt?

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          danw last edited by

                                          Bei der on Subscription oben ist dann obj.state.val der aktuelle Wert und obj.oldState.val der alte.

                                          Ein Objekt setzen kannst du mit setState()

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            baumsass last edited by

                                            setState(XXXXXX)var wert = XXXXXXX parseFloat(obj.state.val) - XXXXXXX parseFloat(obj.oldState.val);

                                            so oder wie? XXXXXX = das Objekt?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            909
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            46
                                            4366
                                            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