Sonoff Tasmota auto restart

Geflasht oder ungeflasht ...

Moderatoren: Cyrelian, udo1toni

Antworten
mcdandrew
Beiträge: 93
Registriert: 13. Dez 2018 17:42

Sonoff Tasmota auto restart

Beitrag von mcdandrew »

Gibt es eine Möglichkeit bei meinen Sonoff Geräten (geflasht mit Tasmota) einen automatischen reboot auszuführen???
Ich sehe zwei Möglichkeiten...

1. Ausführung per MQTT vom Openhab...
2. Direktes Konfigurieren auf den Sonoffs im Webinterface bzw. der Konsole.

Leider fehlt mir der entsprechende Ansatz.

Hintergrund ist, dass einzelne Sonoffs nach ein paar Wochen per MQTT keine Daten mehr senden.

mcdandrew
Beiträge: 93
Registriert: 13. Dez 2018 17:42

Re: Sonoff Tasmota auto restart

Beitrag von mcdandrew »

Für alle die es interessiert...hier eine Lösung für Möglichkeit 2

Im Webinterface
- Zeitplan konfigurieren
- Zeitplan aktivieren
- Time 1 auswählen
- Aktion Regel
- Aktiv und wiederholen auswählen
- Uhrzeit auswählen

In der Konsole
rule1 on clock#timer=1 do restart 1 endon
rule1 1

Benutzeravatar
peter-pan
Beiträge: 661
Registriert: 28. Nov 2018 12:03
Answers: 3
Wohnort: Schwäbisch Gmünd

Re: Sonoff Tasmota auto restart

Beitrag von peter-pan »

..für die erste Möglichkeit, kann ich dir folgendes anbieten:

1. .items

Code: Alles auswählen

String    Sonoff_Action "Sonoff Action [MAP(de.map):%s]" <arendst> (gSonoffs,gSonoff,gVer)
2. .sitemap

Code: Alles auswählen

Switch item=Sonoff_Action mappings=[restart="Restart", queryFW="Query FW", upgrade="Upgrade FW"]
3. .rules

Code: Alles auswählen

// Work with a list of selected Sonoff modules
//
val sonoff_device_ids = newArrayList(
         "pow_02",
         "basic_03"
)

// OR
// Work with the grouptopic, addressing ALL modules at once
// val sonoff_device_ids = newArrayList("sonoffs")

// https://community.openhab.org/t/using-sonoff-power-switches-with-tasmota-firmware-and-openhab2-mqtt2-binding/59969/7  // thx to @opus
rule "Sonoff Maintenance"
  when
   Item Sonoff_Action received command
  then
//   logInfo("sonoff_maintenance", "Sonoff Maintenance on all devices: " + receivedCommand)
   val actionsBroker = getActions("mqtt","mqtt:broker:hans") // change to your broker name!
   for (String device_id : sonoff_device_ids) {
      switch (receivedCommand) {
         case "restart" : {
             actionsBroker.publishMQTT( "cmnd/" + device_id + "/restart", "1")
             logInfo("sonoff_maintenance", "Sonoff Maintenance: " + device_id + " / " + receivedCommand + " / " + sonoff_device_ids)
            }
         case "queryFW" : {
             actionsBroker.publishMQTT( "cmnd/" + device_id + "/status", "2")
             logInfo("sonoff_maintenance", "Sonoff Maintenance: " + device_id + " / " + receivedCommand + " / " + sonoff_device_ids)
            }
         case "upgrade" : {
             actionsBroker.publishMQTT( "cmnd/" + device_id +"/otaurl", "http://thehackbox.org/tasmota/release/tasmota-DE.bin")  // my modification, as for me this URL seems the better one -> tasmota 
             actionsBroker.publishMQTT( "cmnd/" + device_id + "/upgrade", "1")
             logInfo("sonoff_maintenance", "Sonoff Maintenance: " + device_id + " / " + receivedCommand + " / " + sonoff_device_ids)
            }
        }
    }
//   Sonoff_Action.postUpdate(NULL)
   createTimer(now.plusSeconds(5), [ |
    Sonoff_Action.postUpdate("OFF")
   ])
   
 end
Mit dieser Regel (oder einem Extrakt daraus - "restart"), kannst du (auch) einen Restart durchführen.

Das geht über einzelne Devices (topic) oder Device-Gruppen (Group-Topic), die du in die Array-List eintragen musst. Als Group-Topics kommen hier normalerweise "sonoffs" oder neuerdings "tasmotas" in Frage

Mit "queryFW" wird einfach ein Refresh des items "Firmware-Release" gemacht, falls du so eins definiert hast.

Mit "upgrade" wird ein Firmware-Upgrade gemacht (ohne Gewähr). Bei mir klappt es zwar, aber nur bei den Sonoffs(1MB), die ich selbst einmal per Atom geflasht habe. Bei einem ESP8266, den ich per "Gitpod" geflasht habe funktioniert das leider nicht. Ich könnte mir vorstellen, dass das an der Speichergrösse des RAMs(4 MB) liegt. Das muss ich noch genauer untersuchen.

Ich flashe auch nicht Gruppen, da ich da mal vor ca. einem Jahr ein Problem hatte, sondern immer nur 2 oder 3 gleichzeitig.

mcdandrew
Beiträge: 93
Registriert: 13. Dez 2018 17:42

Re: Sonoff Tasmota auto restart

Beitrag von mcdandrew »

Ich habe deine Regel ein wenig gekürzt, aber es funktioniert!

Da ich für jedes Sonoff Device eine Info Seite in Openhab habe gibt es dort nun auch den entsprechenden Restart Switch.

Bei meinen T1 mit MQTT2 funktioniert es problemlos....bei den derzeit noch auf MQTT1 bassierenden Sonoff Dual nicht.
Es erschein im LOG die Meldung "Instance is not an MQTTActions class."

Hier mal ein Beispiel meiner ITEMS

ITEM-File

Code: Alles auswählen

String dual_kueche_laufzeit "Laufzeit [%s]"	{ mqtt="<[mosquitto:tele/dual_kueche/STATE:state:JSONPATH($.Uptime)]" }
String dual_kueche_u_restart "Restart" 
RULE-File

Code: Alles auswählen

rule "dual_kueche_u_restart"
when
	Item dual_kueche_u_restart received command
then
	val actionsBroker = getActions("mqtt","mqtt:broker:mosquitto")
	actionsBroker.publishMQTT( "cmnd/dual_kueche_u_restart/restart", "1")

	createTimer(now.plusSeconds(5), [ |
    dual_kueche_u_restart.postUpdate("OFF")
	])
end
Hast du eine Idee woran es liegen kann?

Benutzeravatar
peter-pan
Beiträge: 661
Registriert: 28. Nov 2018 12:03
Answers: 3
Wohnort: Schwäbisch Gmünd

Re: Sonoff Tasmota auto restart

Beitrag von peter-pan »

Ja, das liegt daran, dass die Regel bei einem MQTT1-Device (ich nenn es mal so, also ohne Thing), etwas anders aussieht.

Code: Alles auswählen

rule "dual_kueche_u_restart"
when
	Item dual_kueche_u_restart received command
then
        publish("mosquitto", "cmnd/dual_kueche_u_restart/restart", "1")
	createTimer(now.plusSeconds(5), [ |
        dual_kueche_u_restart.postUpdate("OFF")
	])
end
So könnte es evtl. für deine MQTT1-Devices gehen, aber wie mmer ohne Gewähr ;) .

mcdandrew
Beiträge: 93
Registriert: 13. Dez 2018 17:42

Re: Sonoff Tasmota auto restart

Beitrag von mcdandrew »

Vielen Dank...ein kleiner Fehler war noch in Deiner Rule...falls es jemand weiterverwenden möchte hier die korrekt Rule

Code: Alles auswählen

rule "dual_kueche_restart"
when
	Item dual_kueche_restart received command
then
		publish("mosquitto", "cmnd/dual_kueche/restart", "1")
		createTimer(now.plusSeconds(5), [ |
        dual_kueche_restart.postUpdate("OFF")
		])
end 
Außerdem ist es notwendig in der Paper UI das Paket "MQTT Action" zu installieren!

Benutzeravatar
peter-pan
Beiträge: 661
Registriert: 28. Nov 2018 12:03
Answers: 3
Wohnort: Schwäbisch Gmünd

Re: Sonoff Tasmota auto restart

Beitrag von peter-pan »

... bei MQTT1 hab ich eigentlich "MQTT1-Action! vorausgesetzt. Sorry !!!

Was war sonst noch. Kann's auf die Schnelle nicht erkennen !!! War aber, wie gesagt, ohne Gewähr :D

Edit: Hab's gerade doch gesehen. Schau mal in deine Regel, da hab ich den Publish-Befehl übernommen ;)

mcdandrew
Beiträge: 93
Registriert: 13. Dez 2018 17:42

Re: Sonoff Tasmota auto restart

Beitrag von mcdandrew »

Oh Sorry hast recht....war meine Schuld :roll:

Antworten