Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

    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

    [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

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

      Danke Looxer, habe verstanden! 🙂

      1 Reply Last reply Reply Quote 0
      • K
        knopers1 last edited by

        Hallo Looxer01,

        ich habe jetzt ein wenig dein Script mit meiner Hardware getestet… Die Werte sind plausibel sowei. Alles gut!

        Allerdings wird bei mir zur Zeit alles in m³ ausgegeben.

        Ich würde dies in KWh ausgeben wollen, da die Gasjahres-Rechnung auch in KWh berechnet wird.

        Dazu bruche ich den Brennwert. Diesen werde ich von der letzten Abrechnung irgendwo ablesen können.

        Kannst Du mir mal grob sagen, was in deinem Script umzustellen ist, damit die Werte in KWh ausgegeben werden?

        Ganz grob gesehen entspricht ein 1 m³ bei einem Brennwert von 10 = 10KW

        Demnach sollten 0,1m³ pro Taktung meines Gaszählers 1 KW entsprechen.

        Soweit alles gut, nur wie stelle ich es ein, wenn mein Brennwert 12 oder 8 ist ???

        Oder viel besser were es, wenn man zusätzlich noch neben den m³ auch noch eine Position hätte die in KWh ausgegeben wird. Geht das?

        Somit könnte man den Gasverbrauch in m³ und parallel dazu in KWh anzeigen lassen.

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

          Hi,

          hab mal nachgelesen.

          Die Berechnung sollte sein

          KwH = m3 x Brennwert x Zustandszahl

          wobei der Brennwert von dem Gasverkäufer kommt und die Zustandszahl sich ergibt aus z.B. Temperatur an der Zapfstelle, Luftdruck etc.

          Wenn du die Zustandszahl ausser acht laesst, dann brauchst du nur in Tabelle "special" den Faktor 12 eintragen. Das wars.

          Wenn du mit der Zustandszahl arbeiten möchtest dann könntest du einen Durchschnittswert verwenden, z.B. aus dem Letzten Jahr. Die Versorger machen monatliche updates. Also sollte es möglich sein, diesen Wert zu erhalten. Wenn die Zustandszahl z.B. 0,95 beträgt, dann

          muss eben im Faktor 11.4 eingetragen werden. (12 x 0,95)

          Wenn du genau arbeiten möchtest ist es komplizierter, da sich ja die Zustandszahl monatlich aendert. Für solche Berechnungen habe ich einen Userexit vorgesehen. D.h. aber, dass die Berechnung in Javascript gemacht werden muss. Zudem muss eine Tabelle vorgesehen werden, um die monatlichen Werte jeweils zu hinterlegen.

          Natürlich kannst du auch m3 und kWh führen. dafür musst du aber eben mit zwei Zeilen in den Tabellen arbeiten. Beispielsweise durch die Methode CALC kannst du die kWh rechnen, sobald die m3 aus dem Zaehler sich aendern.

          vG Looxer

          1 Reply Last reply Reply Quote 0
          • K
            knopers1 last edited by

            Danke Looxer01,

            die Zustandszahl möchte ich ausser acht lassen. Das reicht mir.

            Um jetzt noch neben der m3 die KWh führen zu können, solle ich über zwei Zeilen gehen schreibst Du….

            Also, in der Gruppe die neuen Zeile auf CALC setzten.

            Gruppen[ 1]  = ['javascript.0.Gaszaehler.Wert'                                ,'Heizung-KWh'                                 ,false  ,false  ,false  ,false  ,false  ,false  ,'CALC'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
            

            In der Zweiten Tabelle kommt nur ein Name bzw Beschreibung herein

            logname[1]  =   ['Gas-KWh'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
            

            und in der Tabelle Spezial unter Punkt 3 den Brennwert eintragen.zB 12 oder 8 Richtig? Habe ich noch etwas übersehen?

            special[1]  =   [''     ,''     ,'12'                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
            
            1 Reply Last reply Reply Quote 0
            • L
              looxer01 last edited by

              Hi

              @knopers1:

              lso, in der Gruppe die neuen Zeile auf CALC setzten.

              Code: Alles auswählen

              Gruppen[ 1] = ['javascript.0.Gaszaehler.Wert' ,'Heizung-KWh' ,false ,false ,false ,false ,false ,false ,'CALC' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // `

              ich glaube der Datenpunkt 'javascript.0.Gaszaehler.Wert" ist dein Gaszaehler. Ich meinte den Datenpunkt mit dem m3 Wert aus dem BSZ.

              ansonsten sieht es gut aus. (Du willst keine Historie z.B. Monatswerte führen ?)

              vG Looxer

              1 Reply Last reply Reply Quote 0
              • K
                knopers1 last edited by

                ja, javascript.0.Gaszaehler.Wert ist mein Gaszähler.

                Der Datenpunkt mit m3 Wert kommt doch aus der ersten Zeile nehme ich mal an…

                Gruppen[ 0] = ['javascript.0.Gaszaehler.Wert' ,'Heizung' ,false ,false ,false ,false ,false ,false ,'Delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

                Bin jetzt davon ausgegegangen dass ich neue Zeile bilden soll.

                Ja, Monatswerte und Jahreswerte möchte ich auch führen
                1526_unbenannt.png

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

                  also ja, ich meinte auch eine zweite Zeile.

                  Du machst also eine zweite Zeile und stellst dort den Datenpunkt der ersten Zeile ein. (aber komplett mit javascript.0.BSZ.Counter….)

                  Der soll dann auf CALC gestellt werden und in special die 12 eintragen.

                  Wenn du die Historienwerte auch in kWh sehen wills, dann müssen die auch noch auf true gestellt werden.

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • K
                    knopers1 last edited by

                    So, jetzt kommt es bei mir an 😄

                    Also,

                    in der Gruppentabelle Zeilen ausfüllen für Tag, Wochenende, Woche Monat usw mit den Datenpunkt ID , was aus dem ersten Eintrag enstanden ist…

                    Bei mir eben als Beispiel für den Tag: BSZ.Counter.Heizung.Delta.GAS.1-Day. Bevor ich alles wieder umändern muß. Gilt / als Sonderzeichen? Im Script steht etwas drin, das keine Sonderzeichen zulässig sind. zB: Name: Heizung-KWh/Tag ???

                    Gruppen[ 1]  = ['BSZ.Counter.Heizung.Delta.GAS.1-Day'                                ,'Heizung-KWh/Tag'                                 ,true  ,true  ,true  ,true  ,true  ,true  ,'CALC'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                    
                    Gruppen[ 2]  = ['BSZ.Counter.Heizung.Delta.GAS.2-WEEK'                                ,'Heizung-KWh/Wochenende'                                 ,true  ,true  ,true  ,true  ,true  ,true  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                    

                    In der zweiten Tabelle müsste dann soetwas sein:

                    logname[1]  =   ['Gas-KWh/Tag'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                    
                    logname[2]  =   ['Gas-KWh/Wochenende'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                    

                    und in der Tabelle Spezial

                    special[1]  =   [''     ,''     ,'12'                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                    
                    
                    special[2]  =   [''     ,''     ,'12'                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • L
                      looxer01 last edited by

                      …du hast zwei Gruppenzeilen angelegt. Wochenende und Wochentags nehme ich mal an.

                      gibts da unterschiedliche Tarife ? oder warum ?

                      ansonsten sieht es gut aus. Allerdings würde ich die switches auf false stellen. Die Anzahl der Gaszählermeldungen dürfte dich nicht interessieren.

                      "/" sollte funktionieren. Ich bin aber immer generell vorsichtig mit Sonderzeichen. Dann gibt es auch keine Ueberraschungen.

                      vG Looxer

                      1 Reply Last reply Reply Quote 0
                      • K
                        knopers1 last edited by

                        Nein, Tarif ist die gleiche… Es unterscheidet sich aber in der ID. (siehe mein Bild)

                        Eine ID für den Tag und fürs Wochenende ist eine andere.. usw... da kommt noch Monat Jahr und....

                        Oder kommt nur eine Zeile mit dem ersten Eintrag: BSZ.Counter.Heizung.Delta.GAS in meinem Beispiel ???

                        Ich bin jetzt davon ausgegangen, dass ich für jede ID etwas in der Gruppe eintragen muß..Ist es nicht so?

                        Das mit den Switchen habe ich in kenntniss genommen, wird wieder auf false gestellt.
                        1526_unbenannt.png

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

                          aaah jetzt. Nein, Die Historie Werte brauchst du nicht als Zeile. Du

                          hast ja in der zweiten Zeile dann Historie eingeschaltet und brauchst die nicht als Quelle.

                          Insgesamt brauchst du also nur zwei Zeilen - nicht drei

                          Zeile 0 - Dein Gaszähler

                          Zeile 1 die Zeile des Gaszählers aus dem Betriebsstundenzähler - also: BSZ.Counter.Heizung.Delta.GAS

                          Zeile 1 stellst du die Historienwerte auf true und dann sollte es gehen.

                          vG Looxer

                          1 Reply Last reply Reply Quote 0
                          • K
                            knopers1 last edited by

                            Geil, es ist etwas in Script entstanden. Habe heute aber noch kein Gas entnommen, deshalb die Null.

                            Gerade eben die alte Rechnung durchgeschaut und den Brennwert gefunden. 11,432 ist angegeben.

                            special[1]  =   [''     ,''     ,'11,432'                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                            

                            Soll ich nach der 11 eine Komma setzen, oder muß in deinem Script eine Null zwischen tun?

                            11,432 oder 11.432 ???

                            Edit: wird doch mit dem Punkt getrennt, zumindest schreiben die Meisten ein Punkt dazwischen….
                            1526_unbenannt.png
                            1526_unbenannt1.png

                            1 Reply Last reply Reply Quote 0
                            • K
                              knopers1 last edited by

                              @looxer,

                              die Tabelle mit KWh ist zwar da, allerdings bleiben die Werte dort beim Null. 😞

                              Kannst Du meine Konfig überprüffen? Evtl. fällt Dir schnell etwas auf, was nicht o.k sein könnte…
                              1526_new_2.txt

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

                                Hi,

                                setzt mal special(1)(8) auf false. (auf Bestätigung warten)

                                im Standard wird auf eine Bestätigung (acknowledge) gewartet. Da es sich aber um einen Javascript Datenpunkt handelt kommt diese nicht.

                                Daher erfolgt bei Aenderung des Datenpunktes Javascript.0.BSZ.Counter.Gas keine Ausführung des updates des Folgedatenpunktes.

                                vG Looxer

                                1 Reply Last reply Reply Quote 0
                                • K
                                  knopers1 last edited by

                                  @looxer

                                  ich verzweifle an dem Script…

                                  Das rechnet nicht, aus welchem Grund auch immer...Ich habe auch in der Tabelle Spezial (1) (8) auf false gestellt. 😞

                                  ich will doch einfach den Tageswert in m3, was bereits ohne Probleme hochgezählt wird in KW ausgeben.

                                  in meinem Bild sieht man doch die 0,1 m3... Diesen Wert einfach mal mit dem Brennwert 11.432 multiplizieren.

                                  0.1x 11.432=1.14 KW

                                  Wieso geht es nicht bei mir? Kannst Du mir einen einfachen Beispiel hier zeigen, wie ich eine Zahl aus der Objekt ID mit 11.432 multiplizieren kann?

                                  Das kann doch nicht so schwer sein. Irgendwo muß ich doch ne Komma mit Punkt oder ähnliches vertauscht haben. Ich kriege es nicht hin das Teil zum Zählen zu bewegen.
                                  1526_unbenannt.png

                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    knopers1 last edited by

                                    @looxer01

                                    es geht :mrgreen:

                                    ich habe den Datenpunkt nicht Komplett ausgeschrieben!

                                    javascript.0.BSZ.Counter.Heizung.DELTA.GAS sollte es heißen… und ich habe nur BSZ.Counter.Heizung.DELTA.GAS als Datenpunkt gesetzt!

                                    Ich kenne Deine Beschreibung mitlerweile auswendig, trotzdem kam ich auf die Idee nicht, dass ich unter dem I den ganzen Datenpunkt notieren soll. Gelesen und nicht umgesetzt! :shock:

                                    Danke für deine Hilfe!

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      noxx last edited by

                                      habe bei einigen Datenpunkten nur 000:00:00:00

                                      stehen

                                      Script: https://pastebin.com/raw/ZEhZgVcL
                                      2880_01.png

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

                                        Hi Noxx,

                                        die Werte werden erst mit dem Tagesabschluss gefüllt. (also um Mitternacht)

                                        Hattest du die Konfig schon über Nacht laufen ?

                                        vG Looxer

                                        1 Reply Last reply Reply Quote 0
                                        • N
                                          noxx last edited by

                                          @looxer01:

                                          Hi Noxx,

                                          die Werte werden erst mit dem Tagesabschluss gefüllt. (also um Mitternacht)

                                          Hattest du die Konfig schon über Nacht laufen ?

                                          vG Looxer ` Läuft seit einer Woche

                                          Gesendet von meinem Huawei P10lite mit Tapatalk

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

                                            kannst du mal ins log schauen, ob es Meldungen um 00:04 gab ?

                                            Deine Einstellungen sehen erstmal gut aus. Und der kumulierte Wert wird ja offensichtlich gefüllt.

                                            Also stimmt was mit dem Tagesabschluss nicht. Wenn due das Programm neu startest muesstest du auch die Anzahl der schedules reported bekommen. Sollten 27 sein.

                                            vG Looxer

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            438
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            51
                                            333
                                            78527
                                            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