Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Frage zu einem Script und dem genutzten Datenpunkt

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    517

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Frage zu einem Script und dem genutzten Datenpunkt

Geplant Angeheftet Gesperrt Verschoben JavaScript
37 Beiträge 5 Kommentatoren 3.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • O opöl

    Kurzes Update:
    Einer Eingebung folgend, habe ich meiner Windows Erfahrung geschuldet mal den Raspberry neu gestartet.
    Nach einem kurzen Moment der Freude, weil der Wert von 22:26 Uhr erhalten blieb, folgte prompt die Ernüchterung.
    Die nachfolgend geschriebenen Werte verschwinden wieder…..

    Gruß

    T Nicht stören
    T Nicht stören
    ticaki
    schrieb am zuletzt editiert von
    #17

    @opöl

    verwende einen on() auf den datenpunkt und lass dir obj.state.from ins log schreiben.

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    1 Antwort Letzte Antwort
    0
    • O opöl

      @ticaki,
      der Wert wird standardmäßig auf „0“ gesetzt und im Falle der Einspeisung durch den errechneten Wert ersetzt.

      In meinem Fall gibt es tatsächlich einen namenlosen Ordner in den Objekten unterhalb „Sensor“. Wie der dahin kommt, ist mir auch schleierhaft. Daher die beiden „..“. Steht ganz oben im Kommentar meines Scripts.

      Gruß

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #18

      @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

      In meinem Fall gibt es tatsächlich einen namenlosen Ordner in den Objekten unterhalb „Sensor“. Wie der dahin kommt, ist mir auch schleierhaft. Daher die beiden „..“. Steht ganz oben im Kommentar meines Scripts.

      Der "Geister-Ordner" wird möglicherweise gar nicht existieren, wenn der DP mit genau diesem Tippfehler per Script erzeugt wurde.
      Das solltest Du noch korrigieren und eine saubere Struktur erzeugen.
      Früher oder später könnte (wird) Dir sowas auf die Füße fallen.
      Ich zitiere mal Brian W. Kernighan: “Don’t comment bad code—rewrite it.”
      Spart dann übrigens auch eine Zeile Code ... #2

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      O 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

        In meinem Fall gibt es tatsächlich einen namenlosen Ordner in den Objekten unterhalb „Sensor“. Wie der dahin kommt, ist mir auch schleierhaft. Daher die beiden „..“. Steht ganz oben im Kommentar meines Scripts.

        Der "Geister-Ordner" wird möglicherweise gar nicht existieren, wenn der DP mit genau diesem Tippfehler per Script erzeugt wurde.
        Das solltest Du noch korrigieren und eine saubere Struktur erzeugen.
        Früher oder später könnte (wird) Dir sowas auf die Füße fallen.
        Ich zitiere mal Brian W. Kernighan: “Don’t comment bad code—rewrite it.”
        Spart dann übrigens auch eine Zeile Code ... #2

        O Offline
        O Offline
        opöl
        schrieb am zuletzt editiert von
        #19

        @codierknecht ,
        der „Geisterordner“ sonoff.0.Stromzähler.SENSOR..Power wurde nicht manuell sondern vom Sonoff Adapter angelegt. Bis ich mit dem Script begonnen habe, ist mir das garnicht aufgefallen.

        @ticaki ,
        leider muss ich zugeben, dass ich die ersten Gehversuche mit Java Scripts mache. Wärst Du so freundlich, mir das mit dem Log Eintrag in die Feder zu diktieren?

        T 1 Antwort Letzte Antwort
        0
        • O opöl

          @codierknecht ,
          der „Geisterordner“ sonoff.0.Stromzähler.SENSOR..Power wurde nicht manuell sondern vom Sonoff Adapter angelegt. Bis ich mit dem Script begonnen habe, ist mir das garnicht aufgefallen.

          @ticaki ,
          leider muss ich zugeben, dass ich die ersten Gehversuche mit Java Scripts mache. Wärst Du so freundlich, mir das mit dem Log Eintrag in die Feder zu diktieren?

          T Nicht stören
          T Nicht stören
          ticaki
          schrieb am zuletzt editiert von
          #20

          @opöl

          die id mußte selbst eintragen.

          on('sonoff.0.Stromzähler.SENSOR..Power', function (obj) {
              log(obj.state.from);
          }); 
           
          

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          O 1 Antwort Letzte Antwort
          0
          • T ticaki

            @opöl

            die id mußte selbst eintragen.

            on('sonoff.0.Stromzähler.SENSOR..Power', function (obj) {
                log(obj.state.from);
            }); 
             
            
            O Offline
            O Offline
            opöl
            schrieb am zuletzt editiert von
            #21

            @ticaki ,

            ich habe mal Deinen Tipp umgesetzt. PV-Einspeisung-Power ist ja der Datenpunkt, um den es hier geht. Das Script sieht dann so aus:

            // Abonniere den Datenpunkt, der die Gesamtleistung misst
            //Zwischen Sensor und Power liegt noch ein Ordner ohne Name. Daher die 2 ".."
            on('sonoff.0.Stromzähler.SENSOR..Power', function (obj) {
                var einspeisung = 0; // Standardwert für die Einspeisung ist 0
                var gesamtleistung = obj.state.val; // Aktueller Wert der Gesamtleistung
            
                // Wenn die Gesamtleistung negativ ist, wird ins Netz eingespeist
               if (gesamtleistung < 0) {
                   einspeisung = Math.abs(gesamtleistung); // Einspeisung ist der Betrag der negativen Gesamtleistung
                }
            
            // Schreibe den Wert in den neuen Datenpunkt "Einspeisung"
            // setState('sonoff.0.Stromzähler.SENSOR.Einspeisung', einspeisung);
                setState('0_userdata.0.Einspeisung.PV-Einspeisung', einspeisung, true);
            
            // Eingespeiste Leistung / Energie berechnen Einheit: Wm (Wattminuten), da 1 Wert / Minute
            // Hole aktuelle Einspeisung in (W)
            //const ideinspeisung = '0_userdata.0.Einspeisung.PV-Einspeisung';
            //var einspeisung = getState(ideinspeisung).val;
            
            // Hole alten Zählerstand (Wm)
            const idenergie = '0_userdata.0.Einspeisung.PV-Einspeisung-Power';
            var energie = getState(idenergie).val;
            // Addiere aktuelle Leistung (W * 1 Minute) zur alten eingespeisten Energie (Wm) und schreibe Wert
            //var energie_neu = 0;
            var energie_neu = energie + einspeisung;
                setState('0_userdata.0.Einspeisung.PV-Einspeisung-Power', energie_neu, true);
            }); 
            
            on('0_userdata.0.Einspeisung.PV-Einspeisung-Power', function (obj) {
                log(obj.state.from);
            }); 
            

            Im Log finde ich alle paar Minuten dieses:

            javascript.0
            2023-12-18 20:45:00.468	info	script.js.common.Zählerauswertung.Einspeisung_Zähler: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            

            @Codierknecht ,

            so sehen die Datenpunkte unterhalb Sonoff aus:
            e1eae752-0a7b-4608-8d51-47f4225c66a1-image.png

            Du siehst den unbenannten Ordner, der automatisch angelegt wurde, Daher die beiden ".." in meinem Script.

            Und jetzt @all. Der Knaller:
            Seit gerade werden die unter 0_userdata.0.Einspeisung.PV-Einspeisung-Power geschriebenen Werte im iobroker dauerhaft angezeigt:
            16be7319-2d33-4eeb-a84a-01e52dee23e5-image.png

            Was habe ich gemacht?

            Den Alias dieses Wertes (Einspeisung-Zählerstand) habe ich mal testweise auf einen kürzeren Namen umgestellt. Grund dafür war, dass auf der Kommandozeile des Raspberry im influx Client ein "select * from Einspeisung-Zählerstand" einen Fehler hervorruft.
            Der influx Client stolpert offensichtlich über den Bindestrich.

            Interessanterweise kommt der influx Client Fehler aber auch bei einem "select * from Strom-Zählerstand", also dem Alias des physischen Stromzählers. Der wiederum verhält sich im iobroker völlig normal. Das konnte also nicht der Grund sein, warum die Werte des Einspeisung-Zählerstands im iobroker "verschwinden.

            Also habe ich den Alias wieder auf den alten Namen "Einspeisung-Zählerstand" geändert und seitdem bleiben die geschriebenen Werte erhalten.

            Ich kann jetzt nur vermuten, aber es sieht so aus, als ob beim erstmaligen Einrichten des Alias etwas schief gegangen ist.

            Lesson learned:
            Keine zu langen Aliase und keine Sonderzeichen benutzen, sonst hat der influx Client Probleme bei der Abfrage der Werte.

            2nd Lesson learned:
            Ich werde das Script noch um das Speichern des Eigenverbrauchs erweitern. Das errechnen des Eigenverbrauchs mittels Math in Grafana erscheint nicht zielführend:

            3af7ca93-b84a-4982-a74c-fd7859614e75-image.png

            Aber vielleicht hat dazu ja auch noch jemand eine Idee.

            Vielen Dank für die Anregungen und Eure Unterstützung.
            Und Sorry für den geringen Ertrag heute ;)

            Gruß
            Horst

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              TT-Tom
              schrieb am zuletzt editiert von
              #22

              @opöl

              Ich habe da einen Verdacht zu deinem Ordner ohne Namen. Im Lesekopf ist doch ein Script, was dir die Werte ausliest. Kannst du das mal zeigen, eventuell liegt da ein Fehler drin.

              Gruß Tom
              https://github.com/tt-tom17
              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

              NSPanel Script Wiki
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              NSPanel Adapter Wiki
              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

              1 Antwort Letzte Antwort
              0
              • O opöl

                @ticaki ,

                ich habe mal Deinen Tipp umgesetzt. PV-Einspeisung-Power ist ja der Datenpunkt, um den es hier geht. Das Script sieht dann so aus:

                // Abonniere den Datenpunkt, der die Gesamtleistung misst
                //Zwischen Sensor und Power liegt noch ein Ordner ohne Name. Daher die 2 ".."
                on('sonoff.0.Stromzähler.SENSOR..Power', function (obj) {
                    var einspeisung = 0; // Standardwert für die Einspeisung ist 0
                    var gesamtleistung = obj.state.val; // Aktueller Wert der Gesamtleistung
                
                    // Wenn die Gesamtleistung negativ ist, wird ins Netz eingespeist
                   if (gesamtleistung < 0) {
                       einspeisung = Math.abs(gesamtleistung); // Einspeisung ist der Betrag der negativen Gesamtleistung
                    }
                
                // Schreibe den Wert in den neuen Datenpunkt "Einspeisung"
                // setState('sonoff.0.Stromzähler.SENSOR.Einspeisung', einspeisung);
                    setState('0_userdata.0.Einspeisung.PV-Einspeisung', einspeisung, true);
                
                // Eingespeiste Leistung / Energie berechnen Einheit: Wm (Wattminuten), da 1 Wert / Minute
                // Hole aktuelle Einspeisung in (W)
                //const ideinspeisung = '0_userdata.0.Einspeisung.PV-Einspeisung';
                //var einspeisung = getState(ideinspeisung).val;
                
                // Hole alten Zählerstand (Wm)
                const idenergie = '0_userdata.0.Einspeisung.PV-Einspeisung-Power';
                var energie = getState(idenergie).val;
                // Addiere aktuelle Leistung (W * 1 Minute) zur alten eingespeisten Energie (Wm) und schreibe Wert
                //var energie_neu = 0;
                var energie_neu = energie + einspeisung;
                    setState('0_userdata.0.Einspeisung.PV-Einspeisung-Power', energie_neu, true);
                }); 
                
                on('0_userdata.0.Einspeisung.PV-Einspeisung-Power', function (obj) {
                    log(obj.state.from);
                }); 
                

                Im Log finde ich alle paar Minuten dieses:

                javascript.0
                2023-12-18 20:45:00.468	info	script.js.common.Zählerauswertung.Einspeisung_Zähler: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                

                @Codierknecht ,

                so sehen die Datenpunkte unterhalb Sonoff aus:
                e1eae752-0a7b-4608-8d51-47f4225c66a1-image.png

                Du siehst den unbenannten Ordner, der automatisch angelegt wurde, Daher die beiden ".." in meinem Script.

                Und jetzt @all. Der Knaller:
                Seit gerade werden die unter 0_userdata.0.Einspeisung.PV-Einspeisung-Power geschriebenen Werte im iobroker dauerhaft angezeigt:
                16be7319-2d33-4eeb-a84a-01e52dee23e5-image.png

                Was habe ich gemacht?

                Den Alias dieses Wertes (Einspeisung-Zählerstand) habe ich mal testweise auf einen kürzeren Namen umgestellt. Grund dafür war, dass auf der Kommandozeile des Raspberry im influx Client ein "select * from Einspeisung-Zählerstand" einen Fehler hervorruft.
                Der influx Client stolpert offensichtlich über den Bindestrich.

                Interessanterweise kommt der influx Client Fehler aber auch bei einem "select * from Strom-Zählerstand", also dem Alias des physischen Stromzählers. Der wiederum verhält sich im iobroker völlig normal. Das konnte also nicht der Grund sein, warum die Werte des Einspeisung-Zählerstands im iobroker "verschwinden.

                Also habe ich den Alias wieder auf den alten Namen "Einspeisung-Zählerstand" geändert und seitdem bleiben die geschriebenen Werte erhalten.

                Ich kann jetzt nur vermuten, aber es sieht so aus, als ob beim erstmaligen Einrichten des Alias etwas schief gegangen ist.

                Lesson learned:
                Keine zu langen Aliase und keine Sonderzeichen benutzen, sonst hat der influx Client Probleme bei der Abfrage der Werte.

                2nd Lesson learned:
                Ich werde das Script noch um das Speichern des Eigenverbrauchs erweitern. Das errechnen des Eigenverbrauchs mittels Math in Grafana erscheint nicht zielführend:

                3af7ca93-b84a-4982-a74c-fd7859614e75-image.png

                Aber vielleicht hat dazu ja auch noch jemand eine Idee.

                Vielen Dank für die Anregungen und Eure Unterstützung.
                Und Sorry für den geringen Ertrag heute ;)

                Gruß
                Horst

                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #23

                @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                Lesson learned:
                Keine zu langen Aliase und keine Sonderzeichen benutzen, sonst hat der influx Client Probleme bei der Abfrage der Werte.

                Sonderzeichen sind NIE eine gute Idee. Nicht für Datenpunkt-ID's, nicht für Variablen und auch nicht für Funktionsnamen ... oder andere Dinge.

                @tt-tom sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                Ich habe da einen Verdacht zu deinem Ordner ohne Namen. Im Lesekopf ist doch ein Script, was dir die Werte ausliest. Kannst du das mal zeigen, eventuell liegt da ein Fehler drin.

                Entweder das, oder die Konfiguration für die MQTT-Topics hängt schief.

                @opöl
                Zeig mal Dein SML-Script und die MQTT-Konfiguration des Zählers.

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                O 1 Antwort Letzte Antwort
                0
                • CodierknechtC Codierknecht

                  @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                  Lesson learned:
                  Keine zu langen Aliase und keine Sonderzeichen benutzen, sonst hat der influx Client Probleme bei der Abfrage der Werte.

                  Sonderzeichen sind NIE eine gute Idee. Nicht für Datenpunkt-ID's, nicht für Variablen und auch nicht für Funktionsnamen ... oder andere Dinge.

                  @tt-tom sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                  Ich habe da einen Verdacht zu deinem Ordner ohne Namen. Im Lesekopf ist doch ein Script, was dir die Werte ausliest. Kannst du das mal zeigen, eventuell liegt da ein Fehler drin.

                  Entweder das, oder die Konfiguration für die MQTT-Topics hängt schief.

                  @opöl
                  Zeig mal Dein SML-Script und die MQTT-Konfiguration des Zählers.

                  O Offline
                  O Offline
                  opöl
                  schrieb am zuletzt editiert von
                  #24

                  @codierknecht,
                  Bitteschön:

                  
                  >D
                  >B
                  =>sensor53 r
                  >M 1
                  +1,3,s,16,9600,
                  1,77070100010800ff@1000,Zählerstand,kWh,Counter,2
                  1,=h<hr/>
                  1,77070100240700ff@1,Leistung_L1,W,Watt_L1,2
                  1,77070100380700ff@1,Leistung_L2,W,Watt_L2,2
                  1,770701004c0700ff@1,Leistung_L3,W,Watt_L3,2
                  1,=h<hr/>
                  1,77070100100700ff@1,Gesamtleistung,W,Power,2
                  1,=h<hr/>
                  # 1,77070100020800ff@1000,Netzeinspeisung,Watt,Einspeisung,0
                  #
                  
                  

                  Die letzte Zeile war ein Test, die Einspeisung zu erfassen, das gibt der Zähler aber wohl nicht her.

                  Und die MQTT Konfig:

                  3ce9dd4d-e85a-4e35-84ec-f760e3a5f797-image.png

                  T 1 Antwort Letzte Antwort
                  0
                  • O opöl

                    @codierknecht,
                    Bitteschön:

                    
                    >D
                    >B
                    =>sensor53 r
                    >M 1
                    +1,3,s,16,9600,
                    1,77070100010800ff@1000,Zählerstand,kWh,Counter,2
                    1,=h<hr/>
                    1,77070100240700ff@1,Leistung_L1,W,Watt_L1,2
                    1,77070100380700ff@1,Leistung_L2,W,Watt_L2,2
                    1,770701004c0700ff@1,Leistung_L3,W,Watt_L3,2
                    1,=h<hr/>
                    1,77070100100700ff@1,Gesamtleistung,W,Power,2
                    1,=h<hr/>
                    # 1,77070100020800ff@1000,Netzeinspeisung,Watt,Einspeisung,0
                    #
                    
                    

                    Die letzte Zeile war ein Test, die Einspeisung zu erfassen, das gibt der Zähler aber wohl nicht her.

                    Und die MQTT Konfig:

                    3ce9dd4d-e85a-4e35-84ec-f760e3a5f797-image.png

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb am zuletzt editiert von
                    #25

                    @opöl
                    Der Fehler liegt im SML Script. In Zeile 6 muss hinter der 9600 ein Text z.B. Deye600

                    +1,3,s,16,9600,Deye600
                    

                    Weitere Infos findest Du hier

                    Gruß Tom
                    https://github.com/tt-tom17
                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    NSPanel Script Wiki
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    O 1 Antwort Letzte Antwort
                    0
                    • T TT-Tom

                      @opöl
                      Der Fehler liegt im SML Script. In Zeile 6 muss hinter der 9600 ein Text z.B. Deye600

                      +1,3,s,16,9600,Deye600
                      

                      Weitere Infos findest Du hier

                      O Offline
                      O Offline
                      opöl
                      schrieb am zuletzt editiert von
                      #26

                      @tt-tom ,
                      habe ich gemacht. Ist aber m.E. nicht zwingend nötig.
                      Die Daten sind bisher zuverlässig angekommen und auf den unbenamsten Ordner hat das bisher auch keinen Einfluss.
                      Trotzdem Danke für den Hinweis.

                      Gruß

                      T 1 Antwort Letzte Antwort
                      0
                      • O opöl

                        @tt-tom ,
                        habe ich gemacht. Ist aber m.E. nicht zwingend nötig.
                        Die Daten sind bisher zuverlässig angekommen und auf den unbenamsten Ordner hat das bisher auch keinen Einfluss.
                        Trotzdem Danke für den Hinweis.

                        Gruß

                        T Nicht stören
                        T Nicht stören
                        ticaki
                        schrieb am zuletzt editiert von
                        #27

                        @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                        @tt-tom ,
                        habe ich gemacht. Ist aber m.E. nicht zwingend nötig.
                        Die Daten sind bisher zuverlässig angekommen und auf den unbenamsten Ordner hat das bisher auch keinen Einfluss.
                        Trotzdem Danke für den Hinweis.

                        Gruß

                        Das macht keine Probleme bis es dann welche macht :)

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        O 1 Antwort Letzte Antwort
                        1
                        • T ticaki

                          @opöl sagte in Frage zu einem Script und dem genutzten Datenpunkt:

                          @tt-tom ,
                          habe ich gemacht. Ist aber m.E. nicht zwingend nötig.
                          Die Daten sind bisher zuverlässig angekommen und auf den unbenamsten Ordner hat das bisher auch keinen Einfluss.
                          Trotzdem Danke für den Hinweis.

                          Gruß

                          Das macht keine Probleme bis es dann welche macht :)

                          O Offline
                          O Offline
                          opöl
                          schrieb am zuletzt editiert von
                          #28

                          @ticaki ,
                          da hast Du sicher mehr Erfahrung als ich. Ich bin ja quasi noch Lehrling und nehme solche Tipps gerne an.

                          Da wir gerade davon sprechen:
                          Wenn die Namen der Datenpunkte, oder die Ordnerstruktur geändert werden, sind die gesammelten Daten doch sicher weg? Oder kann man den Zugang zu den historischen Daten über den Alias im iobroker sicherstellen?

                          Ich mache es mal konkret:
                          Angenommen, ich habe einen Datenpunkt „Diäten?pünkt“ mit dem Alias „Strom“ im iobroker und benenne den in „Datenpunkt“ mit gleichem Alias „Strom“ um, komme ich mit Grafana noch an die alten Daten und kann die Grafen lückenlos fortschreiben?

                          Gruß

                          T 1 Antwort Letzte Antwort
                          0
                          • O opöl

                            @ticaki ,
                            da hast Du sicher mehr Erfahrung als ich. Ich bin ja quasi noch Lehrling und nehme solche Tipps gerne an.

                            Da wir gerade davon sprechen:
                            Wenn die Namen der Datenpunkte, oder die Ordnerstruktur geändert werden, sind die gesammelten Daten doch sicher weg? Oder kann man den Zugang zu den historischen Daten über den Alias im iobroker sicherstellen?

                            Ich mache es mal konkret:
                            Angenommen, ich habe einen Datenpunkt „Diäten?pünkt“ mit dem Alias „Strom“ im iobroker und benenne den in „Datenpunkt“ mit gleichem Alias „Strom“ um, komme ich mit Grafana noch an die alten Daten und kann die Grafen lückenlos fortschreiben?

                            Gruß

                            T Nicht stören
                            T Nicht stören
                            ticaki
                            schrieb am zuletzt editiert von ticaki
                            #29

                            @opöl

                            Verstehe die Frage nicht wirklich. Datenpunkte dürfen A-Za-z0-9_- enthalten der . ist als Pfadtrennzeichen reserviert. Alles andere kann in speziellen Fällen zu Problemen führen.

                            Der influxDB Adapter löscht keine Daten, wenn du also Datenpunkte umgenennst, bleiben die alten Daten erhalten.

                            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                            Spenden

                            O 1 Antwort Letzte Antwort
                            0
                            • T ticaki

                              @opöl

                              Verstehe die Frage nicht wirklich. Datenpunkte dürfen A-Za-z0-9_- enthalten der . ist als Pfadtrennzeichen reserviert. Alles andere kann in speziellen Fällen zu Problemen führen.

                              Der influxDB Adapter löscht keine Daten, wenn du also Datenpunkte umgenennst, bleiben die alten Daten erhalten.

                              O Offline
                              O Offline
                              opöl
                              schrieb am zuletzt editiert von
                              #30

                              @ticaki , @all,

                              Eure Tipps und Anregungen habe ich soweit umgesetzt, das Script habe ich noch ein bisschen erweitert um Zählerstände für Einspeisung und Eigenverbrauch.
                              Läuft soweit, vielen Dank für die Unterstützung.

                              Und jetzt die Auflösung für das erste Phänomen, wegen dem ich den Beitrag eingestellt hatte.

                              Ein typischer Anfängerfehler:

                              In den benutzerdefinierten Einstellungen des Datenpunkts war noch der Haken „Nur Änderungen aufzeichnen“ gesetzt. Ich hatte die Auswirkung dieses Hakens nicht auf dem Schirm. Ist mir ein bisschen peinlich, andererseits habe ich viel gelernt.

                              Insofern: Vielen Dank nochmal. Ihr seid ein klasse Forum.

                              Gruß

                              O 1 Antwort Letzte Antwort
                              2
                              • O opöl

                                @ticaki , @all,

                                Eure Tipps und Anregungen habe ich soweit umgesetzt, das Script habe ich noch ein bisschen erweitert um Zählerstände für Einspeisung und Eigenverbrauch.
                                Läuft soweit, vielen Dank für die Unterstützung.

                                Und jetzt die Auflösung für das erste Phänomen, wegen dem ich den Beitrag eingestellt hatte.

                                Ein typischer Anfängerfehler:

                                In den benutzerdefinierten Einstellungen des Datenpunkts war noch der Haken „Nur Änderungen aufzeichnen“ gesetzt. Ich hatte die Auswirkung dieses Hakens nicht auf dem Schirm. Ist mir ein bisschen peinlich, andererseits habe ich viel gelernt.

                                Insofern: Vielen Dank nochmal. Ihr seid ein klasse Forum.

                                Gruß

                                O Offline
                                O Offline
                                opöl
                                schrieb am zuletzt editiert von
                                #31

                                Hallo zusammen,

                                erst einmal mit ein wenig Verspätung frohe Weihnachten.

                                Mein Script habe ich noch einmal umgebaut. Es wird jetzt per Cron jede Minute gestartet.
                                Vorher war der Trigger ja der Stromzähler, was aber nicht zielführend war, da es vorkommen konnte, dass sich der Messwert zwischen den Messungen mal nicht verändert hat und somit der Trigger nicht ausgelöst hat.

                                Mit dem Cron läuft es zuverlässig und stabil, bis auf eine Kleinigkeit, die ich leider noch nicht in den Griff bekommen habe:

                                Das Script von Achim Bäcker aus diesem Forum, das den Bosswerk WR ausliest wird ebenfalls per Cron jede Minute gestartet. Das führt dazu, dass meine errechneten Werte immer eine Minute hinterherhinken (grün = Erzeugung vom WR, violett = errechneter Eigenverbrauch).
                                Ich führe das darauf zurück, dass die Bosswerk Messwerte noch nicht geschrieben wurden, wenn ich sie für meine Berechnung schon wieder auslese. Ich rechne also mit dem veralteten Wert.

                                Mein Script möchte ich daher mit ein paar Sekunden Verzögerung nach der vollen Minute starten lassen, kriege das aber mit dem "setTimeout" und "clearTimeout" nicht hin. Die errechneten Werte werden immer noch ein paar ms nach der vollen Minute in die DB geschrieben.

                                Wenn ich statt "setTimeout" "setInterval" verwende, werden die Werte permanent alle 10 Sekunden neu geschrieben.

                                Kann mir jemand zeigen, wie ich mein Script mit einer Verzögerung von 10 Sekunden nach der vollen Minute starten kann?

                                (grün = Erzeugung des WR, violett = errechneter Eigenverbrauch)
                                ccaa4c5a-5e67-401c-bf33-8c405a31d96c-image.png

                                Mein Script auf "Cron" umgebaut.

                                // Berechnung von erzeugter Energie, Eigenverbrauch und Einspeisung 
                                // aus den Bosswerk- und Sonoff Werten.
                                //Zeitsteuerung mit CRON
                                schedule('* * * * *', GetData); // Jede Minute ausführen
                                setTimeout(GetData, 10000); // Mit 10 Sek. Verzögerung, damit die Deye Werte geschrieben werden können
                                
                                function GetData(){
                                // Datenpunkt, der die Gesamtleistung am Stromzähler misst
                                const idgesamtleistung = 'sonoff.0.Stromzaehler.SENSOR.Strom_Counter';
                                    //log(obj.state.from);  //Schreibt ins Log zur Fehleranalyse
                                    var gesamtleistung = getState(idgesamtleistung).val; // Aktuelle Gesamtleistung (W) am Zähler
                                    var einspeisung = 0; // Standardwert für die Einspeisung ist 0
                                    // Wenn die Gesamtleistung (W) negativ ist, wird ins Netz eingespeist
                                    if (gesamtleistung < 0) {
                                    einspeisung = Math.abs(gesamtleistung); // Einspeisung ist der Betrag der negativen Gesamtleistung
                                   }
                                // Schreibe die eingespeiste Leistung (W) in den neuen Datenpunkt "Einspeisung"
                                    setState('0_userdata.0.Einspeisung.PV-Einspeisung', einspeisung, true);
                                
                                // Errechne den Zählerstand der eingespeisten Energie (Wm)
                                // Hole alten Zählerstand (Wm)
                                  const idenergie = '0_userdata.0.Einspeisung.PV-Einspeisung-Counter';
                                  var energie = getState(idenergie).val;
                                // Addiere aktuelle Leistung (W * 1 Minute) zur alten eingespeisten Energie (Wm) 
                                  var energie_neu = energie + einspeisung;
                                  setState('0_userdata.0.Einspeisung.PV-Einspeisung-Counter', energie_neu, true);
                                
                                 // Berechnung des Eigenverbrauchs (W)  // Erzeugung - Einspeisung = Eigenverbrauch
                                  const idpvleistung = '0_userdata.0.Solar.webdata_now_p'; // Aktuelle PV Leistung (W)
                                  var pvleistung = getState(idpvleistung).val;
                                  var pveigenverbrauch = pvleistung - einspeisung; // Eigenverbrauch (W) errechnen und schreiben
                                  setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch', pveigenverbrauch, true);
                                
                                // Zähler für den Eigenverbrauch (Wm)
                                // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                  const idpveigenverbrauchz = '0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter';
                                  var pveigenverbrauchz = getState(idpveigenverbrauchz).val;
                                  var pveigenverbrauchz_neu = pveigenverbrauchz + pveigenverbrauch;
                                  setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter', pveigenverbrauchz_neu, true);
                                    
                                // Zähler für erzeugte Leistung selber bauen. 
                                // Achim Bäcker holt den ungenauen Zählerstand vom Deye. Auflösung = 100Wh
                                // Die Lösung: Aufintegrieren der Leistung im Minutentakt wie beim Eigenverbrauch
                                // Zähler für PV Erzeugung (Wm)
                                // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                  const idpverzeugungz = '0_userdata.0.Einspeisung.PV-Erzeugung-Counter';
                                  var pverzeugungz = getState(idpverzeugungz).val;
                                  var pverzeugungz_neu = pverzeugungz + pvleistung;
                                  setState('0_userdata.0.Einspeisung.PV-Erzeugung-Counter', pverzeugungz_neu, true);
                                
                                }; 
                                
                                var myTimeout = setTimeout(GetData, 10000);
                                clearTimeout(myTimeout);
                                

                                Gruß

                                T 1 Antwort Letzte Antwort
                                0
                                • O opöl

                                  Hallo zusammen,

                                  erst einmal mit ein wenig Verspätung frohe Weihnachten.

                                  Mein Script habe ich noch einmal umgebaut. Es wird jetzt per Cron jede Minute gestartet.
                                  Vorher war der Trigger ja der Stromzähler, was aber nicht zielführend war, da es vorkommen konnte, dass sich der Messwert zwischen den Messungen mal nicht verändert hat und somit der Trigger nicht ausgelöst hat.

                                  Mit dem Cron läuft es zuverlässig und stabil, bis auf eine Kleinigkeit, die ich leider noch nicht in den Griff bekommen habe:

                                  Das Script von Achim Bäcker aus diesem Forum, das den Bosswerk WR ausliest wird ebenfalls per Cron jede Minute gestartet. Das führt dazu, dass meine errechneten Werte immer eine Minute hinterherhinken (grün = Erzeugung vom WR, violett = errechneter Eigenverbrauch).
                                  Ich führe das darauf zurück, dass die Bosswerk Messwerte noch nicht geschrieben wurden, wenn ich sie für meine Berechnung schon wieder auslese. Ich rechne also mit dem veralteten Wert.

                                  Mein Script möchte ich daher mit ein paar Sekunden Verzögerung nach der vollen Minute starten lassen, kriege das aber mit dem "setTimeout" und "clearTimeout" nicht hin. Die errechneten Werte werden immer noch ein paar ms nach der vollen Minute in die DB geschrieben.

                                  Wenn ich statt "setTimeout" "setInterval" verwende, werden die Werte permanent alle 10 Sekunden neu geschrieben.

                                  Kann mir jemand zeigen, wie ich mein Script mit einer Verzögerung von 10 Sekunden nach der vollen Minute starten kann?

                                  (grün = Erzeugung des WR, violett = errechneter Eigenverbrauch)
                                  ccaa4c5a-5e67-401c-bf33-8c405a31d96c-image.png

                                  Mein Script auf "Cron" umgebaut.

                                  // Berechnung von erzeugter Energie, Eigenverbrauch und Einspeisung 
                                  // aus den Bosswerk- und Sonoff Werten.
                                  //Zeitsteuerung mit CRON
                                  schedule('* * * * *', GetData); // Jede Minute ausführen
                                  setTimeout(GetData, 10000); // Mit 10 Sek. Verzögerung, damit die Deye Werte geschrieben werden können
                                  
                                  function GetData(){
                                  // Datenpunkt, der die Gesamtleistung am Stromzähler misst
                                  const idgesamtleistung = 'sonoff.0.Stromzaehler.SENSOR.Strom_Counter';
                                      //log(obj.state.from);  //Schreibt ins Log zur Fehleranalyse
                                      var gesamtleistung = getState(idgesamtleistung).val; // Aktuelle Gesamtleistung (W) am Zähler
                                      var einspeisung = 0; // Standardwert für die Einspeisung ist 0
                                      // Wenn die Gesamtleistung (W) negativ ist, wird ins Netz eingespeist
                                      if (gesamtleistung < 0) {
                                      einspeisung = Math.abs(gesamtleistung); // Einspeisung ist der Betrag der negativen Gesamtleistung
                                     }
                                  // Schreibe die eingespeiste Leistung (W) in den neuen Datenpunkt "Einspeisung"
                                      setState('0_userdata.0.Einspeisung.PV-Einspeisung', einspeisung, true);
                                  
                                  // Errechne den Zählerstand der eingespeisten Energie (Wm)
                                  // Hole alten Zählerstand (Wm)
                                    const idenergie = '0_userdata.0.Einspeisung.PV-Einspeisung-Counter';
                                    var energie = getState(idenergie).val;
                                  // Addiere aktuelle Leistung (W * 1 Minute) zur alten eingespeisten Energie (Wm) 
                                    var energie_neu = energie + einspeisung;
                                    setState('0_userdata.0.Einspeisung.PV-Einspeisung-Counter', energie_neu, true);
                                  
                                   // Berechnung des Eigenverbrauchs (W)  // Erzeugung - Einspeisung = Eigenverbrauch
                                    const idpvleistung = '0_userdata.0.Solar.webdata_now_p'; // Aktuelle PV Leistung (W)
                                    var pvleistung = getState(idpvleistung).val;
                                    var pveigenverbrauch = pvleistung - einspeisung; // Eigenverbrauch (W) errechnen und schreiben
                                    setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch', pveigenverbrauch, true);
                                  
                                  // Zähler für den Eigenverbrauch (Wm)
                                  // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                    const idpveigenverbrauchz = '0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter';
                                    var pveigenverbrauchz = getState(idpveigenverbrauchz).val;
                                    var pveigenverbrauchz_neu = pveigenverbrauchz + pveigenverbrauch;
                                    setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter', pveigenverbrauchz_neu, true);
                                      
                                  // Zähler für erzeugte Leistung selber bauen. 
                                  // Achim Bäcker holt den ungenauen Zählerstand vom Deye. Auflösung = 100Wh
                                  // Die Lösung: Aufintegrieren der Leistung im Minutentakt wie beim Eigenverbrauch
                                  // Zähler für PV Erzeugung (Wm)
                                  // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                    const idpverzeugungz = '0_userdata.0.Einspeisung.PV-Erzeugung-Counter';
                                    var pverzeugungz = getState(idpverzeugungz).val;
                                    var pverzeugungz_neu = pverzeugungz + pvleistung;
                                    setState('0_userdata.0.Einspeisung.PV-Erzeugung-Counter', pverzeugungz_neu, true);
                                  
                                  }; 
                                  
                                  var myTimeout = setTimeout(GetData, 10000);
                                  clearTimeout(myTimeout);
                                  

                                  Gruß

                                  T Nicht stören
                                  T Nicht stören
                                  ticaki
                                  schrieb am zuletzt editiert von
                                  #32

                                  @opöl

                                  schedule('* * * * *', GetData)
                                  

                                  ersetzen durch:

                                  schedule('8 * * * * *', GetData)
                                  

                                  https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#schedule

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  O 1 Antwort Letzte Antwort
                                  0
                                  • T ticaki

                                    @opöl

                                    schedule('* * * * *', GetData)
                                    

                                    ersetzen durch:

                                    schedule('8 * * * * *', GetData)
                                    

                                    https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#schedule

                                    O Offline
                                    O Offline
                                    opöl
                                    schrieb am zuletzt editiert von
                                    #33

                                    @ticaki ,

                                    das war es.
                                    Man kann ja so schön auf der eigenen Leitung stehen…
                                    Ich war wohl zu sehr fixiert auf den Timeout.

                                    Dir und allen anderen, die geholfen haben, vielen Dank und einen guten Rutsch ins Jahr 2024.

                                    Gruß
                                    Horst

                                    O 1 Antwort Letzte Antwort
                                    0
                                    • O opöl

                                      @ticaki ,

                                      das war es.
                                      Man kann ja so schön auf der eigenen Leitung stehen…
                                      Ich war wohl zu sehr fixiert auf den Timeout.

                                      Dir und allen anderen, die geholfen haben, vielen Dank und einen guten Rutsch ins Jahr 2024.

                                      Gruß
                                      Horst

                                      O Offline
                                      O Offline
                                      opöl
                                      schrieb am zuletzt editiert von
                                      #34

                                      Hallo zusammen,

                                      leider ist inzwischen noch ein kleiner Schönheitsfehler aufgefallen:
                                      c19f1d59-ccd4-456c-a0bd-3de753494cdf-image.png

                                      Hin und wieder antwortet der WR nicht, hier z.B. um 14:50 und 14:53 Uhr:
                                      01695d9e-eb89-494e-bcd8-a233f27817bc-image.png

                                      Das erzeugt die falschen Nullwerte im Eigenverbrauch (violett), weil hier 0-0 = 0 ergibt:

                                      // Berechnung des Eigenverbrauchs (W)  // Erzeugung - Einspeisung = Eigenverbrauch
                                        const idpvleistung = '0_userdata.0.Solar.webdata_now_p'; // Aktuelle PV Leistung (W)
                                        var pvleistung = getState(idpvleistung).val;
                                        var pveigenverbrauch = pvleistung - einspeisung; // Eigenverbrauch (W) errechnen und schreiben
                                        setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch', pveigenverbrauch, true);
                                      

                                      Gibt es eine Möglichkeit, den Wert der "pvleistung" der letzten Messung (Letzter Lauf des Scripts) zu sichern und mit dem zu rechnen?

                                      Es ist sicherlich eine Krücke, aber es handelt sich um Ausreißer, wie sie 1-3 mal am Tag vorkommen, daher könnte ich damit leben.

                                      Vielleicht hat jemand eine bessere Idee?

                                      Gruß

                                      T 1 Antwort Letzte Antwort
                                      0
                                      • O opöl

                                        Hallo zusammen,

                                        leider ist inzwischen noch ein kleiner Schönheitsfehler aufgefallen:
                                        c19f1d59-ccd4-456c-a0bd-3de753494cdf-image.png

                                        Hin und wieder antwortet der WR nicht, hier z.B. um 14:50 und 14:53 Uhr:
                                        01695d9e-eb89-494e-bcd8-a233f27817bc-image.png

                                        Das erzeugt die falschen Nullwerte im Eigenverbrauch (violett), weil hier 0-0 = 0 ergibt:

                                        // Berechnung des Eigenverbrauchs (W)  // Erzeugung - Einspeisung = Eigenverbrauch
                                          const idpvleistung = '0_userdata.0.Solar.webdata_now_p'; // Aktuelle PV Leistung (W)
                                          var pvleistung = getState(idpvleistung).val;
                                          var pveigenverbrauch = pvleistung - einspeisung; // Eigenverbrauch (W) errechnen und schreiben
                                          setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch', pveigenverbrauch, true);
                                        

                                        Gibt es eine Möglichkeit, den Wert der "pvleistung" der letzten Messung (Letzter Lauf des Scripts) zu sichern und mit dem zu rechnen?

                                        Es ist sicherlich eine Krücke, aber es handelt sich um Ausreißer, wie sie 1-3 mal am Tag vorkommen, daher könnte ich damit leben.

                                        Vielleicht hat jemand eine bessere Idee?

                                        Gruß

                                        T Nicht stören
                                        T Nicht stören
                                        ticaki
                                        schrieb am zuletzt editiert von ticaki
                                        #35

                                        @opöl

                                        Die Frage ist zu einfach :)

                                        var lastValue=0
                                        
                                        ... // und da wo es passt.
                                        
                                        lastValue = currentValue > 0 ?  currentValue : lastValue
                                        currentValue = lastValue;
                                        

                                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                        Spenden

                                        O 1 Antwort Letzte Antwort
                                        0
                                        • T ticaki

                                          @opöl

                                          Die Frage ist zu einfach :)

                                          var lastValue=0
                                          
                                          ... // und da wo es passt.
                                          
                                          lastValue = currentValue > 0 ?  currentValue : lastValue
                                          currentValue = lastValue;
                                          
                                          O Offline
                                          O Offline
                                          opöl
                                          schrieb am zuletzt editiert von
                                          #36

                                          @ticaki ,

                                          ich habe versucht das umzusetzen, mache da aber noch etwas falsch.

                                          var lastValue=0
                                          
                                          ... // und da wo es passt.
                                          
                                          lastValue = currentValue > 0 ?  currentValue : lastValue
                                          currentValue = lastValue;
                                          

                                          Kannst Du bitte noch einmal schauen, wo es hakt?

                                          Der Graf, PV Erzeugung = grün, der errechnete Eigenverbrauch in violett sollte identisch sein.
                                          03d18fb6-0770-4c0a-a012-f9f2583c1f95-image.png

                                          Die Werte des Wechselrichters, hier mit 2 Aussetzern:
                                          af4f243c-c98b-4536-bf9e-fd6462ec1308-image.png

                                          Und hier die Werte des errechneten Eigenverbrauchs sind da, werden aber auf "0" gesetzt, sollten aber jeweils den vorherigen Wert zu zeigen.
                                          deed4c19-a38f-4892-8b01-6154bdd56b7d-image.png

                                          Und hier das komplette Script. Die Variablen werden in Zeile 8 + 9 definiert, in Zeile 36 und 39 stehen der Vergleich und die Zuweisung.

                                          // Berechnung von erzeugter Energie, Eigenverbrauch und Einspeisung 
                                          // aus den Bosswerk- und Sonoff Werten.
                                          //Zeitsteuerung mit CRON, Script läuft 10 Sekunden nach dem Bosswerk Script
                                          schedule('10 * * * * *', GetData); // Jede Minute ausführen
                                          
                                          // Hilfsvariable um den letzten PV Leistungswert zu nehmen, falls der WR mal keinen Wert liefert
                                          // var lastpvleistung = 0
                                             var lastValue = 0
                                             var currentValue = 0
                                          
                                          function GetData(){
                                          // Datenpunkt, der die Gesamtleistung am Stromzähler misst
                                              const idgesamtleistung = 'sonoff.0.Stromzaehler.SENSOR.Strom_Counter';
                                              //log(obj.state.from);  //Schreibt ins Log zur Fehleranalyse
                                              var gesamtleistung = getState(idgesamtleistung).val; // Aktuelle Gesamtleistung (W) am Zähler
                                              var einspeisung = 0; // Standardwert für die Einspeisung ist 0
                                              // Wenn die Gesamtleistung (W) negativ ist, wird ins Netz eingespeist
                                              if (gesamtleistung < 0) {
                                              einspeisung = Math.abs(gesamtleistung); // Einspeisung ist der Betrag der negativen Gesamtleistung
                                             }
                                          // Schreibe die eingespeiste Leistung (W) in den neuen Datenpunkt "Einspeisung"
                                              setState('0_userdata.0.Einspeisung.PV-Einspeisung', einspeisung, true);
                                          
                                          // Errechne den Zählerstand der eingespeisten Energie (Wm)
                                          // Hole alten Zählerstand (Wm)
                                             const idenergie = '0_userdata.0.Einspeisung.PV-Einspeisung-Counter';
                                             var energie = getState(idenergie).val;
                                          // Addiere aktuelle Leistung (W * 1 Minute) zur alten eingespeisten Energie (Wm) 
                                             var energie_neu = energie + einspeisung;
                                             setState('0_userdata.0.Einspeisung.PV-Einspeisung-Counter', energie_neu, true);
                                          
                                          // Berechnung des Eigenverbrauchs (W)  // Erzeugung - Einspeisung = Eigenverbrauch 
                                             const idpvleistung = '0_userdata.0.Solar.webdata_now_p'; // Aktuelle PV Leistung (W)
                                             var pvleistung = getState(idpvleistung).val;
                                          
                                             lastValue = currentValue > 0 ?  currentValue : lastValue; //Wenn pvleistung =0, und der vorherige Wert >0,
                                          // lastpvleistung = pvleistung > 0 ? pvleistung : lastpvleistung; 
                                             
                                             currentValue = lastValue;  //dann nimm den vorherigen Wert lastpvleistung
                                           //  pvleistung = lastpvleistung; 
                                             var pveigenverbrauch = pvleistung - einspeisung; // Eigenverbrauch (W) errechnen und schreiben
                                             setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch', pveigenverbrauch, true);
                                          
                                          // Zähler für den Eigenverbrauch (Wm)
                                          // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                             const idpveigenverbrauchz = '0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter';
                                             var pveigenverbrauchz = getState(idpveigenverbrauchz).val;
                                             var pveigenverbrauchz_neu = pveigenverbrauchz + pveigenverbrauch;
                                             setState('0_userdata.0.Einspeisung.PV-Eigenverbrauch-Counter', pveigenverbrauchz_neu, true);
                                              
                                          // Zähler für erzeugte Leistung selber bauen. 
                                          // Achim Bäcker holt den ungenauen Zählerstand vom Deye. Auflösung = 100Wh
                                          // Die Lösung: Aufintegrieren der Leistung im Minutentakt wie beim Eigenverbrauch
                                          // Zähler für PV Erzeugung (Wm)
                                          // Hole alten Zählerstand für Eigenverbrauch (Wm)
                                             const idpverzeugungz = '0_userdata.0.Einspeisung.PV-Erzeugung-Counter';
                                             var pverzeugungz = getState(idpverzeugungz).val;
                                             var pverzeugungz_neu = pverzeugungz + pvleistung;
                                             setState('0_userdata.0.Einspeisung.PV-Erzeugung-Counter', pverzeugungz_neu, true);
                                          }; 
                                          

                                          Gruß

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          781

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe