Hauptmenü

userReadings tut nichts

Begonnen von Creideiki, 26 September 2014, 09:59:35

Vorheriges Thema - Nächstes Thema

Creideiki

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)?

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Creideiki

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.

fiedel

Hast du den das userreading oben bei "attr userattr..." mit eingetragen? Beliebter Fehler, passiert mir auch immer wieder.  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Creideiki

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.

Creideiki

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.