"Disable Thing" automatisieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

"Disable Thing" automatisieren

Beitrag von RES »

Guten Tag.

Ich betreibe mit openHAB auch ca. 45 Z-Wave-Geräte und verwende dafür den "Z-Stick Gen5" von Aeotec als Controller.

Nun ist es so, dass der "Z-Stick" nach einigen Tagen Laufzeit immer wieder für einige Sekunden keine Arbeit verrichtet. Das ist auch daran zu beobachten, dass der Farbwechsel der Statusanzeige am Controller für einige Sekunden stecken bleibt.

Ich habe nun festgestellt, dass dieses Problem für einige Tage zu beheben ist, indem ich in "Paper UI" die Funktion "Disable Thing" verwende, um das Gerät zu deaktivieren und nach einigen Sekunden wieder zu aktivieren.

Kennt jemand von Euch eine Möglichkeit, wie ich openHAB dazu bringen kann, dieses Deaktivieren und Aktivieren in der Nacht automatisch durchzuführen?

Vielen Dank für Eure Hilfe.
von udo1toni » 2. Okt 2021 20:11
Ohne es ausprobiert zu haben:

Code: Alles auswählen

#! /bin/bash
openhab-cli console -p <passwort> bundle:stop <bundlename>
sleep 60
openhab-cli console -p <passwort> bundle:start <bundlename>
<bundlename> musst Du Dir raus suchen, im Zweifel irgendwas in Richtung openhab-binding-zwave, kann aber auch mit org…. beginnen
sleep kann auch mit Minuten, Stunden oder Tagen umgehen, dann muss man nur den passenden Buchstaben anhängen.

Das Script kannst Du natürlich von openHAB starten lassen. Du kannst aber auch genauso gut einen Eintrag in der crontab hinterlegen, dann macht das Betriebssystem das direkt, das ist weniger nervig als das Rumgeschraube am Exec Binding…

EDIT: <passwort> ergänzt...
Gehe zur vollständigen Antwort
--
Rudolf E. Steiner
res-1@communicate.at

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

Re: "Disable Thing" automatisieren

Beitrag von udo1toni »

openHAB selbst kann das nicht so einfach automatisieren. Du kannst aber ein bash-Script schreiben, welches über die Karaf Konsole das Bundle stoppt und wieder startet. Eventuell reicht sogar ein einfacher Restart des Bundle.

Bist Du eventuell im openHAB3 unterwegs? Dort heißt die UI „Main UI“. Paper UI ist openHAB2.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

Re: "Disable Thing" automatisieren

Beitrag von RES »

udo1toni hat geschrieben: 2. Okt 2021 19:31 openHAB selbst kann das nicht so einfach automatisieren. Du kannst aber ein bash-Script schreiben, welches über die Karaf Konsole das Bundle stoppt und wieder startet. Eventuell reicht sogar ein einfacher Restart des Bundle.
Ein Neustart wäre zu schnell, man muss dem Z-Wave-System nach der Deaktivierung ca. eine Minute Zeit geben, bevor es wieder aktiviert wird.

Hast Du evtl. ein Script, welches eine Aktion in der "Karaf Konsole" auslöst, das ich als Vorlage verwenden könnte?
udo1toni hat geschrieben: 2. Okt 2021 19:31 Bist Du eventuell im openHAB3 unterwegs? Dort heißt die UI „Main UI“. Paper UI ist openHAB2.
Es läuft noch openHAB 2 auf dem System.
--
Rudolf E. Steiner
res-1@communicate.at

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

Re: "Disable Thing" automatisieren

Beitrag von udo1toni »

Ohne es ausprobiert zu haben:

Code: Alles auswählen

#! /bin/bash
openhab-cli console -p <passwort> bundle:stop <bundlename>
sleep 60
openhab-cli console -p <passwort> bundle:start <bundlename>
<bundlename> musst Du Dir raus suchen, im Zweifel irgendwas in Richtung openhab-binding-zwave, kann aber auch mit org…. beginnen
sleep kann auch mit Minuten, Stunden oder Tagen umgehen, dann muss man nur den passenden Buchstaben anhängen.

Das Script kannst Du natürlich von openHAB starten lassen. Du kannst aber auch genauso gut einen Eintrag in der crontab hinterlegen, dann macht das Betriebssystem das direkt, das ist weniger nervig als das Rumgeschraube am Exec Binding…

EDIT: <passwort> ergänzt...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

Re: "Disable Thing" automatisieren

Beitrag von RES »

Vielen Dank.

Es gibt dabei aber zwei Probleme:

Code: Alles auswählen

openhab-cli console -p bundle:stop org.openhab.binding.zwave

Logging in as openhab
Password:  
Command not found: org.openhab.binding.zwave
Einerseits wird ein Passwort verlangt, was die Ausführung des Scripts blockieren würde, andererseits scheint openHAB nur den Befehl "org.openhab.binding.zwave" und nicht den Befehl "bundle:stop org.openhab.binding.zwave" zu erhalten.
--
Rudolf E. Steiner
res-1@communicate.at

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

Re: "Disable Thing" automatisieren

Beitrag von RES »

Habe nochmal nachgesehen:

"openhab-cli" erwartet hinter "-p" das Passwort.

Die Befehle müssen also so aussehen:

Code: Alles auswählen

openhab-cli console -p <Passwort> bundle:stop org.openhab.binding.zwave
openhab-cli console -p <Passwort> bundle:start org.openhab.binding.zwave
Vielen Dank für Deine erneute Hilfe!
--
Rudolf E. Steiner
res-1@communicate.at

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

Re: "Disable Thing" automatisieren

Beitrag von udo1toni »

Ja, irgendwie hat er oben den Parameter verschluckt... Ich hab das korrigiert.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

Re: "Disable Thing" automatisieren

Beitrag von RES »

Das war's leider noch nicht ganz:

Wenn ich das Script

Code: Alles auswählen

#!/bin/bash

/usr/bin/openhab-cli console -p <Passwort> bundle:stop org.openhab.binding.zwave
/usr/bin/sleep 60
/usr/bin/openhab-cli console -p <Passwort> bundle:start org.openhab.binding.zwave
als Benutzer "openhabian" manuell ausführe, funktioniert es.

Wenn das Script per "crond" über

Code: Alles auswählen

30 4 * * * /home/openhabian/mkzwaverestart
gestartet wird (auch unter dem Benutzer "openhabian"), funktioniert es nicht. Das Script gibt in diesem Fall einfach

Code: Alles auswählen

Benndet

Beendet
aus.

Fehlen da evtl. Umgebungsvariablen, wenn das Script per "crond" ausgeführt wird?
--
Rudolf E. Steiner
res-1@communicate.at

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

Re: "Disable Thing" automatisieren

Beitrag von udo1toni »

Die Umgebungsvariablen sollten eigentlich keine Rolle spielen, da Du die absoluten Pfade verwendet hast.

Du könntest die Ausgabe gezielt in eine Datei umleiten bzw. im Normalbetrieb gezielt nach /dev/null umleiten:

Code: Alles auswählen

30 4 * * * /home/openhabian/mkzwaverestart >> /home/openhabian/cronausgabe.txt
bzw.

Code: Alles auswählen

30 4 * * * /home/openhabian/mkzwaverestart >> /dev/null
Keine Ahnung, ob das hilft.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
RES
Beiträge: 33
Registriert: 20. Aug 2020 14:38
Answers: 0
Wohnort: Innsbruck
Kontaktdaten:

Re: "Disable Thing" automatisieren

Beitrag von RES »

Es liegt nicht an der Ausgabe. Das Problem ist, dass die Befehle von/durch "openhab-cli" nicht ausgeführt werden, wenn "openhab-cli" über ein Script gestartet wird, welches durch "crond" gestartet wird (unabhängig davon, ob/wohin die Ausgabe umgeleitet wird). Wenn das Script manuell gestartet wird (z. B. per "./mkzwaverestart"), verrichtet "openhab-cli" seine Aufgaben.

Hat evtl. jemand bereits ein durch "crond" gestartetes Script aktiv, welches auf "openhabian" per "openhab-cli" Befehle ausführt?
--
Rudolf E. Steiner
res-1@communicate.at

Antworten