Hallo zusammen,
aus einem Modul (ebusd) wird ein String der folgenden Form übergeben:
2.728;ok
Dies soll getrennt werden in die Zahl vor dem ; (=Druck) und dem Systemstatus.
Diese sollen als einzelne Readings erscheinen.
Folgender Code
# Systemdruck
get Systemdruck cmd {"read THER Pressure\n"}
get Systemdruck expect ".*"
get Systemdruck postproc { my ($SYSTEMDRUCK,$STATUS,$zval);\
my $hash = $defs{"%NAME"};\
if( ($_ eq "")||($_ eq "no data stored") ){\
$SYSTEMDRUCK = "Keine Werte vorhanden";\
$STATUS = "Keine Werte vorhanden";\
}else{\
my @values=split(';',$_);\
$SYSTEMDRUCK = sprintf("%5.2f Bar",$values[0]);\
$STATUS = $values[1];\
$zval = sprintf("Systemdruck %5.2f Bar, Systemdruck Status %s", $values[0], $values[1]);\
}\
readingsSingleUpdate($hash, "Systemdruck", $SYSTEMDRUCK, 1);\
readingsSingleUpdate($hash, "Systemdruck Status", $STATUS, 1);\
$zval; }
liefert leider nur folgende Readings:
Readings
Systemdruck Systemdruck 2.25 Bar, Systemdruck Status ok 2014-12-28 17:34:23
state Systemdruck Systemdruck 2.25 Bar, Systemdruck Status ok 2014-12-28 17:34:23
Wie ersichtlich erscheint nur 1 Reading, nicht 2. Die Aufteilung scheint aber geklappt zu haben.
Was mache ich falsch?
Viele Grüße,
Heiko
Ich glaube, der Fehler war, dass sowohl die Funktion "get Systemdruck" hiess als auch readingsSingleUpdate($hash, "Systemdruck", $SYSTEMDRUCK, 1);\
Nachdem ich letztes geändert hatte in readingsSingleUpdate($hash, "Systemdruck2", $SYSTEMDRUCK, 1);\ hat es funktioniert.
Kann das sein?