OpenHab Uptime in der Sitemap ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von peter-pan »

...das auf Konsolenebene herunter zu brechen ist schon eine gute Idee. Wenn du aber vorerst mit eine "Krücke" leben kannst, damit meine ich (Neustart "openHAB" == Neustart/Reboot RasPi), dann probier mal:

Code: Alles auswählen

[11:41:08] openhabian@openHABPi:~$ uptime -p
up 1 week, 1 day, 13 hours, 26 minutes
[11:41:16] openhabian@openHABPi:~$ uptime -s
2020-07-30 22:15:07
[11:41:23] openhabian@openHABPi:~$
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
PeterA
Beiträge: 1052
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:42 ...das auf Konsolenebene herunter zu brechen ist schon eine gute Idee. Wenn du aber vorerst mit eine "Krücke" leben kannst, damit meine ich (Neustart "openHAB" == Neustart/Reboot RasPi), dann probier mal:

Code: Alles auswählen

[11:41:08] openhabian@openHABPi:~$ uptime -p
up 1 week, 1 day, 13 hours, 26 minutes
[11:41:16] openhabian@openHABPi:~$ uptime -s
2020-07-30 22:15:07
[11:41:23] openhabian@openHABPi:~$
Ah.. uptime kenne ich. Nur die Parameter dahinter nicht. Wieder etwas gelernt :)
Ich bei mir ist es aber nicht so das RaspiUptime gleich OpenHab Uptime ist.

RaspiUptime:

Code: Alles auswählen

[11:47:57] openhabian@openHABianPi:~$ uptime
 11:50:21 up 417 days, 13:56,  1 user,  load average: 1,20, 0,82, 0,77
[11:50:21] openhabian@openHABianPi:~$ uptime -p
up 1 year, 7 weeks, 4 days, 13 hours, 57 minutes
[11:50:44] openhabian@openHABianPi:~$ 
OpenHab Uptime:

Code: Alles auswählen

 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 81-01:21:19
- OpenHab 2.4
#PWRUP

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von udo1toni »

Genau. uptime liefert die Zeit seit dem letzten Reboot des Systems. Üblicherweise weicht diese Zeit nur wenige Sekunden von der Uptime von openHAB ab (Je nach Leistung des Systems natürlich), allerdings kann man openHAB jederzeit mittels

Code: Alles auswählen

sudo systemctl restart openhab2
neu starten, und dann gibt es erhebliche Differenzen, die auch noch jedes mal größer werden, bis man den Rechner komplett neu startet. systemctl status ist also sicher die bessere Quelle für diesen Wert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

thomas_w hat geschrieben: 8. Aug 2020 08:47
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
Hallo Thomas,

ich habe nun mal eine Rule gebaut:

Code: Alles auswählen

rule "OpenHab Uptime"
  when
    Item BefehlOutputOpenHabUptime changed
 then
    // use the transformation service to retrieve the value
    val newValue = transform("REGEX", "\b[\w.!#$%&’*+\/=?^`{|}~-]+-[\w-:]+(?:\.[\w-]+)*\b", BefehlOutputOpenHabUptime.state.toString)

    // post the new value to the Item
    OpenHabUptime.postUpdate( newValue )
 end
Leider meckert VSC bei dem Regex rum:

Code: Alles auswählen

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
- OpenHab 2.4
#PWRUP

thomas_w

Re: OpenHab Uptime in der Sitemap ?

Beitrag von thomas_w »

PeterA hat geschrieben: 8. Aug 2020 20:59 Leider meckert VSC bei dem Regex rum:

Code: Alles auswählen

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
Ja stimmt, das OpenHAB Regex ist nicht identisch zu den öffentlichen Regex Validatoren. Die \ müssen mit \\ escaped werden und der Befehl muss mit .* beginnen und enden.

1. kleiner Schritt. Folgende Rules läuft technisch, liefer aber noch kein Ergebnis zurück. Ich bin weiter dran...

.rules

Code: Alles auswählen

// https://community.openhab.org/t/solved-help-on-regex/103231/5
// OpenHAB Regex ist nicht Standard Regex und kann nicht mit freien Validatoren verglichen werden
rule "OpenHab Uptime"
  when
    Item currentDateTime changed
 then
    // use the transformation service to retrieve the value
    val BefehlOutputOpenHabUptime = "BefehlOutput changed from A systemd service configuration exists...Use 'sudo /bin/systemctl status openhab2.service' to find the status of an openHAB serviceopenHAB 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"
    val newValue = transform("REGEX", ".*\\b[\\w.!#$%&’*+\\/=?^`{|}~-]+-[\\w-:]+(?:\\.[\\w-]+)*\\b.*", BefehlOutputOpenHabUptime )

    // log das Ergebnis
    logInfo('OpenHab Uptime:',newValue)
 end
logfile

Code: Alles auswählen

2020-08-09 11:29:59.844 [INFO ] [.internal.RegExTransformationService] - the given regular expression '^.*\b[\w.!#$%&’*+\/=?^`{|}~-]+-[\w-:]+(?:\.[\w-]+)*\b.*$' doesn't contain a group. No content will be extracted and returned!

2020-08-09 11:29:59.850 [INFO ] [arthome.model.script.OpenHab Uptime:] - 
Regex ist einfach toll, man kann Stunden damit verbringen.... :lol:

Grüße
Thomas

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von udo1toni »

Dir Grundform eines REGEX-Ausdrucks in openHAB sieht so aus:

Code: Alles auswählen

REGEX((.*))
Das liefert den gesamten String zurück. Dabei wird der Inhalt des geklammerten Ausdrucks zurückgeliefert.
Wenn man nun vorne und hinten etwas abschneiden will, muss man außerhalb der inneren Klammer etwas ergänzen:

Code: Alles auswählen

REGEX(.*eine Zeichenfolge(.*)noch eine Zeichenfolge.*)
Dieser Ausdruck liefert für diesen Text:

Code: Alles auswählen

Dies ist eine Zeichenfolge und dies ist noch eine Zeichenfolge!
als Ergebnis " und dies ist " zurück (man beachte die Leerzeichen vorne und hinten, sowie den Text vor und hinter den Schlüsselbegriffen)
Der REGEX Ausdruck muss immer als ganzes matchen, was fast immer bedeutet, dass man .* vor und hinter den Schlüsselzeichenfolgen angeben muss.
Aber wie oben erwähnt fände ich es wesentlich sinnvoller, den Ausdruck schon vorher innerhalb der Bash zu filtern, das macht die Angelegenheit in openHAB einfacher.
Man kann eine Schraube mit einem Hammer in die Wand bekommen, besser geeignet ist aber ein Schraubendreher.
Man kann auch einen Nagel mit einer Zange in die Wand hauen, da wäre der Hammer aber besser geeignet...

Oder anders: Nur, weil man ein Problem mit openHAB lösen kann, heißt das noch lange nicht, dass dieser Lösungsweg der beste ist.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

kurtharders hat geschrieben: 8. Aug 2020 10:24 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
Oder könnte man hier:

Code: Alles auswählen

Tue 2020-05-19 10:29:17 CEST
die vergangene Zeit bis Jetzt berechnen ?
- OpenHab 2.4
#PWRUP

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von peter-pan »

...also ich hab mal kurz 'ne Klammerung eingebaut (..auf Vredacht) und das hat gleich geklappt.

Code: Alles auswählen

// https://community.openhab.org/t/solved-help-on-regex/103231/5
// OpenHAB Regex ist nicht Standard Regex und kann nicht mit freien Validatoren verglichen werden
rule "OpenHab Uptime"
  when
    Item Dummy4 changed
 then
    // use the transformation service to retrieve the value
    val BefehlOutputOpenHabUptime = "BefehlOutput changed from A systemd service configuration exists...Use 'sudo /bin/systemctl status openhab2.service' to find the status of an openHAB serviceopenHAB 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"
    val newValue = transform("REGEX", ".*(\\b[\\w.!#$%&’*+\\/=?^`{|}~-]+-[\\w-:]+(?:\\.[\\w-]+)*\\b).*", BefehlOutputOpenHabUptime )

    // log das Ergebnis
    logInfo('OpenHab Uptime:',newValue)
 end

Code: Alles auswählen

2020-08-09 12:01:34.764 [INFO ] [arthome.model.script.OpenHab Uptime:] - 80-06:58:25
Ich hab' gestern aber auch mal mit "bash" herumgebastelt und das gleiche Ergebnis ( 80-06:58:25) rausgekriegt, das war aber aber nur "halbgar". Ich muss noch mal schauen, ob ich das noch finde und poste es dann. Vielleicht kann man da auch aufsetzen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von peter-pan »

So jetzt hab ich das Bash-Script wieder gefunden.

Code: Alles auswählen

#!/bin/bash
INPUT=$(openhab-cli status | grep -i 'running for' | tr -s ' ' | cut -d ' ' -f 12)
echo $INPUT
TEMP="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: 4510 and has been running for    80-06:57:25"
INPUT=$(echo $TEMP | grep -i 'running for' | tr -s ' ' | cut -d ' ' -f 30)
echo $INPUT
#
# Noch ein paar alternative Tests zum Nachdenken
string="A/B/C"
#echo $string | cut -d "/" -f3
echo $string | awk -F"/" '{ print $1}'
IFS="/" read -ra ADDR <<< "${string}"; echo ${ADDR[2]}
IFS="/" read -ra ADDR <<< "${string}"; echo ${ADDR[0]}
echo ${string##*/}
testout= echo $INPUT "Tage" | awk -F "-" '{ print $1}'
echo $testout
#
# Hier noch ein Beispiel mit "if", hat aber nichts mit
# diesem Script zu tun ... nur so als Gedankenanstoss
#
#    if [ -f /media/fritzbox-usb/CpuTempPi.txt ]
#    	then 
#    		INPUT=$(/bin/cat /media/fritzbox-usb/CpuTempPi.txt)
#    		echo $INPUT
#    	else
#    		INPUT="Fritz-Box nicht gemountet"
#    		echo $INPUT
#    fi		
Zeile 2 + 3 extrahieren den gewünschten String. Das Gleiche passiert in den Zeilen 4 + 5. Nur benutze ich hier eine Stringvariable zum Testen, deshalb auch der unterschiedliche Parameter im "cut"-Kommando, da der "grep"-Befehl hier ein anders Ergebnis liefert. Im ersten "grep", wird nur Zeile 3 der Ausgabe an den "cut" übergeben.

Der Rest ist Spielerei/Testerei und Überlegungen, ob damit was anzufangen ist, z.B. Arrays.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: OpenHab Uptime in der Sitemap ?

Beitrag von PeterA »

ok

so sieht nun die Rule aus:

Code: Alles auswählen

// https://openhabforum.de/viewtopic.php?f=15&t=3855
// https://community.openhab.org/t/solved-help-on-regex/103231/5
// OpenHAB Regex ist nicht Standard Regex und kann nicht mit freien Validatoren verglichen werden
rule "OpenHab Uptime"
  when
    Item BefehlOutputOpenHabUptime changed
 then
    // use the transformation service to retrieve the value
    val newValue = transform("REGEX", ".*(\\b[\\w.!#$%&’*+\\/=?^`{|}~-]+-[\\w-:]+(?:\\.[\\w-]+)*\\b).*", BefehlOutputOpenHabUptime.state.toString)

    // post the new value to the Item
    OpenHabUptime.postUpdate( newValue )
 end
Und im Item steht dann nun "82-03:45:37" und dann auch so in der Sitemap.

Aber wie bekomme ich das nun noch formatiert zu 82 Tage 03 Stunden 45 Minuten ?

Gruß Peter
- OpenHab 2.4
#PWRUP

Antworten