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. [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

[Vorlage] Betriebsstundenzähler & Verbrauchsrechner

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
333 Beiträge 51 Kommentatoren 93.4k Aufrufe 26 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.
  • L Offline
    L Offline
    looxer01
    schrieb am zuletzt editiert von
    #79

    @ein-bayer:

    Eine Frage stellt sich mir jedoch noch, wenn ich jetzt 8 Stromzähler habe, wie bekomme ich da eine summe heraus , zb die summe des Tagesverbrauchs oder Monat , Jahr….. `

    Hi,

    ich habe einen Test gemacht und es scheint erstmal zu funktionieren.

    Folgendes Coding muss hinter deinen Einstellungen ersetzt werden:

    305_bsz_summierungsvariante.txt

    Die Summierungseinstellungen befinden sich ganz unten im coding.

    Bei den Einstellung der Summierung musst du folgendes beachten:

    Fuer die Summierungsfunktion sind es 20 Zeilen (10 Davon die summierenden Datenpunkte)

    Diese muessen eingestellt werden. Dazu muessen dann die "DAY-Datenpunkte" verwendet werden.

    Dann musst du noch die Variable anzSummen auf z.B. 8 einstellen. (bei dir sind es ja 8)

    Das ganze funktioniert mit der Methode calc.

    Als Trigger kannst du einen der Energycounter verwenden.

    Nicht wundern, denn die Summierung hängt dabei immer einen Zyklus hinterher, wenn du einen Energycounter verwendest der mit summiert werden soll.

    Alternativ kannst du einen Schedule einstellen, dann würde z.B. alle x Minuten summiert.

    In Tabelle Special muss in Position 6 das Unterprogramm eingetragen werden. Also "Summierung1"

    Beispiel:

    Gruppentabelle:

    Gruppen[5] = ['hm-rpc.0.KEQ0965841.2.ENERGY_COUNTER','CALCTEST' ,false ,true ,true ,true ,true ,true ,'calc'

    Specialtabelle:

    special[5] = ['' ,'' ,'' ,'' ,'' ,'Summierung1' ,''

    Wenn du es testest und alles ok ist wuerde ich das zum Download einstellen.

    vG Looxer

    1 Antwort Letzte Antwort
    0
    • E Offline
      E Offline
      ein-bayer
      schrieb am zuletzt editiert von
      #80

      Danke für das script, werde mich "reindenken" und bescheidgeben

      1 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        looxer01
        schrieb am zuletzt editiert von
        #81

        Hi,

        warte mal besser. Leider ist es so, dass der Periodenwechsel nicht funktioniert.

        Ich muss den BSZ erst darauf vorbereiten und das ist dann etwas mehr Arbeit.

        Schaffe ich erst am nächsten WE.

        vG Looxer

        1 Antwort Letzte Antwort
        0
        • E Offline
          E Offline
          ein-bayer
          schrieb am zuletzt editiert von
          #82

          Hallo Looxer,

          so wie es aussieht funktioniert das script, keine Fehler in den logs. Was mir noch aufgefallen ist, ich . hab zum test nur meine ersten beiden Zähler eingesetzt, beim ersten Zähler Heizung Bad erscheint in der ersten Zeile kein Wert, beim Zähler pool 0,025.

          während ich die obigen Zeilen schrieb kam jetzt im log:

          javascript.0 State "BSZ.Counter.strom.CALC.Heizung-bad not found , der unter Objekte angezeigte wert stimmt auch nicht , der ist zu hoch ! beim pool meine ich auch das der wert zu hoch ist

          Was mir auffällt, im iob. log sehe ich das die Daten alle 1,2 Sekunden übergeben werden, ist das so ok?

          Vg Manfred
          1342_bildschirmfoto_2017-01-28_um_20.49.16.png
          1342_bildschirmfoto_2017-01-28_um_20.59.18.png
          1342_bildschirmfoto_2017-01-28_um_20.59.51.png
          1342_bildschirmfoto_2017-01-28_um_21.00.29.png

          1 Antwort Letzte Antwort
          0
          • E Offline
            E Offline
            ein-bayer
            schrieb am zuletzt editiert von
            #83

            Du warst schneller !! :D :D :D :D

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              Marcolotti
              schrieb am zuletzt editiert von
              #84

              Hallo,

              ich habe das Script erfolgreich angewendet. Vielen Dank dafür. Wäre das nicht ein Adapter wert?

              Gruß Marco

              CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

              1 Antwort Letzte Antwort
              0
              • E Offline
                E Offline
                ein-bayer
                schrieb am zuletzt editiert von
                #85

                Hallo Marcolotti

                stimmen bei dir auch die Werte der Summen? Am laufen hatte ich das script auch , aber die Summen passten nicht. Oder hast du noch etwas geändert

                Vg

                Manfred

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Marcolotti
                  schrieb am zuletzt editiert von
                  #86

                  Hallo Manfred,

                  darüber kann ich noch nichts genaues sagen. Es wird sich im Tagesverlauf ergeben. Gebe dann nochmal bescheid.

                  Eine Frage von mir noch an den Macher des Scripts: Lässt es sich einstellen, dass die Zeiten nicht erst nach Beendigung angezeigt werden sondern kontinuierlich Werte liefert. Ich überwache damit die "Computerspielzeiten" der Kinder. Das heißt, der Ping-Adapter sendet alle 2 Minuten einen Ping an die Rechner. Aber erst wenn der Ping wieder "false" ist, dann wird die Zeit aktualisiert. So ein Update vom Script alle paar Minuten wäre für die Darstellung ganz praktisch.

                  Gruß Marco

                  CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                  1 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    looxer01
                    schrieb am zuletzt editiert von
                    #87

                    @Marcolotti:

                    ine Frage von mir noch an den Macher des Scripts: Lässt es sich einstellen, dass die Zeiten nicht erst nach Beendigung angezeigt werden sondern kontinuierlich Werte liefert. `

                    Hi

                    das Script erfasst die Anfangszeit und wartet dann auf eine Aenderung des Status damit die Endezeit berechnet werden kann.

                    Allerdings könnte das was du möchtest im Zusammenhang mit einem Schedule Sinn machen, ist aber nicht implementiert.

                    Leider war ich in der letzten Zeit beruflich sehr stark eingebunden, ansonsten hätte ich mich schon an eine Adapterentwicklung gemacht.

                    Ist aber noch nicht vom Schirm. Das wäre also was bei einer ohnehin fälligen Ueberarbeitung des Konzeptes.

                    vG Looxer

                    1 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      looxer01
                      schrieb am zuletzt editiert von
                      #88

                      @ein-bayer:

                      stimmen bei dir auch die Werte der Summen? Am laufen hatte ich das script auch , aber die Summen passten nicht. Oder hast du noch etwas geändert `

                      Hi,

                      meinst du die Summenbildung aufgrund der Erweiterung ? - das funktioniert noch nicht - fixe ich am WE

                      oder hast du noch andere Probleme ?

                      vG Looxer

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        Marcolotti
                        schrieb am zuletzt editiert von
                        #89

                        Hallo Looxer,

                        das wäre ein Adapter wie ihn viele brauchen würden. Bin ich mir sicher.

                        Gruß Marco

                        CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                        1 Antwort Letzte Antwort
                        0
                        • L Offline
                          L Offline
                          looxer01
                          schrieb am zuletzt editiert von
                          #90

                          @looxer01:

                          Ich muss den BSZ erst darauf vorbereiten und das ist dann etwas mehr Arbeit.

                          Schaffe ich erst am nächsten WE. `

                          Hi,

                          sodele, ich habe das script jetzt angepasst und es sollte funktionieren.

                          Bitte achte darauf, dass du einen neuen Datenpunkt definierst. Für diesen Datenpunkt definierst schreibst du in die Individualfunktion "Summierung1!

                          Bitte nicht mehr Datenpunkte damit versehen. Das war bei deiner letzten Konfig nicht richtig und kann nicht funktionieren.

                          Beispiel:

                          Gruppentabelle:

                          Gruppen[5] = ['hm-rpc.0.KEQ0965841.2.ENERGY_COUNTER','CALCTEST' ,false ,true ,true ,true ,true ,true ,'calc'

                          Specialtabelle:

                          special[5] = ['' ,'' ,'' ,'' ,'' ,'Summierung1' ,''

                          Im Coding musst du unten dann wie gehabt die zu summierenden Datenpunkte angeben. Anders ist jetzt, dass du die Perioden nicht mehr angibst:

                          die Variable anzSummen muss der Anzahl deiner Datenpunkte entsprechen, vermutlich also 8.

                          beispiel:

                          if(funktion === "SUMMIERUNG1") {

                          // Einstellbereich–------------------------------------------------------

                          var DatenPkt1 = "javascript.0.BSZ.ZCounter.Strom_Oekofen.DELTA.Oekofen-EURO";

                          var DatenPkt2 = "javascript.0.BSZ.ZCounter.Strom_Kuehlschrank.DELTA.KuehlscrankEURO";

                          var DatenPkt3 = "";

                          var DatenPkt4 = "";

                          var DatenPkt5 = "";

                          var DatenPkt6 = "";

                          var DatenPkt7 = "";

                          var DatenPkt8 = "";

                          im Anhang findest du das gesamte Programm. Bitte alles unterhalb deiner Einstellungen kopieren. (unterhalb von Expert-Einstellungen)

                          Viel Erfolg :)

                          Looxer

                          305_bsz_summierungsvariante.txt

                          1 Antwort Letzte Antwort
                          0
                          • P Offline
                            P Offline
                            ple
                            schrieb am zuletzt editiert von
                            #91

                            Wollte nur eben kurz mein Dankeschön hier lassen.

                            Es ist wirklich ein super Script und selbst ich habe es am laufen bekommen :-)

                            eine Frage hätte ich da noch. Ich logge bei mir erst mal den Hauptstromzähler mit. Was ich noch vermisse wäre der Grundpreis für den Anschluss.

                            Kann man den noch mit einbauen?

                            Vielen Dank dafür, Super Leistung. Ich hoffe mal noch auf einen Adapter, falls du Langeweile haben solltest :-)

                            Intel Nuc + Proxmox

                            1 Antwort Letzte Antwort
                            0
                            • L Offline
                              L Offline
                              looxer01
                              schrieb am zuletzt editiert von
                              #92

                              Hi Ple,

                              das freut mich :)

                              der kWh-Gesamtpreis also inkl Grundpreis ist abhaengig vom Gesamtverbrauch.

                              Ich habe das bei dem HT NT Script (siehe Suche) realisiert und ermittele den Gesamtpreis durch Prognose.

                              Durch die Prognose kann dann naemlich ein vorasussichtlicher kWh Preis ermittelt werden.

                              Ich habe vor aus der gesammelten Erfahrung einen Adapter zu bauen. Möglicherweise einen separaten für die Verbrauchsrechnung.

                              Da könnte so etwas eingebaut werden. Ich überlege noch.

                              vG Looxer

                              1 Antwort Letzte Antwort
                              0
                              • P Offline
                                P Offline
                                ple
                                schrieb am zuletzt editiert von
                                #93

                                Der Grundpreis, Grundgebühr bleibt doch gleich, zumindest meiner.

                                Würde das gehen, wenn z.B. die Grundgebühr 90€ beträgt, das du 365.

                                die 0,246€ nach dem Nullen vom Tag direkt mit draufrechnen, so als Offset?

                                Das bei Woche, Monat, Jahr halt eben auch. Dann hätte man den genauen Strompreis.

                                Gruß

                                Intel Nuc + Proxmox

                                1 Antwort Letzte Antwort
                                0
                                • L Offline
                                  L Offline
                                  looxer01
                                  schrieb am zuletzt editiert von
                                  #94

                                  Hi Ple,

                                  ist natürlich auch ein Ansatz.

                                  Ein Aberechnungsdatum ab dem der Grundpreis gültig ist muss bekannt sein und es muss möglich sein den Grundpreis zu ändern zum neuen Abrechnungstag. Ist also schon ein wenig mehr. Ich habe das beim HT NT Rechner so gemacht was da gut funktioniert. Allerdings habe ich dort den Grundpreis auf die kWh umgerechnet. Finde ich persönlich besser.

                                  Egal wie es braucht ein paar mehr Daten, die im Programm wie es jetzt ist nicht so angelegt sind. Bei einer Neukonzeption würde ich das gerne machen.

                                  vG Looxer

                                  1 Antwort Letzte Antwort
                                  0
                                  • S Offline
                                    S Offline
                                    Strizz
                                    schrieb am zuletzt editiert von
                                    #95

                                    Hallo,

                                    ich habe mich gerade auch mal an dem Betriebstundenzähler (vers. 0.97) versucht, bin allerdings kläglich gescheitert.

                                    Ich logge mit dem Smartmeter-Adapter meinen Stromverbrauch. Habe testweise mal - wie ich meine, streng nach Handbuch - die entsprechenden Werte für eine Stromverbrauchsrechnung eingetragen. Beim Starten des Scripts erscheint aber sofort die folgende Fehlermeldung:

                                    17:22:16.282	[error]	javascript.1 script.js.common.Verbrauch_und_Betriebsstunden: TypeError: Cannot read property '1' of undefined at script.js.common.Verbrauch_und_Betriebsstunden:305:65 at ContextifyScript.Script.runInContext (vm.js:35:29)
                                    

                                    Habe ich irgendetwas überlesen? Habe bisher nur - wie in der Anleitung in Kapitel 3.5 beschrieben - die Tabellen entsprechend ausgefüllt. Muss ich noch weitere Eintragungen machen?

                                    Vielleicht kann mir ja mal jemand auf die Sprünge helfen.

                                    Gruß

                                    Strizz

                                    1 Antwort Letzte Antwort
                                    0
                                    • L Offline
                                      L Offline
                                      looxer01
                                      schrieb am zuletzt editiert von
                                      #96

                                      Hi,

                                      ich vermute mal, dass dir irgendein Fehler bei der Einstellung unterlaufen ist.

                                      Das passiert leicht wie z.B. ein Hochkomma vergessen, Komma etc.

                                      Schau dir deine Einstellungen nochmal genau an. Wenn du nichts findest, dann poste mal deinen Einstellungsbereich.

                                      vG Looxer

                                      1 Antwort Letzte Antwort
                                      0
                                      • S Offline
                                        S Offline
                                        Strizz
                                        schrieb am zuletzt editiert von
                                        #97

                                        Hallo Looxer,

                                        habe es jetzt 10 mal mit den Einstellungen in der Gebrauchsanweisung verglichen: Finde keinen Unterschied. Hier sind meine Einstellungen:

                                        // Part 1\. Initiierung
                                        // Part 1.1 Einstellungen
                                        /* HIER Einstellungen vornehmen............................................................................................
                                        --------------------------------------------------------------------------------------------
                                        Position 1 = ist die Geraete-ID bzw Objekt ID - bitte nur gültige objekte eintragen - Es funktionieren alle LEVEL und STATE Geraete und alles was mit true und false belegt werden kann
                                        .............der Text "initial" muss eingetragen sein fuer nicht genutzte Zeilen
                                        Position 2 = der Thema unter dem die Betriebszeiten in ioBroker abgelegt werden. - keine Sonderzeichen und keine Spaces verwenden. Statdessen aber Unterstriche eintragen
                                        Position 3 = History, Bei true werden die zeitabschnitte Monat und Jahr vor der Loeschung per Monat und Jahr gesichert (in ioBroker objekte)
                                        Position 4 = Variable DAY wird angelegt und kumuliert - täglicher refresh       - keine Hochkomma
                                        Position 5 = Variable WEEK wird angelegt und kumuliert - wöchentlicher refresh  - keine Hochkomma
                                        Position 6 = Variable MONTH wird angelegt und kumuliert - monatlicher refresh   - keine Hochkomma
                                        Position 7 = Variable YEAR wird angelegt und kumuliert - Jährlicher refresh     - keine Hochkomma
                                        Position 8 = Verwendung eines Zaehlers um die Statuswechsel (anzahl Schaltungen) zu zaehlen
                                        Position 9 = entweder ein Status wie true false etc ODER Sonderfunktionen
                                        .............bei LEVEL Geraeten eine Zahl zwischen 0 und 100 - Empfehlung 1\. Bedeutet alle Level groesser gleich 1 werden als EIN gewertet
                                        .............delta  = Deltamessung einer Zahl (hochzählen) zwischen letztem Wert und aktuellem Wert und fortschreibung dieser Zahl in die Zeitabschnitte (Anwendung z.B. Strommessung)
                                        .............deltam = Delta Minusmessung. wie delta aber die erwarteten Zahlen nehmen staendig ab
                                        .............calc   =  Umwandlung von Boolean Werte durch Anwendung einer Formel oder Zeitmessung und Umwandlung der gemessenen Zeit
                                        ...................... Lokikwerte (true/false) werden umgerechnet in 0 und 1 und können z.B. mit Addition zu anderen Werten gerechnet werden (dient zur graphischen Darstellung)
                                        .............Alle Funktionen können mit Rundung versehen werden und mit Faktoren um z.B. den Energieverbrauch zu berechnen (öl und Pellet) oder umrechnen in Euro oder von Wh in KWh etc (Tabelle special)
                                        Position 9 - 18 - Eingabe was gezaehlt werden soll. Jeder Eintrag erzeugt eine variable in den Objekten. Sobald ein Status des Homematic-ID gesetzt wird, wird die Zeit bzw. die Anzahl der Schaltvorgaenge gespeichert
                                                            Status kann  in hochkomma anagegeben werden z.B. '100' oder 100\.  
                                                            Als eingeschaltet wird alles groesser gleich dem eingegebenen Wert berechnet
                                                            (bei Sonderfunktionen werden die positionen 10 - 18 ignoriert)
                                        Position 19 = stop Refresh = true  Es werden kene  Daten mehr aktualsieirt. Solange Refresh auf true steht werden keine neuen Daten aufgezeichnet - standard ist also false
                                        Position 20 = Loesch Datenpunkte = True   Es werden alle Daten geloescht - standard ist also false - damit geloescht wird muss auch stop refresh auf true stehen
                                        
                                        */
                                        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]  = ['smartmeter.0.1-0:1_8_0*255.value'       ,'Strom'                            ,false  ,true   ,true   ,true  ,true  ,true    ,'delta'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 1]  = ['smartmeter.0.1-0:1_8_0*255.value'       ,'Strom'                            ,true   ,true   ,true   ,true  ,true  ,true    ,'delta'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 3]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 4]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 5]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 6]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 7]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 8]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[ 9]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[10]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,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]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[14]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[15]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[16]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[17]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[18]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[19]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[20]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[21]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[22]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[23]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[24]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        Gruppen[25]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                        
                                        /*-------------------------------------------------------------------------------
                                        
                                        Die folgende Tabelle dient zur Vergabe von Statusnamen zur besseren Lesbarkeit. Standard ist EIN
                                        Die ziffern im Array z.B. [0] korrespondieren mit der Gruppentabelle also Gruppen[0] gehört zu logname[0]
                                        Wird hier kein Feldname vergeben, dann wird Spalte 9-18 der Gruppentabelle als Feldname verwendet
                                        Beispiel: Zustand Lampe = EIN ,
                                        Beispiel: Status 1 =Start, 2 =  Heizung_Zuendung,3 = Softstart 4 = Heizung_Brennen, 5 = Heizung_Nachlauf etc
                                        ACHTUNG- keine spaces verwenden */
                                        var logname = [];
                                        //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
                                        logname['Strom-kWh']   =   ['EinAus0'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname['Strom-Euro']  =   ['EinAus1'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[2]  =   ['EinAus2'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[3]  =   ['EinAus3'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[4]  =   ['EinAus4'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[5]  =   ['EinAus5'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[6]  =   ['EinAus6'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[7]  =   ['EinAus7'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[8]  =   ['EinAus8'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[9]  =   ['EinAus9'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[10] =   ['EinAus10'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[11] =   ['EinAus11'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[12] =   ['EinAus12'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[13] =   ['EinAus13'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[14] =   ['EinAus14'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[15] =   ['EinAus15'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[16] =   ['EinAus16'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[17] =   ['EinAus17'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[18] =   ['EinAus18'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[19] =   ['EinAus19'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[20] =   ['EinAus20'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[21] =   ['EinAus21'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[22] =   ['EinAus22'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[23] =   ['EinAus23'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[24] =   ['EinAus24'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[25] =   ['EinAus25'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        
                                        /*
                                        Tabelle "special"   :   hier werden Rechenregeln und Sonderfunktionen hinterlegt
                                        Pos1 Rundung auf Nachkommastellen
                                        Pos2 Addition1 mit dem angegebenen Wert erfolgt vor der Multiplikation mit dem Faktor aus Pos3
                                        Pos3 = Faktor für die Multiplikationen - Ein Faktor kann nur sinnvoll eingegeben werden, wenn zu diesem Zeitpunkt alle Werte auf Null stehen.
                                        .......Der Faktor kann nicht null sein. In diesem Fall wird 1 angenommen.
                                        .......Also entweder bei der Neueinrichtung bzw ein Refresh ist aller Werte ist erforderlich
                                        Pos4 = Divisor um den Faktor lesbar zu machen z.B. Millisekunden Divisor für Sekunde = 1000 , Minute = 60000, Stunde = 3600000
                                        .......Die Rechnung ist Faktor/Divisor / Wenn Divisor = blank oder 0, dann wird 1 angenommen
                                        Pos5 = Addition2 mit dem angegebenen Wert erfolgt nach der Multiplikation mit dem Faktor aus Pos3
                                        .......Formel: y=((x+add1)*faktor/divisor)+add2  / y = Ergebnis - x = eigehender Wert aus dem überwachten Datenpunkt
                                        .......y wird in die Indivduallogik geschickt um weiter zu berechnen
                                        Pos6 ist vorgesehen, um Funktionen im Programm zu definieren die dann aufgerufen werden - Programmierung ist erforderlich
                                        Pos7 nur fuer Methode Delta und DeltaM - bei Tanksensoren/Energiesensoren kommt es haeufig zu Schwankungen plus und minus - Hier wird die Grenze bestimmt bei der ein Tankvorgang sicher angenommen werden kann z.B. 100 Liter differenz
                                        ......der Wert muss in der gemessenen Einheit angegeben werden. Z.B. Ultraschallsensoren senden in Liter. Dann ist die Zahl, die hier eingegeben werden muss ebenfalls Liter. Wenn nichts angegeben wird, dann wird 100 angenommen
                                        Pos8.. Sonderfall, wenn unter Gruppe(0) ein Datenpunkt eingetragen wurde der nicht nach update eine Bestaetigung (ack) erhaelt. In diesem Fall sollte 8 auf false stehen
                                        Pos9 =Wenn ein gleitender Durchschnitt berechnet werden soll, dann wird hier true eingetragen  (noch nicht aktiviert)
                                        Pos10 = Zählschwelle für Durchschnittsberechnung. TIME in Millisekunden (bei einer Einschaltzeit unter der Angabe hier wird der Wert nicht in die Durchschnittsberechnung einbezogen)
                                        ........Umrechnugnen anhand von addition1 faktor, divisor und addition2 werden dabei nicht berücksichtigt
                                        Pos11 =  Alternativ zum Auslösen bei Veränderung lassen sich hier Zeiten eingeben an denen die Erfassung des Zustandes der zu loggenden Datenpunkte erfolgt.
                                        .........format ist CRON. Beispiele: alle 10 Minuten =  * /10 * * * *  (leerzeichen vor "/"" bitte entfernen) täglich um 12 Uhr = 0 12 * * * -
                                        .........alle 2 Stunden = 0 * /2 * * * etc (leerzeichen vor "/"" bitte entfernen)
                                        .........mit der folgenden Web-Seite können die Zeiten generiert werden:        http://crontab-generator.org/
                                        .........Zur Ueberpruefung von Cron Expessions bietet sich diese Website an:    http://crontab.guru/
                                        .........Das ist nicht fuer die Methode TIME sinnvoll und ist daher ausgeschaltet, falls ein schedule fuer TiME eingegeben wurde
                                        Pos12 =  Logging für diesen Datenpunkt wird eingeschaltet, wenn ein true eingetragen wird. Damit werden Minimum und Maximum Werte festgehalten
                                        Pos13 =  Mehrfachstatus loggen ? dann true. In diesem Fall wird ein Status auch dann gesetzt, wenn bereits der gleiche Status vorher gesetzt wurde.
                                                 das hat zur Folge, dass z.B. die Zeitmessung neu gestartet wird, obwohl der Status im Grunde nicht geändert wurde. Standard ist false
                                        Pos14 =  Selective Logging - Wenn auf true, dann wird dieser Datenpunkt in einer dedizierten Datei geloggt
                                        
                                        */
                                        
                                        var special = [];
                                        //             1.Round 2.add1   3.Faktor                4\. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Warten auf Bestaetigung  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12\. Min/MAX     13\. MehrfachStatus  14\. Selektives Logging
                                        special[0]  =   ['3'     ,''     ,'0.001'               ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
                                        special[1]  =   ['2'     ,''     ,'0.25'                ,'1000'     ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[2]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[3]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[4]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[5]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                        special[6]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[7]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[8]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[9]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[10] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[11] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[12] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                        special[13] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[14]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[15]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[16]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[17]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[18]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[19]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                        special[20]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[21]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[22]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[23]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[24]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[25]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        
                                        // Es werden zur angegebenen Uhrzeit die Kumulationsvariablen bei beginn einer neuen Periode genullt (DAY,WEEK,MONTH,YEAR)
                                        // Zu dieser Zeit werden auch die Monatswerte und Jahreswerte gesichert falls History auf true steht
                                        var TimeSetStunde   = "00";     // Bitte Uhrzeit - hier Stunde eingeben im 24 Stunden Format z.B. 00 für Mitternacht
                                        var TimeSetMinute   = "04";     // Bitte Minuten eingeben z.B. 10 - = 00:10 für Null Uhr Zehn
                                        
                                        // logging in eine exterene EXCEL Datei - hier werden alle updates gesichert - wird vor allem zum debugging benoetigt Empfehlung false fuer produktiven Betrieb
                                        var logflag     = false;     // wenn auf true dann wird das logging in Datei /opt/iobroker/iobroker-data/BSZLog.csv eingeschaltet bei false vice versa
                                        // logging in eine exterene EXCEL Datei - hier werden alle Zeitabschnitte vor der Nullung gesichert - Empfehlung true  fuer produktiven Betrieb
                                        var Timelogflag = false;     // wenn auf true dann wird das logging in Datei /opt/iobroker/iobroker-data/BSZTimeLog.csv eingeschaltet bei false vice versa
                                        
                                        // fuer OSX und Windows MUSS der volle  Pfad eingestellt werden (wenn die log flags auf true stehen)
                                        // Beispiel: /Users/looxer01/Documents/iobroker/iobroker-data/BSZLog.csv
                                        var LogPath = "/opt/iobroker/iobroker-data/BSZExtLog.csv";             // Pfad und Dateiname des externen Logs
                                        var TimeLogPath = "/opt/iobroker/iobroker-data/BSZExtTimeLog.csv";     // Pfad und Dateiname des externen Logs für die Zeitabschnitte täglich, wöchentlich monatlich jährlich
                                        
                                        // Ende Einstellungen .......................................................................................................
                                        
                                        // Experten-Einstellungen .......................................................................................................
                                        // die beiden Variablen regeln das abspeichern der ioBroker Variablen. Unter diesem Pfad sind sie in ioBroker javascript.0\. zu finden
                                        
                                        var sysLocation     = "BSZ.System";              // Speicherort der Systemvariablen
                                        var countLocation   = "BSZ.Counter";             // Speicherort der Counter Variablen (Klartext Betriebszeiten)#
                                        
                                        // Die Periodenwerte werden damit im Text angeplasst , Achtung - damit werden zusätzliche Elemente angelegt - Vorhandene Elemente werden NICHT geändert
                                        // Die Ziffern sorgen für die richtige Sortierung
                                        var PeriodeDay      = "1-DAY";              // Benennung der Perioden in der Datenstruktur
                                        var PeriodeWeek     = "2-WEEK";             // Benennung der Perioden in der Datenstruktur
                                        var PeriodeMonth    = "3-MONTH";            // Benennung der Perioden in der Datenstruktur
                                        var PeriodeYear     = "4-YEAR";             // Benennung der Perioden in der Datenstruktur
                                        
                                        /* Ende Experten-Einstellungen .......................................................................................................
                                        --------------------------------------------------------------------------------------------------------------------------------------*/
                                        
                                        // Part 1.2 Allgemeine Variablen
                                        // Start des Programmablaufs bevor Trigger aufgerufen werden
                                        
                                        var SpaceChk = new RegExp(/\s/);            // pattern um zu pruefen ob eine IDGruppe blanks enthaelt
                                        var fs = require('fs');                     // enable write fuer externes log
                                        var string = " ";                           // Logstring
                                        var logtext=" " ;                           // Kommentar im log
                                        var FormTimeKum = "000:00:00:00";           // kumulierte Betriebsstunden im Format ddd:hh:mm:ss
                                        var FormTimeSingle  = "000:00:00:00";       // kumulierte Betriebsstunden im Format ddd:hh:mm:ss
                                        var currSec = 0;                            // aktuelle Zeit in Millisekunden
                                        var GeraeteName = " ";                      // Bezeichnung des Geraetes
                                        var GeraeteStatus = " ";                    // Geraetestatus z.B. true / false
                                        var timediff = 0;                           // Variable Betriebszeit in MSec von letzter Einschaltzeit bis curren Ausschaltzeit
                                        var newkumtime = 0;                         // Variable neue berechnete kumulirete Zeit in MSec
                                        var LastMSec     = 0;                       // Variable letzte Einschaltzeit in MSec
                                        var LastKumSec   = 0;                       // Variable letzte kumulierte Zeit in MSec
                                        var DayKum = 0;                             // Rechenvariable taegliche kumulierte Werte
                                        var WeekKum = 0;                            // Rechenvariable woechentliche kumulierte Werte
                                        var MonthKum = 0;                           // Rechenvariable monatliche kumulierte Werte
                                        var YearKum = 0;                            // Rechenvariable jaehrliche kumulierte Werte
                                        var FormTimeDAY     = "000:00:00:00";       // Rechenvariable taegliche formatierte Werte
                                        var FormTimeWEEK    = "000:00:00:00";       // Rechenvariable woechentliche formatierte Werte
                                        var FormTimeMONTH   = "000:00:00:00";       // Rechenvariable moantliche formatierte Werte
                                        var FormTimeYEAR    = "000:00:00:00";       // Rechenvariable jaehrliche  formatierte Werte
                                        var cronjob = TimeSetMinute + " " + TimeSetStunde +" * * *";  // Cron Schedule setzen
                                        var action = " ";                           // actiontext fuer Log
                                        
                                        var objGruppe   = " ";                      // die iobroker bwz. HM  object ID
                                        var objMSec     = " ";                      // BSZ.SystemGrp00.MSec
                                        var objKum      = " ";                      // BSZ.SystemGrp00.Kum
                                        var objTime     = " ";                      // BSZ.Counter.Feldname
                                        var objSwitch   = " ";                      // BSZ.Counter.Feldname   
                                        
                                        var OnIdTAB = new Array([Gruppen.length]);        // onID Tabelle fuer die Auslösung bei Änderung (wurde benötigt, um die schedule funktion zum Laufen zu bringen)
                                        
                                        

                                        Bin mir allerdings nicht sicher, ob ich noch weitere Einstellungen machen muss.

                                        Gruß

                                        Strizz

                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          ple
                                          schrieb am zuletzt editiert von
                                          #98

                                          Ich mache das gleich wie du in deinem Script. Meins läuft soweit, außer das die Kostenrechnung nicht richtig ist. weiß aber noch nicht warum.

                                          Hier mal meine Einstellungen, ist zwar ein Homematic Gerät denke aber das macht kein Unterschied.

                                          Einfach die Geräte ID tauschen und meinen Teiler von 1000 rausnehmen.

                                          Gruppen[ 0]  = ['xxxxxxxxxxxxxxxxxxxx'   ,'Strom'                            ,true   ,true   ,true   ,true   ,true   ,true   ,'delta'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // kWh Hauptzähler
                                          Gruppen[ 1]  = ['xxxxxxxxxxxxxxxxxxxx'   ,'Stromkosten'                      ,true   ,true   ,true   ,true   ,true   ,false  ,'delta'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Euro Hauptzähler
                                          Gruppen[ 2]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 3]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 4]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 5]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 6]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 7]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 8]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[ 9]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[10]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,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]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[14]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[15]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[16]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[17]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[18]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[19]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[20]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[21]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[22]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[23]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[24]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          Gruppen[25]  = ['initial'                                ,''                                 ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
                                          
                                          /*-------------------------------------------------------------------------------
                                          
                                          Die folgende Tabelle dient zur Vergabe von Statusnamen zur besseren Lesbarkeit. Standard ist EIN
                                          Die ziffern im Array z.B. [0] korrespondieren mit der Gruppentabelle also Gruppen[0] gehört zu logname[0]
                                          Wird hier kein Feldname vergeben, dann wird Spalte 9-18 der Gruppentabelle als Feldname verwendet
                                          Beispiel: Zustand Lampe = EIN ,
                                          Beispiel: Status 1 =Start, 2 =  Heizung_Zuendung,3 = Softstart 4 = Heizung_Brennen, 5 = Heizung_Nachlauf etc
                                          ACHTUNG- keine spaces verwenden */
                                          var logname = [];
                                          //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
                                          logname[0]  =   ['Strom-kWh'    ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[1]  =   ['Strom-Euro'   ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[2]  =   ['EinAus2'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[3]  =   ['EinAus3'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[4]  =   ['EinAus4'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[5]  =   ['EinAus5'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[6]  =   ['EinAus6'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[7]  =   ['EinAus7'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[8]  =   ['EinAus8'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[9]  =   ['EinAus9'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[10] =   ['EinAus10'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[11] =   ['EinAus11'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[12] =   ['EinAus12'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[13] =   ['EinAus13'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[14] =   ['EinAus14'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[15] =   ['EinAus15'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[16] =   ['EinAus16'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[17] =   ['EinAus17'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[18] =   ['EinAus18'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[19] =   ['EinAus19'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[20] =   ['EinAus20'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[21] =   ['EinAus21'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[22] =   ['EinAus22'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[23] =   ['EinAus23'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[24] =   ['EinAus24'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          logname[25] =   ['EinAus25'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                          
                                          /*
                                          Tabelle "special"   :   hier werden Rechenregeln und Sonderfunktionen hinterlegt
                                          Pos1 Rundung auf Nachkommastellen
                                          Pos2 Addition1 mit dem angegebenen Wert erfolgt vor der Multiplikation mit dem Faktor aus Pos3
                                          Pos3 = Faktor für die Multiplikationen - Ein Faktor kann nur sinnvoll eingegeben werden, wenn zu diesem Zeitpunkt alle Werte auf Null stehen.
                                          .......Der Faktor kann nicht null sein. In diesem Fall wird 1 angenommen.
                                          .......Also entweder bei der Neueinrichtung bzw ein Refresh ist aller Werte ist erforderlich
                                          Pos4 = Divisor um den Faktor lesbar zu machen z.B. Millisekunden Divisor für Sekunde = 1000 , Minute = 60000, Stunde = 3600000
                                          .......Die Rechnung ist Faktor/Divisor / Wenn Divisor = blank oder 0, dann wird 1 angenommen
                                          Pos5 = Addition2 mit dem angegebenen Wert erfolgt nach der Multiplikation mit dem Faktor aus Pos3
                                          .......Formel: y=((x+add1)*faktor/divisor)+add2  / y = Ergebnis - x = eigehender Wert aus dem überwachten Datenpunkt
                                          .......y wird in die Indivduallogik geschickt um weiter zu berechnen
                                          Pos6 ist vorgesehen, um Funktionen im Programm zu definieren die dann aufgerufen werden - Programmierung ist erforderlich
                                          Pos7 nur fuer Methode Delta und DeltaM - bei Tanksensoren/Energiesensoren kommt es haeufig zu Schwankungen plus und minus - Hier wird die Grenze bestimmt bei der ein Tankvorgang sicher angenommen werden kann z.B. 100 Liter differenz
                                          ......der Wert muss in der gemessenen Einheit angegeben werden. Z.B. Ultraschallsensoren senden in Liter. Dann ist die Zahl, die hier eingegeben werden muss ebenfalls Liter. Wenn nichts angegeben wird, dann wird 100 angenommen
                                          Pos8.. Sonderfall, wenn unter Gruppe(0) ein Datenpunkt eingetragen wurde der nicht nach update eine Bestaetigung (ack) erhaelt. In diesem Fall sollte 8 auf false stehen
                                          Pos9 =Wenn ein gleitender Durchschnitt berechnet werden soll, dann wird hier true eingetragen  (noch nicht aktiviert)
                                          Pos10 = Zählschwelle für Durchschnittsberechnung. TIME in Millisekunden (bei einer Einschaltzeit unter der Angabe hier wird der Wert nicht in die Durchschnittsberechnung einbezogen)
                                          ........Umrechnugnen anhand von addition1 faktor, divisor und addition2 werden dabei nicht berücksichtigt
                                          Pos11 =  Alternativ zum Auslösen bei Veränderung lassen sich hier Zeiten eingeben an denen die Erfassung des Zustandes der zu loggenden Datenpunkte erfolgt.
                                          .........format ist CRON. Beispiele: alle 10 Minuten =  * /10 * * * *  (leerzeichen vor "/"" bitte entfernen) täglich um 12 Uhr = 0 12 * * * -
                                          .........alle 2 Stunden = 0 * /2 * * * etc (leerzeichen vor "/"" bitte entfernen)
                                          .........mit der folgenden Web-Seite können die Zeiten generiert werden:        http://crontab-generator.org/
                                          .........Zur Ueberpruefung von Cron Expessions bietet sich diese Website an:    http://crontab.guru/
                                          .........Das ist nicht fuer die Methode TIME sinnvoll und ist daher ausgeschaltet, falls ein schedule fuer TiME eingegeben wurde
                                          Pos12 =  Logging für diesen Datenpunkt wird eingeschaltet, wenn ein true eingetragen wird. Damit werden Minimum und Maximum Werte festgehalten
                                          Pos13 =  Mehrfachstatus loggen ? dann true. In diesem Fall wird ein Status auch dann gesetzt, wenn bereits der gleiche Status vorher gesetzt wurde.
                                                   das hat zur Folge, dass z.B. die Zeitmessung neu gestartet wird, obwohl der Status im Grunde nicht geändert wurde. Standard ist false
                                          Pos14 =  Selective Logging - Wenn auf true, dann wird dieser Datenpunkt in einer dedizierten Datei geloggt
                                          
                                          */
                                          
                                          var special = [];
                                          //             1.Round 2.add1   3.Faktor                4\. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Warten auf Bestaetigung  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12\. Min/MAX     13\. MehrfachStatus  14\. Selektives Logging
                                          special[0]  =   ['3'    ,''     ,''                     ,'1000'     ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ]; // kWh
                                          special[1]  =   ['2'    ,''     ,'0.2487'               ,'1000'     ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // kWh in Euro
                                          special[2]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[3]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[4]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[5]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                          special[6]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[7]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[8]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[9]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[10] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[11] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[12] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                          special[13] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[14]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[15]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[16]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[17]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[18]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[19]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                          special[20]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[21]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[22]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[23]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[24]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          special[25]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                          
                                          

                                          Intel Nuc + Proxmox

                                          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

                                          349

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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