Hallo Leute,
normalerweise finde ich schlussendlich immer Dank der reichhaltigen Internet posts eine Lösung, aber diesmal stehe ich auf dem Schlauch.
Wie alles begann.... (verzeiht mir, wenn ich was falsch bezeichne)
Mittels webhooks sende ich Informationen an
Synology Chat (Messenger, der die gleiche Technik wie Slack nutzt).
Das geht soweit gut.
Per HTTPMOD sende ich Info an den zugehörigen webhook, z.B.:
https://<URL>:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token="<TOKEN>"&payload={"text": "$val"}
Per {"text": "$val"} wird ein String übergeben, der dann im Chat erscheint (z.B. Waschmaschine fertig).
Das geht in diesem Falle mit der DEF eines DOIF so:
([Washer_SenPwr]<5.0)
(set SynoChat Waschmaschine :alarm_clock: Wäsche fertig :zzz:)
(set Waesche_fertig 1)
DOELSEIF ([Washer_SenPwr]>0.3)
(set SynoChat Waschmaschine :stopwatch: Waschmaschine gestartet :sweat_drops:)
(set Waesche_fertig 0)
(die Strings mit den Doppelpunkten sind Icon-Codes)
Jetzt möchte ich aber bei einem Thermometer mit 6 Kanälen der z. B. den Kanal mit in den übergebenen String einbauen:
([WLANthermo:channel_1_alarm] eq 1 and [WLANthermo:channel_1_temp] > [WLANthermo:channel_1_max])
(set SynoChat WLANThermo :warning: <HIER KANALINFO>Temp. zu hoch :hotsprings:)
Nebenbei kriege ich den strict subs Fehler, aber ich denke, das ist eine andere Baustelle.
Und hier beginnt das Problem:
Ich kriege die Info da nicht rein. Nicht mit fhem code und Variablen die ich vorher befülle und einfüge, oder sonstwie.
Es wird immer gnadenlos der "Text" übermittelt (also $channel als Text statt des Wertes z.B.)
Ich bin mir sicher, es fehlt ein Profi-Tip!
Teile des Reading des Device WLANthermo:
...
channel_1_alarm | 1 | 2019-08-26 14:39:57 |
channel_1_color | #0C4C88 | 2019-08-26 14:39:57 |
channel_1_max | 200.00 | 2019-08-26 14:39:57
|
channel_1_min | 10.00 | 2019-08-26 14:39:57 |
channel_1_name | Grill | 2019-08-26 14:39:57 |
channel_1_number | 1 | 2019-08-26 14:39:57 |
channel_1_temp | 28.90 | 2019-08-26 14:39:57 |
channel_1_typ | 0 | 2019-08-26 14:39:57 |
...
Die Daten kommen per MQTT.
"channel_1_name" möchte ich gern in den String einbauen.
Entscheidende Tipps werden mit unendlicher Dankbarkeit geahndet :-)
Viele Grüße
Christian
Hallo Christian,
ich bin nicht sicher was Du wirklich machen willst,, aber ich mach ein Beispiel:
Ich habe einen Dummy ee und einen Dummy wert. Im Reading state vom Dummy wert steht eine Zahl (29).
set ee Wert von Dummy w1 [w1:state] in voller Höhe
Nach diesem Befehl steht im state des dummy ee der Satz
ZitatWert von Dummy w1 29 in voller Höhe
Der Ausdruck [w1:state] wird also von FHEM durch den state von Device w1 ersetzt.
Das Ganze nennt sich set magic und ist unter der Beschreibung in der Doku beim set Befehl zu finden.
Gruß Otto