Seite 1 von 2
Reboot item mit Exec
Verfasst: 8. Feb 2022 12:10
von Backbe01
Hallo,
ich bin derzeit an der Umstellung auf OH3. In OH2 hatte ich einen String item, mit ich den pi Neustarten oder ausschalten konnte. Ich habe versucht diese items, things, rules, sitemaps in OH3 zu integrieren. Leider erscheint im log nur "..item...reboot", aber leider passiert nix!
Da ich ein Linux DAU bin, kann mir evtl. jemand von Euch helfen?
Ich poste mal meine Dateien:
Thing
Code: Alles auswählen
Thing exec:command:ohservice [command="sudo /bin/systemctl %2$s openhab.service", autorun=true]
Thing exec:command:piservice [command="sudo %2$s", autorun=true]
Item
rule
Code: Alles auswählen
rule "Reboot openHAB"
when
Item Flag_System received command "Reboot"
then
logInfo("Flag_System", "Rebooting openHAB")
executeCommandLine("sudo@@reboot", 60000)
end
rule "Shut down openHAB"
when
Item Flag_System received command "PowerOff"
then
logInfo("Flag_System", "Shutting down openHAB")
executeCommandLine("sudo@@poweroff")
end
sitemap (Auszug)
Code: Alles auswählen
Frame label=Systemfunktionen {
Text label="System" icon="Error"{
Frame label="System"{
Selection item=Flag_System label="System" mappings=[NULL="Active", Reboot="Neustart", PowerOff="Herunterfahren"]
Re: Reboot item mit Exec
Verfasst: 8. Feb 2022 15:32
von udo1toni
Es ist kein Wunder, dass da nix passiert.
Punkt 1: Du hast zwar Things angelegt, nutzt diese aber gar nicht. Im Zweifel hast Du (weil nicht erwähnt...) den Befehl auch nicht in der Whitelist eingetragen.
Punkt 2: aus der Rule heraus verwendest Du executeCommandline, was funktionieren wird, wenn Du die Notation anpasst. Früher, OH2:
Jetzt, OH3:
Code: Alles auswählen
executeCommandLine(Duration.ofSeconds(60), "sudo","reboot")
Alternativ kannst Du auf die Ausführungsdauer auch verzichten, der Punkt ist aber, dass sie nun als Duration angegebn weredn muss und vorne in der Liste steht. Außerdem werden alle Leerzeichen nun nicht mehr mit @@ maskiert, sondern die Befehlszeile wird in einzelne Parameter auseinander gebrochen, also quasi ersetzt Du @@ mit ", "

Re: Reboot item mit Exec
Verfasst: 8. Feb 2022 21:58
von Backbe01
Hallo Udo, vielen Dank für deine schnelle Nachricht. Whitelist habe tatsächlich vergessen! Da ich das Ganze, wie immer, aus dem Forum abgekupfert habe, habe ich diesen Schritt beim kopieren ganz vergessen. Mein Ziel wäre es ja eigentlich gewesen, auf ein Thing File zu verzichten. Aber auf UI Seite bin ich noch seeehr unsicher, daher jetzt erstmal auf diesem Weg.
Ich werde mir das morgen nochmal genauer ansehen, gebe dann Rückmeldung...
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 01:42
von udo1toni
Wie gesagt, um die Things zu nutzen, brauchst Du zwingend Items (mal mindestens den Input Channel musst Du verlinken), davon ist oben nichts zu sehen. Eigentlich sollte das Erstellen von Things über die UI die einfachere Variante sein, weil dort nicht bekannt sein muss, wie Format und Schlüsselworte für die Parameter lauten.
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 10:19
von Backbe01
Habe gestern Abend noch die Seite gefunden, wo ich die Anleitung her hatte. Diese wurde sogar im Februar 21 auf OH3 geupdatet!
Nach Anleitung durchgeführt und siehe da... es läuft wieder!
Da die Anleitung aus dem offiziellen Openhab Forum ist verlinke ich mal die Seite. Genau das Richtige für Linux DAU´s wie mich. Sollte dies im Forum nicht erwünscht sein, gerne wieder löschen.
https://community.openhab.org/t/beginne ... itch/71903
Evtl. noch eine letzte Frage: Eigenlich ist doch gar nicht nötig, den rpi immer ganz zu rebooten. Oft würde doch auch ein Neustart von OH reichen.? Wie würde dieser Befehl lauten?
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 10:47
von Backbe01
udo1toni hat geschrieben: ↑9. Feb 2022 01:42
Eigentlich sollte das Erstellen von Things über die UI die einfachere Variante sein
Vielleicht habe ich mich falsch ausgedrückt... Das ist mein Ziel - Ich will keine einzige Things Datei mehr.
Ich gehe wie in OH2 vor: Things über UI erkennen und einbinden, Konfiguration ausschließlich über Textdateien. Das hat mit der o.g. Anleitung wunderbar geklappt.
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 10:47
von PeterA
In der Tat ist es nicht immer notwendig den ganzen PI zu booten.
Ein Restart von openHab ist oft ausreichend.
So habe ich das gelöst (OpenHab 2)
Code: Alles auswählen
//System Neustarten
//--------------
rule "Init Service"
when
System started // Wenn System startet
then
OH2_Service.postUpdate(0)
end
//---------------
rule "Service_OH2"
when
Item OH2_Service changed
then
if(OH2_Service.state == 1)
{
logInfo("OH2", "Restart")
executeCommandLine ("sudo /bin/systemctl restart openhab2.service")
}
end
In der Console gehts auch mit: sudo systemctl restart openhab2.service
Gruß Peter
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 10:55
von Backbe01
Hallo Peter,
habe ich direkt ausprobiert. Leider greift meine rule nicht! (Item natürlich angepasst)
Code: Alles auswählen
rule "restart openHAB"
when
Item Flag_System received command "Restart"
then
logInfo("Flag_System", "Restart openHAB")
executeCommandLine("sudo /bin/systemctl restart openhab.service")
end
Evtl. muss ich den Befehl auch wieder freigeben, obwohl der Befehl eigentlich schon hinterlegt sein sollte:
Code: Alles auswählen
openhab ALL=(ALL) NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/systemctl, /sbin/reboot
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 11:02
von PeterA
Sehe hier:
https://smarthome-training.com/de/openh ... usfuehren/
"Nun fügt ihr in der Datei eine neue Zeile ein. Als erstes steht der User, den ihr verwenden wollt. Da ich openHABian nutze, ist es bei mir openhab. Hinter NOPASSWD: könnt ihr noch die Befehle eingrenzen. Ich habe es komplett geöffnet, da nur ich per Passwort an openHAB komme."
Re: Reboot item mit Exec
Verfasst: 9. Feb 2022 11:23
von Backbe01
Hi Peter, eben mit nopasswd: all getestet. Geht leider noch immer nicht.
Bei mir ist das Ganze auch etwas anderst aufgebaut. Ich habe gar keine .things mehr, zumindest nicht in Textform. Es muss sicherlich noch der Befehl angepasst werden, aber da kommt der DAU wieder ins Spiel...
