FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: laserrichi am 23 Juni 2023, 23:37:33

Titel: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 23 Juni 2023, 23:37:33
Ich möchte hier einmal aufzeigen wie man das Display in Fhem einbinden kann.

Zuerst lädt man sich awtrix light auf die Ulanzi TC001
https://blueforcer.github.io/awtrix-light/#/

Man kann sich entscheiden über welche arten das Display mit Meldungen gefüttert wird.

1. Variante ist mittels http api Aufrufe:

hier kann man sich ein shell script basteln das wir dann über Fhem aufrufen und mit Daten füttern:

Das Shell Script:

#!/bin/sh
curl -s -X POST --data '{"text":"'$1:$2'","color":[0,255,255],"icon":"35"}' -H 'Content-Type: application/json' 'http://<IP-ADRESSE>/api/notify' &> /dev/null

Der Notify bei dem z.b. Anrufe aus dem Fritzcall modul mir den namen des Anrufers in $a setzt und die Rufnummer in $b was wir dann an das Shell script beim Aufruf mit anhängen:
defmod notify_Display_Anruf notify FritzAnrufe:event:.ring {my $a = ReadingsVal($NAME,"external_name","");; my $b = ReadingsVal($NAME,"external_number","");; system("sh /opt/fhem/FHEM/scripte/notifyanruf.sh $a $b > /dev/null")}
2. Variante ist mit MQTT füttern:


dazu legen wir das als MQTT Device in Fhem an:

defmod Display_Wohnzimmer MQTT2_DEVICE awtrix_TC001  #anmerkung, der mqtt Name muss auch in awtrix eingetragen werden
attr Display_Wohnzimmer cmdIcon false:on true:off
attr Display_Wohnzimmer icon display_dot
attr Display_Wohnzimmer setList on:noArg awtrix_TC001/power {"power": true}\
off:noArg awtrix_TC001/power {"power": false}\
brightness:colorpicker,BRI,0,1,255 awtrix_TC001/moodlight {"$EVTPART0":"$EVTPART1"}\
kelvin:colorpicker,CT,2500,1,6000 awtrix_TC001/moodlight {"$EVTPART0":"$EVTPART1"}\
color:colorpicker,RGB awtrix_TC001/moodlight {"$EVTPART0":"$EVTPART1"}\
text awtrix_TC001/notify {"$EVTPART0":"$EVTPART1"}\
progress awtrix_TC001/notify {"$EVTPART0":"$EVTPART1"}\
notify awtrix_TC001/notify\
custom awtrix_TC001/custom\
notifytext1 awtrix_TC001/notify {"icon": "$EVTPART2","text": [{"t": "$EVTPART5","c":"$EVTPART3"},{"t": "$EVTPART6","c": "$EVTPART4"}]}\
Battdisplay1 awtrix_TC001/custom/$EVTPART1 {"icon": "$EVTPART2","progress": "$EVTPART5","text": [{"t": "$EVTPART6","c":"$EVTPART3"},{"t": "$EVTPART7","c": "$EVTPART4"}]}\
apptext1 awtrix_TC001/custom/$EVTPART1 {"icon": "$EVTPART2","text": [{"t": "$EVTPART5","c":"$EVTPART3"},{"t": "$EVTPART6 ","c": "$EVTPART4"}]}\
apptext2 awtrix_TC001/custom/$EVTPART1 {"icon": "$EVTPART2","text": [{"t": "$EVTPART5","c":"$EVTPART3"},{"t": "$EVTPART6 ","c": "$EVTPART4"},{"t": "$EVTPART7","c": "$EVTPART3"},{"t": "$EVTPART8","c": "$EVTPART4"}]}\
apptext3 awtrix_TC001/custom/$EVTPART1 {"icon": "$EVTPART2","text": [{"t": "$EVTPART5","c":"$EVTPART3"},{"t": "$EVTPART6 ","c": "$EVTPART4"},{"t": "$EVTPART7","c": "$EVTPART3"},{"t": "$EVTPART8 ","c": "$EVTPART4"},{"t": "$EVTPART9","c": "$EVTPART3"},{"t": "$EVTPART8","c": "$EVTPART4"}]}
attr Display_Wohnzimmer stateFormat Batterie: bat

kelvin und color ist wenn man das Display einfach als licht verwenden will, wie man das wieder ausschaltet hab ich noch nicht rausgefunden außer durch reboot :-)

hier habe ich ein paar vordefinitionen gemacht. Mann kann hier notify senden, das wird dann sofort auf dem Display angezeigt, oder man kann das als app senden (im prinzip eine zusätzliche seite die nach der eingestellten zeit wechselt)
Ich schicke aus den notifys oder doifs an das mqtt device die entsprechenden aufrufe und Daten.

Um es flexibel zu halten und nicht alles im jeweiligen Notify komplett einzubauen rufe ich das ganze so auf:
defmod notify_Display_Aussenfeuchte notify Wetterstation:humidity.* \
{my $farbsteuerung = sprintf('%.0f', $EVTPART1);;;;\
my $farbetext = $farbsteuerung >= 80 ? '0000FF' :\
                $farbsteuerung >= 65 ? '0099FF' :\
                $farbsteuerung >= 50 ? '00FF77' :\
                $farbsteuerung >= 40 ? '22FF00' :\
                $farbsteuerung >= 30 ? '99FF00' :\
                $farbsteuerung >= 20 ? 'FFFF00' :\
                                   'FF0000';;;;\
\
{fhem("set Display_Wohnzimmer apptext1 feuchte 39042 $farbetext FFFFFF $EVTPART1 %")}}
attr notify_Display_Aussenfeuchte room Notify_DOIF

im Prinzip wird hier Display_Wohnzimmer apptext1 ein set gemacht, es legt mir eine app feuchte an mit dem Icon 39042 das ich auf der Uhr runtergeladen habe. Im apptext1 habe ich vorgesehen das ich den wert mit seiner eigenen Farbe setze, und dann noch die Einheit mit ebenfalls eigenen Farbwert.

Anderes Beispiel bei dem ich für meine Solarbatterie auch den Ladezustand mit einem Balken versehe und die momentan entnommene Leistung wird mir als Text angezeigt:

defmod notify_Display_PVBatterie notify RCTModbus:batteryPercent.* \
{my $a = ReadingsVal($NAME,"Battery_Power","") >= 1000 ? sprintf("%.1f",ReadingsVal($NAME,"Battery_Power","")/1000):\
ReadingsVal($NAME,"Battery_Power","") <= -1000 ? sprintf("%.1f",ReadingsVal($NAME,"Battery_Power","")/1000):\
               ReadingsVal($NAME,"Battery_Power","");;;;\
\
my $balken = sprintf("%.0f",$EVTPART1);;;;\
my $einheit = ReadingsVal($NAME,"Battery_Power","") >= 1000 ? 'kW' :\
              ReadingsVal($NAME,"Battery_Power","") <= -1000 ? 'kW' :\
                                   'W';;;;  \
\
my $icondisplay = $EVTPART1 >= 80 ? '2741' :\
                  $EVTPART1 >= 60 ? '2740' :\
                  $EVTPART1 >= 40 ? '2739' :\
                  $EVTPART1 >= 20 ? '2738' :\
                                   '2737';;;;\
fhem("set Display_Wohnzimmer Battdisplay1 PVbatterie $icondisplay 00FF00 FFFFFF $balken $a $einheit")}
attr notify_Display_PVBatterie room Notify_DOIF

3. Variante das man im Notify bereits den MQTT Code einbaut. Hierbei funktioniert das ganze auch mit Leerzeichen die sonst beim Variablen übergeben nicht funktioniert:

Hier lasse ich mir anzeigen welche Fenster offen sind, bzw. länger offen sind was ich aus dem Monitoring raushole, da hier die Texte sehr lang sind, scrollt das ganze durch:

defmod notify_Display_OffeneFenster notify Fenster_monitoring:.* {my $a = ReadingsVal("Fenster_monitoring","error","");;;; \
my $b = ReadingsVal("Fenster_monitoring","warning","");;;;\
fhem(qq(set MQTT publish awtrix_TC001/custom/Fenster {"icon": "23847","duration":"20","text": [{"t": "Lang Offen:","c":"FFFFFF"},{"t": "$a","c": "FFFF00"},{"t": " Kurz Offen:","c":"FFFFFF"},{"t": "$b","c": "FFFF00"}]}))}
attr notify_Display_OffeneFenster room Notify_DOIF
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: Jackie am 27 Januar 2024, 12:03:37
Hallo laserrichi,

ich habe seit zwei Tagen ebenfalls die TC001 mit AWTRIX Light Firmware, und dein Guide hat mir sehr weitergeholfen.

Ein Hinweis an alle, die wie ich bei Punkt 3 verzweifelt sind: In der Zeile

fhem(qq(set MQTT publish ...

bezieht sich "MQTT" auf den Server, also in meinem Falle:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
musste ich hier MQTT2_FHEM_Server eintragen. Ist klar wenn man Erfahrung hat, für mich als absoluten MQTT Neuling war das aber eine echte Hürde :-)

Aber den Rest konnte ich super an meine Bedürfnisse anpassen und das hat mir den Einstieg sehr erleichtert! Vor allem da AwTrix in der FHEM Community im Gegensatz zu manch anderer Heimautomatisierung bisher eher eine Nischenrolle fristet, was ich sehr schade finde...
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: Laffer72 am 04 Februar 2024, 16:36:22
Hallo laserrichi,

habe mir das ganze auch mal eingerichtet. Danke für Deine Anleitung.
Was mir aber beim besten Willen nicht gelingt ist im MQTT2-Device eine custom-App zu erzeugen mit Deiner setList-Vorgabe

custom awtrix_TC001/custom
Wie übergibst Du den Namen? Ich habe es wie folgt probiert, die Seite wird aber nicht erzeugt.
test  {"icon":"batman","text":"test"}

oder

/test  {"icon":"batman","text":"test"}

Wenn ich den Namen der App in der setList-Vorlage mit angebe und dann nur den JSON-Teil eingebe klappt es.
Ich vermute zwischen der Vorlage und der Eingabe wird immer noch ein Leerzeichen eingefügt. Hast Du dafür eine Lösung?

Danke Reinhard
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 12 Februar 2024, 19:28:38
wenn ich dich richtig verstehe willst du mit dem web befehl set custom  eine app anlegen ?

Geht bei mir so auch nicht...
Hab mir mal das ganze mit dem MQTT Explorer angesehen, du hast recht, es sieht für mich auch so aus als das hier immer ein Leerzeichen drin ist.


ich rufe die meisten sachen ja mit notifys auf

im Device Display_Wohnzimmer
defmod Display_Wohnzimmer MQTT2_DEVICE awtrix_TC001 habe ich unter setlist:
apptext1 awtrix_TC001/custom/$EVTPART1 {"icon": "$EVTPART2","text": [{"t": "$EVTPART5","c":"$EVTPART3"},{"t": "$EVTPART6 ","c": "$EVTPART4"}]}\
im notify rufe ich dann z.b.:
{fhem("set Display_Wohnzimmer apptext1 feuchte 39042 0000FF FFFFFF $EVTPART1 %")}
feuchte wird dann direkt als app so angelegt mit den werten befüllt:

awtrix_TC001/custom/feuchte {"icon": "39042","text": [{"t": "83","c":"0000FF",{"t": "%","c": "FFFFFF"}]}
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: marboj am 20 Februar 2024, 13:08:37
Hallo zusammen,

habe nun auch meine AWTRIX Light nach o.g. Beispiel in Betrieb genommen. Klappt auch gut.

Meine Custom Apps schicke ich per set-Befehl an die Uhr. Nutze hier auch die offene Fenster-Anzeige und die Produktion des Balkonkraftwerkes.

set m2s publish awtrix_2c2b60/custom/Solar {"icon": "solaranimated", "text":"aktuell [ShellySolar:aktuelleLeistung] heute [Solar:ErtragTag]"}
set m2s publish awtrix_2c2b60/custom/SolarGesamt {"icon": "solaranimated", "text":"Gesamt [Solar:GesamterErtrag]"}
set m2s publish awtrix_2c2b60/custom/offeneFenster {"icon": "window", "text":"[di_uiTable_windows:windows]"}

solaranimated.gif
window.gif



Die Aktualisierung der Anzeige an der UHR mache ich derzeit mit dem at-Befehl, der alle X Minuten die App erneut per Set an die Uhr sendet.

Geht die Aktualisierung auch anders?

Weiterhin nutze ich die Anzeige, um mit Hilfe des Abfallkalenders anzeigen zu lassen, welche Tonne als nächstes abgeholt wird.

set m2s publish awtrix_2c2b60/custom/Müll {"icon": "tonne_bio", "text":"als nächstes [myABFALL:next_text] [myABFALL:next_weekday] in [myABFALL:next_days] Tag(en)"}
tonne_bio.gif

Der Abfallkalender gibt ja den Namen aus, welche Tonne als nächstes abgeholt wird. Wie kann ich in dem set-Befehl steuern, dass je nach Abfallart ein anderes icon genutzt wird?

Habe die durch mich benutzten Icons mal angehängt, falls jemand Bedarf hat...

Gruß
Marco
solaranimated.gifwindow.giftonne_bio.gif   
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: TomLee am 20 Februar 2024, 17:21:25
Zitat von: marboj am 20 Februar 2024, 13:08:37Geht die Aktualisierung auch anders?

Hallo,

ja, wenn du noch kein MQTT2_DEVICE hast (hab den Thread nur überflogen, hab auch kein Ulanzi oder Awtrix-Device und mich nicht damit beschäftigt nachzuvollziehen warum  du die Befehle bisher direkt am MQTT2-Server ausführst), erstell Dir eines, ergänze deine set-Befehle in der setList und setze das Attribut periodicCmd für deine setter.

periodicCmd <cmd1>:<period1> <cmd2>:<period2>...
periodically execute the get or set command. The command will not take any arguments, create a new command without argument, if necessary. period is measured in minutes, and it must be an integer.


Gruß

Thomas
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 20 Februar 2024, 20:06:06
Zitat von: marboj am 20 Februar 2024, 13:08:37Der Abfallkalender gibt ja den Namen aus, welche Tonne als nächstes abgeholt wird. Wie kann ich in dem set-Befehl steuern, dass je nach Abfallart ein anderes icon genutzt wird?
[url="https://forum.fhem.de/index.php?action=dlattach;attach=176400;type=preview;file"]solaranimated.gif[/url][url="https://forum.fhem.de/index.php?action=dlattach;attach=176401;type=preview;file"]window.gif[/url][url="https://forum.fhem.de/index.php?action=dlattach;attach=176402;type=preview;file"]tonne_bio.gif[/url] 

wie wäre es wenn du die Icons auch auf dem awtrix Display entsprechend so benennst, und dein "icon": "tonne_bio"  durch "icon": "[myABFALL:next_text]" ersetzt ?
Darf natürlich dann keine Leerzeichen enthalten.
Ansonsten notifys entsprechend füttern wenn aus deinem Abfallkalender täglich ein trigger kommt.
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: marboj am 21 Februar 2024, 06:53:31
Hallo laserrichi,

vielen Dank für den Tipp. Manchmal ist es so einfach. Es funktioniert, wenn man als Icon-Name die Variable icon": "[myABFALL:next_text]" nimmt.

Du hast ja auch die Benachrichtigung für die offenen Fenster. Wie aktualisiert Du diese auf der Uhr?

Gruß
Marco
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 22 Februar 2024, 20:58:37
oben steht ja der notify dafür, der reagiert auf ein monitoring:

defmod Fenster_monitoring monitoring Fenster.*:(open|tilted) .*:closed
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: vbs am 03 März 2024, 16:56:25
Beschäftige mich auch gerade mit der TC001. Hat jemand ein Mapping von Wetter-Icons (Proplanta oder Openweathermaps) auf Icons für die TC001? Also zB die Icons von LaMetric?

Also so in der Art: "04d" -> "234235".

Das Beste ist bisher hier in dem Code zu finden:
https://forum.iobroker.net/post/1062994
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: wolfram am 26 Juli 2024, 15:24:52
Hallo zusammen,
ich habe mich jetzt hier durchgebissen und bin auch schon relativ weit. Allerdings habe ich ein Problem, wenn Leerzeichen in dem übertragenen Text enthalten sind. Dann wird der Text direkt beim ersten Leerzeichen abgeschnitten.
Ziel ist es auf der awtrix den aktuellen Interpreten, Tracknamen und Künstler anzuzeigen. Ich mache alles über MTQQ.
Als Vorlage für die awtrix habe ich den ersten Post von @laserrichi verwendet.

Mein notify sieht so aus. Es soll also bei jedem Songwechsel alles an die awtrix übertragen werden.

defmod n_music_awtrix notify Sonos_Schlafzimmer:currentTitle.* {\
 my $Album=ReadingsVal("Sonos_Schlafzimmer","currentAlbum","");;\
 my $Titel=ReadingsVal("Sonos_Schlafzimmer","currentTitle","");;\
 my $Artist=ReadingsVal("Sonos_Schlafzimmer","currentArtist","");;\
 fhem("set awtrix_TC001 apptext1 musicnow music F0A0FF variable '$Titel'")}
attr n_music_awtrix room Automat

Ich sehe also das Icon gefolgt vom Titel der allerdings immer mit einem ' beginnt. Heisst der Track nun also "das ist der Track" bekomme ich angezeigt "ICON 'das"

Auch habe ich aus dem ersten Post Punkt 3 das versucht an meine Bedürfnisse anzupassen, komme aber mit der Syntax einfach nicht klar:

fhem(qq(set MQTT publish awtrix_TC001/custom/Fenster {"icon": "music","duration":"20","text": [{"t": "Lang Offen:","c":"FFFFFF"},{"t": "$a","c": "FFFF00"},{"t": " Kurz Offen:","c":"FFFFFF"},{"t": "$b","c": "FFFF00"}]}))}
attr notify_Display_OffeneFenster room Notify_DOIF

Ich habe keine Ahnung wie ich das ändern kann und komme nicht weiter. Hat  jemand Erfahrung damit und kann mir einen Schubs in die richtige Richtung geben?

Vielen Dank und schönes Wochenende
wolf
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: wolfram am 26 Juli 2024, 15:50:03
ich löse selber auf, falls es jemand mal benötigt. Folgendes notify funktioniert:
Sonos_Schlafzimmer:currentTitle.* {
  my $Album = ReadingsVal("Sonos_Schlafzimmer", "currentAlbum", "");
  my $Titel = ReadingsVal("Sonos_Schlafzimmer", "currentTitle", "");
  my $Artist = ReadingsVal("Sonos_Schlafzimmer", "currentArtist", "");
 
  my $text = "Album: $Album, Titel: $Titel, Artist: $Artist";
  my $json = qq({"icon": "music", "text": "$text"});
 
  fhem("set mqttServer publish awtrix_TC001/custom/music $json");
}
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 26 Juli 2024, 16:00:26
das mit Leerzeichen hatte ich am anfang schon mal mit dem 3. Beispiel drin.

Das setzen mit mqtt direkt in einem rutsch ist ja die lösung. Hast es ja rausgefunden :-)
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: wolfram am 26 Juli 2024, 16:28:52
super, danke, dass Du so schnell reagiert hast :)

Jetzt habe ich nur das Problem, dass ich im Prinzip möchte, dass die Trackinfo für 20s angezeigt wird und dann zurück zur normalen Uhr wechselt. Ich bekomme es auch nicht hin, dass wenn die Uhrzeit angezeigt wird, die App zu meiner "music" wechselt, sondern ich muss die Tasten an der awtrix drücken um in die musicApp zu kommen. Wie habt ihr das gelöst?
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: ReneR1986 am 29 Oktober 2024, 09:11:48
Hallo zusammen,
ich glaube das ist eher eine Grundsatzfrage.
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(... klappen irgendwie nicht.
Auch der Versuch auf die FHEM Variable für die aktuelle Uhrzeit zuzugreifen haut nicht hin $hms
Internals:
   CID        UlanziWohnzimmerRene
   DEF        UlanziWohnzimmerRene
   FUUID      670276a3-f33f-db0c-0f19-98a7a3f7837789e5
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     16132
   NAME       MQTT_UlanziWohnzimmerRene
   NR         402
   STATE      notify
   TYPE       MQTT2_DEVICE
   eventCount 16158
   myBroker_CONN myBroker_192.168.1.40_52478
   myBroker_MSGCNT 16132
   myBroker_TIME 2024-10-29 09:04:01
   READINGS:
     2024-10-27 11:30:14   IODev           myBroker
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_app App_Temperatur_Briefkasten
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_bat 100
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_bat_raw 682
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_bri 5
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_hum 36
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_indicator1 false
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_indicator2 false
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_indicator3 false
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_ip_address 192.168.1.40
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_ldr_raw 305
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_lux 1
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_matrix true
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_messages 35
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_ram 123260
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_temp 25
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_type 0
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_uid awtrix_c21ae8
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_uptime 2700
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_version 0.96
     2024-10-29 09:04:01   MQTT_UlanziWohnzimmerRene_wifi_signal -67
     2024-10-29 09:00:47   state           notify
Attributes:
   IODev      myBroker
   autocreate 0
   devicetopic MQTT_UlanziWohnzimmerRene/stats
   group      Ulanzi
   icon       display_dot
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT, 'MQTT_UlanziWohnzimmerRene_', $JSONMAP) }
   room       Wohnzimmer
   setList    notify:noArg MQTT_UlanziWohnzimmerRene/notify {"text":"$hms", "duration":10}
on:noArg MQTT_UlanziWohnzimmerRene/power {"power": true}
off:noArg MQTT_UlanziWohnzimmerRene/power {"power": false}
brightness:colorpicker,BRI,0,1,255 MQTT_UlanziWohnzimmerRene/moodlight {"$EVTPART0":"$EVTPART1"}
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: laserrichi am 03 November 2024, 10:45:51
$hms ist eine perl variable, wie man die im setlist einbauen muss weis ich leider nicht.
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: TomLee am 03 November 2024, 11:51:41
Hallo,

"hinten" muss man dazu auf die Perlebene wechseln:

    
notify:noArg {qq(MQTT_UlanziWohnzimmerRene/notify {"text":"$hms", "duration":10})}
Gruß Thomas
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: rob am 03 November 2024, 14:18:49
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.
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: TomLee am 03 November 2024, 15:04:58
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.


Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: ReneR1986 am 03 November 2024, 15:45:00
Super, vielen Dank euch!
Ich probiere beides aus.  8)
Titel: Aw: Ulanzi Smart Pixel clock TC001 und Awtrix light in Fhem Beispiele
Beitrag von: rob am 07 November 2024, 11:48:23
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