FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andiblueml am 14 Oktober 2018, 22:32:23

Titel: [Gelöst] Mit ECMD viele Werte auf einmal abfragen
Beitrag von: andiblueml am 14 Oktober 2018, 22:32:23
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
Titel: Antw:Mit ECMD viele Werte auf einmal abfragen
Beitrag von: andiblueml am 31 Oktober 2018, 21:50:56
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;\n

Beim 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