Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele

Begonnen von laserrichi, 23 Juni 2023, 23:37:33

Vorheriges Thema - Nächstes Thema

laserrichi

$hms ist eine perl variable, wie man die im setlist einbauen muss weis ich leider nicht.
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

TomLee

Hallo,

"hinten" muss man dazu auf die Perlebene wechseln:

    
notify:noArg {qq(MQTT_UlanziWohnzimmerRene/notify {"text":"$hms", "duration":10})}
Gruß Thomas

rob

Hallo.

Zitat von: ReneR1986 am 29 Oktober 2024, 09:11:48...
Ich versuche per MQTT2_DEVICE etwas zu publishen. Allerdings ist mir noch nicht ganz klar, wie ich in der SetList auf Readings zugreifen kann also z.B.
[Device:Reading]oder
{ReadingsVal(......

Für bspw. manuelle Eingaben genau nach diesem Schema. Nehmen wir an, Du hast Deiner setList beispielsweise so einen Eintrag spendiert:
text $DEVICETOPIC/notify {"$EVTPART0":"$EVTPART1"}
Dann kannst Du ins Eingabefeld zum set eingeben:
set MyAwtrix text [YourDevice:YourReading]FHEM löst [YourDevice:YourReading] für uns auf, sodass wir das Ergebnis in $EVTPART1 verwenden können.

Soll es direkt in der setList verwendet werden, muss es, wie Thomas schon schreibt, via Perl erledigt werden:
showReading:noArg {"$DEVICETOPIC/notify ".'{"text":"'.ReadingsVal('YourDevice','YourReading','').'", "duration":10}' }Ähnliches Beispiel, nur etwas anders umgesetzt (Verkettung d. Strings).

Vielleicht hilft das auch ein wenig weiter.

Viele Grüße
rob

PS: Es wird empfohlen das Attribut "devicetopic" in den setList/ getList/ readingList d. MQTT2_DEVICE's zu verwenden. In Deinem Fall sollte m.E. aber "MQTT_UlanziWohnzimmerRene" drin stehen, statt auf "MQTT_UlanziWohnzimmerRene/stats" fixiert zu sein. Die readingList dann entspr. um "/stats" ergänzen.

TomLee

#18
ZitatÄhnliches Beispiel, nur etwas anders umgesetzt (Verkettung d. Strings).

Gerade um das Verketten zu vermeiden bietet  sich die von mir vorgeschlagene qq() Variante an.
Dazu muss man halt die Werte zuvor in Variablen schreiben, find ich aber übersichtlicher, vor allem wenn es mal mehr Variablen geben sollte die übergeben werden müssen.

showReading:noArg {my $v=ReadingsVal('YourDevice','YourReading',''); return qq($DEVICETOPIC/notify {"text":"$v", "duration":10}) }
Hab ich für mich bisher so mitgenommen, kann aber ja jeder machen wie er mag.



ReneR1986


rob

Hallo Thomas.

Zitat von: TomLee am 03 November 2024, 15:04:58...
Hab ich für mich bisher so mitgenommen, kann aber ja jeder machen wie er mag.
...

Ja korrekt, so hab ich es auch verstanden: qq() ist best practise.
Sollte von mir auch keine Besserwisserei sein. Ich wollte nur illustrieren, dass es um den String geht, der übergeben wird. Als "inline-Sub" hast Du ja sogar ein Beispiel eingefügt und für noch komplexere Dinge könnte man eine Sub in MyUtils definieren, die dann auch den richtigen String zurückgeben muss.
Ich wollte @ReneR1986 nicht gleich damit verschrecken ;)

VG
rob