Hallo
Versuche mich schon seit längerem am textfield um Text per Json zu übertragen.
text:textFieldNL awtrix_053574/notify {"$EVTPART0":"$EVENT","rainbow": true, "duration": 20}
Bei dieser Konstellation($EVENT) überträgt zb "Hallo Welt" dann "text Hallo Welt".
Bei der Möglichkeit.
text:textFieldNL awtrix_053574/notify {"$EVTPART0":"$EVTPART1","rainbow": true, "duration": 20}
dann nur das "Hallo".
Gibt es eine Möglichkeit den ganzen Text zu übertragen ohne das vorhergehende "text"?
Grüße
Klaus
Formuliere doch bitte die Aufgabenstellung so um, dass man versteht, was Du eigentlich tun möchtest.
Und poste vielleicht mal ein komplettes list Deines mqtt2-device und nicht nur irgendwelche verkrüppelten Teile davon.
Hallo Klaus,
Du musst den EVENT selbst splitten und nicht $EVTPART benutzen.
So in der Art (Für die FHEM Komamndozeile zum Test) macht aus dem String mit 4 worten zwei Strings - mit "einem Wort" und "drei Worten" und gibt den letzten aus.
{my $EVENT='text eins zwei drei';; return (split(' ', $EVENT,2))[1]}
Oder für dein Beispiel
{my $EVENT='text eins zwei drei';; my ($eins,$rest)=split(' ', $EVENT,2) ;; qq(awtrix_053574/notify {"$eins":"$rest","rainbow": true, "duration": 20} ) }
Und so in deinem MQTT Device
text:textFieldNL { my ($eins,$rest)=split(' ', $EVENT,2) ;; qq(awtrix_053574/notify {"$eins":"$rest","rainbow": true, "duration": 20} ) }
Gruß Otto
Hallo,
ein Beispiel ist im wled_controller-Template zu finden:
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template#L5469
Gruß
Thomas
Hallo
Danke Otto, es wird genauso formatiert wie ich es gebraucht wird, laut MQTT2_SERVER Filter.
Leider wird es nicht ausgeführt/übertragen.
dann verweise ich mal auf #1 :)
poste bitte ein komplettes list von dem mqtt2_device
define MQTT2_awtrix MQTT2_DEVICE awtrix
setuuid MQTT2_awtrix 662b961d-f33f-5384-53c1-08202b78e057b685
attr MQTT2_awtrix IODev MQTT2_FHEM_SERVER
attr MQTT2_awtrix cmdIcon on:Restart off:Shutdown toggle:Toggle1 Back:rc_LEFT Pause:rc_PAUSE Next:rc_RIGHT Hold:rc_STOP
attr MQTT2_awtrix devStateIcon {my $onl = ReadingsVal($name,"state","off") eq "off" ? "rot" : "gruen";;;; my $light = ReadingsVal($name,"matrix","false") eq "false" ? "off":"on";;;; my $show = '<a href="';;;; $show .= "http://"."raspberry-4:7000 ".' "target="_blank">';;;; $show .= FW_makeImage("10px-kreis-".$onl)."</a>";;;; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a>" }
attr MQTT2_awtrix group awtrix
attr MQTT2_awtrix readingList awtrix_053574/stats:.* { json2nameValue($EVENT, '',$JSONMAP) }\
awtrix_053574/stats/effects:.* { json2nameValue($EVENT, '',$JSONMAP) }\
awtrix_053574/stats/transitions:.* { json2nameValue($EVENT, '',$JSONMAP) }
attr MQTT2_awtrix room Devices->MQTT2_DEVICE,Geräte
attr MQTT2_awtrix setList on:noArg awtrix_053574/power {"power": true}\
off:noArg awtrix_053574/power {"power": false}\
Play_RTTTL:noArg awtrix_053574/sound {"sound": "simpson"}\
text:textFieldNL { my ($txt,$txtfd)=split(' ', $EVENT,2) ;;;; qq(awtrix_053574/notify {"$txt":"$txtfd","rainbow": true, "duration": 20} ) }\
Next:noArg awtrix_053574/nextapp\
Back:noArg awtrix_053574/previousapp\
attr MQTT2_awtrix userReadings battery {(ReadingsVal($name,"bat", 0) < 30)?"low":"ok"}
attr MQTT2_awtrix verbose 3
attr MQTT2_awtrix webCmdLabel  : : : : \
: : : : : 
was mich irgendwie stört ist textFieldNL ist das wirklich richtig? ich kenne nur textField
Was optisch stört aber wahrscheinlich keine Bedeutung hat: ;;;; ist doppelt gemoppelt - zwei ;; reichen. bzw eins im DEF Editor. (kommt bei Dir mehrfach vor)
Wenn Du den Json String exakt so über den Server sendest funktioniert es?
Ich denke es ist der falsche Topic-Pfad, es muss der mit custom sein.
So in der Art:
text {$EVENT =~ s/^$EVTPART0.//;return qq(awtrix_053574/custom/test {"$EVTPART0":"$EVENT","rainbow": true, "duration": 20})}
Hallo Tester
Deine Formatierung funktioniert. Der Topic awtrix_053574/notify ist richtig.
Nur zum Verständnis:
Deine Formatierung entfernt $EVTPART0 aus $EVENT.
Ist das so richtig?
Danke auch an Otto
Es sind wahrscheinlich vier Semikolon eingetragen worden, weil ich das ganze über attr setlist editiert habe und nicht direkt über die fhem.cfg.
ZitatNur zum Verständnis:
Deine Formatierung entfernt $EVTPART0 aus $EVENT.
Ist das so richtig?
Ja, alleine wäre ich da aber vermutlich auch nicht drauf gekommen. Die Frage wie man das angeht kam schon einmal, da hatte ich es auch mal so in etwa wie Otto angegangen. Beta-User gab damals mal den Tipp es so zu lösen.
Hatte meine Variante und die von Otto, mit deiner Definition getestet:
text:textFieldNL { my ($txt,$txtfd)=split(' ', $EVENT,2) ;;;; qq(awtrix_053574/notify {"$txt":"$txtfd","rainbow": true, "duration": 20} ) }
Beide gingen bei mir korrekt raus (auch deine mit vier Semikolon) darum dachte ich, es muss dann (nach kurzem überfliegen der Doku) der custom-Zweig sein. Testen kann ich nicht hab kein Awtrix-Device.
Geht es jetzt oder nicht ?
Ja, funktioniert wunderbar.
Habe mir ein günstiges Gerät(Ulanzi TC001 Smart Pixel Uhr) gekauft und teste mal das ganze aus.
Zitat von: Otto123 am 29 April 2024, 14:47:37was mich irgendwie stört ist textFieldNL ist das wirklich richtig? ich kenne nur textField
Hier (https://wiki.fhem.de/wiki/FHEMWEB/Widgets#Das_Beispiel_f%C3%BCr_Raw_definition_zum_Ausprobieren) stehts, ich sehe bloss keinen Unterschied zw. mit und ohne label. Bei mir, wie auch auf der Testinstallation (https://demo-fhem.cooltux.net/fhem?detail=d&fw_id=).
Danke für die Info. Impliziert für mich: es wird ein NewLine angehangen. Aber das braucht man doch in dem Fall hier nicht?!
Nee, nix NewLine (zumindest versteh ich es so), schau das Bild darüber, sollte nicht vor dem Textfeld mit ohne NL der settername stehen ?
ok No Label ;D ;D ;D
Aber wenn ich das teste ergibt das bei mir keinen Unterschied. So wie im Wiki Bild sieht es bei mir, im MQTT2 Device, nicht aus.
NL hat wohl nur Auswirkung iVm. webCmd ::)
https://demo-fhem.cooltux.net/fhem?detail=d&fw_id=&fw_id=1714421618.11742