FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: heikoh81 am 28 Dezember 2014, 17:34:40

Titel: PERL-Hilfe für SPLIT-Befehl benötigt (funktioniert nicht richtig)
Beitrag von: heikoh81 am 28 Dezember 2014, 17:34:40
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
Titel: Antw:PERL-Hilfe für SPLIT-Befehl benötigt (funktioniert nicht richtig)
Beitrag von: heikoh81 am 28 Dezember 2014, 17:50:41
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?