WBS Sensor - Daten zerlegen

Begonnen von peko3006, 04 Dezember 2015, 10:56:45

Vorheriges Thema - Nächstes Thema

stromer-12

#15
Bei mir funktioniert mit einen Dummy das userReadings. Es wird watt mit entsprechenden Wert angelegt.
Im STATE steht natürlich der Wert aus dem reading state.

aus der fhem.cfg:
attr myTest userReadings watt { my $val = ReadingsVal($name,"state",0);; $val =~ s/.*watt;;(\d+).*/$1/;; return $val;;}
aus dem Attribut im Webinterface:
watt { my $val = ReadingsVal($name,"state",0); $val =~ s/.*watt;(\d+).*/$1/; return $val;}
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

peko3006

Bei mir will das ganze leider nicht. Das UserReading wird einfach nicht zerlegt.
Im Log ist dazu auch nichts zu finden.

Kann es an der 18_WBS.pm Datei liegen. Die habe ich leicht angepasst um mehr als 8 Zeichne übertragen zu können.
Aber die Daten stehe ja eigentlich auch sauber im UserReading, werden nur nicht zerlegt und sperat gespeichert.

Hat noch jemand eine Idee?

dev0

Teste es doch mal selbst mit einem dummy Device. Du bist noch ein list vom Device WattmeterBernd schuldig. Oder habe ich das übersehen?

peko3006

Was meinst du mit List. Also ich habe folgendes Device in der fhem.cfg angelegt:
define myTest WBS gas 12
attr myTest userReadings watt { my $val = ReadingsVal($name,"gas",0);; $val =~ s/.*watt;;(\d+).*/$1/;; return $val;;}


Dann benutze ich folgenden Aufruf um die Werte zu übertragen:
http://<IP FHEM>:8083/fhem/rawmsg?WBS:12:watt;4433|kwh;0.03|zstand;1000.32

Wenn ich nun {ReadingsVal("myTest","gas",0)} in FHEM eingebe erhalte ich

watt;4433|kwh;0.03|zstand;1000.32

Was ja so auch richtig ist.
Und wenn ich nun in FHEM auf den Sensor gehe sehe ich das. (siehe Screenshot)
Das UserReading wird also augenscheinlich nicht behandelt. Im Log ist auch nichts zu finden.

Ich denke ich habe alles richtig gemacht oder?




frank

du hast userreadings auch noch nicht verstanden.
es verändert nicht dein gas reading, sondern es sollte ein neues reading watt erzeugen, mit entsprechendem inhalt.
du kennst commandref?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

dev0


peko3006

Bevor ich das List Poste muss ich erstmal aufräumen  ;)

Dort steht aber nichts drin was zielführend wäre denke ich. Der Sensor an sich läft ja.

@Frank - na ich denke schon das ich das verstanden habe.

Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).

Das Gerätereading heisst also "gas" bei mir. Wird dieses aktualisiert kann ich mit Hilfe von userReadings einen Wert extrahieren oder manipulieren.
Und genau das klappt eben nicht bei mir.



dev0

Zitat von: peko3006 am 09 Dezember 2015, 08:29:22
Bevor ich das List Poste muss ich erstmal aufräumen  ;)
Dort steht aber nichts drin was zielführend wäre denke ich. Der Sensor an sich läft ja.
Da hast Du bestimmt recht. Entschuldige bitte, dass ich nach so sinnlosen Details gefragt habe.

peko3006


dev0

Ein list vom device war gefragt: list [devspec]
list WattmeterBernd

peko3006

Ok das macht natürlich mehr Sinn. Der Node heißt jetzt myTest.

Hier das List:

Internals:
   CGI_RAWMSG_MSGCNT 1
   CGI_RAWMSG_RAWMSG WBS:12:watt;1200|kwh;0.03|zstand;1000.32
   CGI_RAWMSG_TIME 2015-12-09 10:47:33
   CODE       12
   DEF        gas 12
   LASTInputDev CGI_RAWMSG
   MSGCNT     1
   NAME       myTest
   NR         346
   STATE      G: watt;1200|kwh;0.03|zstand;1000.32 | 2015-12-09 10:47:33
   TYPE       WBS
   WBS_TYPE   gas
   CHANGETIME:
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1449654453.76318
           VALUE      gas:watt;1200|kwh;0.03|zstand;1000.32
   Readings:
     2015-12-09 10:47:33   gas             watt;1200|kwh;0.03|zstand;1000.32
Attributes:
   userReadings watt { my $val = ReadingsVal($name,"gas",0); $val =~ s/.*watt;(\d+).*/$1/; return $val;}

dev0

Was ist WBS für ein Device? Weder in der command ref noch unter ./FHEM finde ich das Modul.
Hast Du das userReadings Attribut in die fhem.cfg geschrieben oder über die GUI angelegt?

peko3006

Das Modul habe ich von hier https://github.com/mhop/fhem-mirror/blob/master/fhem/contrib/WBS/18_WBS.pm

Das Attribut habe ich direkt in der fhem.cfg angelegt.

dev0

Zitat von: peko3006 am 09 Dezember 2015, 11:28:58
Das Attribut habe ich direkt in der fhem.cfg angelegt.
Und danach auch jeweils ein rereadcfg oder shutdown restart ausgeführt?

peko3006

Ich mache nach Änderungen immer
sudo service fhem stop|start

Einzigstes was ich im PM File geändert habe, ist die Beschränkung auf 8 Zeichen heraus genommen habe,
da dort im Original nur scheinbar nur ein Sensorwert transportiert werden sollte.

Da aber im userReading alles ankommt sollte das unerheblich sein oder?