[Gelöst] Mit ECMD viele Werte auf einmal abfragen

Begonnen von andiblueml, 14 Oktober 2018, 22:32:23

Vorheriges Thema - Nächstes Thema

andiblueml

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

andiblueml

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