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
    326

  • 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.
  • 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
      • S Offline
        S Offline
        Strizz
        schrieb am zuletzt editiert von
        #99

        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 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          ple
          schrieb am zuletzt editiert von
          #100

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

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

          Intel Nuc + Proxmox

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

            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 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              Dice19
              schrieb am zuletzt editiert von
              #102

              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 Antwort Letzte Antwort
              0
              • L Offline
                L Offline
                looxer01
                schrieb am zuletzt editiert von
                #103

                @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 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  Dice19
                  schrieb am zuletzt editiert von
                  #104

                  HI,

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

                  Sprich Liter mal Zeit denke ich…

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

                    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 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      Dice19
                      schrieb am zuletzt editiert von
                      #106

                      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 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #107

                        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 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          Dice19
                          schrieb am zuletzt editiert von
                          #108

                          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 Antwort Letzte Antwort
                          0
                          • L Offline
                            L Offline
                            looxer01
                            schrieb am zuletzt editiert von
                            #109

                            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 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              Dice19
                              schrieb am zuletzt editiert von
                              #110

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

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

                                @tobih83:

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

                                schickst du mir mal das Programm mit deinen Einstellungen per PN ?

                                vielen Dank

                                Looxer

                                1 Antwort Letzte Antwort
                                0
                                • D Offline
                                  D Offline
                                  Dice19
                                  schrieb am zuletzt editiert von
                                  #112

                                  Bei mir zählt er was aber keine ahnung was. Die Zeiten stimmen nicht mit dem überein was ich überschlagen habe an Laufzeit.

                                  Und die errechnete Menge kommt garnicht hin.

                                  Muss wohl was andere überlegen um die Menge zu erfassen.

                                  1 Antwort Letzte Antwort
                                  0
                                  • Stefan4711S Offline
                                    Stefan4711S Offline
                                    Stefan4711
                                    schrieb am zuletzt editiert von
                                    #113

                                    Ist es eigentlich möglich auch den Inhalt von JavaScript-Variablen als Datenpunkte zu nutzen?

                                    Hintergrund: ich habe die Verbrauchswerte bereits in Watt vorliegen und würde darüber gerne einen Durchschnitt bilden.

                                    Mein naiver Ansatz war einfach den JS-Datenpunkt einzutragen. Das funktioniert aber leider nicht (Wert ist immer "0")
                                    > Gruppen[ 4] = ['javascript.0.strom.EG_W' ,'Strom' ,true ,true ,true ,true ,true ,false ,'calc' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

                                    Was hingegen ohne Probleme geht ist:
                                    > Gruppen[ 3] = ['modbus.0.holdingRegisters.40071_Hausverbrauch','Strom' ,true ,true ,true ,true ,true ,false ,'calc' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //

                                    Stefan.

                                    1 Antwort Letzte Antwort
                                    0
                                    • C Offline
                                      C Offline
                                      crepp
                                      schrieb am zuletzt editiert von
                                      #114

                                      Hallo looxer01,

                                      Vielen Dank für das tolle Script, wie ich das überschauen kann, ist es genau das was ich benötige. Ich würde es also gern für meinen iobroker verwenden/anpassen. Prinzipiell habe ich den Grundaufbau verstanden, was mir fehlt ist der direkte Zugang zur Einrichtung Konfig für meine Homematic Geräte.

                                      Ich sehe, das ich jedes zu loggende Gerät im Script hinterlegen muss.

                                      Eine Beispieldatei mit einem Beispielgerät wär hilfreich für den ersten Zugang zur Einrichtung.

                                      Wäre dankbar für eine Hilfestellung für den ersten Start …

                                      Gruß

                                      crepp

                                      Gruß

                                      crepp

                                      –-

                                      CCU2 / 2x RaspberryPi / 2x Amazon Echo Dot / Milight LED / Philips Hue (z.Z. 16 Homematic-Geräte)

                                      Kodi auf W10pro und OSMC

                                      DVBViewer MediaServer auf W10

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

                                        Hi Crepp,

                                        Ein paar Bespiele sind ja in der Konfiguration schon enthalten

                                        ich habe mal eine weitere Beispiel- Konfiguration beigefügt.

                                        Ein paar Erklärungen dazu:

                                        Erstes Beispiel: Es wird die Laufzeit eines Verbrauchers in Millisekungen gemessen

                                        Gruppe0 misst einfach die Laufzeit eines Gerätes. Anfang der Messung beginnt dann, wenn das geraet den Status true hat. Das Ende wird erfasst, wenn der Status auf false sich aendert.

                                        Eine Historie brauche ich für die Zeitmessung nicht. Also steht die auf false

                                        logname0 ist der Name der Messung. Hier heisst es Schneckenzeit

                                        special0. Da die Zeit in Millisekungen gemessen werden soll und auch sonst nichts umgerechnet wird gibt es hier keine Einstellungen

                                        –------------------------------------------

                                        Nächstes Beispiel (aufbauend) Errechnung Pelletverbrauch

                                        Umrechnung der Laufzeit in KG (Es geht um eine Pelletverbrauchsrechnung)

                                        Gruppe1 - ist identisch mit Gruppe 0 bis darauf, dass ich auch eine Historie erzeugen möchte.

                                        Die Gruppen sind identisch, weil beide die Laufzeiten der Anlage in Millisekunden messen

                                        logname1 = Hier ist es PelletKG

                                        special1 = hier wird nun eine Umrechnung von Zeit in KG vorgenommen. Dabei wird umgerechnet in Minuten (also millisekunden / 60000) und dann mit 7.5 multipliziert. Das ist hier so, weil die Laufzeit den Pelletaushub bestimmt.

                                        –-------------------------------------------

                                        Nächstes Beispiel (Aussentemperatur Log jeden Mittag)

                                        Gruppe15: Das Thermometer wird mit der Methode CALC abgefragt. Die Methode Calc deswegen, weil ich keine Zeit messe, sondern den Wert des Gerätes direkt verwende. Dabei macht die Messung der Anzahl der Schaltungen keinen Sinn (Switch) und steht deshalb auf false

                                        Logname15 Der Name der Messung ist AussenNoon

                                        special15 Die Rundung steht auf 2 Nachkommastellen, da dies für die Temperturmessung mehr als ausreicht. Ich möchte eine Durchschnittstemperaturmessung mit loggen. Damit kann z.B. die durschnittliche Wochen,Monats Temperatur berechnet werden

                                        Die Messung findet jeden Tag um 12:00 statt.

                                        Minimale und Maximale Temperaturen werden ebenfalls geloggt

                                        Die ermittelten Werte (Temperaturen) werden in eine Excel datei geloggt

                                        Das könnte beliebig fortgesetzt werden. Die Anzahl der Einstellungsmöglichkeiten ist schon recht gross.

                                        Ich hoffe, dass es ein wenig hilft.

                                        [spoiler]
                                        var Gruppen = [];
                                        //              1.Homematic ID,                    2.Feldname(no spaces)                    3.History  4.DAY  5.Week  6.Month 7.Year  8.Switch   9 - 18 Status to log                                                         19.stop 20.Loesch
                                        Gruppen[0]  = ['hm-rpc.0.KEQ0178063.1.STATE'            ,'Pellet'                           ,false  ,true   ,true   ,true   ,true   ,true   ,'false' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Schneckenzeit 
                                        Gruppen[1]  = ['hm-rpc.0.KEQ0178063.1.STATE'            ,'Pellet'                           ,true   ,true   ,true   ,true   ,true   ,false  ,'false' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Kumuliert   KG
                                        Gruppen[2]  = ['hm-rpc.0.KEQ0178063.1.STATE'            ,'Pellet'                           ,true   ,true   ,true   ,true   ,true   ,false  ,'false' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Kumuliert   Euro
                                        Gruppen[3]  = ['hm-rpc.0.KEQ0178063.1.STATE'            ,'Pellet'                           ,false  ,false  ,false  ,false  ,false  ,false  ,'false' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Restbestand KG
                                        Gruppen[4]  = ['hm-rpc.0.KEQ0178063.1.STATE'            ,'Pellet'                           ,false  ,false  ,false  ,false  ,false  ,false  ,'calc'  ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Laufzeiten f.Graphik
                                        Gruppen[5]  = ['initial'                                ,''                                 ,false  ,true   ,true   ,true   ,true   ,true   ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Reserviert fuer Individuallogik
                                        Gruppen[6]  = ['modbus.0.holdingRegisters.26_FA1_STATE' ,'Oekofen'                          ,false  ,true   ,true   ,true   ,true   ,false  ,'1'     ,'2'    ,'3'    ,'4'    ,'5'    ,'7'    ,'99'   ,''     ,''     ,''     ,false ,false];
                                        Gruppen[7]  = ['modbus.0.holdingRegisters.26_FA1_STATE' ,'Oekofen'                          ,false  ,true   ,true   ,true   ,true   ,false  ,'7'     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Oekofen
                                        Gruppen[8]  = ['initial', ''                                                                ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[9]  = ['initial'                                , 'Strom'                           ,true   ,true   ,true   ,true   ,true   ,true   ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true  ,false]; //
                                        Gruppen[10] = ['initial'                                ,'Strom'                            ,true   ,true   ,true   ,true   ,true   ,false  ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // 
                                        Gruppen[11] = ['initial'                                , 'Strom'                           ,false  ,true   ,true   ,true   ,true   ,true   ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true,  false]; // 
                                        Gruppen[12] = ['initial'                                , 'Strom'                           ,true   ,true   ,true   ,true   ,true   ,true   ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true ,false]; // 
                                        Gruppen[13] = ['initial'                                , ''                                ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[14] = ['hm-rpc.0.JEQ0014148.1.TEMPERATURE'      , 'Temperaturen'                    ,true   ,true   ,true   ,true   ,true   ,false  ,'calc'  ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[15] = ['hm-rpc.0.JEQ0014148.1.TEMPERATURE'      , 'Temperaturen'                    ,true   ,true   ,true   ,true   ,true   ,false  ,'calc'  ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[16] = ['initial'                                ,  ''                               ,true   ,true   ,true   ,true   ,true   ,false  ,'calc'  ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[17] = ['initial'                                , 'Anwesenheit'                     ,false  ,true   ,true   ,true   ,true   ,true   ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true ,true];
                                        Gruppen[18] = ['initial'                                , 'Anwesenheit'                     ,false  ,true   ,true   ,true   ,true   ,true   ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true ,true];
                                        Gruppen[19] = ['hm-rpc.0.JEQ0295143.1.STATE'            , 'Pool'                            ,true   ,true   ,true   ,true   ,true   ,true   ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[20] = ['hm-rpc.0.JEQ0055021.1.STATE'            , 'Pool'                            ,true   ,true   ,true   ,true   ,true   ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[21] = ['initial'                                , ''                                ,false  ,false  ,false  ,false  ,false  ,false  ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; 
                                        Gruppen[22] = ['hm-rpc.0.JEQ0038551.1.STATE'            , 'Pool'                            ,true   ,true   ,true   ,true   ,true   ,true   ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false];
                                        Gruppen[23] = ['initial'                                , 'Harmony'                         ,false  ,true   ,true   ,true   ,true   ,true  ,'0'      ,'1'    ,'2'    ,'3'    ,''     ,''     ,''     ,''     ,''     ,''     ,true  ,false];
                                        Gruppen[24] = ['initial'                                , 'Harmony'                         ,false  ,true   ,true   ,true   ,true   ,true  ,'TV'     ,'PowerOff',''  ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true  ,false];
                                        Gruppen[25] = ['initial'                                , 'Harmony'                         ,false  ,true   ,true   ,true   ,true   ,true   ,'false' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,true  ,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]  =   ['Schneckenzeit',''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[1]  =   ['PelletKG'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[2]  =   ['PelletEURO'   ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[3]  =   ['PelletRest'   ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[4]  =   ['SchneckeSchalt',''        ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[5]  =   ['EinAus5'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[6]  =   ['Start'        ,'Zuendung' ,'Softstart','Leistungsbrand'   ,'Nachlauf' ,'Saugen'   ,'Idle'     ,''     ,''     ,''];
                                        logname[7]  =   ['PelletTheor'  ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[8]  =   ['EinAus8'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[9]  =   ['EinAus9'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[10] =   ['EinAus10'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[11] =   ['EinAus11'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[12] =   ['EinAus12'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[13] =   ['EinAus13'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[14] =   ['Aussen'       ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[15] =   ['AussenNoon'   ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[16] =   ['EinAus16'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[17] =   ['AnwRalf'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[18] =   ['AnwEllen'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[19] =   ['Filter'       ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[20] =   ['PoolHeizung'  ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[21] =   ['EinAus21'     ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        logname[22] =   ['Klimaanlage'  ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                                        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]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ]; // Schneckenzeit
                                        special[1]  =   ['2'     ,''    ,'7.5'                  ,'60000'    ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ]; // Pelletverbrauch in KG
                                        special[2]  =   ['2'    ,''     ,'1.725'                ,'60000'    ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // Pelletverbrauch in Euro
                                        special[3]  =   ['2'    ,''     ,'-7.5'                 ,'60000'    ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // Pellet Restbestand
                                        special[4]  =   [''     ,'1'    ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // für die Graphische Auswertungen Ein = 2 / aus = 1
                                        special[5]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                        special[6]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // Zeiterfassung fuer Stqtus Heizung
                                        special[7]  =   ['2'    ,''     ,'-1'                   ,''         ,''     ,'oekofen'          ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // Sonderlogik fuer Saugzeiten Oekofen - theoretischer Pelletverbrauch
                                        special[8]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[9]  =   [''     ,''     ,''                     ,'1000'     ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // 
                                        special[10] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // 
                                        special[11] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; // 
                                        special[12] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; //
                                        special[13] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[14]  =  ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,'true'         ,''             ,''                 ,'true'         ,''                 ,''      ];
                                        special[15]  =  ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,'true'         ,''             ,'0 12 * * *'       ,'true'         ,''                 ,'true'  ];
                                        special[16]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[17]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[18]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[19]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ];
                                        special[20]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ];
                                        special[21]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[22]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[23]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[24]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        special[25]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                        
                                        [/spoiler]
                                        
                                        
                                        1 Antwort Letzte Antwort
                                        0
                                        • C Offline
                                          C Offline
                                          crepp
                                          schrieb am zuletzt editiert von
                                          #116

                                          Vielen Dank für deine schnelle Reaktion, Habe jetzt zwei Geräte angelegt (nur Zeiterfassung) aber ich denke da wird noch einiges im Lauf der Zeit hinzukommen.

                                          Gruß crepp

                                          Gruß

                                          crepp

                                          –-

                                          CCU2 / 2x RaspberryPi / 2x Amazon Echo Dot / Milight LED / Philips Hue (z.Z. 16 Homematic-Geräte)

                                          Kodi auf W10pro und OSMC

                                          DVBViewer MediaServer auf W10

                                          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

                                          528

                                          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