Hallo,
ich versuche, per userReadings eine Berechnung zu definieren. Die fhem.cfg lautet (natürlich auszugsweise):
define usv NUT mainups kaa
attr usv asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.realpower.nominal
attr usv event-on-change-reading state
attr usv event-on-update-reading ups.load,ups.realpower,battery.charge,battery.runtime,input.voltage
attr usv userReadings ups.realpower:ups.load {ReadingsVal("usv","ups.realpower.nominal",0)*ReadingsVal("usv","ups.load",0)/100}
define FileLog_usv FileLog ./log/usv-%Y.log usv
Da meine USV kein ups.realpower liefert, versuche ich, es selbst zu erzeugen. Da sich ups.realpower.nominal nicht ändert, triggere ich nur auf ups.load.
Das Problem: Das Reading wird nicht erzeugt. Alle anderen Werte werden regelmäßig abgefragt, und landen im FileLog. Das selbstgebaute Reading nicht.
Ich habe versucht, userReadings ohne den Trigger zu definieren. Keine Änderung.
Ich habe den Wert anders benannt; einmalig setzt er ihn, er wird aber nicht aktualisiert.
ups.realpower.nominal ist nicht in event-on-update-reading enthalten, da er sich eh nicht ändert; das dürfte ja aber keine Rolle spielen, da ups.load ja triggert.
Im fhem-logfile kommt trotz verbose 5 keine diesbezügliche Fehlermeldung.
- Oh, doch, möglicherweise:
2014.09.26 09:57:20.095 5: Triggering usv (4 changes)
2014.09.26 09:57:20.095 5: Notify loop for usv battery.charge: 100
Kann das was damit zu tun haben? Ich habe noch keinen Grund für diese Fehlermeldung gefunden.
Ich hab mir die commandref fünfmal durchgelesen, komme aber nicht dahinter, was da schiefgeht. Muß da im Modul was spezielles beachtet werden (außer dem üblichen readingsBeginUpdate/readingsBulkUpdate/readingsEndUpdate)?
Nicht alles, was im Logfile auftaucht, ist eine Fehlermeldung. Schon gar nicht in Loglevel 5.
Du schreibst, dass ups.load ja korrekt triggert - dann bleibt die Frage: hat sich der Wert denn gegenüber dem letzten Mal verändert?
ZitatIch habe den Wert anders benannt; einmalig setzt er ihn, er wird aber nicht aktualisiert.
Wenn sich der errechnete Wert nicht verändert, wird auch das Reading nicht neu geschrieben.
Zitat von: betateilchen am 26 September 2014, 10:06:23
Nicht alles, was im Logfile auftaucht, ist eine Fehlermeldung. Schon gar nicht in Loglevel 5.
Ja, ich weiß; aber da ich ja gerade ein Problem habe, dachte ich, ich erwähne es mal.
Zitat
Du schreibst, dass ups.load ja korrekt triggert - dann bleibt die Frage: hat sich der Wert denn gegenüber dem letzten Mal verändert?
Wenn sich der errechnete Wert nicht verändert, wird auch das Reading nicht neu geschrieben.
Ja, da sorge ich dafür, dass sich das ändert. Nutzt aber leider nix.
Vielleicht sollte ich noch erwähnen, dass ich ein frisches
update gemacht habe.
Hast du den das userreading oben bei "attr userattr..." mit eingetragen? Beliebter Fehler, passiert mir auch immer wieder. ;)
Zitat von: fiedel am 26 September 2014, 11:21:24
Hast du den das userreading oben bei "attr userattr..." mit eingetragen? Beliebter Fehler, passiert mir auch immer wieder. ;)
Hm... sorgt das nicht nur dafür, dass ich das Attr überhaupt setzen kann?
...scheint nichts zu ändern.
Es scheint, ich habe den Fehler gefunden. Ein Regexp in fhem.pl, das für die Definition von userReadings zuständig ist, mag keine Punkte im Namen des Readings. Das werde ich mal an anderer Stelle nachfragen.