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! :lol:

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

Code: Alles auswählen

String Flag_System "System" <switch>
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:

Code: Alles auswählen

executeCommandLine("sudo@@reboot", 60000)
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/

Code: Alles auswählen

sudo visudo -f /etc/sudoers.d/010_pi-nopasswd
"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."

Code: Alles auswählen

openhab ALL=(ALL) NOPASSWD: ALL

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...:-)