NEWS
[gelöst] Raspberry mit Linux-Control Adapter neu starten
-
Ist es über Blockly möglich einen Raspberry im lokalen Netzwerk neu zu starten?
-
@kraxelhuber Ja nutze mal die suchen Funktion da gibt es reichlich Themen zu. Habe es bei meinem erst letzten mit dem Shutdown hinbekommen. Wenn du den gesendeten Befehl einfach von shutdown nach reboot/restart änderst sollte es problemlos gehen.
-
@kraxelhuber Jup, installier den Adapter Linux-Control da ist so etwas möglich.
-
@kraxelhuber
Möchtest du den iobroker raspi Neustarten oder einen anderen raspi -
@liv-in-sky
Meine iobroker Master Instanz läuft in einem Docker Container auf meiner Synology DiskStation. Auf einem Raspberry läuft die Slave Instanz ebenfalls in einem Docker Container.Mein Ziel ist es den RPi zu rebooten, sobald der Docker Container der Hauptinstanz neu gestartet wurde.
-
über ssh würde das funktionieren
1 über eine zu installierende node - die node muss in der javascript-instanz bei zusätzlichen nodes eingetragen werden - das ist zwar dann javascript, aber dass könnte man über ein function-blockly einbinden https://forum.iobroker.net/post/362315 2 hier sind beispiele für eine ssh verbindung, die dann über das exec-blockly ausgeführt werden - schnell und "dirty" über passh oder sicherer mit ssh-key https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password 3 die idee von @Elektroniker86 ist auch nicht schlecht - über diesen adapter (linux controll) kann man dann sehr einfach andere abfragen dazunehmen und hat dann ein paar system infos über den slave (wenn man das haben will - z.b. temp) https://forum.iobroker.net/topic/35870/test-adapter-linux-control-v1-x-x 4 bin mir da nicht sicher ob das funktioniert - habe keine slaves - über eine javascript-instanz auf dem slave installiert und dort direkt - ohne ssh - einen sudo reboot im exec-blockly ausführen - der trigger muss dann vom master und einem dp kommen - auf was willst du triggern ? z.b. uptime (system.adapter.admin.0.uptime)
ein script ohne trigger welches nach einer zeitverzögerung die uptime abfrägt und dann ( je nach uptime) den befehl sendet oder nicht. ein script ohne trigger wird immer nach einem reboot bzw eigentlich nach dem start der javascript instanz gestartet
oder hast du eine andere idee
- auf was willst du triggern ? z.b. uptime (system.adapter.admin.0.uptime)
-
Ich habe jetzt den Linux-Control Adapter verwendet. Das war ein guter Tip. Danke dafür!
Den Reboot des RPi habe ich damit hinbekommen. Bei mir stellt sich jetzt in der Tat nur noch die Frage des Triggers. Eigentlich soll das Script ausgeführt werden, sobald die ioBroker Master Instanz (hier läuft auch der Linux-Controller) neu gestartet wurde.
Ich habe jetzt folgendes, simples Script erstellt, was auch bei manueller Ausführung seinen Dienst erfolgreich verrichtet. Allerdings wird es nicht automatisch nach einem Neustart ausgeführt. Hättet ihr da noch einen Hinweis?
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="control" id="(l[e@^Nj$-f)3{}CU(zS" x="63" y="-187"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">linux-control.0.ioBroker_slave.control.restart</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="n:ZJFf#Dsk0bM}xi+^oA"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="telegram" id="E/C2MhZ}-]2iGVt`%8`-"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="XS8u]l_WUJ^LntCJ37wl"> <field name="TEXT">RPi ioBroker Slave rebooted</field> </shadow> </value> </block> </next> </block> </xml>
-
@kraxelhuber das ganze vielleicht mit etwas zeitverzögerung - 30 sek oder so - mal testen -mit einem timeout-block
-
wenn du das so machst, triggerst du auch, wenn nur die javascript-instanz restarted (von hand oder durch einen scriptfehler) wird - kommt nicht oft vor - kann aber vorkommen
-
So hat es funktioniert:
Ich musste schon ein bisschen Zeit geben, bis der Linux-Control Adapter initialisiert wurde und auch die Daten vom RPi empfangen hat.
-
@liv-in-sky said in Raspberry neu starten:
wenn du das so machst, triggerst du auch, wenn nur die javascript-instanz restarted (von hand oder durch einen scriptfehler) wird - kommt nicht oft vor - kann aber vorkommen
Würdest du einen anderen Trigger wählen?
-
ich würde unter dem/im timeout noch eine if abfrage machen, ob dieser dp (system.adapter.admin.0.uptime) kleiner ... sekunden ist
die sekundenanzahl musst du schätzen - du brauchst 180 sekunden (timeout plus die sekunden, bis die javascript-instanzen gestartet werden - vielleicht 5 min also kleiner 300 sekundenden dp siehst du mit der experten-einstellung im admin
-
-
ja - wenn also nach 300 sekunden online der javascript adapter neugestartet wird, wird der neustart nicht ausgeführt !
-
@liv-in-sky said in Raspberry neu starten:
ja - wenn also nach 300 sekunden online der javascript adapter neugestartet wird, wird der neustart nicht ausgeführt !
Super, das läuft rund. Danke, Problem gelöst.
-
@kraxelhuber konntest du dein slave problem lösen ?
-
@liv-in-sky said in [gelöst] Raspberry mit Linux-Control Adapter neu starten:
@kraxelhuber konntest du dein slave problem lösen ?
Ja, besten Dank!