Hi,
so ganz hab ich die Möglichkeiten in readings list noch nicht verstanden. Ich versuche gerade aus dem topic den Value für das reading Lastcommand zu extrahieren. Kann ich nicht beliebigen Perlcode schreiben und dann den Hash retournieren ? So zB.
fhemuser_bumper_GLB19396e86:iot/p2p/[^/]+/helper1/bumper/helper1/4532b934-c2b1-4277-9fa6-e4b4851c2688/02uwxm/Uq7d/q/[^/]+/x:.* {my @a = ""; @a = split($TOPIC,"/");print $a[2]; return {"LastCommand" => $a[2] }}
Wenn nicht, andere Ideen ?
Schönes We
Markus
Hmm, "an sich" sollte das klappen.
Vielleicht hilft Ausweichen auf regex? Zwar nicht mit $TOPIC, aber mit $EVENT getestet (aus dem Tasmota-IR-Template; im Tastmota-RF sind noch mehr Varianten...):
attr DEVICE readingList \
TELETOPIC/INFO.:.* { json2nameValue($EVENT) }\
TELETOPIC/RESULT:.* { $EVENT =~ m,..IrReceived....Protocol...([A-Za-z0-9]+)...Bits..([\d]+)..Data...([A-Za-z0-9]+)..., ? {"$1_$2"=>$3} : json2nameValue($EVENT) }
Hier würde ja der Auszug "iot/p2p/([^/]+)/helper1/bumper" vermutlich ausreichen.
Ansonsten mal $TOPIC nicht via print ausgeben, sondern in ein Reading schreiben? (Zeile einfach doppeln, Beispiele wie oben)
Danke Dir. Hat insofern geholfen, dass sich meine Verunsicherung gelöst hat und ich den Fehler bei mir gesucht habe Siehe da, split falsch definiert. ::) :-[
So geht es dann wie gewünscht
{my @a = ""; @a = split("/",$TOPIC);return {"LastCommand" => $a[2] }}
Grüße Markus
Danke für die Rückmeldung. Das sollte sich auch noch verkürzen lassen zu{my @a = split("/",$TOPIC);{"LastCommand" => $a[2] }}
Viel Erfolg weiterhin...