readings erstellen und mit s/// nachbearbeiten?

Begonnen von kpwg, 17 Februar 2014, 20:03:08

Vorheriges Thema - Nächstes Thema

kpwg

Hallo,

ich habe mich wieder mal an die Erstellung der Readings gewagt. Ich lese einen DHT22 vom NetIO aus. Dabei ist die Besonderheit, das Temperatur und Feuchte getrennt und mit Zeilenumbruch "eintreffen". In state ist also immer nur der zuletzt gelesene Wert und das Logfile enthält zwei Zeilen. Das lässt sich mit s/(.*)\n(.*)/T: $1 H: $2/; $_; in eine einzeilige sinnvolle Form bringen.

Nun möchte ich die Readings temperature und humidity erstellen, komme aber in der classdef nicht weiter. Die sieht aktuell folgendermaßen aus: get DHT cmd {"dht temp" . "\ndht humid"}
get DHT postproc {\
my $hash  = $defs{%NAME};\
readingsSingleUpdate($hash, "temperature", $1, 1);\
readingsSingleUpdate($hash, "humidity", $2, 1);\
s/(.*)\n(.*)/T: $1 H: $2/; $_;\
}


Hierbei werden keine readings erstellt. Nehme ich jedoch s/// gleich in die erste postproc-Zeile, kommen die readings, aber s/// verliert fehlermeldungsfrei seine Wirkung. Wo könnte der Fehler stecken?

Viele Grüße, Ricardo