NEWS
[Vorlage] Betriebsstundenzähler & Verbrauchsrechner
-
Das läuft dann ganz falsch.
Ich nutze ESPurna nicht Tasmota !
-
Ach so, na dann gehts leider nicht.
-
Es kommt mir so vor als würde er die Berechnung aus Spezial nicht nehmen. Oder ich verstehe es leider nicht `
Hi Speedy,
die Konfig sieht mir korrekt aus.
Was passiert ist
1. Lese den Wert des angegebenen Datenpunktes -der als wh interpretiert wird-
2 Speichere den letzten Wert als Rohzahl
3. Bei Methode Delta wird der vorherige Wert vom letzten Wert abgezogen
4. die Tabelle special berechnet dann fuer den Bereich BSZ den umgerechneten Wert
5. Im Bereich System werden die Rohwerte gespeichert (also ohne Umrechnung
Demzufolge solltest du die werte in wh geliefert bekommen und die Deltas im User Bereich regelmaessig berechnet bekommen.
Folgende Möglichkeiten hast du um dem Verhalten auf die Spur zu kommen:
-. du kannst im System Bereich nachsehen, ob du da die Rohwerte findest und ob die konsistent sind.
Nach Löschen und Daktivieren (letzte beiden Spalten auf true true) und dann wieder false false. kann wieder neu angefangen werden. Dann kannst du die Deltabildung nachvollziehen.
-
du kannst das logging aktivieren. Dann wird eine csv Datei fortgeschrieben mit mehr informationen. Die kannst du analysieren und auch mir zusenden.
-
vielleicht gibt es auch ein Problem beim Timing. Wie schnell werden die Aenderungen gesendet ? Du könntest z.B. ein CRON Einplaung (tablelle special machen und z.B. minütlich ein Delta berechnen
-
last not least könnte es ein Rundungsproblem sein. Schalte mal zum Testen die Rundung aus. Ich habe da glaube ich mal einen Fix fuer PLE genmacht. evt. brauchst du den auch.
vG Looxer
-
-
Ok mein Kopf brummt gerade werde das am WE mal versuchen alles ganz zu verstehen und testen.
Habe mir jetzt auch noch einen POW mit Tasmota gemacht und teste es auch damit.
Was ich nicht verstehe ist was du mit false false true true meinst. An welcher stelle ?
Mal schauen..
Ich danke dir für deine hilfe.
Die Rohdaten kann ich direkt in der ESPurna version auslesen. Ich schau mir die werte an. Ich glaube auch es liegt am Runden oder das Divisor
-
So warum nicht gleich so mit Tasmota sieht das ganze gleich viel schöner aus
DANKE !!!!
-
Hallo, in IOBroker bin ich absoluter Neuling. Ich arbeite mich in dieses tolle System ein um bei meiner Smarthome Installation mit Loxone und KNX eine bessere Oberfläche insbesondere hinsichtlich der Auswertungen von Verbräuchen und Diagramme der Temperaturen zu realisieren.
Sorry wenn ich in diesen Expertendisput hineingrätsche, aber ich versuche verzweifelt genau das hinzubekommen, was Ihr offenbar so großartig entwickelt habt
Ich möchte z.B. aus den KNX Werten Gaszählerstand Tagesumsätze in einer Ballengrafik umsetzen diese evtl in Tageskosten in € umrechnen und darstellen. In den IO Servern kann ich dies zum Teil mit Merkern und Rechenfunktionen machen, aber mit dem mir völlig neuen Ansatz hier bin ich leider wirklich hilflos.
Meine Frage: Wie komme ich an Euer Skript und wie binde ich das ein? Die Beschreibung habe ich mir heruntergeladen.
Wie kann ich in diesem System Werte Zwischenspeichern, umrechnen und wieder speichern dann zurücksetzen??
Ich hoffe ich habe die richtige Stelle und den richtigen Fragenumfang für dieses Forum getroffen. Über eine hilfreiche Antwort würde ich mich sehr freuen!
-
Hallo, in IOBroker bin ich absoluter Neuling. Ich arbeite mich in dieses tolle System ein um bei meiner Smarthome Installation mit Loxone und KNX eine bessere Oberfläche insbesondere hinsichtlich der Auswertungen von Verbräuchen und Diagramme der Temperaturen zu realisieren.
Sorry wenn ich in diesen Expertenthema hineingrätsche, aber ich versuche verzweifelt genau das hinzubekommen, was Ihr offenbar so großartig entwickelt habt
Ich möchte z.B. aus den KNX Werten Gaszählerstand Tagesumsätze in einer Ballengrafik umsetzen diese evtl in Tageskosten in € umrechnen und darstellen. In den IO Servern kann ich dies zum Teil mit Merkern und Rechenfunktionen machen, aber mit dem mir völlig neuen Ansatz hier bin ich leider wirklich hilflos.
Meine Frage: Wie komme ich an Euer Skript und wie binde ich das ein? Die Beschreibung habe ich mir heruntergeladen.
Wie kann ich in diesem System Werte Zwischenspeichern, umrechnen und wieder speichern dann zurücksetzen??
Ich hoffe ich habe die richtige Stelle und den richtigen Fragenumfang für dieses Forum getroffen. Über eine hilfreiche Antwort würde ich mich sehr freuen!
-
Hi Mac,
Deine Fragen gehen weit über das eigentliche Script hier hinaus. Ich versuche es mal.
@Mac:ch möchte z.B. aus den KNX Werten Gaszählerstand Tagesumsätze in einer Ballengrafik umsetzen `
Fuer die Grafik brauchst du eine Datenquelle. Das kann das Script hier sein. Als Tool für die Grafik nutze ich FLOT was gut zu bedienen ist.Welche Werte fortgeschrieben werden sollen musst du bei den Obekten einstellen (z.B. mit SQL als Datenbank (objektliste) siehe auch Doku dazu.
@Mac:diese evtl in Tageskosten in € umrechnen und darstellen `
Das Umrechnen kannst du mit dem Script machen. Du solltest aber wissen was z.B. Datenpunkte sind.@Mac:Meine Frage: Wie komme ich an Euer Skript und wie binde ich das ein? `
Das script ist im ersten Post hinterlegt also Text-Datei. Das kannst du installieren im admin von iobroker. (ich gehe davon aus, dass du dich damit etwas vertraut gemacht hast. Dort findest du einen Reiter "scripte". Dort kannst du mit dem kleinen ICON oben links unter Kategorie "common" ein neues Script anlegen. Dazu musst du im folgenden Auswahlbild "javascript eingeben. Dann kannst du im editor das script pasten.Dann noch einen Namen vergeben.
Dann fängt allerdings die Konfiguration des scriptes an. Dazu brauchst du schon ein wenig Grundverständnis von Datenpunkten.
Wenn du mehr allgemeine Fragen hast, dann möchte ich dich bitten einen neuen Thread aufzumachen. Ansonsten wird es hier auf Dauer recht unübersichtlich.
vG Looxer
-
Hi zusammen, ersteinmal danke für das Script.
ich versuche seit einer Ewigkeit an den Script meinen Stromverbrauch in Euro auszugeben nur leider ist die Umrechnung nie richtig.
Kann sich das mal einer anschauen wo ich einen Fehler mache? Komme wohl alleine nicht mehr weiter.
Meine Gesamt kWh werden wohl richtig umgerechnet aber bei Day, before usw. passt das aber nicht.
! /*….......Betriebsstundenzaehler BSZ Extended Version 0.97
! ............Datum: 04.02.2016
! ............Autor: Looxer01
! ............Forum ioBroker
! ............http://forum.iobroker.com/posting.php?m ... d9c8d74acd
! ............Änderungshistorie
! ............Version 0.25 Fehler in der update core Funktion behoben. Eine neue Spalte "refresh" hinzugefügt. (noch ohne Funktion)
! ............................Das soll spaeter dazu dienen, ein komplettes Set von Variablen zu loeschen und bei "true" und bei "false " neu zu erstellen
! ............Version 0.30 Logging ist implementiert und kann aktiviert werden - hISTORY ist implementiert und kann aktiviert werden fuer Monat und Jahr
! ............................Im Rahmen der History funktion wurde die freie Bezeichnung entfernt, da sie nirgendwo im Programm genutzt wurde
! ............................Refresh variable ist einstellbar. Vorläufige Funktion: Updates werden ignoriert falls auf true
! ............Version 0.40 Periodenabschluss (Nullen - Historiensicherung) und Refresh mit Nullung ueberarbeitet- Fehlerbeseitigung
! ............Version 0.60 Implementierung weiterer Methoden wie DELTA, CALC, ADD, SUB Verallgemeinerung der Routinen um ggf weitere Methoden zu implementieren
! ............Version 0.70 Die Datenpunkte werden jetzt nicht zurückgesetzt sondern geloescht, wenn das loeschkennzeichen gesetzt wird
! ............................bei der Berechnung der Methoden ist ein Divisor eingefügt worden um leichter von Millisekunden auf Verbrauchswerte zu rechnen, oder auch für alternative Darstellungen für Zeitwerte
! ............................DELTAM - Methode hinzugefügt um automatische Tankmessungen zu unterstützen (absteigende gemeldete Werte)
! ............................Zusammenführung der Methoden ADD und SUB in TIME. Das wird durch die Anwendung der Rechenregel auch für TIME gemacht. Damit kann bei negativen faktor SUB - also Bestandsrechnung umgesetzt werden
! ............................Auch kann jederzeit von Darstellung DDDD:HH:MM:SS auf Sekunden/Minuten/Stunden/Tage etc durch Umrechnung umgestellt werden
! ............................Durch Tabelle specials kann eingestellt werden, ob der BSZ für einen Datenpunkt auf ack = true oder false reagieren soll (false sitzt i.d.R. bei selbsdefinierten Datenpunkten)
! ............................Die Anzal der möglichen IDs ist auf 26 erhöht
! ............................Eine Fluktuationsgrenze für Delta und deltaM ist in Tabelle special eingefügt. Bei blank(also '') wird 100 angenommen. Damit können Schwankungen von Messgeraeten ausgeglichen werden (i.d.R sollte 100 ausreichend sein)
! ............................Zur Vermeidung von Eingabefehlern in den Tabellen sind Zahlen in hochkomma erlaubt aber auch Zahlen ohne hochkomma- bei der Angabe von status true/false ist ebenfalls beides möglich
! ............................Es besteht die Möglichkeit eine Individuallogik einzubauen. Beispiel ist hier "oekofen". Der gemessene Wert wird vor Anwendung der Rechenregel an die function individual(funktion,nummer,runtime) gegeben.
! ............................wobei funktion = Name der Individual-Funktion / nummer = nummer des Geraetes aus der ersten Tabelle / runtime = gemessener Wert und Rückgabewert (damit wird der gemessene Wert uebersteuert)
! ............................Tabelle special Nummer 10 eingefügt zur Vorbereitung einer gleitenden Durchschnittsberechnung
! ............................Es wurden Reserveplätze für tabelle specials eingefügt (10 und 11).
! ............................Logging fuer die Aenderung von Datenpunkten wurde erneuert
! ............Version 0.90 Funktion zur gleitenden Durchschnittsberechnung für die Methoden hinzugefügt
! ----------------------------History verlegt unterhalb des Status (level 7)
! ............................Die Perioden starten jetzt mit 1-Day, 2-Week, 3-Month, 4-Year und sind damit nicht mehr kompatibel zu den Vorgängerversionen. Allerdings sind die Namen einstellbar unterhalb der Experteneinstellungen
! ............................Schedule Funktion für Methoden Delta,DeltaM und CALC hinzugefügt
! ............................Alle Lesevorgänge wurden in numerische Werte umgewandelt um die Aenderung in den Objekten zu unterstützen (Nummern werden dort als String gespeichert)
! ............................initial Werte fuer die GruppenTab unabhängig von Gross-und Kleinschreibung gemacht
! ............................Wenn kein Wert in Gruppen Position 2 eingetragen ist, dann wird der name des Geraetes / Datenpunktes als default verwendet
! ............................Falls der Datenpunkt in Gruppen Position1 nicht existiert wird eine logeintrag erzeugt und der Wert wird auf INITIAL gesetzt
! ............................Fehlerkorrektur für Monats/Jahreswechsel
! ............Version 0.95 Selective Logging hinzugefügt. (Bewirkt das logging von Datenpunkten in separaten Dateien)
! .................................Wegen Selective Logging muss die Tabelle special um ein Feld erweitert werten und für die Logging-Dateinamen in Expert-Einstellungen muss ".csv" entfernt werden
! ............................Korrektur für den Fall, dass ein Status mehrfach gemeldet wird und damit kein Wechsel erfolgte. Bisher wurde immer ab der letzten Statusmeldung gemessen (TIME)
! .................................Wegen MehrfachStatus muss die Tabelle special um ein Feld erweitert werten
! ............................Minimum und Maximum Funktion für alle Methoden implementiert
! .................................Wegen MINMAX-Funktion muss die Tabelle special um ein Feld erweitert werten
! ............................Fehler beim anlegen der Struktur für Durschnittsbildung beseigt. Der Jahreswert wurde nicht angelegt
! ...........Version 0.96.....Beim Periodenwechsel Woche kam es zu einem Fehler durch fehlerhafte Parameterübergabe zum Logging
! ...........Version 0.97.....Fehler beim Logging beseitigt. Es wurde immer nur in die Datei 1 geschrieben
! /
! // 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] = ["sonoff.0.SonoffPOWTrokner.ENERGY.Total"/SonoffPOWTrokner ENERGY Total/ ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //Euro Trockner
! Gruppen[ 1] = ["sonoff.0.SonoffPOWTrokner.ENERGY.Total"/SonoffPOWTrokner ENERGY Total/ ,'Stromverbrauch' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //kWh Trockner
! Gruppen[ 2] = ["hm-rpc.0.NEQxxxxxxx.1.ENERGY_COUNTER"/HM-ES-TX-WM NEQxxxxxxx:1.ENERGY_COUNTER/,'Stromverbrauch',true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //kWh Gesamt
! Gruppen[ 3] = ["hm-rpc.0.NEQxxxxxxx.1.ENERGY_COUNTER"/HM-ES-TX-WM NEQxxxxxxx:1.ENERGY_COUNTER/ ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //Euro Gesamt
! 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] = ['Trockner_Euro' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[1] = ['Trockner_kWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[2] = ['Gesamt_kWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[3] = ['Gesamt_Euro' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! 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] = ['2' ,'' ,'0.2966' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ];// kWh in Euro
! special[1] = ['4' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh
! special[2] = ['4' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh
! special[3] = ['2' ,'' ,'0.2966' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh in Euro
! 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 …....................................................................................................Gruß Christian
-
Hi zusammen, erst einmal danke für das Script.
ich versuche seit einer Ewigkeit an den Script meinen Stromverbrauch in Euro auszugeben nur leider ist die Umrechnung nie richtig.
Kann sich das mal einer anschauen wo ich einen Fehler mache? Komme wohl alleine nicht mehr weiter.
Meine Gesamt kWh werden wohl richtig umgerechnet aber bei Day, before usw. passt das aber nicht.
! /*….......Betriebsstundenzaehler BSZ Extended Version 0.97
! ............Datum: 04.02.2016
! ............Autor: Looxer01
! ............Forum ioBroker
! ............http://forum.iobroker.com/posting.php?m ... d9c8d74acd
! ............Änderungshistorie
! ............Version 0.25 Fehler in der update core Funktion behoben. Eine neue Spalte "refresh" hinzugefügt. (noch ohne Funktion)
! ............................Das soll spaeter dazu dienen, ein komplettes Set von Variablen zu loeschen und bei "true" und bei "false " neu zu erstellen
! ............Version 0.30 Logging ist implementiert und kann aktiviert werden - hISTORY ist implementiert und kann aktiviert werden fuer Monat und Jahr
! ............................Im Rahmen der History funktion wurde die freie Bezeichnung entfernt, da sie nirgendwo im Programm genutzt wurde
! ............................Refresh variable ist einstellbar. Vorläufige Funktion: Updates werden ignoriert falls auf true
! ............Version 0.40 Periodenabschluss (Nullen - Historiensicherung) und Refresh mit Nullung ueberarbeitet- Fehlerbeseitigung
! ............Version 0.60 Implementierung weiterer Methoden wie DELTA, CALC, ADD, SUB Verallgemeinerung der Routinen um ggf weitere Methoden zu implementieren
! ............Version 0.70 Die Datenpunkte werden jetzt nicht zurückgesetzt sondern geloescht, wenn das loeschkennzeichen gesetzt wird
! ............................bei der Berechnung der Methoden ist ein Divisor eingefügt worden um leichter von Millisekunden auf Verbrauchswerte zu rechnen, oder auch für alternative Darstellungen für Zeitwerte
! ............................DELTAM - Methode hinzugefügt um automatische Tankmessungen zu unterstützen (absteigende gemeldete Werte)
! ............................Zusammenführung der Methoden ADD und SUB in TIME. Das wird durch die Anwendung der Rechenregel auch für TIME gemacht. Damit kann bei negativen faktor SUB - also Bestandsrechnung umgesetzt werden
! ............................Auch kann jederzeit von Darstellung DDDD:HH:MM:SS auf Sekunden/Minuten/Stunden/Tage etc durch Umrechnung umgestellt werden
! ............................Durch Tabelle specials kann eingestellt werden, ob der BSZ für einen Datenpunkt auf ack = true oder false reagieren soll (false sitzt i.d.R. bei selbsdefinierten Datenpunkten)
! ............................Die Anzal der möglichen IDs ist auf 26 erhöht
! ............................Eine Fluktuationsgrenze für Delta und deltaM ist in Tabelle special eingefügt. Bei blank(also '') wird 100 angenommen. Damit können Schwankungen von Messgeraeten ausgeglichen werden (i.d.R sollte 100 ausreichend sein)
! ............................Zur Vermeidung von Eingabefehlern in den Tabellen sind Zahlen in hochkomma erlaubt aber auch Zahlen ohne hochkomma- bei der Angabe von status true/false ist ebenfalls beides möglich
! ............................Es besteht die Möglichkeit eine Individuallogik einzubauen. Beispiel ist hier "oekofen". Der gemessene Wert wird vor Anwendung der Rechenregel an die function individual(funktion,nummer,runtime) gegeben.
! ............................wobei funktion = Name der Individual-Funktion / nummer = nummer des Geraetes aus der ersten Tabelle / runtime = gemessener Wert und Rückgabewert (damit wird der gemessene Wert uebersteuert)
! ............................Tabelle special Nummer 10 eingefügt zur Vorbereitung einer gleitenden Durchschnittsberechnung
! ............................Es wurden Reserveplätze für tabelle specials eingefügt (10 und 11).
! ............................Logging fuer die Aenderung von Datenpunkten wurde erneuert
! ............Version 0.90 Funktion zur gleitenden Durchschnittsberechnung für die Methoden hinzugefügt
! ----------------------------History verlegt unterhalb des Status (level 7)
! ............................Die Perioden starten jetzt mit 1-Day, 2-Week, 3-Month, 4-Year und sind damit nicht mehr kompatibel zu den Vorgängerversionen. Allerdings sind die Namen einstellbar unterhalb der Experteneinstellungen
! ............................Schedule Funktion für Methoden Delta,DeltaM und CALC hinzugefügt
! ............................Alle Lesevorgänge wurden in numerische Werte umgewandelt um die Aenderung in den Objekten zu unterstützen (Nummern werden dort als String gespeichert)
! ............................initial Werte fuer die GruppenTab unabhängig von Gross-und Kleinschreibung gemacht
! ............................Wenn kein Wert in Gruppen Position 2 eingetragen ist, dann wird der name des Geraetes / Datenpunktes als default verwendet
! ............................Falls der Datenpunkt in Gruppen Position1 nicht existiert wird eine logeintrag erzeugt und der Wert wird auf INITIAL gesetzt
! ............................Fehlerkorrektur für Monats/Jahreswechsel
! ............Version 0.95 Selective Logging hinzugefügt. (Bewirkt das logging von Datenpunkten in separaten Dateien)
! .................................Wegen Selective Logging muss die Tabelle special um ein Feld erweitert werten und für die Logging-Dateinamen in Expert-Einstellungen muss ".csv" entfernt werden
! ............................Korrektur für den Fall, dass ein Status mehrfach gemeldet wird und damit kein Wechsel erfolgte. Bisher wurde immer ab der letzten Statusmeldung gemessen (TIME)
! .................................Wegen MehrfachStatus muss die Tabelle special um ein Feld erweitert werten
! ............................Minimum und Maximum Funktion für alle Methoden implementiert
! .................................Wegen MINMAX-Funktion muss die Tabelle special um ein Feld erweitert werten
! ............................Fehler beim anlegen der Struktur für Durschnittsbildung beseigt. Der Jahreswert wurde nicht angelegt
! ...........Version 0.96.....Beim Periodenwechsel Woche kam es zu einem Fehler durch fehlerhafte Parameterübergabe zum Logging
! ...........Version 0.97.....Fehler beim Logging beseitigt. Es wurde immer nur in die Datei 1 geschrieben
! /
! // 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] = ["sonoff.0.SonoffPOWTrokner.ENERGY.Total"/SonoffPOWTrokner ENERGY Total/ ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //Euro Trockner
! Gruppen[ 1] = ["sonoff.0.SonoffPOWTrokner.ENERGY.Total"/SonoffPOWTrokner ENERGY Total/ ,'Stromverbrauch' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //kWh Trockner
! Gruppen[ 2] = ["hm-rpc.0.NEQxxxxxxx.1.ENERGY_COUNTER"/HM-ES-TX-WM NEQxxxxxxx:1.ENERGY_COUNTER/,'Stromverbrauch',true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //kWh Gesamt
! Gruppen[ 3] = ["hm-rpc.0.NEQxxxxxxx.1.ENERGY_COUNTER"/HM-ES-TX-WM NEQxxxxxxx:1.ENERGY_COUNTER/ ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //Euro Gesamt
! 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] = ['Trockner_Euro' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[1] = ['Trockner_kWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[2] = ['Gesamt_kWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! logname[3] = ['Gesamt_Euro' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
! 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] = ['2' ,'' ,'0.2966' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ];// kWh in Euro
! special[1] = ['4' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh
! special[2] = ['4' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh
! special[3] = ['2' ,'' ,'0.2966' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];// kWh in Euro
! 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 …....................................................................................................Gruß Christian
-
Hi Christian,
schaue ich mir an. Könnte aber Morgen werden.
vG Looxer
-
Hi looxer01,
vielen Dank nochmal für dein Script, läuft bereits paar Wochen lang und zählt schön mein Gasverbrauch.
Jetzt habe ich mich heran gemacht und versuche den Strom zu erfassen.
Als Grundlage habe ich wieder ein Sketch für "Gaszähler an Wemo D1 mini" genommen, etwas abgeändert und ein TCRT5000 Reflexionslichtschranke an das gute Teil angeschlossen.
Ich bekomme jetzt jede Umdrehung des Stromzählers einen Wert von 0,1 dazugezählt….
demnach nach 10 Umdrehungen der Scheibe wird eine glatte 1,00 ausgegeben. Die Werte kommen schön in den Iobroker mit Jawascript herein....
Jetzt zur meiner Frage aber.... Laut meinem Stromzähler, ergeben 96 Umdrehungen der Scheibe = 1 KWh.
Um den Tagesverbrauch zu ermitteln, müsste ich normal nur noch die Umdrehungen pro Tag zählen. Das sowiet klar.. Wie komme ich auf den Momentanverbrauch. Da spielt natürlich Zeit im Spiel. Kannst Du mir helfen Looxer01?
-
Hi Christian,
zum Thema korrekter Umrechnung
kannst du mal die Werte aus den unterliegenden Datenpunkten der folgenden Objekte zeigen ?
javascript.0.BSZ.System.Grp02Kum
javascript.0.BSZ.System.Grp02MSec
javascript.0.BSZ.System.Grp03Kum
javascript.0.BSZ.System.Grp03MSec
Hintergrund ist, dass dort die realen Werte ohne Umrechnung gespeichert werden.
Falls dort die Werte stimmen, dann gib in das Runden für kwh und Euro mal jeweils 9 ein.
Mit Rundungen hatte ich mal Probleme. Die Originalwerte aus dem Systembereich verändern sich dabei nicht.
Zum Thema "before" habe ich im Moment noch keine Idee. Da gab es noch nie ein Problem.
"before" wird ja auch nicht gerechnet sondern einfach beim Tageswechsel in den Datenpunkt übertragen.
Ich schaue mir nochmal das Coding an.
vG Looxer
-
Das mit dem runden war bei mir mal ein Problem.
Hattest du dann aber irgendwie gelöst.
Ist diese Verbesserung garnicht als Update in deinem Script eingeflossen?
Gruß
-
Hi
Wie komme ich auf den Momentanverbrauch. Da spielt natürlich Zeit im Spiel. `
Was liefert denn der Zähler genau für Daten ? Darauf kommt es ja an wie eine Lösung aussehen könnte.
Theoretisch kannst du einen annähernden Momentanverbrauch (abhängig von der Laufzeit einer Umrundung) erhalten.
jede Umdrehung = ungefähr 100 Watt . Wenn die Scheibe dafür 60 Sekunden braucht, dann hast du 6 kWh Verbrauch
bei 0,5 kWh Verbrauch dürfte eine Scheibenumdrehung also 12 Minuten brauchen - korrekt ?
Bei diesen Werten ist der Momentanverbrauch also eher ein letzter Verbrauch.
Wie du schon gesagt hast. Du brauchst die letzte Umdrehungszeit. Wenn die geliefert wird, dann kannst du mit dem BSZ einfach umrechnen (Methode CALC)
Wenn aber nur "0,1" geliefert wird, dann wird es eher schwierig für den BSZ, bzw. es bräuchte zusätzliches Coding über den UserExit.
vG Looxer
-
@ple:Ist diese Verbesserung garnicht als Update in deinem Script eingeflossen? `
Nein, es gab noch keine neue Version.vG Looxer
-
Die Aufzeichnung der Verbrauchsdaten läuft jetzt super, danke für das großartige Script BSZ.
Der Name Betriebsstundenzähler legt nahe, dass es möglich ist Startzeiten und Betriebsdauer zu erfassen. ich habe jetzt schon alles mögliche ausprobiert, bekomme es einfach nicht hin.
Ich habe eine Variable(Objekt) angelegt, diese wird durch einen Temperaturwert auf false/True geschaltet. diese habe ich in dem BSZ als Objekt eingefügt, aber dann? Spalte 9 ist ja offenbar für die Berechnungen, bzw die dritte Tabelle. Ich habe aber leider keinen Schimmer wie das zu konfigurieren ist.
Für eine Hilfestellung wäre ich sehr dankbar.
-
Hallo Looxer, hab den Sketch des Wemos umgeschrieben und bekomme jetzt glatte Zahlen pro Umdrehung! siehe Bild. Ich hoffe das es damit einfacher wird zu arbeiten.
Bis dato habe ich ein paar Angaben für Gas und deren Berechnung! Deine obige Rechnung machtSinn…
Aber: ich komme aber bei jeder Umdrehung = ungefähr auf 10 Watt aufgerundet. Wenn ich es mit 100 " Umdrehungen" multipliziere , komme ich auf 1000Watt was 1KW entspricht.... Kann das? Ich habe dir unten meine Tabelle vom deinem Script eingefügt. Kannst Du grob sagen, wie ich es (Methode CALC) bei meinem Beispiel anwenden soll?
Gruß
// 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] = ['javascript.0.GasMeter.Wert' ,'Heizung' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 1] = ['javascript.0.BSZ.Counter.Heizung.DELTA.GAS.1-DAY' ,'Heizung_KWh' ,true ,true ,true ,true ,true ,false ,'CALC' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 2] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 3] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //
var logname = []; // Stat1 Stat2 Stat3 Stat4 Stat5 Stat6 Stat7 Stat8 Stat9 Stat10 logname[0] = ['GAS' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[1] = ['GAS_KWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[2] = ['EinAus3' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[3] = ['EinAus3' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,''];
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] = ['2' ,'' ,'' ,'' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' , '' ]; special[1] = ['2' ,'' ,'11.432' ,'' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[2] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[3] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
-
@ple:Ist diese Verbesserung garnicht als Update in deinem Script eingeflossen? `
Nein, es gab noch keine neue Version.vG Looxer `
Danke für deine Rückmeldung,
@Ple hat mir sein Script zu Verfügung gestellt mit dem läuft es jetzt wie gewünscht allerdings habe ich keine unterscheide in seinem zu meinem Script gefunden.
Da hattest du aber wohl schon irgendwas geändert, deshalb läuft es jetzt.
Gruß Christian
-
Hallo Looxer
nach Neuinstallation von iobroker hab ich 2 *.csv Dateien, eine vom Zeitraum 04/17 bis 12/17 und eine von der aktuellen Installation '(ab28.12.17). Kann man die "zusammenlegen" ? Hatte meine vorherige iobroker installation zerschossen.