Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. SetState wird überschrieben (?)

    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

    SetState wird überschrieben (?)

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

      Ich habe das Script von hier: https://forum.iobroker.net/topic/17309/gelöst-kwh-berechnen-und-fortlaufend-speichern/4.

      const idPowerHausverbrauch = 'modbus.0.holdingRegisters.40072_Hausverbrauch_Leistung';  // cur_power
      const idEnergyHausverbrauch = '0_userdata.0.Solar.Hausverbraucht_heute'; // kWh
       
      // Energie-Datenpunkt erzeugen
      createState(idEnergyHausverbrauch, 0, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
       
      var energyHausverbrauch = 1000 * getState(idEnergyHausverbrauch).val; // Wh, erzeugt beim ersten Skripstart Fehler
       
      on({id: idPowerHausverbrauch}, function(dp) {
         energyHausverbrauch = energyHausverbrauch + dp.state.val * (dp.state.ts - dp.oldState.ts) / 3600000; // Wh
         setState(idEnergyHausverbrauch, Math.round(energyHausverbrauch) / 1000, true); // kWh mit 3 Nachkommastellen
      });
      schedule("0 0 * * *", function () {
        setState(idEnergyHausverbrauch, 0);
      });
      
      

      Danke @paul53 das funktioniert super. Nun möchte ich, dass die Werte um 0:00 Uhr auf 0 zurück gesetzt werden. Das habe ich mit:
      schedule("0 0 * * *", function () {
      setState(idEnergyHausverbrauch, 0);
      });
      am Ende des Skriptes gelöst. Nun kann ich um 0 Uhr beobachten wie der Wert des Datenpunktes auf 0 gesetzt wird und einen Augenblick später steht wieder der vorherige Wert drin.
      Derzeit muss ich das Skript stoppen, den Wert manuell auf 0 setzen und das Skript wieder starten. Dann geht's.

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @Streit187 last edited by

        @streit187 sagte in SetState wird überschrieben (?):

        energyHausverbrauch

        Die Variable hat noch den alten Wert:

        schedule("0 0 * * *", function () {
          setState(idEnergyHausverbrauch, 0);
          energyHausverbrauch=0;
        });
        
        S 1 Reply Last reply Reply Quote 1
        • S
          Streit187 @MCU last edited by

          @mcu Das hat perfekt funktioniert. Vielen Dank

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

          Support us

          ioBroker
          Community Adapters
          Donate

          794
          Online

          31.9k
          Users

          80.1k
          Topics

          1.3m
          Posts

          2
          3
          140
          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