Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Aktuellen Wert zyklisch in ein Verzeichnis schreiben

    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

    Aktuellen Wert zyklisch in ein Verzeichnis schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Lemmi @thewhobox last edited by

      @thewhobox

      muss jetzt zur Arbeit und werde mich heute Abend weiter damit beschäftigen.

      unltdnetworx 1 Reply Last reply Reply Quote 0
      • unltdnetworx
        unltdnetworx Developer @Lemmi last edited by unltdnetworx

        @Lemmi
        Hallo Sven,
        da du, wie bereits erwähnt, mittlerweile vier Threads zum Thema offen hast, antworte ich mal hier, da die Lösung schon von @thewhobox aufgezeigt wurde. Die wenigst praktikable Lösung wäre also den Adapter anzupassen.

        Nochmal in Kurzform:

        • Erstelle dir für alle drei gewünschten Werte einen neuen Datenpunkt unter den Javascript-Objekten.
        • Baue dir ein Blockly mit folgenden Aufgaben:
          • Trigger (Auslösung des Scriptblocks) entweder als Cron, also zeitgesteuert alle 15 Sekunden (energymanager Adapter natürlich auf diesen Wert setzen) oder bei Änderung des Wertes im Quelladapter
          • Runden des Ursprungswertes
          • Schreiben in den oben neu erzeugten Wert
        • Greife aus der Weboberfläche auf die NEUEN gerundeten angepassten Werte zu

        Das ist jetzt mal ein Versuch zu erklären, was mein Vorredner gemeint hat. Geht natürlich professioneller, aber zum ersten Testen reichts.

        Bin gerade unterwegs. Bei Interesse später ausführlicher.

        1 Reply Last reply Reply Quote 1
        • L
          Lemmi last edited by

          Hallo Michael,

          hört sich gut an. Wenn es dir nichts ausmacht, wäre es super, wenn du es etwas ausführlicher beschreiben könntest. Stosse hier nämlich ständig an meine Grenzen. mit dem Runden könnte das doch so funktionieren oder?

          function precisionRound(number, precision) {

          var factor = Math.pow(10, precision);

          return Math.round(number * factor) / factor;

          }

          on({id: 'javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_input', change: "any"}, function (obj) {

          var value = obj.state.val;

          var oldValue = obj.oldState.val;

          setState("javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_kWh"/Zaehlerstand_kWh/, (precisionRound((getState("javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_input").val / 75)), 3), true);

          });

          Die Datenpunkte in einem neuen Ordner oder direkt im Energymanager?

          unltdnetworx 1 Reply Last reply Reply Quote 0
          • unltdnetworx
            unltdnetworx Developer @Lemmi last edited by unltdnetworx

            @Lemmi
            Setze den Code bitte mal in Code-Tags.
            Die Datenpunkte kannst du anlegen wo du willst. Hat keinen Einfluss auf die Funktionalität.

            Nur kurz vom Überfliegen, der Wert wird bei dir nie angepasst werden. Du prüfst auf Änderungen des Zielwertes und willst den dann anpassen. Du musst auf Änderungen des Energymanager Wertes prüfen.

            Bau dir das dich erst mal mit Blockly zusammen und schau dir den entstandenen Code mal an. Damit du den Aufbau verstehst.

            1 Reply Last reply Reply Quote 0
            • L
              Lemmi last edited by

              Das war auch nur ein Beispiel aus dem Forum was ich gefunden habe welches sich mit runden von Zahlen beschäftigt. https://forum.iobroker.net/topic/11986/gelöst-js-skript-runden-auf-3-stellen-nach-dem-komma

              Datenpunkte anlegen bekomme ich noch hin. Blockly über Spipte öffnen auch noch. Root Verzeichnis, Common oder Global ? Aber dann geht es los!! Wo/Wie muss ich anfangen und wo hört es auf!! Werde heute Abend mal damit herumexperimentieren. Wie gesagt bin ich hier absoluter Anfänger.

              1 Reply Last reply Reply Quote 0
              • L
                Lemmi last edited by

                Hallo Michael,
                habe mal ein bisschen mit Blockly gespielt und folgendes entworfen:

                74c28b73-5a7c-4315-9ac4-8b9323d7ee09-grafik.png

                Funktioniert wie zu erwarten natürlich nicht!!

                Entspricht das ungefähr dem was du mir vorgeschlagen hast?

                unltdnetworx 1 Reply Last reply Reply Quote 0
                • unltdnetworx
                  unltdnetworx Developer @Lemmi last edited by unltdnetworx

                  @Lemmi
                  Du mischt jetzt verschiedene Lösungsversuche durcheinander. Den Exec-Block brauchst du nicht. Und im blauen Block setzt du den Wert auf "true" also wahr. Lies einfach was da steht von oben nach unten.

                  So sollte es z.B. gehen:
                  OpenWB.jpg

                  Dein "Schreibe"-Block ist sogar besser. In den Wert dann eben nicht "wahr" sondern "runde ..." einsetzen.
                  Damit wird überprüft, ob sich das Objekt Einspeisung geändert hat und schreibt dann einen Wert in den neuen Datenpunkt. Der Wert wird berechnet, indem der Wert der Einspeisung mal 1000 gerechnet wird (kW in Watt) und das ganze dann gerundet wird.

                  Das machst du dreimal, einfach den Falls-Block komplett kopieren, darunter einhacken und die Datenpunkte anpassen.

                  Im Anschluss in OpenWB den Link anpassen und fertig.

                  1 Reply Last reply Reply Quote 1
                  • unltdnetworx
                    unltdnetworx Developer last edited by

                    @Lemmi
                    Hattest du schon Erfolg?

                    1 Reply Last reply Reply Quote 0
                    • L
                      Lemmi last edited by

                      Hallo Michael,

                      sorry das ich mich jetzt erst melde!!! Hatten am WE Kommunion unserer Tochter und Fussballturnier unseres Sohnes. Bin heute erst dazu gekommen meine Versuche zu perfektionieren. Da die OpenWB für Einspeisung und Speicherentladung auch noch ein Minus davor haben wollte musste ich die Datenpunkte dahingehend verändern. Habe es aber geschafft und es scheint nun auch so zu sein wie es muss.

                      aa4b5fd9-bd24-498c-9db4-fe2dde50282a-grafik.png

                      Beispielskript:

                      a03bd542-2fd3-471e-8a94-43fd43a2d499-grafik.png

                      Werde nun beobachten, ob sich alles so verhält wie ich es mir wünsche und ggf. ein paar Kleinigkeiten ändern.

                      Vielen, Vielen Dank nochmal an dich für deine Hilfe!!!!! Ohne die hätte ich es ganz sicher nicht geschafft.

                      Gruß Sven

                      unltdnetworx 1 Reply Last reply Reply Quote 0
                      • unltdnetworx
                        unltdnetworx Developer @Lemmi last edited by unltdnetworx

                        @Lemmi
                        Schön, dass es geklappt. Danke für die Rückmeldung.

                        Nur eine Frage, warum rechnest du in dem Beispiel so viel? Du könntest doch einfach den Wert Batterieladung runden, oder nicht?

                        1 Reply Last reply Reply Quote 0
                        • L
                          Lemmi last edited by

                          Wenn ich den Wert einfach nur runde, dann erscheint bei Standby des Speichers einfach nur 0. Die OpenWB stellt sich dann auf 0 Watt und Entladung ein. Die OpenWB ist so eingestellt, dass ein entladen des Speichers verhindert werden soll und lädt dann das Auto nicht. Habe die Rechnerei sogar noch um - 0,001 erweitert. Somit erscheint dann 1Watt Ladung und das Auto lädt. Die 1 Watt Verfälschung ist unproblematisch, da erst ab 1400 Watt Überschuss geladen wird.

                          P.S.: Ich könnte wahrscheinlich auch einfach vom Datenpunkt Batterieladung 0,001 abziehen und erhalte das gleiche Ergebnis 😁 . Aber Hauptsache es funzt 👍

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          874
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          javascript
                          5
                          39
                          2994
                          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