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.
    • L
      Leon2079 last edited by

      Habe das Script jetzt als Dateianhang mit angehängt.

      1 Reply Last reply Reply Quote 0
      • S
        smooty1970 last edited by

        Servus,

        auch ich bin neu hier und habe das Script getestet. Ich bekomme nach Start des Scripts folgende Fehlermeldung:
        ` > 22:00:25.854 [info] javascript.0 Start javascript script.js.common.BSZ

        22:00:25.855 [info] javascript.0 script.js.common.BSZ: getState(id=hm-rpc.1.0001D3C99C90FD.6.ENERGY_COUNTER, timerId=0) => {"val":59975,"ack":true,"ts":1541624414180,"q":0,"from":"system.adapter.hm-rpc.1","lc":1541624414180}

        22:00:25.855 [info] javascript.0 script.js.common.BSZ: getObject(id= , enumName=undefined) => does not exist

        22:00:25.855 [error] javascript.0 script.js.common.BSZ: script.js.common.BSZ:327

        22:00:25.855 [error] javascript.0 at script.js.common.BSZ:327:47

        22:00:28.563 [info] javascript.0 Stop script script.js.common.BSZ `

        Die Gruppe sieht so aus:
        ` > var Gruppen = [];

        // 1.Homematic ID, 2.Thema(no spaces) 3.History 4.DAY 5.Week 6.Month 7.Year 8.Switch 9 - 18 Status to log 19.stop 20.Loesch

        Gruppen[ 0] = ['hm-rpc.1.0001D3C99C90FD.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 1] = ['hm-rpc.1.0001D3C99C9101.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 2] = ['hm-rpc.1.0001D3C99C913B.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 3] = ['hm-rpc.1.0001D3C99C9EEC.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 4] = ['hm-rpc.1.0001D3C99C9F14.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 5] = ['hm-rpc.1.0001D8A9910EE5.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 6] = ['hm-rpc.1.0001D8A9910EFD.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 7] = ['hm-rpc.1.0001D8A9910F00.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 8] = ['hm-rpc.1.0001D8A991117F.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[ 9] = ['hm-rpc.1.0001D8A991119F.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[10] = ['hm-rpc.1.0001D8A99111C4.6.ENERGY_COUNTER' ,'' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[11] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[12] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

        Gruppen[13] = `

        In Zeile 325-327 steht das:
        ` > if(Gruppen[zaehler][0].toUpperCase() !== "INITIAL" && Gruppen[zaehler][1] === '') { // nicht initial und kein Thema vergeben

        Gruppen[zaehler][1] = getObject(objGruppe).common.name; // Auslesen der Bezeichnung des Geraetes und ersetzen als Thema (default)

        } `
        Wo habe ich hier eine Fehler gemacht?

        Danke

        Update: Ich habe es geschafft, läuft alles. Die Firewall an der CCU3 wollte die Anfragen auf den Ports nicht durchlassen, dager der Scriptfehler. Ports geöffnet und Script läuft tadellos

        1 Reply Last reply Reply Quote 0
        • U
          UncleB last edited by

          Kann hier mal jemand kurz einen Ausschnitt posten wie er seine Sonoff Geräte zB den POW eingebunden hat?

          Also die Zeilen in den eigenen Datenpunkten

          1 Reply Last reply Reply Quote 0
          • R
            Rumpeltec last edited by

            Guten Tage werte Forumsmitglieder,

            ich habe mich kurzerhand heute angemeldet, da ich ein Problem habe mit dem ich nicht weiterkomme. Ich nutze seit ca. 1 Jahr den IOBroker mit VIS auf einem Wandtablet. Die komplette Materie habe ich mir bisher allein "zurecht gegoogelt" und bin auch ohne Vorkenntnisse bisher immer zum Ziel gekommen. Ich bin total begeistert von den Möglichkeiten und von der ganzen Arbeit die Leute da unentgeldlich da reinstecken. So wurde "Smarthome" jetzt zu einem (besessenen) Hobby für mich.

            Auf der Suche nach einer Auswertung für meine Energiezähler (Homematic und Fritz Dect) bin auf den BSZ gestossen. An dieser Stelle ein riesiges Lob und Dankeschön an den Entwickler. Selbst als totaler Laie und ohne Ahnung von Scripten habe ich das zum Laufen gekriegt.

            Leider hat mir der Fritz Dect Adapter meiner Poolheizung vor 2 Tagen einen irrationalen Wert von 453 kWh geliefert, der sich nun auf die ganze Statistik auswirkt.

            Ich habe beim BSZ in der Tabelle special einen Minuswert (-453) in Spalte 5 eingetragen um das zu korrigieren. Sieht aber in der Grafik nicht gut aus.

            Gibt es eine Möglichkeit das in der Datenbank (sqllite) zu korregieren? Ich habe redlich versucht einen Turbo Einstieg in sqlite hinzukriegen, aber es überfordert leider meine Fähigkeiten.

            Für einen kleinen Hilfsanstoss wäre ich sehr dankbar.

            MfG

            Ronny

            1 Reply Last reply Reply Quote 0
            • R
              Rumpeltec last edited by

              Ich habe es selbst nun gefunden. Im Javascript die kumulierten Zahlen beim BSZ für Woche, Monat, Jahr entsprechend um den Falschbetrag korregiert und aus der SQLITE Datenbank mit dem DB Browser die falschen Zahlen einfach gelöscht.

              Somit stimmen wieder alle Werte und die Grafik im VIS sieht auch wieder so aus wie sie soll.

              Nochmals große Lob an den Entwickler des Scriptes.

              1 Reply Last reply Reply Quote 0
              • sigi234
                sigi234 Forum Testing Most Active last edited by

                Hallo, seit dem Update vom js-controller auf Version 1.0.4 kommt folgender Fehler:

                javascript.0	2018-12-03 16:40:09.314	error	at Socket.onpacket (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:236:12)
                javascript.0	2018-12-03 16:40:09.314	error	at Socket.onevent (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:278:10)
                javascript.0	2018-12-03 16:40:09.314	error	at Socket.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20)
                javascript.0	2018-12-03 16:40:09.314	error	at Socket. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\lib\states\statesInMemClient.js:52:30)
                javascript.0	2018-12-03 16:40:09.314	error	at Object.change (C:\ioBroker\node_modules\iobroker.js-controller\lib\adapter.js:3425:37)
                javascript.0	2018-12-03 16:40:09.314	error	at Object.stateChange (C:\ioBroker\node_modules\iobroker.javascript\main.js:349:25)
                javascript.0	2018-12-03 16:40:09.314	error	at Object.callback (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:720:38)
                javascript.0	2018-12-03 16:40:09.314	error	at Object.ONSub.push.on (script.js.common.Betriebsstundenzaehler_Extended_Version:387:39)
                javascript.0	2018-12-03 16:40:09.314	error	at GeraetUpdate (script.js.common.Betriebsstundenzaehler_Extended_Version:1378:17)
                javascript.0	2018-12-03 16:40:09.314	error	at writelog (script.js.common.Betriebsstundenzaehler_Extended_Version:2739:20)
                javascript.0	2018-12-03 16:40:09.314	error	Error in callback: TypeError: fs.existsSync is not a function</anonymous>
                
                1 Reply Last reply Reply Quote 0
                • L
                  looxer01 last edited by

                  @sigi234:

                  Hallo, seit dem Update vom js-controller auf Version 1.0.4 kommt folgender Fehler: `
                  Hi,

                  ich habe jetzt eine neue Versin (1.00) erstellt.

                  Damit ist o.g. Fehler (kam vom neuen JS Adapter) gefixt.

                  Ausserdem können jetzt beliebig viele oder wenige Zeilen der Gruppen-Definitionen verwendet werden.

                  Bisher gab es genau 26 ( 0 - 26) Zeilen - nicht mehr und auch nicht weniger.

                  Die neue Version steht zum Download im ersten Post dieses Threads bereit

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active last edited by

                    Danke,

                    bist ja schneller als die Feuerwehr… 😉

                    1 Reply Last reply Reply Quote 0
                    • R
                      Radler1 last edited by

                      Hallo zusammen,

                      ich, Anfänger, habe mich ein wenig mit dem BSZ beschäftigt. Tolle Sache.

                      Betriebsstunden Zählung kein Problem, aber bei der Energiezählung bekomme ich unter der Delta Anzeige keine Werte angezeigt .

                      Meßgerät ist ein Homematic Zählersensor HM-ES-TX-WM.

                      Unter der System Anzeige werden Werte angezeigt, aber hier stimmt die Umrechnung nicht. Das Komma müsste 3 Stellen weiter nach links. In der Spezial Tabelle habe ich verschiedene Einstellungen probiert, führte aber zu keiner Veränderung.

                      Wer kann helfen?

                      Schönen Gruß

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

                        Hi,

                        es würde helfen, wenn du deine Einstellungen posten könntest und auch was der Zählsensor liefert.

                        vG Looxer

                        1 Reply Last reply Reply Quote 0
                        • R
                          Radler1 last edited by

                          Hallo Looxer,

                          ich hoffe du kannst da was mit anfangen.

                          Gruß
                          8066_dok1.docx

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

                            @Radler1:

                            ich hoffe du kannst da was mit anfangen. `
                            Hi,

                            habe dir eine PN gesendet.

                            vG Looxer

                            1 Reply Last reply Reply Quote 0
                            • G
                              Georgius last edited by

                              Danke für die Arbeit.

                              Bin nur eher ein Neuling. Wie installiert man das? Einfach einen neuen JS aufmachen und das txt reinkopieren?

                              1 Reply Last reply Reply Quote 0
                              • M
                                mazga last edited by

                                Hallo,

                                bin auch rel. neu auf dem Gebiet, habe mir jetzt einen Gaszähler "Ableser" zusammengebaut und wollte den mit diesem Skript auswerten aber irgendwas hab ich nicht verstanden. Es werden bei mir keine Werte akkumuliert und den offset Wert des Gaszählers hätte ich bei special add2 hinzugezählt

                                Der Gaszähler ist in m³ angegeben, ein Impuls sind 0,1m³, Offset wäre 19456m³, der Reed Kontakt arbeitet soweit so gut, die Daten werden auch aufgezeichnet, soweit so gut aber bei jeden Impuls zählt der Zähler zweimal und die Summe wird nicht erhöht. Im Bild zu sehen bei Zählerstand Switch 26 und Zählerstand Calc 19456.1 (woher das .1 kommt keine Ahnung 😉 sollte aber schon bei 19458.6 sein), wenn der reed Kontakt einmal anzieht zählt er zwei dazu, eben getestet mit externen Magnet.

                                hier mal die Config

                                //              1.Homematic ID,                    2.Feldname(no spaces)                    3.History  4.DAY  5.Week  6.Month 7.Year  8.Switch   9 - 18 Status to log                                                         19.stop 20.Loesch
                                Gruppen[0] = ['rpi2.0.gpio.22.state'            ,'Gaszaehler'                           ,true  ,true   ,true   ,true   ,true   ,true   ,'calc' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Schneckenzeit 
                                
                                //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
                                logname[0]  =   ['Zählerstand',''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                
                                //             1.Round 2.add1   3.Faktor                4\. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Frei  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12\. Min/MAX     13\. MehrfachStatus  14\. Selektives Logging
                                special[0]  =  ['1'     ,''     ,'0.1'                 ,''         ,'19456'     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ]; // Schneckenzeit in Sekunden
                                
                                

                                Vielelicht kann man es am Bild erkennen. Bitte um Hilfe was ich übersehen/vergessen/nicht behirnt habe, danke!

                                Weiters würde ich gern den Verbrauch im FLOT anzeigen lassen, hierfür ist aber die zeit zwischen zwei inputs relevant da sich durch 0,1m³/Zeit der Verbrauch ausrechenn läßt und dann im Flot könnte man die Grafik dann anpassen, so hätte man dann eine auswertmöglichkeit wieviel Zeit die Gastherme im Teil bzw. Vollastbetrieb läuft.

                                danke schonmal fürs lesen und ggf. Antwort schreiben 😉

                                mfg Martin
                                17434_iobroker-gpio22-gaszaehler.png

                                1 Reply Last reply Reply Quote 0
                                • M
                                  mazga last edited by

                                  @Georgius:

                                  Danke für die Arbeit.

                                  Bin nur eher ein Neuling. Wie installiert man das? Einfach einen neuen JS aufmachen und das txt reinkopieren? `

                                  Hab ich mich huete auch gefragt, geh aufs Admin Interface -> dann auf Skripte -> dann klickst auf common -> dann klickst auf das new script icon -> dann klickst auf JS udn dann fügst du das Skript von der ersten Seite ein und adaptierst deine Werte, speichern und fertig.

                                  mfg Martin

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    SkeeveKlah last edited by

                                    @Martin,

                                    das doppelte Zählen kommt evtl. direkt vom Reed. Hatte ich auch, im ESPEasy war bei mir "CHANGE" als default für einen Impulse eingetragen.

                                    Ich bin jetzt nur noch auf "FALLING", bei "RAISNG" habe ich immer komische Werte.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mazga last edited by

                                      @SkeeveKlah:

                                      das doppelte Zählen kommt evtl. direkt vom Reed. Hatte ich auch, im ESPEasy war bei mir "CHANGE" als default für einen Impulse eingetragen.

                                      Ich bin jetzt nur noch auf "FALLING", bei "RAISNG" habe ich immer komische Werte. `

                                      Lese es ja am RPi aus, der State wandelt ja nur von true -> false -> true, kann nur sein das die Logik vom BSZ true als "ist" ansieht und deswegen zweimal zählt?

                                      Ich kann den Reed Kontakt auch umbauen das default false ist und nur wenn er anzieht lvl up auf true geht. Ist derzeit ja nur auf einem Steckbord (Breadbord?) aufgebaut 😉

                                      mfg Martin

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

                                        Hi Martin,

                                        das ist ein Problem, dass Anfangs mit HM Geräten auftrat, weil ioBroker 2 x getriggert wurde.

                                        Einmal beim update vor dem Senden an HM (unbestätigt)

                                        und dann bei der Rückmeldung von HM (bestätigt)

                                        könnte es sein, dass es eine Rückmeldung vom Geräte gibt ? und wenn ja, kann man die Unterdrücken ?

                                        vG Looxer

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          mazga last edited by

                                          Hallo Looxer,

                                          also ich habs extra mal genau beobachtet, der gechaltene GPIO wandert nur einmal von true nach false wenn beim Gaszähler der magnet vorbeiwander und dann wieder auf true, ich werds aber umbauen. Wüsste nicht wo ich beim RPi im Iobroker da sonst was umstellen könnte ist ja wirklich onboard.

                                          wegen den anderen Sachen konntest du kurz über die cfg drüberschaun ob das so passen würde und hast du eine idee wie ich den Gasverbrauch im Flot angeben könnte also den verbrauch von 0,1m³/Zeiteinheit zwischen zwei trigger. naja und das Summieren geht gar nicht irgendwie also auch wenn doppelt gezählt wird wird derzeit nichts summiert.

                                          mfg Martin

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            smooty1970 last edited by

                                            Hallo Looxer.

                                            Ersteinmal Danke und Lob für dein Script gen. BSZ. Mit meinen elektrischen Heizungen (IR) funktioniert das alles wunderbar.
                                            Meine Frage nun. Wir bekommen zwar irgendwann demnächst smarte Stromzähler, aber ob die in den iobroker einbindbar sein werden, bleibt abzuwarten.
                                            Ich habe bisher immer mtl. Wasser und Tag/Nachtstromzähler seit 2013 am Monatsende dokumentiert.
                                            Bekomme ich irgendwie diese Daten in einen Zähler, der nach Eingabe des Ablesewerte die mtl. und jährlichen Verbräuche ausrechnet? Ich dachte, einen DP manuell anzulegen und hier am Monatsende den Zählerstand einzutragen, diesen DP durch dein Script beobachten zu lassen. Zweite Frage, die bisherigen Zählerstände - kann man die irgendwie nacherfassen?
                                            Danke

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            928
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

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