Hilfe bei Rules mit executeCommandLine

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Hilfe bei Rules mit executeCommandLine

Beitrag von leupy »

Hallo,
ich brauche Hilfe bei meiner erstellten Regel für eine Neustart bzw Backup über die Basic Oberfläche.
Ich habe folgende Switch in der Sitemap erstellt.

Code: Alles auswählen

Switch item=OH2_Service  mappings=[1="Neustart",2="Backup"] icon="openhab"
           Switch item=PI_Service   mappings=[1="Neustart",2="Herunterfahren"] icon="pi"
Item

Code: Alles auswählen

// Schalter für den openHab und PI Restart   
Number OH2_Service         "openHAB "  
Number PI_Service          "Pi"
und die Regel dazu

Code: Alles auswählen

//System Service
//--------------
rule "Init Service"
when
    System started                                     // Wenn System startet                          
then
    OH2_Service.postUpdate(0)                         
    PI_Service.postUpdate(0)
end 

rule "Service_OH2"
when
    Item OH2_Service changed
then
if (OH2_Service == 1)
{
executeCommandLine ("sudo /bin/systemctl restart openhab2.service")
}
if (OH2_Service == 2)
{
executeCommandLine ("sudo $OPENHAB_RUNTIME/bin/backup")
}
end
Wenn ich den Befehl von der ersten Bedingung (OH2_Service ==1) ohne die Regel ausführe startet OpenHab neu aber in der Regel läuft das ganze nicht.
Das "OH_Service" Item wechselt beim Test auf 1 aber der Befehl wird nicht ausgeführt :?:
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

heiko74
Beiträge: 14
Registriert: 5. Apr 2019 21:38
Answers: 0

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von heiko74 »

Hallo,

Um zu sehen, ob die Regel durchgeführt wird oder nicht, kannst du ein "logInfo" einfügen. In der "openhab.log" kannst du dann sehen, welche Punkte durchlaufen wurden. Mein Vorschlag wäre einen Log-Eintrag für Start, Ende und Verzweigung einzufügen.

Auch versuchst du Befehle mit "sudo" auszuführen.
Kläre bitte ab, ob:
1. Der Benutzer, der OH ausführt in der Gruppe sudo ist.
2. "sudo" verlangt ein Passwort. (sudo ohne Passwort ist ein Sicherheitsrisiko !!) Ich sehe aber nicht, daß eines übergeben wird.

Ich verstehe, was du erreichen willst, aber überlege, ob es wirklich notwendig ist:
a) OH per Oberfläche neu starten zu können. Jemand, der rumspielt kann dir OH neu starten.
b) Dein Skript "backup" könnte man auch per cron regelmäßig starten. Aber reicht es nicht auch nach Änderungen eine Sicherung per Hand zu starten?

Heiko

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von leupy »

Hallo Heiko,
die Rechte für den Befehl sind gesetzt er funktioniert wenn ich ihn über eine Switch aktiviere.
Durch einfügen von Logs hab ich gesehen das die Regel beim Trigger "Item OH2_Service changed" auf ende springt obwohl die Bedingung des ersten If erfüllt ist.
Könnte das ein Zeitproblem vom Trigger sein das das ganze zu schnell ist ?
gruß leupy

Code: Alles auswählen

rule "Service_OH2"
when
    Item OH2_Service changed
then
if (OH2_Service == 1)
{
logInfo("OH2", "Restart")
executeCommandLine ("sudo /bin/systemctl restart openhab2.service")
}
if (OH2_Service == 2)
{
logInfo("OH2", "Backup")
executeCommandLine ("sudo $OPENHAB_RUNTIME/bin/backup")
}
logInfo("OH2", "Regel Ende")
end
[code]
[/code]
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von leupy »

Ich hab´s gefunden :idea: >> beim If hab ich den Status vergessen if(OH2_Service.state == 1) :shock:
Restart funst jetzt, aber wenn der Backup Befehl ausgeführt wird kein Backup gemacht.?
INFO ] [lipse.smarthome.io.net.exec.ExecUtil] - executed commandLine 'sudo $OPENHAB_RUNTIME/bin/backup'
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von peter-pan »

Hast du schon mal versucht "sudo /bin/bash $OPENHAB_RUNTIME/bin/backup" zu benutzen ? (oder /bin/sh)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

heiko74
Beiträge: 14
Registriert: 5. Apr 2019 21:38
Answers: 0

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von heiko74 »

Hallo,

ups, das mit dem ".state habe ich übersehen. :(

Dann mal zur Fehlersuche. Die Rule scheint so weit zu laufen:
a) Wird die Backup-LogInfo geloggt?
b) Was passiert wenn du "sudo $OPENHAB_RUNTIME/bin/backup" im Terminal ausführst?
c) Poste mal den Inhalt von "backup".

Heiko

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

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von udo1toni »

Ich bin mir nicht sicher, ob die Umgebungsvariable $OPENHAB_RUNTIME für den user openhab gesetzt ist.
Es gibt auch keinen Grund, unbedingt die Variable für den Aufruf zu nutzen.
Im Normalfall zeigt die Variable auf /usr/share/openhab2/runtime, Du könntest also den Aufruf entsprechend ändern.
Falls Du nicht sicher bist, kannst Du vorher feststellen, auf welchen Pfad die Variable tatsächlich zeigt, mittels openhab-cli info.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von leupy »

Hallo,
hier die info mittels cli
Version: 2.4.0 (Build)

User: openhab (Active Process 30007)
User Groups: openhab tty dialout audio bluetooth gpio

Directories: Folder Name | Path | User:Group
----------- | ---- | ----------
OPENHAB_HOME | /usr/share/openhab2 | openhab:openhab
OPENHAB_RUNTIME | /usr/share/openhab2/runtime | openhab:openhab
OPENHAB_USERDATA | /var/lib/openhab2 | openhab:openhabian
OPENHAB_CONF | /etc/openhab2 | openhab:openhabian
OPENHAB_LOGDIR | /var/log/openhab2 | openhab:openhabian
OPENHAB_BACKUPS | /var/lib/openhab2/backups | root:root
Wie ändere ich den Aufruf oder besser wie sieht der dann aus?
Oder kann ich noch mit einer anderen Methode das Backupscipt aufrufen, ich bin da ein bisschen überfordert.
Wenn ich die Befehl über Putty ausführe wird ein Backup erstellt

@Heiko Noch zu deiner Frage warum mann das braucht > Da ich viel an meiner Haussteuerung ändere und ich viel probieren muß (da mir das Wissen fehlt) ist es für mich aufwändig mich jedes mal über Putty wieder einzuloggen und einen Neustart durchzuführen. Das geht dann schneller über die Oberfläche genau so für ein Backup.
gruß leupy
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

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

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von udo1toni »

Na ja, statt

Code: Alles auswählen

executeCommandLine ("sudo $OPENHAB_RUNTIME/bin/backup")
schreibst Du halt

Code: Alles auswählen

executeCommandLine ("sudo /usr/share/openhab2/runtime/bin/backup")
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Hilfe bei Rules mit executeCommandLine

Beitrag von leupy »

udo1toni hat geschrieben: 30. Dez 2019 23:08 Na ja, statt

Code: Alles auswählen

executeCommandLine ("sudo $OPENHAB_RUNTIME/bin/backup")
schreibst Du halt

Code: Alles auswählen

executeCommandLine ("sudo /usr/share/openhab2/runtime/bin/backup")
Hallo udo1toni,
ja das war der Richtige Tipp läuft jetzt.
gruß leupy
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Antworten