Hauptmenü

MQTT2_DEVICE textfield

Begonnen von kl_ha, 28 April 2024, 13:42:34

Vorheriges Thema - Nächstes Thema

kl_ha

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

#2
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee


kl_ha

Hallo

Danke Otto, es wird genauso formatiert wie ich es gebraucht wird, laut MQTT2_SERVER Filter.
Leider wird es nicht ausgeführt/übertragen.


Otto123

dann verweise ich mal auf #1 :)
poste bitte ein komplettes list von dem mqtt2_device
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kl_ha

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 &nbsp:&nbsp:&nbsp:&nbsp:&nbsp\
:&nbsp:&nbsp:&nbsp:&nbsp:&nbsp

Otto123

#7
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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

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})}

kl_ha

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.

TomLee

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 ?

kl_ha

Ja, funktioniert wunderbar.
Habe mir ein günstiges Gerät(Ulanzi TC001 Smart Pixel Uhr) gekauft und teste mal das ganze aus.

TomLee

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 stehts, ich sehe bloss keinen Unterschied zw. mit und ohne label. Bei mir, wie auch auf der Testinstallation.

Otto123

Danke für die Info. Impliziert für mich: es wird ein NewLine angehangen. Aber das braucht man doch in dem Fall hier nicht?!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#14
Nee, nix NewLine (zumindest versteh ich es so), schau das Bild darüber, sollte nicht vor dem Textfeld mit ohne NL der settername stehen ?