[Gelöst] Mehrere PublishSet in MQTT-Device

Begonnen von Gear, 16 Juni 2018, 12:11:02

Vorheriges Thema - Nächstes Thema

Gear

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
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

helmut

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


Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Gear

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?
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

helmut

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
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Gear

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <