Dynamische Liste aller Sonoffs im ioBroker - Abwandlung "täglicher Neustart"

  • Lucky hat hier vorgestellt, wie er seine Sonoffs jede Nacht neu startet. Das Problem, was es dabei gibt, ist die Tatsache, dass man manuell eine Liste der verbauten Sonoffs pflegen muss.

    Hab das Ganze etwas anders aufgezogen - mein Script geht die Liste der verbundenen Sonoffs Schritt für Schritt durch und startet die Dinger neu. Im Logfile kann man sehen, wie zuerst die Neustart-Befehle gegeben werden und im Anschluss die Reconnects protokolliert werden.

    Natürlich muss zu Beginn die Ausführungsuhrzeit (im Beispiel noch 21:24 Uhr ... der Testzeitpunkt :-)) angepasst werden. Ebenfalls ist eine Anpassung nötig, wenn man mehr als eine Sonoff-Instanz laufen hat. Dann muss aus dem "sonoff.0" natürlich die Nummer der entsprechenden Instanz gemacht werden.

    Da das Auslesen der IP-Adressen mit Blockly nicht möglich ist, muss die Javascript-Funktion "IPauslesen" verwendet werden.

    schimmer-media.de/index.php?attachment/934/


    Hier der Import-Code für Blockly:

    schimmer-media.de/index.php?attachment/935/

    Einmal editiert, zuletzt von MasterOfDesaster (20. Februar 2018 um 08:03)

  • wo finde ich denn das Javascript "IPauslesen"?

    Das ist integriert. Es gibt einen Blockly-Baustein, um sowas einzufügen. Musste mich auch erstmal reintüfteln.

    Heisst für Dich: einfach nur den obigen Importcode in ein leeres Blockly importieren, schon kannst Du es individuell anpassen.

  • Das ist integriert. Es gibt einen Blockly-Baustein, um sowas einzufügen. Musste mich auch erstmal reintüfteln.

    Heisst für Dich: einfach nur den obigen Importcode in ein leeres Blockly importieren, schon kannst Du es individuell anpassen.

    Hallo

    Ich habe deinen Blockly Code bereits importiert.

    Und das Script IPauslesen welches ganz oben in deinem Blockly Script steht ist schon integriert?

    Ah Kommando zurück. Jetzt habe ich das IPauslesen Script gefunden.

    Ein Doppelklick auf den ersten Block hat gereicht.

    P.S. ich habe nämlich seit zwei Tagen immer wieder Warn-Meldungen im Log von manchen Sonoffs.

    Error: This socket has been ended by another party.

    Dachte bis vorhin ich hätte den Fehler soweit eingekreist, dass es wohl mit meinem WLAN vom Repeater zusammenhängt.

    Aber jetzt sind es aufeinmal Sonoff in meinem Router WLAN.

    Merkwürdig...

    Gruß

    Marcel

  • Hab gerade nochmal den Screenshot überarbeitet und Kommentare eingefügt, damit das Ganze auch für Nicht-Programmierer ;) einigermaßen nachvollziehbar ist.

    Der Blockly-Exportcode wurde allerdings dadurch so lang, dass ich den nicht mehr per Spoiler einfügen konnte - die Nachricht wäre dann länger als 10.000 Zeichen geworden :)

    Deswegen nun als TXT-Anhang.

  • P.S. ich habe nämlich seit zwei Tagen immer wieder Warn-Meldungen im Log von manchen Sonoffs.

    Error: This socket has been ended by another party.

    Dieses Problem dürften die meisten kennen, ich könnte mir vorstellen, dass auch Lucky sowas in der Art veranlasst hat, sich die ursprüngliche Restart-Geschichte auszudenken. Meine Version ist quasi nur ne technische Verbesserung, die Idee stammt im Original aber von Lucky.

    Da auch meine Sonoffs ab und an diesen Fehler im Log anzeigen, habe ich den Sonoff-Restart neben dem Backup in die nächtliche Systempflege eingebaut :)

  • Begonnen hat es damit, dass ich das Sleep 50 für den Stromsparmodus und die IP-Adresse meines ioBrokers auf allen Sonoffs austauschen wollte. Das wäre einzeln total mühsam gewesen.

    Gedanke 2 war dann regelmäßig etwas gegen die Verbindungsverluste zum MQTT zu unternehmen. Diese treten sporadisch auf und nur ein Reboot des Sonoffs hilft.

    @Frickelmaster: Vielen Dank nochmal für das dynamische Auslesen der Sonoffs - das nimmt einiges an Administrationsarbeit, insbesondere dann, wenn man noch weitere Geräte plant und nicht ständig die Scripts anpassen möchte.

  • Tolles Script. Danke!

    Allerdings habe ich ein Problem. Alle bis auf einen meiner Sonoffs werden neu gestartet

    und im Log steht:


    javascript.0 2018-02-21 18:57:00.172 error (script.js.Neustart_Sonoffs:21:28)" style="">at Object. (script.js.Neustart_Sonoffs:21:28)
    javascript.0 2018-02-21 18:57:00.171 error Error in callback: TypeError: Cannot read property 'indexOf' of null

    Alle haben gleiche Firmware 5.12.0b

    Die IP des Gerätes ist im Bereich, in dem alle Sonoffs liegen. 192.168.10.50-100

    Gestartet werden z.B. die .66 und die .67 und auch die .71

    nur die .68 nicht

    Hat hier jemand eine Idee woran das liegen könnte?

  • Das hatte ich bei einem Sonoff auch.

    Guck mal in den INFO-Unterordner des Sonoffs in den Objekten. Hat der Sonoff dort eine IP-Adresse?

    Bei meinem hat ein Reset geholfen, also die Taste mindestens 4 Sekunden lang drücken.

  • Also klappt jetzt - Gerät war als einiges nicht in der Cloud aktiviert. Nachdem es nun in der Cloud aktiv ist, geht es auch.

    Allerdings sehe ich keinen Zusammenhang zwischen Cloud und diesem Script.

  • Nö, absolut nicht! Läuft alles lokal, hat mit der Cloud nix zu tun. Aber manchmal hakt bei den Sonoffs die MQTT-Registrierung im ioBroker und dann fehlen halt ein paar Attribute in den Objekten.

    Hauptsache es funktioniert!

  • Guck mal unter sonoff.0.info.connection, ob da alle Sonoffs drinstehen, die auch online sind.

    Ich hab aktuell 17 Geräte in der Liste, klappt wunderbar.

  • Ich habe diese Fehlermeldung bei allen Sonoff Geräten.....

    Du benutzt Admin3. Laut Changelog des Sonoff-Adapters ist der erst ab Version 1.0.1 Admin3-ready. Ich vermute, dass Du Sonoff Version 1.0.0 installiert hast.

  • sonoff.0. enthält nur alle Sonoffs.

    Eine eigene 'info' sehe ich nicht

    Hmm... wenn dieses Attribut nicht existieren würde, dann würde mein Script überhaupt nicht laufen :)


    Guck nochmal genauer oder mach nen Screenshot von sonoff.0 mit allen Untereinträgen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!