Hallo Zusammen,
ich bin momentan dabei es mir leichter zu machen für meine SONOFFs und MCUs auf denen Tasmota läuft.
Ich will Upgrades und Restarts per Dummy ausfführen.
Altuell habe ich je Tasmota Gerät ein MQTT_Device und einen Dummy der Restart und Upgrade ausführen kann.
Also ich kann ein Upgrade ODER ein Neustart erzeugen, aber nur wenn ich das Topic anpasse, das will ich aber nicht.
Wie bekomme ich das mit 2 Topics hin?
Der Dummy:
Internals:
CHANGED
NAME Dummy.Tasmota.Upgrade
NR 113
STATE <br>
TYPE dummy
READINGS:
2018-06-16 11:57:11 state Restart
Attributes:
DbLogExclude .*
event-on-change-reading state
room 17 Tasmota
stateFormat <br>
userReadings state
{
if(ReadingsVal($NAME,'state',0) eq "Upgrade")
{
fhem("set Tasmota.ID.* 1");
fhem("set TeleBot msg Die Firmware aller Tasmota-Geräte wird jetzt Aktualisiert.");
}
elsif(ReadingsVal($NAME,'state',0) eq "Restart")
{
fhem("set Tasmota.ID.* 1");
fhem("set TeleBot msg Alle Tasmota-Geräte werden jetzt neugestartet.");
}
}
webCmd Upgrade:Restart
Das MQTT-Device:
Internals:
IODev mqtt
NAME Tasmota.ID001
NR 105
STATE online
TYPE MQTT_DEVICE
READINGS:
2018-06-16 11:51:27 FallbackTopic Deckenlicht
2018-06-16 11:51:27 GroupTopic sonoffs
2018-06-16 11:51:27 Hostname ID001-6174
2018-06-16 11:51:27 IPAddress XXX.XXX.XXX.XXX
2018-06-16 11:51:27 Info1 {"Module":"Sonoff TH","Version":"5.12.0","FallbackTopic":"Deckenlicht","GroupTopic":"sonoffs"}
2018-06-16 11:51:27 Info2 {"WebServerMode":"Admin","Hostname":"ID001-6174","IPAddress":"XXX.XXX.XXX.XXX"}
2018-06-16 11:51:27 Info3 {"RestartReason":"Software/System restart"}
2018-06-16 11:51:27 Module Sonoff TH
2018-06-16 11:51:27 RestartReason Software/System restart
2018-06-16 11:51:27 State online
2018-06-16 11:51:27 Version 5.12.0
2018-06-16 11:51:27 WebServerMode Admin
2018-06-16 11:57:11 state 1
2018-06-16 11:57:11 transmission-state outgoing publish sent
message_ids:
publishSets:
:
topic /SONOFF/TH16/ID001/cmnd/UPGRADE
values:
1
sets:
1
subscribe:
/SONOFF/TH16/ID001/tele/INFO1
/SONOFF/TH16/ID001/tele/INFO2
/SONOFF/TH16/ID001/tele/INFO3
/SONOFF/TH16/ID001/tele/LWT
subscribeExpr:
^\/SONOFF\/TH16\/ID001\/tele\/INFO1$
^\/SONOFF\/TH16\/ID001\/tele\/INFO2$
^\/SONOFF\/TH16\/ID001\/tele\/INFO3$
^\/SONOFF\/TH16\/ID001\/tele\/LWT$
subscribeQos:
/SONOFF/TH16/ID001/tele/INFO1 0
/SONOFF/TH16/ID001/tele/INFO2 0
/SONOFF/TH16/ID001/tele/INFO3 0
/SONOFF/TH16/ID001/tele/LWT 0
subscribeReadings:
/SONOFF/TH16/ID001/tele/INFO1:
cmd
name Info1
/SONOFF/TH16/ID001/tele/INFO2:
cmd
name Info2
/SONOFF/TH16/ID001/tele/INFO3:
cmd
name Info3
/SONOFF/TH16/ID001/tele/LWT:
cmd
name State
Attributes:
DbLogExclude .*
IODev mqtt
publishSet 1 /SONOFF/TH16/ID001/cmnd/UPGRADE
room 17 Tasmota
stateFormat State
subscribeReading_Info1 /SONOFF/TH16/ID001/tele/INFO1
subscribeReading_Info2 /SONOFF/TH16/ID001/tele/INFO2
subscribeReading_Info3 /SONOFF/TH16/ID001/tele/INFO3
subscribeReading_State /SONOFF/TH16/ID001/tele/LWT
webCmd 1
Ich hoffe Ihr könnt mir Helfen!
Viele Grüße
Gear
Hallo Gear,
Du kannst das Attribut "publishSet_<reading>" dafuer missbrauchen. Wenn ich das richtig verstehe, ist es zwar in erster
Linie dazu gedacht, ein Reading zu setzen, aber es wird auf dem Zielgeraet auch ausgefuehrt, siehe Commandref:
Zitatattr <name> publishSet_<reading> [<values>]* <topic>
configures reading that may be used to both set 'reading' (to optionally configured values) and publish to configured topic
Zum Beispiel:
attr sonoff_bas_01 publishSet_RESTART 1,99 cmnd/sonoff_bas_01/RESTART
attr sonoff_bas_01 publishSet_UPGRADE 5.14.1,5.14.2,5.14.3 cmnd/sonoff_bas_01/UPGRADE
Gruss Helmut
Danke Helmut,
wie kann ich das PublishSet_RESTART und PublishSet_UPGRADE dann ausführen?
Im Dummy muss ich ja dann sagen welches PublishSet_.* dann ausgeführt werden soll?
Das waehlst Du mit dem Namen des Readings aus, also in meinem Beispielset sonoff_bas_01 RESTART 1
set sonoff_bas_01 UPGRADE 5.14.1
Gruss Helmut
Vielen Dank! =D