NEWS
Raspberry PI runterfahren
-
Ob der Strom aus oder an ist, sehe ich an einem Homematic Energiemesser, der vor dem Pi usw hängt.
Wenn also Energiemesser = 0, dann IoBroker stop, danach shutdown. `
Sendet der Energiemesser noch, wenn er spannungslos ist ? Wenn er hinter der USV hängt, weshalb sollte dann die Leistung auf 0 gehen ? -
Er hängt vor der USV.
An dem Energiemesser hatte ich eine mehrfach Steckleiste, wo die ganzen Geräte für das Netzwerk dran sind. Die USV steckt nun in dem Energiemesser und die Steckleiste in der USV.
Gut, zum testen hatte ich den Energiemesser per Hand zum testen ausgeschaltet, somit stand im IoBroker 0
Wenn jetzt der Strom komplett weg ist, denk ich, ist das Gerät eher nicht erreichbar ist,
als das es mir 0 sagt.
Würde das denn gehen, wenn die USV im LAN hängt, die weiß ja wann der Strom weg ist. Kann die denn Geräte runterfahren lassen? Wenn ja, wie macht man das?
-
Würde das denn gehen, wenn die USV im LAN hängt, die weiß ja wann der Strom weg ist. `
Das sollte mit dem Adapter https://github.com/Apollon77/ioBroker.nut gehen. Voraussetzung ist, dass der Switch / Router, der sich zwischen USV und Raspberry Pi befindet, auch durch die USV versorgt wird.
@Steffi81:Kann die denn Geräte runterfahren lassen? Wenn ja, wie macht man das? `
In einem Script kann man auf den passenden Datenpunkt des NUT-Adapters triggern und per exec('cmd') das Shutdown-Kommando (verzögert) starten. -
Also der Switch, Router, die PI‘s und die Synology hängen alle hinter der USV.
Wie genau müsste denn son Script aussehen, von Script hab ich jetzt nicht so die Ahnung. Wie mach ich das dann, über Blockly? Oder muss ich das dann unter Scripte eingeben?
Hoffe werde nicht gesteinigt für die blöden Fragen :?
Mfg
-
Oder muss ich das dann unter Scripte eingeben? `
Du kannst es unter Scripte eingeben, etwa so:const idNetz = '...'; // Datenpunkt-ID für Netzspannung vorhanden var timer = null; on(idNetz, function(dp) { if(!dp.stat.val) { // keine Netzspannung timer = setTimeout(function() { exec('sudo shutdown -h 0'); }, 5 * 60000); // Verzögerung 5 Minuten } else if(timer) clearTimeout(timer); // stoppt Timer, falls Netz innerhalb der Verzögerungszeit wieder vorhanden });
Falls erst ioBroker gestoppt werden soll und dann shutdown, erzeugst Du ein Shell-Script mit den beiden Kommandos und rufst aus dem Javascript mit exec('myScript') dieses Shell-Script auf.
-
Puh, ich seh schon, dass ist doch komplizierte als ich dachte, für einen Laien
Eben war die LAN Karte in der Post, die werde ich erstmal einbauen und einrichten.
Danach den Adapter und dann weiter mit dem Script. Mal sehen wie weit ich komme
-
Falls erst ioBroker gestoppt werden soll und dann shutdown, erzeugst Du ein Shell-Script mit den beiden Kommandos und rufst aus dem Javascript mit exec('myScript') dieses Shell-Script auf. ` Das funktioniert glaube ich so nicht..
Wenn das Shellscript durch ioBroker aufgerufen wird,
wird es auch zusammen mit ioBroker gekillt da beim Beenden von ioBroker auch alle child-processes gekillt werden und "exec('shellscript.sh')" ist in dem Fall ein child-process von ioBroker bzw. der JavaScript Instanz.
War das nicht irgendwie so - oder habe ich das falsch in Erinnerung?
Gruß
-
Dann womöglich per spawn mit der detached-Option:
-
Guten Morgen.
Wollte mal einen kleine Lagebericht Posten.
Also, USV ist nun per LAN Kabel im Netzwerk verfügbar.
Diskstation erkennt die USV.
NUT Adapter eingerichtet, Daten von der USV werden gelesen.
VIS Ansicht soweit auch fertig.
Habe mit Blockly ein Script geschrieben, dass bei Ausfall oder Wiederkehr der Eingangsspannung eine Variable auf wahr/unwahr setzt.
Bei unwahr sende ich mit Blockly an den PI erst „ sudo shutdown -h 1, danach sudo iobroker stop „
Klappt, Iobroker wird angehalten und 1 min später der PI runtergefahren.
War nen bissel Bastelei, aber ich hab’s hinbekommen
Habe aber noch nen zweite PI, wo Raspberrymatic drauf läuft.
Kann ich von Iobroker nen „ poweroff „ an diesen PI senden, damit der dann auch runter fährt? Wenn ja, wie mache ich das.
Mfg
-
Kann ich von Iobroker nen „ poweroff „ an diesen PI senden, damit der dann auch runter fährt? Wenn ja, wie mache ich das. `
Dürfte per SSH gehen. Obs ne Kommandozeilenoption gibt weiß ich nicht, ich hab was ähnliches aber schon per javascript gemacht mit dem node-ssh Modul https://www.npmjs.com/package/node-sshSo dürfte es grob funktionieren:
node_ssh = require('node-ssh'); ssh = new node_ssh(); ssh.connect({ host: 'localhost', username: 'abcdef', password: 'defghi' }).then(() => { ssh.execCommand("shutdown -h now"); })
Edit: Kommando korrigiert
-
Hallo,
ich fahre Raspis normal mit
halt
stattshutdown
runter. Sollte schneller gehen als shutdown. Ob````
poweroff -
Also mit SSH geht das ja, macht man ja normal mit Putty.
Habe im Blockly ja auch mit „exec“ den selben Befehl wie im Putty eingegeben. Und das geht.
Man muss nur für jeden Befehl ein extra Exec ansetzen, weil immer nur ein Befehl pro Exec geht. Was ich aber nicht schlimm finde. Oder ich habe das noch nicht anders rausgefunden
Iobroker fahre ich mit shutdown runter, raspberrymatic mit poweroff, ohne was anzuhalten wie beim Iobroker.
Werde das Script mal ausprobieren, mal sehen ob das geht. Über Blockly wäre mir natürlich lieber, finde ich einfacher zu verstehen
Mfg
-
Sollte schneller gehen als shutdown. Ob
poweroff
Vorteile bringt, ist mir beim Raspi nicht bekannt. ` halt, shutdown, poweroff macht keinen unterschied beim Raspberry..shutdown (-h now) oder poweroff machen genau das gleiche wie halt,.. Außer dass sie noch das Netzteil ausschalten und den Computer somit "vom Strom nehmen".. Das funktioniert beim Raspberry wegen externem USB Netzteil aber natürlich nicht.
Gruß
-
ich fahre Raspis normal mit
halt
stattshutdown
runter. Sollte schneller gehen als shutdown.Laut meiner Info sind die Kommandos auf den meisten Systemen identisch:
> Again, in this toolset the opposite of received BSD wisdom applies and halt and reboot simply chain to shutdown — unless the system is already in the poweroff or halt "run-levels", in which case these commands actually enact the final system state change. `
tl;dr:"halt" ruft "shutdown -h" auf
und "reboot" ruft "shutdown -r" auf.
Allerdings müsste mein Befehl oben shutdown -h heißen, um den Raspi tatsächlich herunterzufahren. Hartes Herunterfahren würde ich nicht machen, die Datenbanken müssen ja Gelegenheit bekommen ihren Speicherinhalt auf die Platte/SD zu schreiben…
-
Ich hatte https://homematic-forum.de/forum/viewtopic.php?f=48&t=27716&p=245865#p245865 mal eine Anleitung gepostet, wie man CCU.IO, den Vorgänger des ioBroker, von der CCU aus neu starten kann.
Vielleicht kann's ja noch jemand gebrauchen.
Gruß,
Thorsten
-
Guten Morgen.
Wollte mal einen kleine Lagebericht Posten.
Also, USV ist nun per LAN Kabel im Netzwerk verfügbar.
Diskstation erkennt die USV.
NUT Adapter eingerichtet, Daten von der USV werden gelesen.
VIS Ansicht soweit auch fertig.
Habe mit Blockly ein Script geschrieben, dass bei Ausfall oder Wiederkehr der Eingangsspannung eine Variable auf wahr/unwahr setzt.
Bei unwahr sende ich mit Blockly an den PI erst „ sudo shutdown -h 1, danach sudo iobroker stop „
Klappt, Iobroker wird angehalten und 1 min später der PI runtergefahren.
War nen bissel Bastelei, aber ich hab’s hinbekommen
Habe aber noch nen zweite PI, wo Raspberrymatic drauf läuft.
Kann ich von Iobroker nen „ poweroff „ an diesen PI senden, damit der dann auch runter fährt? Wenn ja, wie mache ich das.
Mfg `
Teil doch mal bitte dein Blockly…!
-
Kein Problem, mache ich, wenn ich wieder am PC bin. Vielleicht schaffe ich das heute Abend.
-
Hier mal meine Umsetzung.
1402_blockly.png -
Das gehört da auch noch zu.
1402_b1.png
1402_b2.png