Sonoff Tasmota mit script zur Uhrzeit X neustarten

  • Hallo,

    ich habe das Problem, das sich manche Sonoff Touch (mit 2 Tastern) über Nacht nicht mehr mit dem iobroker verbinden.

    Wenn ich diese danach über die Weboberfläche neustarte, verbinden sie sich automatisch wieder.

    Gibt es die Möglichkeit über mein raspberry pi worauf der iobroker installiert ist, einen Script auszuführen, der zur Uhrzeit X den Weblink für den Neustart der Geräte ausführt?

    link wäre ja //IP-Adresse/rb?

    Danke und Gruß

  • Unter den Sonoff-Objekten gibt es eine Liste der aktuell mit dem Sonoff-Adapter verbundenen Geräte:

    [Blockierte Grafik: http://cx.frickelmaster.de/sonoff-liste.jpg]

    Die Liste kann man auslesen, dann über ein Javascript die IP-Adresse der Geräte ermitteln und im Anschluss das jeweilige Gerät neustarten.

    Das Ganze hab ich vor einigen Wochen realisiert und in einem Forum, das sich ursprünglich mit Smarthome befasste, nun aber zu einer billigen QVC- bzw. HSE24-Kopie verkommen ist, veröffentlicht.

    Das kommentierte Blockly-Script kannst Du von meinem Webspace runterladen und importieren:

    nächtlicher Neustart aller verbundenen Sonoffs

    Prinzipbedingt können nur die verbundenen Sonoffs neu gestartet werden, denn nur diese sind in der eingangs erwähnten Liste enthalten. Wenn ein Sonoff über den Tag die Verbindung trennt, ist er nicht mehr in der Liste und wird auch von meinem Script nicht erfasst. Ist also eher prophylaktisch zu sehen... also vorbeugender Neustart ;)

    Funktioniert bei mir einwandfrei.

    Grüssings

    Armin

    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus

  • ravencss

    Ja. Die Lösung heißt cron. Ist auf jedem Linux standardmäßig drauf, sonst installieren mit sudo apt install cron. Was du möglicherweise nachinstallieren musst, ist curl.

    Es geht dann grob beschrieben so (#Gibt eine Erklärung, nicht mit abtippen!):

    Du befindest dich im Home-Verzeichnis deines Raspberry.

    Du befindest dich im Terminal oder wenn du einen grafischen Desktop hast, startest du ein Terminal.

    nano sonoff_neustart #Editor nano starten und Datei sonoff_neustart anlegen

    curl -s http://ip.deines.sonoff.ger%c3%84tes/cm?[user=admin\&password=DEINPASSWORT\&]cmnd=restart%201 #Eingabe des Befehls/der Befehle, pro Zeile ein Befehl

    STRG-X y #Verlassen von nano und speichern

    chmod +x sonoff_neustart #Datei ausführbar machen

    crontab -e #Cronjob anlegen beim ersten Mal wirst du nach dem Editor gefragt. Nimm nano

    Anmerkungen:

    Der Text in den eckigen Klammern ist nur nötig, wenn deine Geräte Passwort geschützt sind. Die eckigen Klammern nicht mit eingeben!

    Für jedes Gerät, das du neustarten willst machst du eine eigene Zeile in der Datei sonoff_neustart. Der Unterschied ist immer nur die IP des jeweilgen Gerätes.

    Mit der Syntax von cron musst du dich ein bisschen vertraut machen. Sie ist mächtig aber zu durchschauen. Gute Erklärung hier: https://wiki.ubuntuusers.de/Cron/

    Du kannst bestimmte Wochen, Tage, Uhrzeiten aber auch Zeitrhythmen festlegen: alle 4 Stunden z. B.

    In der crontab trägst du die Startzeiten der Skriptdatei sonoff_neustart ein und den absoluten Pfad auf die Skriptdatei: /home/pi/sonoff_neustart

    Für 2 Uhr nachts sähe die Zeile in der crontab so aus:

    * 2 * * * * /home/pi/sonoff_neustart

    Wenn du alles richtig gemacht hast, wird jede Nacht um 02:00 Uhr das Skript sonoff_neustart von Cron aufgerufen und das Skript veranlasst die Sonoffs zum Neustart.

  • Das habe ich jetzt auch gemacht, werde mal die Tage schauen ob das reicht, lasse den Adapter derzeit alle 23h neustarten. Gibt es dort auch die Möglichkeit diese jeden Morgen 02:00 Uhr neustarten zu lassen. Die Beschreibung dort ist ein bisschen mau.

  • Habe jetzt diese Variante umgesetzt ;)

    Kann also gern zugemacht werden der Thread.

  • Das habe ich jetzt auch gemacht, werde mal die Tage schauen ob das reicht, lasse den Adapter derzeit alle 23h neustarten. Gibt es dort auch die Möglichkeit diese jeden Morgen 02:00 Uhr neustarten zu lassen. Die Beschreibung dort ist ein bisschen mau.

    Hi, du musst auf jede ausgewählte Stunde umstellen. Und dann kannst du die Stunde auswählen wann das passieren soll.

    Bei Minuten dann noch jede ausgewählte Minute einstellen, und die 0 auswählen, oder zu welcher Minute es passieren soll.

  • frankyboy73 ,

    ich weiß zwar nicht, was für ein Tool du dort abgebildet hast (ist das IOBroker intern?), aber wenn das cron-Syntax ist, dann wird täglich um 12:12 was gemacht, sonst nicht. In meinem Beispiel kann man auch 0 2 * * * schreiben, muss man nicht. Ein anderes Beispiel wäre:

    * /4 * * * *

    bedeutet alle 4 Stunden um 0:00 Uhr, 04:00 Uhr, 08:00 usw.

    /3 * * * *

    bedeutet: alle drei Minuten (zu jeder Stunde, an jedem Tage, an jedem Wochentag usw.)

  • Ja. Die Lösung heißt cron. Ist auf jedem Linux standardmäßig drauf, sonst installieren mit sudo apt install cron. Was du möglicherweise nachinstallieren musst, ist curl.

    Hmm... letztlich ist meine ioBroker-interne Blockly-Lösung nichts anderes - hat aber m. E. noch zwei Vorteile:

    - man muss keine Liste der IP-Adressen von Hand pflegen, sondern nutzt die ohnehin vorhandene Liste der Sonoffs, die online sind

    - man muss nicht auf der Linux-Ebene rumtoben. OK, vi bzw. nano sind keine Raketenwissenschaft, aber wenn ich das Ganze ioBroker-intern lösen kann, mach ich das.

    cron ist gleich zu Beginn enthalten (im Beispiel um 3.15 Uhr) und die IP-Adressen der Sonoffs werden per Javascript automatisch ermittelt...

    Ich bin halt faul :)

    Grüssings

    Armin

    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus

  • Frickelmaster , leider kann ich nur den XML-Code als Text sehen. Hast du mal das Blockly-Diagramm dazu? Die IOBroker-Lösung ist schon OK. Das scheint ja so eine Art grafischer Frontend für cron zu sein. Und da die Geräte im IOBroker bekannt und benannt sind, geht es vielleicht etwas flüssiger von der Hand. Andererseits: Wenn ich den Sonoffs "sprechende" Hostnames gebe, kann ich sie auch mit http://kuechenlampe/cm?cmnd=restart%201 neu starten - ganz ohne IP :)

  • Du brauchst die XML-Datei nur in ein leeres Blockly-Script importieren ;)

    Bin im Moment nur zwischen Tür und Angel unterwegs, kann mich gern morgen nochmal ausführlicher äussern

    Grüssings

    Armin

    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus

  • Hier das Blockly-Script als (getrickster) Screenshot aus zwei Einzelbildern. Bin gerade nur am Laptop und da hab ich nicht die Mega-Auflösung wie auf dem dicken PC :)

    Über Blockly selbst kann man nicht die IP-Adresse der Geräte aus der eingangs erwähnten ioBroker-internen Liste abfragen, deswegen ist die Javascript-Funktion "IPauslesen" erforderlich. Die wird aber beim Importieren der XML-Datei mit importiert, von daher alles ganz entspannt.

    [Blockierte Grafik: http://cx.frickelmaster.de/allesonoffs_blockly1.jpg]

    [Blockierte Grafik: http://cx.frickelmaster.de/allesonoffs_blockly2.jpg]

    Wer das mit dem Im- und Export vorhandener Blockly-Scripte noch nicht kennt... mein Alle Sonoffs neu starten-Script kann man nach dem Download und Öffnen mit einem Texteditor (Notepad reicht) komplett in die Zwischenablage kopieren und dann ein neues, leeres Blockly-Script im ioBroker erstellen. Dann im Kopf des Scripts diesen Button anklicken:

    [Blockierte Grafik: http://cx.frickelmaster.de/blockly_import.jpg]

    Im sich dann öffnenden Fenster den Inhalt der Zwischenablage einfügen und OK anklicken. Und zack! ist das Blockly-Script fertig :)

    Grüssings

    Armin

    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus