Reboot item mit Exec

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Reboot item mit Exec

Beitrag 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"]
OH 4.1.0M2 auf nuc in Docker

Benutzeravatar
udo1toni
Beiträge: 15259
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Reboot item mit Exec

Beitrag 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 ", " :)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Re: Reboot item mit Exec

Beitrag 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...
OH 4.1.0M2 auf nuc in Docker

Benutzeravatar
udo1toni
Beiträge: 15259
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Reboot item mit Exec

Beitrag 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.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Re: Reboot item mit Exec

Beitrag 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?
OH 4.1.0M2 auf nuc in Docker

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Re: Reboot item mit Exec

Beitrag 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.
Zuletzt geändert von Backbe01 am 9. Feb 2022 10:48, insgesamt 2-mal geändert.
OH 4.1.0M2 auf nuc in Docker

Benutzeravatar
PeterA
Beiträge: 1106
Answers: 13
Registriert: 8. Feb 2019 12:12

Re: Reboot item mit Exec

Beitrag 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
- OpenHab 2.4
#PWRUP

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Re: Reboot item mit Exec

Beitrag 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
OH 4.1.0M2 auf nuc in Docker

Benutzeravatar
PeterA
Beiträge: 1106
Answers: 13
Registriert: 8. Feb 2019 12:12

Re: Reboot item mit Exec

Beitrag 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
- OpenHab 2.4
#PWRUP

Backbe01
Beiträge: 123
Answers: 0
Registriert: 19. Jul 2019 21:04

Re: Reboot item mit Exec

Beitrag 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...:-)
OH 4.1.0M2 auf nuc in Docker

Antworten