Yeah!
So jetzt funktioniert es!
Besonderen Dank an thomas_w und peter-pan für eure Ideen und natürlich alle anderen die sich hier beteiligt haben!
Hier nun die "Doku" zum Projekt:
Ziel war es die Laufzeit von OpenHab in der UI anzeigen zu lassen.
Wenn man in der Konsole den Befehl "openhab-cli status" absetzt bekommt man diese Ausgabe zurück:
Code: Alles auswählen
A systemd service configuration exists...
Use 'sudo /bin/systemctl status openhab2.service' to find the status of an openHAB service
openHAB is running with PID: 2066 and has been running for 82-11:36:28
Am Ende steht die Laufzeit von OpenHab: 82 Tage 11 Stunden 36 Minuten 28 Sekunden.
Und das möchte ich in die Sitemap bringen.
Zunächst nutze ich das exec Binding um den Befehl "openhab-cli status" abzusetzen
Hier das thing für das exec Binding:
Code: Alles auswählen
Thing exec:command:openhabuptime2 [command="openhab-cli status", interval=3600, timeout=5] //OpenHab Uptime
Hierzu benötigen wir zwei Items.
Das erste Item bekommt als String was der Befehl "openhab-cli status" zurück gibt.
Das zweite Item bekommt dann über eine Rule den Konkatenierten String der Werte für die Sitemap.
Hier die Items:
Code: Alles auswählen
String BefehlOutputOpenHabUptime "Rückgabewert" {channel="exec:command:openhabuptime2:output"}
String OpenHabUptime "OpenHab uptime [%s]"
Und hierzu die Rule:
Code: Alles auswählen
// https://openhabforum.de/viewtopic.php?f=15&t=3855
rule "OpenHab Uptime"
when
Item BefehlOutputOpenHabUptime changed
then
// Suche nach 'running for'
var newValue = BefehlOutputOpenHabUptime.state.toString.split('running for ').get(1).trim
newValue = newValue.substring(0,11)
// log das Ergebnis
logInfo('OpenHab Uptime String:',newValue)
val Tage = newValue.split('-').get(0).trim
val Zeit = newValue.substring(3,11)
val Stunden = Zeit.split(':').get(0).trim
val Minuten = Zeit.split(':').get(1).trim
// log das Ergebnis
logInfo('OpenHab Uptime Tage:',Tage)
logInfo('OpenHab Uptime Zeit:',Zeit)
logInfo('OpenHab Uptime Stunden:',Stunden)
logInfo('OpenHab Uptime Minuten:',Minuten)
// post the new value to the Item
OpenHabUptime.postUpdate((( Tage + " DAYS, ") + (Stunden + " HOURS, ")) + ((Minuten + " MINUTES" )))
end
Die Log ausgaben kann man später noch Auskommentieren.
Und so sieht das dann in der Sitemap aus:
Gruß Peter