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.
    • P
      ple last edited by

      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 🙂

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

        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 Reply Last reply Reply Quote 0
        • P
          ple last edited by

          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ß

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

            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 Reply Last reply Reply Quote 0
            • S
              Strizz last edited by

              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 Reply Last reply Reply Quote 0
              • L
                looxer01 last edited by

                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 Reply Last reply Reply Quote 0
                • S
                  Strizz last edited by

                  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 Reply Last reply Reply Quote 0
                  • P
                    ple last edited by

                    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]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • S
                      Strizz last edited by

                      Hallo Ple,

                      sorry, dass ich mich erst jetzt melde, war einige Tage unterwegs.

                      Habe mir das Script jetzt noch einmal runtergeladen und deine Tabellen zugrunde gelegt: Funktioniert einwandfrei! Das heißt, ich habe keine Fehlermeldung und die Datenpunkte werden gebildet. Muss das Ganze jetzt mal eine Weile beobachten.

                      Wo der Unterschied zu meinen Tabellen ist, habe ich noch nicht gefunden. Ist mir jetzt aber auch egal.

                      Besten Dank für die Hilfe.

                      Gruß

                      Strizz

                      1 Reply Last reply Reply Quote 0
                      • P
                        ple last edited by

                        Kannst du später mal berichten, ob die Kostenrechnung bei dir passt?

                        Warum auch immer habe ich Abweichungen, wenn ich den Verbrauch * Preis rechne.

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

                          Hallo ple,

                          bei mir ist es so, dass die Gesamtwerte korrekt sind. D.h. die insgesamt verbrauchten kWh * Preis entsprechen exakt den angezeigten gesamten Stromkosten. Dasselbe gilt für den eingespeisten Solarstrom.

                          Bei der Aufteilung auf Day, Week, Month entsprechen die Geldwerte jedoch nicht mehr der Multipikation von kwh * Preis. Für die Wochen- und Monatswerte mag die Ursache ja darin liegen, dass ich hier am Anfang ein bisschen rumexperimentiert habe; seit einigen Tage habe ich jedoch nichts mehr geändert. Auf jeden Fall für gestern und heute müssten die Kosten für den Strom bzw. der Absatz an Solarstrom dem Produkt aus kWh * Preis entsprechen. Dem ist aber leider nicht so. Die Differenz ist zwar nicht groß, aber sie ist da.

                          Werde das noch weiter beobachten.

                          Gruß

                          Strizz

                          1 Reply Last reply Reply Quote 0
                          • D
                            Dice19 last edited by

                            Moin,

                            kann ich mit dem Zähler die Laufzeit einer Pumpe zählen und eventuell darauf eine Wassermenge errechnen lassen?

                            Vor der Pumpe steckt einen Zwischenstecker mit Messfunktion (HM-ES-PMSw1-Pl ).

                            Welchen Kanal könnte ich für mein Vorhaben verwenden oder ist das mit dem Gerät nicht möglich?

                            Vielen Dank für Eure Hilfe

                            Frohe Ostern

                            Tobias

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

                              @tobih83:

                              kann ich mit dem Zähler die Laufzeit einer Pumpe zählen und eventuell darauf eine Wassermenge errechnen lassen? `
                              Hi,

                              Wie ist die Berechnung ? Wenn es einfach Zeit mal Faktor ist geht das.

                              Wenn die Berechnung komplizierter ist, dann gibt es den "user-exit". Den benutze ich, um meinen Pelletverbrauch zu berechnen.

                              Im Momment gibt es noch Probleme, wenn die Zahlen sehr klein sind. Dann gibt es einen Rundungsfehler. das betrifft die Aufteilung auf Perioden

                              vG Looxer

                              1 Reply Last reply Reply Quote 0
                              • D
                                Dice19 last edited by

                                HI,

                                ich weis was die Pumpe ca. pro Minute durch den Schlauch Pumpe.

                                Sprich Liter mal Zeit denke ich…

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

                                  das sollte also passen,

                                  Das musst du nur den State im Programm eintragen. Die Methode ist ja time.

                                  beispiel State: hm-rpc.0.LEQ0150798.1.STATE

                                  bezüglich der Rundungsdifferenzen: da werde ich noch eine Korrektur bringen. Bin nur zeitlich im Moment knapp.

                                  vG Looxer

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    Dice19 last edited by

                                    Müsste das dann nicht Working sein??

                                    Wäre das so richtig eingetragen?

                                    ! 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-ES-PMSw1-Pl KEQ0965380:4' ,'Laufzeit_Pumpe' ,false ,true ,true ,true ,true ,true ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

                                    ! var logname = [];
                                    ! // Stat1 Stat2 Stat3 Stat4 Stat5 Stat6 Stat7 Stat8 Stat9 Stat10
                                    ! logname[0] = ['Garten_Pumpen_Überwachung' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];

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

                                      Hi,

                                      also in der Ersten Spalte von Gruppen muss ein gueltiger Datenpunkt eingetragen sein.

                                      Für einen State-Daenpunkt sähe das so aus

                                      Gruppen[ 0] = ['hm-rpc.0.MEQ0183268.1.STATE',…............................]

                                      Um den richtigen Datenpunkt zu erhalten kannst du z.B. einfach in die Objektliste gehen und das kleine Icon drücken, das in der Zeile des Datenpunktes, bei der Bezeichnung des Datenpunktes sichtbar wird, wenn du mit der Maus drüber gehst. Wenn du dieses Icon drückst und dann per ctrl-v im script einfügst hast du den richtigen Datenpunkt

                                      Auf jeden Fall hast du die Methode Time gewählt mit diesen Einstellungen. Ist ja auch gut so.

                                      Für die zweite Spalte ein Thema. Ist eine Frage wie du das organisieren möchtest. Ein Vorschlag wäre:

                                      Gruppen[ 0] = ['hm-rpc.0.MEQ0183268.1.STATE', "Pumpen",…...............]

                                      Wichtig ist dann noch die Tabelle "special" dort trägst du im Faktor und Divisor. Bitte beachte, dass die Zeit in Millisekunden gemessen wird.

                                      Für Minuten musst du also durch 60000 teilen, um dann mit dem Faktor zu multiplizieren, der ja den Verbrauch Liter in Minuten darstellen soll

                                      vG Looxer

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Dice19 last edited by

                                        Danke für Die Hilfe.

                                        Hab das soweit angepasst.

                                        Erscheint dann unter Objekte - javascript - Betriebsstundenzähler der neue Datenpunkt für die Zeit bzw den Wert?

                                        Bei mir taucht nur das script auf wo ich die Tabelle drin ist… 😞

                                        @looxer01:

                                        Hi,

                                        also in der Ersten Spalte von Gruppen muss ein gueltiger Datenpunkt eingetragen sein.

                                        Für einen State-Daenpunkt sähe das so aus

                                        Gruppen[ 0] = ['hm-rpc.0.MEQ0183268.1.STATE',…............................]

                                        Um den richtigen Datenpunkt zu erhalten kannst du z.B. einfach in die Objektliste gehen und das kleine Icon drücken, das in der Zeile des Datenpunktes, bei der Bezeichnung des Datenpunktes sichtbar wird, wenn du mit der Maus drüber gehst. Wenn du dieses Icon drückst und dann per ctrl-v im script einfügst hast du den richtigen Datenpunkt

                                        Auf jeden Fall hast du die Methode Time gewählt mit diesen Einstellungen. Ist ja auch gut so.

                                        Für die zweite Spalte ein Thema. Ist eine Frage wie du das organisieren möchtest. Ein Vorschlag wäre:

                                        Gruppen[ 0] = ['hm-rpc.0.MEQ0183268.1.STATE', "Pumpen",…...............]

                                        Wichtig ist dann noch die Tabelle "special" dort trägst du im Faktor und Divisor. Bitte beachte, dass die Zeit in Millisekunden gemessen wird.

                                        Für Minuten musst du also durch 60000 teilen, um dann mit dem Faktor zu multiplizieren, der ja den Verbrauch Liter in Minuten darstellen soll

                                        vG Looxer `

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

                                          ja, unter objecte javascript.

                                          Der Pfad darunter ist komplett anpassbar.

                                          Standard ist

                                          BSZ

                                          Counter

                                          Folge ich den Einstellungen von oben dann sieht es so aus:

                                          BSZ

                                          Counter

                                          Pumpen

                                          Garten_Pumpen_Überwachung

                                          DAY

                                          Week

                                          Month

                                          YEAR

                                          …. aus dem Gedächtnis, da ich kein System zur Verfügung habe.

                                          vG Looxer

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            Dice19 last edited by

                                            Bei mir hat er nix neues erstellt. Anbei ein Foto von meinem Objekte - Javascript
                                            2120_betriebsstunden.jpg

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            816
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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