OpenHab Uptime in der Sitemap ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

Hallo zusammen,

wenn man über SSH in der Konsole folgendes eingibt:

Code: Alles auswählen

sudo openhab-cli status
Bekommt man diese Ausgabe:

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 79-06:22:39
Ich nehme an das "79-06:22:39" bedeutet ?
Also 79 Tage und 6 Stunden 22 Minuten 39 Sekunden.

Oder wenn ich eingebe:

Code: Alles auswählen

sudo /bin/systemctl status openhab2.service
Kommt u.a. folgendes zurück:

Code: Alles auswählen

Active: active (running) since Tue 2020-05-19 10:29:17 CEST; 2 months 18 days ago
Lässt sich das auf der Sitemap zur Anzeige bringen ?

Gruß Peter
von PeterA » 9. Aug 2020 22:20
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:
Bild

Gruß Peter
Gehe zur vollständigen Antwort
- OpenHab 2.4
#PWRUP

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

OpenHab Uptime in der Sitemap ?

Beitrag von udo1toni »

Klar geht das. Zunächst aber solltest Du wissen, dass man für systemctl status kein sudo braucht, es reicht also ein

Code: Alles auswählen

systemctl status openhab2
Ja, auch das .service kann man einfach weg lassen.
Nun kommt da ja viel mehr zurück, als nur die Startzeit.

Der erste Teil der Aufgabe ist also, per exec Binding den Befehl abzusetzen. Dann musst Du den Output Channel mit einem String Item verknüpfen. Ich sitze gerade nicht an einem passenden Rechner... kannst Du direkt eine Transformation im Channel setzen? Vermutlich eher nicht...
Macht aber nichts, Der Output ist ja schon mal im Item, dann brauchst Du noch eine Rule, in der Du per REGEX Transformation den betreffenden Teil extrahierst und in ein zweites Item per postUpdate einfügst. Dieses zeigst Du dann an.

Denke auch an die whitelist, in der die Befehlszeile identisch eingefügt werden muss.

Gesendet von iPad mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

Hallo Udo,

danke für deinen Tipp.

thing:

Code: Alles auswählen

Thing exec:command:openhabuptime2 [command="openhab-cli status", interval=60, timeout=5] //OpenHab Uptime
item:

Code: Alles auswählen

String BefehlOutput	"Rückgabewert"	 {channel="exec:command:openhabuptime2:output"}
Bringt dann im Log:

Code: Alles auswählen

BefehlOutput changed from 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 80-06:57:25 to 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 80-06:58:25
Das funktioniert schon mal. :D

Nun wie bekomme ich "80-06:58:25" in 80 Tage, 6 Std, 58 min umgewandelt.
Mit Regex hab ich noch nichts gemacht und ich verstehe noch nicht wie man da "extrahiert"

Gruß Peter
- OpenHab 2.4
#PWRUP

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von peter-pan »

Hallo Peter,
ich weiss leider auch nicht wie Regex so richtig funktioniert. Hast du schon mal "split" in einer Regel ausprobiert ? Als ersten Split würde ich dann "and has been running for " nehmen, usw. Ich hab das allerdings nicht ausprobiert, also nur Theorie und vielleicht etwas amateurhaft.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

thomas_w

Re: OpenHab Uptime in der Sitemap ?

Beitrag von thomas_w »

PeterA hat geschrieben: 7. Aug 2020 17:31 Bringt dann im Log:

Code: Alles auswählen

BefehlOutput changed from 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 80-06:57:25 to 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 80-06:58:25
Im dem Output steht eigentlich zweimal der gesuchte Wert 80-06:57:25 Würde nicht einmal genügen?

Der REGEX könnte so aussehen (glaub jetzt nicht, dass ich das vollständig verstanden habe, habe nur ein passendes Beispiel gefunden)

Code: Alles auswählen

\b[\w.!#$%&’*+\/=?^`{|}~-]+-[\w-:]+(?:\.[\w-]+)*\b
Der liefert dann zweimal diesen String zurück 80-06:58:25
Das weitere wäre dann wohl eine Formatierung im numerischen Item

REGEX ausprobieren läßt sich prima hier:
https://regexr.com/
openhab-regex-aus-text.JPG
Grüße
Thomas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

kurtharders
Beiträge: 18
Registriert: 17. Apr 2020 15:10
Answers: 0

Re: OpenHab Uptime in der Sitemap ?

Beitrag von kurtharders »

Hallo,

um die Startzeit zu erahlten kann man die Befehlszeile

Code: Alles auswählen

systemctl status openhab2 | grep running | sed 's/.*since \(.*\);.*/\1/'
nutzen. Erklärung: status mit systemctl ausgeben, mit grep die Active:-Zeile herausschneiden, mit sed die Zeichen die zwischen den Klammern stehen ausgeben lassen.
Wenn man die Laufzeit genau haben will, wird es etwas komplizierter. Wenn es jemand braucht setze ich mich gerne an den awk ;) .

Grüße, Kurt
Heimautomation im 3. und 4.OG
CCU3 auf RPi 3 Raspimatic
CCU Repeater über Kabel angebunden
Hue Bridge
CCU2 im EG für Hastür und Licht

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von udo1toni »

Sehr gute Idee, das schon auf Konsolenebene herunterzubrechen.

Oftmals gibt es Mit dem Exec Addon Probleme, wenn die Befehlszeile zu komplex wird. Dann böte es sich an, das Ganze in ein Mini Bash Script auszulagern, welches dann schon den korrekten wert zurück liefert. von Exec aus reicht dann ein simpler Aufruf des Scripts.


Gesendet von iPad mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

kurtharders
Beiträge: 18
Registriert: 17. Apr 2020 15:10
Answers: 0

Re: OpenHab Uptime in der Sitemap ?

Beitrag von kurtharders »

Dann sollten wir ein kleines Skript vereinbaren, welches mit einem Parameter verschiedene Varianten liefert. Z.B.
ohuptime -s Uptime in Sekunden
ohuptime -h Uptime in Stunden
ohuptime -hm Uptime in Stunden und Sekunden.

Ich habe noch nicht nachgeschaut, ob man auf die Formatierung wie bei date zurückgreifen kann. Das wäre dann universell.
Ich mache mich mal an dieses Skript in bash oder evtl. python3

Grüße, Kurt
Heimautomation im 3. und 4.OG
CCU3 auf RPi 3 Raspimatic
CCU Repeater über Kabel angebunden
Hue Bridge
CCU2 im EG für Hastür und Licht

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von peter-pan »

thomas_w hat geschrieben: 8. Aug 2020 08:47 Im dem Output steht eigentlich zweimal der gesuchte Wert 80-06:57:25 Würde nicht einmal genügen?
Ich denke das sind 2 Log-Ausgaben. Einer um 80-06:57:25 und der andere um 80-06:58:25, also eine Minute später, so wie im Thing definiert. Also könnte dein Regex vielleicht funktionieren.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

peter-pan hat geschrieben: 8. Aug 2020 11:09
thomas_w hat geschrieben: 8. Aug 2020 08:47 Im dem Output steht eigentlich zweimal der gesuchte Wert 80-06:57:25 Würde nicht einmal genügen?
Ich denke das sind 2 Log-Ausgaben. Einer um 80-06:57:25 und der andere um 80-06:58:25, also eine Minute später, so wie im Thing definiert. Also könnte dein Regex vielleicht funktionieren.
Hi Peter,
ja so ist es. Im Item steht nur die "letzte" Zeile also auf den aktualisierten Wert.
- OpenHab 2.4
#PWRUP

Antworten