NEWS
[Vorlage] Betriebsstundenzähler & Verbrauchsrechner
-
Hi Noxx,
die Werte werden erst mit dem Tagesabschluss gefüllt. (also um Mitternacht)
Hattest du die Konfig schon über Nacht laufen ?
vG Looxer
-
Hi Noxx,
die Werte werden erst mit dem Tagesabschluss gefüllt. (also um Mitternacht)
Hattest du die Konfig schon über Nacht laufen ?
vG Looxer ` Läuft seit einer Woche
Gesendet von meinem Huawei P10lite mit Tapatalk
-
kannst du mal ins log schauen, ob es Meldungen um 00:04 gab ?
Deine Einstellungen sehen erstmal gut aus. Und der kumulierte Wert wird ja offensichtlich gefüllt.
Also stimmt was mit dem Tagesabschluss nicht. Wenn due das Programm neu startest muesstest du auch die Anzahl der schedules reported bekommen. Sollten 27 sein.
vG Looxer
-
erstmal das:
16:36:51.925 [info] javascript.0 Stop script script.js.common.Betriebsstundenzaehler 16:36:52.875 [info] javascript.0 Start javascript script.js.common.Betriebsstundenzaehler 16:36:52.876 [info] javascript.0 script.js.common.Betriebsstundenzaehler: registered 26 subscriptions and 27 schedules
`2017-09-22 00:00:00.118 - [32minfo[39m: host.raspberrypi instance system.adapter.dwd.0 started with pid 4336 2017-09-22 00:00:00.207 - [32minfo[39m: host.raspberrypi instance system.adapter.tvspielfilm.0 started with pid 4342 2017-09-22 00:00:00.257 - [32minfo[39m: host.raspberrypi instance system.adapter.ical.1 started with pid 4348 2017-09-22 00:00:00.323 - [32minfo[39m: host.raspberrypi instance system.adapter.ical.0 started with pid 4354 2017-09-22 00:00:00.885 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Ausgelöst bei Timer 2017-09-22 00:00:00.910 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Geräte Nr. 0: Cresta_ 1 Low battery: false 2017-09-22 00:00:00.911 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Geräte Nr. 1: Cresta_ 2 Low battery: false 2017-09-22 00:00:00.913 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Geräte Nr. 2: Cresta_ 4 Low battery: false 2017-09-22 00:00:00.914 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Geräte Nr. 3: Cresta_ 5 Low battery: false 2017-09-22 00:00:00.916 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Geräte Nr. 4: Cresta_ 3 Low battery: false 2017-09-22 00:00:00.927 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Text: 2017-09-22 00:00:00.928 - [32minfo[39m: javascript.0 script.js.common.Batteriestatus: Anzahl Geräte: 5 # davon LOWBAT erkannt: 0 2017-09-22 00:00:06.968 - [32minfo[39m: tvspielfilm.0 starting. Version 0.2.2 in /opt/iobroker/node_modules/iobroker.tvspielfilm, node: v6.11.1 2017-09-22 00:00:07.171 - [32minfo[39m: dwd.0 starting. Version 2.1.1 in /opt/iobroker/node_modules/iobroker.dwd, node: v6.11.1 2017-09-22 00:00:07.224 - [32minfo[39m: tvspielfilm.0 objects written 2017-09-22 00:00:07.809 - [32minfo[39m: ical.1 starting. Version 1.3.2 in /opt/iobroker/node_modules/iobroker.ical, node: v6.11.1 2017-09-22 00:00:08.161 - [32minfo[39m: ical.0 starting. Version 1.3.2 in /opt/iobroker/node_modules/iobroker.ical, node: v6.11.1 2017-09-22 00:00:08.534 - [32minfo[39m: host.raspberrypi instance system.adapter.dwd.0 terminated with code 0 (OK) 2017-09-22 00:00:09.437 - [32minfo[39m: host.raspberrypi instance system.adapter.tvspielfilm.0 terminated with code 0 (OK) ... 2017-09-22 00:00:15.363 - [32minfo[39m: host.raspberrypi instance system.adapter.ical.0 terminated with code 0 (OK) 2017-09-22 00:00:15.490 - [32minfo[39m: host.raspberrypi instance system.adapter.ical.1 terminated with code 0 (OK) 2017-09-22 00:04:00.228 - [32minfo[39m: javascript.0 script.js.common.Betriebsstundenzaehler: EVENT Betriebsstundenzaehler werden zurueckgesetzt TAG:22 Wochentag 5Monat 09 2017-09-22 00:05:00.053 - [32minfo[39m: host.raspberrypi instance system.adapter.tvspielfilm.0 started with pid 4396 2017-09-22 00:05:00.109 - [32minfo[39m: host.raspberrypi instance system.adapter.dwd.0 started with pid 4403 2017-09-22 00:05:05.306 - [32minfo[39m: dwd.0 starting. Version 2.1.1 in /opt/iobroker/node_modules/iobroker.dwd, node: v6.11.1 2017-09-22 00:05:05.457 - [32minfo[39m: tvspielfilm.0 starting. Version 0.2.2 in /opt/iobroker/node_modules/iobroker.tvspielfilm, node: v6.11.1 2017-09-22 00:05:05.631 - [32minfo[39m: tvspielfilm.0 objects written 2017-09-22 00:05:06.349 - [32minfo[39m: host.raspberrypi instance system.adapter.dwd.0 terminated with code 0 (OK) 2017-09-22 00:05:07.432 - [32minfo[39m: host.raspberrypi instance system.adapter.tvspielfilm.0 terminated with code 0 (OK)[/code]` [2880_1.png](/assets/uploads/files/2880_1.png)
-
moin
woran liegts nun das keine delta-werte da sind?
-
Hi noxx,
meine Vermutung, dass der schedule nicht anläuft hat sich nicht bestätigt.
Erstens zeigt sagt das der Logeintrag und zweitens sehe ich, dass die Werte ja im systembereich gespeichert wurden.
Das heisst, dass zum Zeitpunkt des Tagesabschlusses die Routinen gelaufen sind aber keine Speicherung im counter (umgerechnet und gerundet) erfolgte. Woran das liegt weiss ich noch nicht. Es ist auch das erste mal, dass das auftritt.
Ich muss jetzt das Programm mit deinen Einstellungen checken.
Könntest du zu dem Folgendes machen: Lösche bitte manuell die Einträge mit den fehlenden Werten und lass das Programm neu anlaufen. Die Zeilen sollten dann neu erzeugt werden.
vG Looxer
-
löschen hat nichts gebraucht. nach neustart stand der zähler erst auf 0, nun wieder auf 000:00:00:00
-
was mich wunder, das bei den kumulierten Werten anscheinend die Delta Werte stehen….
2880_01.png
2880_01.png -
was mich wunder, das bei den kumulierten Werten anscheinend die Delta Werte stehen…. `
nein, das ist schon absolut ok. es sind die kumulierten delta-Werte.ich brauche noch etwas Zeit, um das Problem anzugehen.
Ich hoffe, dass ich kommende Woche dazu komme.
vG Looxer
-
Hi Noxx,
ich denke, dass ich was gefunden habe.
Eine Zwischenlösung könnte sein, dass du eine Rundung eingibst (z.B. 3 für 3 Nachkommastellen).
Dann sollten die Periodenwerte geschrieben werden. ggf. nochmal die Werte vorher löschen.
Der Fehler liegt also im Programm, tritt aber nur auf, wenn keine Umrechnung hinterlegt ist.
vG Looxer
-
Hi Noxx,
ich denke, dass ich was gefunden habe.
Eine Zwischenlösung könnte sein, dass du eine Rundung eingibst (z.B. 3 für 3 Nachkommastellen).
Dann sollten die Periodenwerte geschrieben werden. ggf. nochmal die Werte vorher löschen.
Der Fehler liegt also im Programm, tritt aber nur auf, wenn keine Umrechnung hinterlegt ist.
vG Looxer `
danke, nun gehts mit 3 Nachkommastellen.
-
danke, nun gehts mit 3 Nachkommastellen. `
super, ich werde dann demnächst eine neue Version zur Verfügung stellen, allerdings macht es eh Sinn mit Nachkommastellen zu arbeiten.Rundungsprobleme gibt es nicht, weil ja die ungerundeten Werte im Systembereich gespeichert werden und die Berechnungen mit diesen Zahlen gemacht werden.
vG Looxer
-
Hi,
ich lese mein Gaszähler mit einem Wemo aus. Siehe Script unten:
var request = require('request'); var parseString = require('xml2js').parseString; var url="http://192.168.1.105"; // hier die Adresse der Webseite eintragen var GasMeterId = "GasMeter.Wert"; // Der Wert steht in "javascript.0." function processData(body){ parseString(body, function (err, result) { // log(JSON.stringify(result.MyHome.ESP8266_GasMeter[0].data[4].$.value)); if (!err) setState(GasMeterId,result.MyHome.ESP8266_GasMeter[0].data[4].$.value); }); } createState(GasMeterId, 0, false, { type:"number", unit:"m^3" }); schedule ("*/3 * * * *", function(){ // alle 3 Minuten aufrufen request({ uri: url, method: "GET", timeout: 10000, followRedirect: true, maxRedirects: 10 }, function(error, response, body) { if (!error) { if (response.statusCode == 200) { processData(body); } } else log("Fehler: "+error); }); });
Es funktioniert alles wie es soll, leider bekomme ich alle drei minuten eine Warnung im Log.
Kann jemand sehen was dort nicht o.k ist? Kann man die Warnung irgenwie abstellen?
javascript.0 2017-10-05 09:42:01.497 info script.js.common.GaszaehlerWemo: setForeignState(id=javascript.0.GasMeter.Wert, state="383.50") javascript.0 2017-10-05 09:42:01.496 warn at process._tickCallback (internal/process/next_tick.js:104:9) javascript.0 2017-10-05 09:42:01.496 warn at _combinedTickCallback (internal/process/next_tick.js:80:11) javascript.0 2017-10-05 09:42:01.496 warn at endReadableNT (_stream_readable.js:974:12) javascript.0 2017-10-05 09:42:01.495 warn at IncomingMessage.emit (events.js:185:7) javascript.0 2017-10-05 09:42:01.495 warn at emitNone (events.js:91:20) javascript.0 2017-10-05 09:42:01.495 warn at IncomingMessage.g (events.js:292:16) javascript.0 2017-10-05 09:42:01.494 warn at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1091:12) javascript.0 2017-10-05 09:42:01.494 warn at Request.emit (events.js:188:7) javascript.0 2017-10-05 09:42:01.494 warn at emitOne (events.js:96:13) javascript.0 2017-10-05 09:42:01.493 warn at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1171:10) javascript.0 2017-10-05 09:42:01.493 warn at Request.emit (events.js:191:7) javascript.0 2017-10-05 09:42:01.492 warn at emitTwo (events.js:106:13) javascript.0 2017-10-05 09:42:01.492 warn at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:188:22) javascript.0 2017-10-05 09:42:01.492 warn at Request._callback (script.js.common.GaszaehlerWemo:34:17) javascript.0 2017-10-05 09:42:01.491 warn at processData (script.js.common.GaszaehlerWemo:9:4) javascript.0 2017-10-05 09:42:01.491 warn at exports.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:354:19) javascript.0 2017-10-05 09:42:01.491 warn at Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:5:59) javascript.0 2017-10-05 09:42:01.490 warn at Parser.exports.Parser.Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:322:31) javascript.0 2017-10-05 09:42:01.490 warn at Object.write (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:1436:13) javascript.0 2017-10-05 09:42:01.490 warn at closeTag (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:889:7) javascript.0 2017-10-05 09:42:01.489 warn at emitNode (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:629:5) javascript.0 2017-10-05 09:42:01.489 warn at emit (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:624:35) javascript.0 2017-10-05 09:42:01.488 warn at Object.onclosetag (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:261:26) javascript.0 2017-10-05 09:42:01.488 warn at Parser.emit (events.js:188:7) javascript.0 2017-10-05 09:42:01.487 warn at emitOne (events.js:96:13) javascript.0 2017-10-05 09:42:01.487 warn at Parser. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:303:18) javascript.0 2017-10-05 09:42:01.486 warn at script.js.common.GaszaehlerWemo:12:11 javascript.0 2017-10-05 09:42:01.481 warn Wrong type of javascript.0.GasMeter.Wert: "string". Please fix, while deprecated and will not work in next versions.
-
Hi,
das hat nichts mit dem Betriebsstundenzähler zu tun.
scheint irgendwas beim parsen zu passieren.
Ich kann dir auf die Schnelle das Problem nicht lösen. Die Warnungen könnte man zwar prinzipiell über den log level unterdrücken. Allerdings ist dass das kurieren von Symptomen. (und andere Warnmeldungen willst du vielleicht sehen)
zu dieser Warnmeldung:
Wrong type of javascript.0.GasMeter.Wert: "string". Please fix, while deprecated and will not work in next versions.
stelle das objekt javascript.0.GasMeter.Wert auf number um.
vG Looxer
-
Danke Dir, kann Dir aber nicht ganz folgen….
im Script ist ein "number" eingetragen.
createState(GasMeterId, 0, false, { type:"number", unit:"m^3" });
Unter type (siehe Bild), kann ich nur:
Logikwert
Zeichenkette
Zahl
Feld
Objekt
gemischt
eintragen….
1526_unbenannt3.png -
Unter type (siehe Bild), kann ich nur:
Logikwert
Zeichenkette
Zahl
Feld
Objekt
gemischt `
genau. Zahl wäre vermutlich der richtige Wert…
aaeh sorry, ist ja schon eingetragen. Dann ist es wohl so, dass versucht wird einen string zu verwenden.
Stelle es mal testweise auf String. Ist aber nicht die Lösung. Das muss dann im Programm umgewandelt werden.
vG Looxer
-
Danke, habe jetzt auf "gemischt" eingestellt und die Warnungen sind jetzt vollkommen verschwunden.
Jetzt kommt nur alle drei min. das hier…
javascript.0 2017-10-05 11:51:01.401 info script.js.common.GaszaehlerWemo: setForeignState(id=javascript.0.GasMeter.Wert, state="383.50")
ich glaube, dass es damit beseitigt ist. :mrgreen:
-
Jetzt kommt nur alle drei min. das hier… `
ich habe bei mir den loglevel auf WARN stehen. Damit werden Info ausgeblendet.ist aber Geschmackssache
vG Looxer
-
Danke loxer01,
ich habe Loglevel auf "Alle" stehen.
Die Warnungen sind nicht mehr da! Jetzt kommt wirklich nur noch das, was kommen soll.
Habe sogat noch zwei Warnmeldungen vom Tankerkönig weg bekommen.
Danke Dir für die Unterstützung!
-
Hallo looxer01,
du hattest mal dein Script bei mir angepasst, weil es damals Fehler beim runden gab. Naja, seitdem habe ich das Script nicht mehr angefasst jetzt jedoch 2 Wärmemengenzähler die mit integrieren wollte.
Ich habe die Geräte angelegt und einen Teiler von 1000 gesetzt. Nun erzeugt er zwar die Datenpunkte und zählt auch schön hoch, nur schieb er die Daten nicht in den Vortag sonder zählt einfach weiter.
Hast du eine Idee warum ???
!
*/ var Gruppen = []; // 1.Homematic ID, 2.Thema(no spaces) 3.History 4.DAY 5.Week 6.Month 7.Year 8.Switch 9 - 18 Status to log 19.stop 20.Loesch Gruppen[ 0] = ['hm-rpc.0.MEQ0703517.1.ENERGY_COUNTER' ,'Strom' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // kWh Hauptzähler Gruppen[ 1] = ['hm-rpc.0.MEQ0703517.1.ENERGY_COUNTER' ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Euro Hauptzähler Gruppen[ 2] = ["wm-bus.0.AAA-73154067.2.value"/*value*/, 'Heizung xxxx' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Heizung xxxx Gruppen[ 3] = ["wm-bus.0.AAA-73154068.2.value"/*value*/, 'Heizung xxxxx' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Heizung xxxx 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] = ['Heizung-kWh-xxxx' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[3] = ['Heizung-kWh-xxxxx' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; 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] = ['' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; // kWh special[3] = ['' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; // kWh 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] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; !