Liebe Forenmitglieder,
ich möchte mit ECMD Werte eines Arduino abfragen. Ich wollte sie n der Form "21;22;35;11;" schicken.
Diese sollen bem Device in verschiedene Readings eingetelt werden (analog zu FHT desired-temp actual-temp etc).
Ich hab mit ECMD keine Erfahrung und hab mal die Beispiele durch, aber die haben immer nur einen Wert.
Gibts da eine Möglichkeit?
Ich habs mit postproc { my @daten = split /;/; $tAussen = $daten
- ; ..... versucht. Kennt die Variablen nicht.
Wie kann ich die definieren?
Vielen Dank
Hallo Forumleser,
ich hab es nach einigen probieren zum laufen gebracht.
Der Arduino sendet in festen Abständen die Werte mit "
;" getrennt, gefolgt von einem "
\n". Besser kein
println verwenden, das verwirrt das System. Das letzte "
;" machts für mich einfacher.
10;20;30;40;\nBeim setzen von Werten erwartet er "
Set %wert% wert\n", dann kann ich es einfach in ein Array schreiben.
Bei Erfolg kommt der neue Wert mit "
\n" zurück, bei Fehler der alte Wert mit "
\n". Bei falschem %wert% (zu groß, zu klein) kommt "
Fail\n".
reading werte match "[-]?\d+;[-]?\d+;[-]?\d+;[-]?\d+;\n"
reading werte postproc {\
my $hash = $defs{%NAME};\
my @daten = split /;/; \
readingsBeginUpdate($hash);\
readingsBulkUpdate ($hash, "Wert1", $daten - , 1);\
readingsBulkUpdate($hash, "Wert2", $daten [1], 1);\
readingsBulkUpdate($hash, "Wert3", $daten[2], 1);\
readingsBulkUpdate($hash, "Wert4", $daten[3], 1);\
readingsEndUpdate($hash, 1);\
}
set Wert1 params wert
set Wert1 cmd {"Set 0 %wert%\n"}
set Wert1 expect "\w{2,4}\n"[/tt]
Ich hoffe, damit einigen geholfen zu haben.
Geht es eleganter oder einfacher, bin ich über Informationen sehr froh.
Grüße