Ich habe eine PV Anlage aus der ich verschiedene Werte auslese und auswerte. Dazu stelle ich mit Hilfe von ReadingsVal userReadings zusammen. Von dem Modul "SolarEdgeAPI" bekomme ich verschiedene Batterie Stati gemeldet (normal von 0 bis 7). Wenn das Modul aber ausfällt, wenn die max.API Abfrage zu Ende ist, ist auch die Variable "Batt_State" leer. Damit wird sofort ein Error ausgelöst und meine LOG Datei ist dann voller Error Meldungen. Um diese Fehlermeldung zu vermeiden muß ich mit ReadingsVal den Leerstring auswerten und in meiner Anzeige "Error" ausgeben.
userReading sieht zur Zeit so aus (auszugweise).
..............Batt_State {ReadingsVal("SolarEdge", "Batt_State", "") ==~ m/:\s ? "Error" : ReadingsVal("SolarEdge", "Batt_State", "") == 0 ? "ist aus" : ReadingsVal("SolarEdge", "Batt_State", "") == 1 ? "Standby " : ReadingsVal("SolarEdge", "Batt_State", "") == 2 ? "initialisiert " : ReadingsVal("SolarEdge", "Batt_State", "") == 3 ? "wird geladen " : ReadingsVal("SolarEdge", "Batt_State", "") == 4 ? "wird entladen " : ReadingsVal("SolarEdge", "Batt_State", "") == 5 ? "Fehler " : ReadingsVal("SolarEdge", "Batt_State", "") == 6 ? "Leerlauf " : ReadingsVal("SolarEdge", "Batt_State", "") == 7 ? "Leerlauf "}...........
und um diese Stelle geht es:
............Batt_State {ReadingsVal("SolarEdge", "Batt_State", "") ==~ m/:\s ? "Error"..........
Ich habe alle Möglichkeiten ausprobiert um mit Hilfe von "==~ m/:\s ? " und " !~ m//)" und auch anderen Lösungen die Meldung "Error" auszugeben. Im I-Net und auch hier im Board habe ich keine Lösung gefunden. Wenn die SolarEdgeAPI läuft funktioniert alles einwandfrei.
Weiß einer eine Lösung für dieses Problem?
Gruß aus Köln
Norbert
Wie wäre es mit:
............Batt_State {!ReadingsVal("SolarEdge", "Batt_State", undef) ? "Error"..........
Gruß
Dan
{ReadingsVal("SolarEdge", "Batt_State", "Error")
??
VG Sebastian
Und noch ein paar Anmerkungen dazu:
- zum einen kann man mit dem dritten Parameter von ReadingsVal() auch einen Rückgabewert festlegen, wenn nichts drin steht... Das ist evtl. leichter auszuwerten als "leer" ;) . (das wäre "if defined ...")
- userReadings sollten m.E. immer einen sauberen Trigger verwenden, und nicht auf alle Events reagieren
- Ob es überhaupt sinnvoll ist, das umzulabeln, mußt du selbst wissen, ggf. ginge das auch als reine Anzeigefunktion auf Basis der reinkommenden Werte
- Dann könntest du den Rückgabewert auch einfach zwischenspeichern, statt ihn wiederholt aufzurufen, z.B. "my $val = ReadingsVal("SolarEdge", "Batt_State", "Error");;"- Solche Wertzuweisungen nach key=>value gehen in Perl evtl. eleganter, wenn du einen Hash verwendest, siehe z.B. hier: https://perlmaven.com/perl-hashes (https://perlmaven.com/perl-hashes)
@DeeSPe: Wenn regulär aus, aber erreichbar, ist der Wert "0", wenn ich das richtig verstanden hatte...
Leider funktioniere es nicht mit undef und Error nicht. Auch das ! habe ich eingefügt, immer noch die Error Meldung von Batt_State im Reading.
Ich habe mit:
{(ReadingsVal("SolarEdge", "Batt_State", ""))}
extra noch malnachgesehen ob die Variable auch wirklich leer ist, ja, Anfrage gibt keinen Wert raus.
Gruß
Norbert
............Batt_State {ReadingsVal("SolarEdge", "Batt_State", "") !~ /^\d$/ ? "Error"..........
Gruß
Dan
Hallo Dan,
so sieht die Eingabe aus:
Batt_State {ReadingsVal("SolarEdge", "Batt_State", "") !~ /^\d$/ ? "Error"
und so die Error Meldung von attr mySL_now userReadings:
Error evaluating mySL_now userReading Batt_State: syntax error at (eval 3092) line 1, at EOF
Gruß
Nobbi
Zitat von: cocojambo am 06 September 2019, 14:57:30
Hallo Dan,
so sieht die Eingabe aus:
Batt_State {ReadingsVal("SolarEdge", "Batt_State", "") !~ /^\d$/ ? "Error"
und so die Error Meldung von attr mySL_now userReadings:
Error evaluating mySL_now userReading Batt_State: syntax error at (eval 3092) line 1, at EOF
Gruß
Nobbi
So kann leider niemand helfen.
Bitte mal ein list vom Device.
Gruß
Dan
Hier das list mySL_now:
Internals:
DEF 192.168.115.2 30
FUUID 5c470f61-f33f-6f9b-f6a3-56a4313f177dd67b
HOST 192.168.115.2
INTERVAL 30
NAME mySL_now
NR 809
STATE active
TYPE Solarlog
READINGS:
2019-09-06 15:06:05 Batt_State Error evaluating mySL_now userReading Batt_State: syntax error at (eval 3526) line 1, at EOF
2019-09-06 15:06:05 Baum_all 53586243.2
2019-09-06 15:06:05 Co2_all 53586243.2
2019-09-06 15:06:05 Pac_Day 33650
2019-09-06 15:06:05 Pac_Day_avg 33443
2019-09-06 15:06:05 Pac_Mon 176953
2019-09-06 15:06:05 Pac_Mon_avg 176746
2019-09-06 15:06:05 Pac_S0_now 4854
2019-09-06 15:06:05 Pac_S0_now_avg 4840
2019-09-06 15:06:05 Pac_Year 7671000
2019-09-06 15:06:05 Pac_Year_avg 7670793
2019-09-06 15:06:05 Pac_all 76551776
2019-09-06 15:06:05 Pac_all_avg 76551569
2019-09-06 15:06:05 Pac_now 5482
2019-09-06 15:06:05 Pac_now_avg 5467
2019-09-06 15:06:05 S0_Day 6840
2019-09-06 15:06:05 S0_Day_avg 6814
2019-09-06 15:06:05 S0_Mon 56029
2019-09-06 15:06:05 S0_Mon_avg 56003
2019-09-06 15:06:05 S0_Pac_now 0
2019-09-06 15:06:05 S0_Year 2493093
2019-09-06 15:06:05 S0_Year_avg 2493067
2019-09-06 15:06:05 S0_all 35522645
2019-09-06 15:06:05 S0_all_avg 35522619
2019-09-06 15:06:05 S0_now 628
2019-09-06 15:06:05 S0_now_avg 627
Attributes:
alias Solar-Log Energie Kontrolle
avg_count 10
group Systemkontrolle
register 3502,Pac_now,3518,S0_now,3520,S0_Day,3524,S0_Mon,3526,S0_Year,3516,Pac_all,3508,Pac_Day,3512,Pac_Mon,3514,Pac_Year,3528,S0_all
room System
userReadings Pac_S0_now {if (ReadingsVal("mySL_now", "S0_now", "0")+ ReadingsVal("SolarEdge", "Batt_Watt", "0") > ReadingsVal("mySL_now", "Pac_now", "0")) {return '0'} else {ReadingsVal("mySL_now", "Pac_now",
Gruß
Norbert
Ich kann bei dem list kein erstelltes userReading mit Batt_State finden!
Das Attribut userReading scheint nicht vollständig zu sein.
Irgendwie dachte ich auch es geht um das Device SolarEdge und nicht um mySL_now.
Gruß
Dan
hier das list SolarEdge:
Internals:
DEF 1 30 192.168.115.3:502 TCP
DeviceName 192.168.115.3:502
EXPECT idle
FD 38
FUUID 5c470f64-f33f-6f9b-0546-4ade89a2d57ede73
INTERVAL 30
IODev SolarEdge
LASTOPEN 1567773634.65354
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.1.4 - 1.6.2019
NAME SolarEdge
NOTIFYDEV global
NR 1349
NTFY_ORDER 50-SolarEdge
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TRIGGERTIME 1567777032.54309
TRIGGERTIME_FMT 2019-09-06 15:37:12
TYPE ModbusAttr
devioLoglevel 4
lastUpdate 1567777002.54309
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2019-09-06 14:40:35 state opened
REMEMBER:
lid 1
lname SolarEdge
lrecv 1567777002.68791
lsend 1567777002.6613
defptr:
SolarEdge 1
lastRead:
Attributes:
alias SolarEdge Energie Steuerung
dev-h-combine 200
dev-h-defPoll 1
dev-h-defShowGet 1
enableControlSet 1
group Systemkontrolle
maxTimeoutsToReconnect 3
..........
obj-h57734-reading Batt_State
obj-h57734-unpack s>
............
room System
silentReconnect 1
sortUpdate 1
Aber nützt ja nichts weil unter der Adresse "h57734" keine "Batt_State" Daten zur Verfügung stehen und deshalb ist ja auch die Variable die an mySL_now übergeben wird, leer. Die Error Meldung entsteht ja nicht hier in dem Modul, sondern erst später bei der Auswertung in mySL_now bei der Definition der userReadings. Und wie gesagt, wenn der Wert wieder da ist, geht die Ausgabe 0-7 wieder.
Gruß
Norbert
Ich denke hier ist Deine Herangehensweise falsch.
userReading wird nur innerhalb des eigenen Devices verwendet, sonst fehlt der Trigger.
Wenn Du so etwas Device-übergreifend machen willst, dann würde ich das mit einem notify machen und dann entsprechend die Readings in dem anderen Device setzen.
Damit Dir hier wirklich jemand verbindlich helfen kann musst Du noch das vollständige list von mySL_now liefern.
Gruß
Dan
P.S. Mir fällt gerade auf dass es in dem list von SolarEdge keine Readings außer state gibt.
Hmm, bei SolarLog scheint es um eine Art Statistikmodul zu gehen, das regelmäßig Werte abfragt (siehe https://wiki.fhem.de/wiki/SolarLog (https://wiki.fhem.de/wiki/SolarLog)), vermutlich, um Loggen und eben auch "angebotsabhängig" Verbraucher schalten zu können.
Der TE hat hier keinen Trigger definiert, was an sich als generelle Vorgehensweise nicht optimal ist, aber vermutlich hier (ausnahmsweise) nicht schädlich, weil eh' alles auf einen Rutsch aktualisiert wird (??). Es ist aber kein Problem, mit userReadings externe Werte abzufragen und ins eigene Device zu importieren - dass da ("extern") im Moment nur state verfügbar ist, scheint ja gerade die Ursache zu sein, warum das hier knallt...
Vorschlag @TE: check doch nochmal deinen Post von 15:08, das list dort ist nicht vollständig, was du vermutlich trotz der Hinweise von DeeSPe übersehen hast...
Dann mach' in dein ursprüngliches userReading mal überall $name rein statt des "mySL_now", dann erkennen wir besser, was sich auf interne Werte bezieht, und was "von außen" geholt wird.
(EDIT: nein, machen wir erst am Ende, sonst klappt das mit der Kommandozeile nicht so einfach...)
Zuletzt überarbeiten wir dann den Code auf eine besser lesbare und funktionale Form? Hier sind ja genug Leute, die wissen, wie sowas geht...
Zur Vorgehensweise würde ich vorschlagen, den Perlcode nicht jedesmal in das attr zu übertragen, sondern erst mal in der Kommandozeile zu testen?
...oder versuche den relevanten Teil mal mit folgendem zu ersetzen:
Batt_State { my %rets = ("Error" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",);; my $val = ReadingsVal("SolarEdge", "Batt_State", "Error");; my $val = ReadingsVal("SolarEdge", "Batt_State", "Error");; $rets{$val};;}
Edit: ein paar ; eingefügt...
Bei SolarEdge und mySL_now werden bei zwei Module verwendet die einen Solarlog und einen Inverter per Modbus auslesen und die Werte schalten div.Aktoren, versorgen ein Wanddisplay mit Tabellen und Grafiken.
So ich habe jetzt mal die Zeile von Beta-User eingefügt. Die vorigen Error Meldungen sind weg und im Reading steht jetzt tatsächlich "Error". Es scheint also zu funktionieren. Aber warum steht da so oft
my $val = ReadingsVal("SolarEdge", "Batt_State", "Error")
drin?
Und wie kann ich jetzt mal vorher den "Ernstfall" testen wenn der Inverter wieder seine Daten rausrückt?
Und was mir noch einfiel: hätte man nicht einfach zu dem Batt_State immer "1" dazuadieren können und dann die Zahlenauswertung um 1 erhöht. Dann wäre doch immer mindestens Value ="1" da gewesen?
Gruß
Norbert
hier trotzdem noch mal mein komplettes list mySL_now, mit dem geändertem ReadingsVal
Internals:
DEF 192.168.115.2 30
FUUID 5c470f61-f33f-6f9b-f6a3-56a4313f177dd67b
HOST 192.168.115.2
INTERVAL 30
NAME mySL_now
NR 809
STATE active
TYPE Solarlog
READINGS:
2019-09-06 17:27:12 Batt_State Error
2019-09-06 17:27:12 Baum_all 53592926.1
2019-09-06 17:27:12 Co2_all 53592926.1
2019-09-06 17:27:12 Pac_Day 43197
2019-09-06 17:27:12 Pac_Day_avg 43117
2019-09-06 17:27:12 Pac_Mon 186500
2019-09-06 17:27:12 Pac_Mon_avg 186420
2019-09-06 17:27:12 Pac_S0_now 1294
2019-09-06 17:27:12 Pac_S0_now_avg 1512
2019-09-06 17:27:12 Pac_Year 7680547
2019-09-06 17:27:12 Pac_Year_avg 7680467
2019-09-06 17:27:12 Pac_all 76561323
2019-09-06 17:27:12 Pac_all_avg 76561243
2019-09-06 17:27:12 Pac_now 1867
2019-09-06 17:27:12 Pac_now_avg 2003
2019-09-06 17:27:12 S0_Day 8205
2019-09-06 17:27:12 S0_Day_avg 8183
2019-09-06 17:27:12 S0_Mon 57394
2019-09-06 17:27:12 S0_Mon_avg 57372
2019-09-06 17:27:12 S0_Pac_now 0
2019-09-06 17:27:12 S0_Year 2494458
2019-09-06 17:27:12 S0_Year_avg 2494436
2019-09-06 17:27:12 S0_all 35524010
2019-09-06 17:27:12 S0_all_avg 35523988
2019-09-06 17:27:12 S0_now 573
2019-09-06 17:27:12 S0_now_avg 491
Attributes:
alias Solar-Log Energie Kontrolle
avg_count 10
group Systemkontrolle
register 3502,Pac_now,3518,S0_now,3520,S0_Day,3524,S0_Mon,3526,S0_Year,3516,Pac_all,3508,Pac_Day,3512,Pac_Mon,3514,Pac_Year,3528,S0_all
room System
userReadings Pac_S0_now {if (ReadingsVal("mySL_now", "S0_now", "0")+ ReadingsVal("SolarEdge", "Batt_Watt", "0") > ReadingsVal("mySL_now", "Pac_now", "0")) {return '0'} else {ReadingsVal("mySL_now", "Pac_now", "0") - ReadingsVal("mySL_now", "S0_now", "0")- ReadingsVal("SolarEdge", "Batt_Watt", "0")}},Co2_all {ReadingsVal("mySL_now", "Pac_all", "0")*0.70},S0_Pac_now {if (ReadingsVal("mySL_now", "Pac_now", "0") - ReadingsVal("SolarEdge", "Batt_Watt", "0") > ReadingsVal("mySL_now", "S0_now", "0")) {return '0'} else {ReadingsVal("mySL_now", "S0_now", "0") - ReadingsVal("mySL_now", "Pac_now", "0") + ReadingsVal("SolarEdge", "Batt_Watt", "0")}}, Batt_State { my %rets = ("Error" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",); my $val = ReadingsVal("SolarEdge", "Batt_State", "Error"); my $val = ReadingsVal("SolarEdge", "Batt_State", "Error"); $rets{$val};},Pac_S0_now_avg {ReadingsVal("mySL_now", "Pac_now_avg", "0")- ReadingsVal("mySL_now", "S0_now_avg", "0")},Baum_all {ReadingsVal("mySL_now", "Co2_all", "0")}
UPS, Tastatur gehangen...? Hinten ist es überflüssig...
Habe die hinteren 2 "Errors" entfernt und jetzt kommen wieder die Error Meldungen.
Batt_State { my %rets = ("Error" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",);; $rets{$val};;}
Zuviel geändert? oder zuviel gekürzt?
Gruß
Norbert
Ich habe die erste Version in der "Error" im Reading stand wieder eingespielt.
Leider steht im LOG folgende Fehlermeldung. Scheint also doch noch nicht so wirklich zu funktionieren:
2019.09.06 20:08:16 1: PERL WARNING: "my" variable $val masks earlier declaration in same scope at (eval 27016) line 1.
2019.09.06 20:08:16 3: eval: { my %rets = ("Error" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",);; my $val = ReadingsVal("SolarEdge", "Batt_State", "Error");; my $val = ReadingsVal("SolarEdge", "Batt_State", "Error");; $rets{$val};;}
und kann man da was machen?
Gruß
Norbert
Du hattest schon recht, da war was zu viel - ziemlich genau das sagt auch die Fehlermeldung.
Hab's entfernt, den "Ersatzrückgabewert" etwas umbenannt und die Reihenfolge umgedreht, dann wird vielleicht klarer, was da passiert:
Batt_State { my $val = ReadingsVal("SolarEdge", "Batt_State", "Err");; my %rets = ("Err" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",);; $rets{$val};;}
Bedeutet:
1. ReadingsVal = Aktuellen Zustand (in eine Variable) holen, gibt's da ein Problem (Device oder Reading existiert nicht oder ist undef), wird "Err" zurückgeliefert.
2. HASH definieren, der die effektiven Rückgabewert-MÖGLICHKEITEN enthält.
3. Rückgabewert für die Variable aus dem HASH holen...
Hab's zwar nicht nochmal getestet, sollte aber funktionieren.
Jungs ihr seid zwar wohl schon recht weit, aber für mich liest sich das alles als ob ihr das Symptom statt der Ursache behandelt.
Ursache ist doch wohl das Modbus ein leeres bzw gar kein Reading für die Registerabfrage 57734 liefert ?
Also warum nicht im Modbus Device ein userReading mit Namen Batt_State erstellen und das aus dem Registerwert von 57734 bilden.
D.h liefert 57734 einen Wert 0-7 geht dieser direkt im userReading durch, ist es nicht vorhanden ist der Returnwert eben ein beliebiger andere String/Wert.
Trigger ist bestimmt auch einfach zu definieren, cocojambo hat das list gekürzt aber da sind wahrscheinlich noch mehr Registerwerte die auch im dem Fehlerfall eine gültige Antwort liefern.
Das ist richtig, es werden noch mehr Werte ausgelesen. Diese machen aber keinen "Ärger" wenn sie nicht da sind, weil sie nicht weiter bearbeitet werden, sondern 1:1 in die Ausgabe übernommen werden. Es wird ja bei der Abfrage der Werte kein Error ausgelöst. Der Modbus gibt "opened" raus, die Adresse scheint auch abgefragt zu werden, hat aber keinen Inhalt. Ich habe SolarEdge diesbezüglich schon angeschrieben, da einige Adressen weiterhin funktionieren. Habe nur noch keine Stellungsnahme dazu bekommen.
Die Idee das "leere Reading" mit einem Wert zu füllen, hatte ich ja auch, indem man einfach immer zu jeder Ausgabe +1 dazu addiert und die Abfrage dann entsprechend ändert. Dadurch käme immer mindestens der Wert 1 an. Habe es aber nicht hinbekommen und deshalb verworfen.
Gruß
Norbert
na also wenn es Register gibt die immer einen Wert liefern hat man schon mal einen Trigger für das userReading.
Das Geräte via Modbus gar keinen Wert liefert ist ärgerlich, aber vom User wohl ersteinmal kaum zu ändern.
Man kann allerdings noch einen Schritt weitergehen und mal mit dem Autor von ModbusAttr (StefanStrobel) reden :
a. warum löscht er bereits vorhandene Readings ? (finde ich persönlich etwas unglücklich und wenn nötig dann kann man dem User ggf. auch die Wahl lassen)
b. ob es nicht möglich wäre wenn ein Register bei der Abfrage keinen Wert mehr liefert es mit irgend einem default Wert zu besetzen.
Allerdings solltest du sicher sein das wirklich kein Wert vom WR kommt, oder kommt vllt. doch einer nur fällt er bei der Auswertung durchs Raster ?
(da sollte ein verbose 5 Log für Aufklärung sorgen)
Ich frage alle 30sek 23 Adressen des Inverters ab nach dem gleichen Schema. Davon bekomme ich 14 Readings mit den richtigen Werten zurück. Der Rest betrifft nur die storage-Daten, die alle vor 3 Tagen Mittags plötzlich gleichzeitig keine Readings mehr lieferten. Die kompletten Energy Daten liefen weiter bis einschließlich heute. Deshalb vermute ich, das der Hersteller SolarEdge über ein "Fernupdate" diese Abfragen gesperrt hat. Deshalb habe ich bei SolarEdge bereits angefragt. Meine Anfrage ist bereits vom techn.Support hier in Deutschland weitergeleitet worden zum techn.Support in Israel. Leider habe ich noch keine Stellungnahme.
Das mit dem verbose 5 LOG werde ich auf jeden Fall trotzdem mal versuchen.
Gruß
Norbert
So, die Adressen die ich auslesen möchte sind mittlerweile in meinem Inverter wieder von SolarEdge freigeschaltet worden und es kommen wieder alle Werte so wie Vorher. Aber jetzt wo die Zahlenwerte für den Zustand der Batterie wieder ausgelesen werden, kommt zwar keine "Error" Anzeige mehr, dafür aber nur die Zahlenwerte und nicht die entsprechenden "Zustände".
attr mySL_now userReadings Pac_S0_now {if (ReadingsVal("mySL_now", "S0_now", "0")+ ReadingsVal("SolarEdge", "Batt_Watt", "0") > ReadingsVal("mySL_now", "Pac_now", "0")) {return '0'} else {ReadingsVal("mySL_now", "Pac_now", "0") - ReadingsVal("mySL_now", "S0_now", "0")- ReadingsVal("SolarEdge", "Batt_Watt", "0")}},Co2_all {ReadingsVal("mySL_now", "Pac_all", "0")*0.70},S0_Pac_now {if (ReadingsVal("mySL_now", "Pac_now", "0") - ReadingsVal("SolarEdge", "Batt_Watt", "0") > ReadingsVal("mySL_now", "S0_now", "0")) {return '0'} else {ReadingsVal("mySL_now", "S0_now", "0") - ReadingsVal("mySL_now", "Pac_now", "0") + ReadingsVal("SolarEdge", "Batt_Watt", "0")}},Batt_State { my $val = ReadingsVal("SolarEdge", "Batt_State", "Err");; my %rets = ("Err" => "Error","0" => "ist aus","1" => "Standby","2" => "initialisiert","3" => "wird geladen","4" => "wird entladen","5" => "Fehler","6" => "Leerlauf","7" => "Leerlauf",);; $rets{$val};;},Pac_S0_now_avg {ReadingsVal("mySL_now", "Pac_now_avg", "0")- ReadingsVal("mySL_now", "S0_now_avg", "0")},Baum_all {ReadingsVal("mySL_now", "Co2_all", "0")}
attr mySL_now verbose 5
verbose=5 gibt auch keine Auskunft darüber warum das so ist:
2019.09.27 17:43:47 4: Solarlog_getupdate
2019.09.27 17:43:47 4: avg_count: 10
2019.09.27 17:43:47 4: currentvalues: 388, 2686, 7927, 200425, 2637489, 77129426, 26939, 754603, 8248650, 35667041
2019.09.27 17:43:47 4: count_avg: 100
2019.09.27 17:43:47 4: avg_count: 10
2019.09.27 17:43:47 4: reg_count: 10
2019.09.27 17:43:47 4: add reg : 3502 Pac_now 3518 S0_now 3520 S0_Day 3524 S0_Mon 3526 S0_Year 3516 Pac_all 3508 Pac_Day 3512 Pac_Mon 3514 Pac_Year 3528 S0_all
2019.09.27 17:43:47 4: shift 0
2019.09.27 17:43:47 4: shift 1
2019.09.27 17:43:47 4: shift 2
2019.09.27 17:43:47 4: shift 3
2019.09.27 17:43:47 4: shift 4
2019.09.27 17:43:47 4: shift 5
2019.09.27 17:43:47 4: shift 6
2019.09.27 17:43:47 4: shift 7
2019.09.27 17:43:47 4: shift 8
2019.09.27 17:43:47 4: shift 9
2019.09.27 17:43:47 4: --------------------
2019.09.27 17:43:47 4: new avg_values: 413, 737, 7793, 200291, 2637355, 77129398, 26911, 754575, 8248622, 35666907, 401, 737, 7793, 200291, 2637355, 77129401, 26914, 754578, 8248625, 35666907, 390, 761, 7805, 200303, 2637367, 77129404, 26917, 754581, 8248628, 35666919, 383, 761, 7805, 200303, 2637367, 77129407, 26920, 754584, 8248631, 35666919, 369, 2758, 7840, 200338, 2637402, 77129411, 26924, 754588, 8248635, 35666954, 374, 2758, 7840, 200338, 2637402, 77129414, 26927, 754591, 8248638, 35666954, 389, 2647, 7883, 200381, 2637445, 77129417, 26930, 754594, 8248641, 35666997, 398, 2647, 7883, 200381, 2637445, 77129421, 26934, 754598, 8248645, 35666997, 386, 2686, 7927, 200425, 2637489, 77129424, 26937, 754601, 8248648, 35667041, 388, 2686, 7927, 200425, 2637489, 77129426, 26939, 754603, 8248650, 35667041
2019.09.27 17:43:47 4: Pac_now - 0
2019.09.27 17:43:47 4: S0_now - 1
2019.09.27 17:43:47 4: S0_Day - 2
2019.09.27 17:43:47 4: S0_Mon - 3
2019.09.27 17:43:47 4: S0_Year - 4
2019.09.27 17:43:47 4: Pac_all - 5
2019.09.27 17:43:47 4: Pac_Day - 6
2019.09.27 17:43:47 4: Pac_Mon - 7
2019.09.27 17:43:47 4: Pac_Year - 8
2019.09.27 17:43:47 4: S0_all - 9
Woran kann das denn jetzt liegen? Ich finde eigendlich keinen direkten Fehler.
Gruß
Norbert