watch HistoryBuffer.csv (aka Systemprotokoll), Systemvariablen und div. sonstige Infos/Logs - außerhalb der WebGUI

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

mademyday
Beiträge: 272
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

watch HistoryBuffer.csv (aka Systemprotokoll), Systemvariablen und div. sonstige Infos/Logs - außerhalb der WebGUI

Beitrag von mademyday » 21.03.2022, 20:14

Hallo!

Es hat mich immer genervt, dass man im WebGUI soviel zwischen Skript testen, Programm erstellen und Programme ausführen hin- und herklicken muss - und wenn man dann sein Geskriptetes auch noch im WebGUI-Systemprotokoll gegenprüfen will, weil man dort ja alles so schön über protokollierte Systemvariablen rein loggen lassen kann, muss wieder das gerade editierte Program/Skript geschlossen werden und wieder etc klick grmlgrml usw

Der am Anfang genutzte "Hack" das WebGUI gleichzeitig in mehreren Browsertabs oder -Fenster zu öffnen, war auch keine gute Idee :) (so manch einer hier kann ein Lied von singen, wenn plötzlich Programme verdoppelt mit " 1"-Suffix auftauchen etc)

Deshalb habe ich ein tcl-Skript erstellt, welches sich regelmäßig das aktuelle HomeMatic-Systemprotokoll (HistoryBuffer.csv) lädt und im Browser anzeigt, unabhängig von einer parallelen produktiven WebGUI-Session...

Anmeldung an der CCU erfolgt im cgi-Skript per Default mit

Code: Alles auswählen

set ccu_user     "Admin"
set ccu_password ""
--> ggf anpassen!

=== Version 2023/04: show_logs ===
show_logs-230422.tgz
(195.56 KiB) 14-mal heruntergeladen
Edit 230430: Option zum dauerhaften, kontinuierlichen Speichern des HM-Systemprotokolls eingebaut:
1) Default Pfad: set HB_ARCHIVE_DIR "/var/tmp/HB_Archive"
2) Verzeichnis einmal anlegen: mkdir /var/tmp/HB_Archive
3) in crontab 2 Jobs anlegen:
3.1) stündlich Systemprotokoll-Tagessicherung fortschreiben

Code: Alles auswählen

59 *  * *  *  sleep $(( 15 + $RANDOM % 15 )); cd -Pfad-zu-show_logs.cgi-; \
     nice ./show_logs.cgi f="[rega] Systemprotokoll" SAVE2HB_ARCHIV=1 > /var/log/show_logs-Systemprotokoll-SAVE2HB_ARCHIV.log 2>&1
3.2) täglich Systemprotokoll-Tagessicherungen-Dateien mit gewissem Alter wieder löschen, hier eine Woche:

Code: Alles auswählen

58 00  * *  *  sleep $(( 15 + $RANDOM % 15 )); \
    nice find -Pfad-zu-HB_Archive-/ -type f -name "*-HistoryBuffer-complete.csv" -mtime +7 -exec rm -f {} \;
Screenshots/Beispiele s. viewtopic.php?f=31&t=73338&start=30#p765459

=== Version 2: show_logs ===
show_logs-220426.tgz
(184.35 KiB) 34-mal heruntergeladen
Edit 220426: Umgang mit Umlauten verbessert und html-Tags in Ausgabe entschärft
show_logs-220419.tgz
show_logs-220417.zip
show_logs-220414.zip

howto/"Installations"-Anleitung:
Archiv herunterladen und das enthaltene Verzeichnis komplett im addons/www-Ordner (/usr/local/etc/config/addons/www) entpacken

Code: Alles auswählen

/tmp # wget -q https://homematic-forum.de/forum/download/file.php?id=97... -O show_logs-...tgz
/tmp # rm  -rf  /usr/local/etc/config/addons/www/show_logs
/tmp # tar x -C /usr/local/etc/config/addons/www -z -f show_logs-...tgz

/tmp # /usr/local/etc/config/addons/www/show_logs/show_logs.cgi
Content-type: text/html

<!DOCTYPE html>
...

-> im Browser: http://ccu2ip-oder-name/addons/show_logs/show_logs.cgi
ok!
Da außer dem Systemprotokoll auch ein Blick auf die aktuellen Werte der Systemvariablen interessant sein kann - und ggf weitere System-Infos bzw -Logdateien - habe ich das Programm dahingehend erweitert. In einem Dropdown-Menü kann nun ausgewählt werden was in der filterbaren Tabelle angezeigt werden soll:
img1.jpg
img2.jpg
img4.jpg
...


=== Version 1: show_syslog_actual ===
show_syslog_actual-220324.zip
(198.56 KiB) 45-mal heruntergeladen
Edit 220324: umfassende "-Zeichen bei der Tabellen-Darstellung entfernt
Edit 220323.2: nun als Zip mit allen nötigen files
Edit 220323.1: regexp (dreckig) verdoppelt, um ggf auf ; statt , als Trennzeichen zu erkennen (RM vs CCU2) :)

Wenn das Skript zb als /usr/local/etc/config/addons/www/show_syslog_actual.cgi gespeichert wird, kann es im Browser unter der URL http://<ccu2-IP>/addons/show_syslog_actual.cgi geladen werden.
Archiv herunterladen und das enthaltene Verzeichnis komplett im addons/www-Ordner entpacken

Im Browser sieht es dann ungefähr so aus (gekürzt):
show_syslog_actual.jpg


Alte Versionen:
Dateianhänge
show_logs-220419.tgz
(181.11 KiB) 26-mal heruntergeladen
show_logs-220417.zip
(206.83 KiB) 32-mal heruntergeladen
show_logs-220414.zip
(208.68 KiB) 29-mal heruntergeladen
Zuletzt geändert von mademyday am 11.02.2024, 15:15, insgesamt 23-mal geändert.

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von MichaelN » 22.03.2022, 19:57

Ok, und was ist der Trick? Geht es nur auf der CCU2?
Weil auf meiner CCU3 sehe ich nur eine Ausgabe bis zur Kopfzeile der Tabelle. Danach kommt ncihts mehr.
Login Daten und IP habe ich natürlich angepasst.

Login und Abruf der Datei funktionieren wohl, wie der Output zeigt, aber die Tabelle wird nicht erstellt:

Code: Alles auswählen

<!-- # loginresponse: {"version": "1.1","result": "T8lQDHqlPi","error": null} -->
<!-- # version: 1.1, result: T8lQDHqlPi; -->
# HistoryBuffer.csv: 165911 Byte(s)<br>
<!-- # logoutresponse: {"version": "1.1","result": true,"error": null} -->
# HistoryBuffer.csv: 3252 Zeile(n)<br>
<p><!-pre>
<table id="table1" border=1 width="99%" align="center" 
       style="!-font-family: Consolas, Roboto Mono, Menlo, Courier New, Courier;">
<tr><th width=1%>Zeit</th><th width=1%>Kanal/Variable</th><th>Aktivitaet</th></tr>
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von alchy » 22.03.2022, 21:48

Nein das funktioniert natürlich auch auf einer CCU3.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von Baxxy » 22.03.2022, 23:15

MichaelN hat geschrieben:
22.03.2022, 19:57
auf meiner CCU3
Bist du wieder zurück-konvertiert? :wink:

Auf CCU3 geht das, auf RM nicht.

Ist aber auf jeden Fall ne praktische Sache.

Grüße, Baxxy

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von MichaelN » 23.03.2022, 00:05

Wieso geht es auf einer CCU3 unter RM nicht?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

mademyday
Beiträge: 272
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von mademyday » 23.03.2022, 04:18

Vielleicht mal in einer Terminal-Session (SSH) das tcl-Skript direkt ausführen (./show_syslog_actual.cgi - aus dem entsprechenden Verzeichnis heraus) - falls es mit einem Fehler abbricht sieht man hier die entsprechenden Meldungen...

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von Baxxy » 23.03.2022, 08:03

RM macht vermutlich an der Stelle irgendetwas anders...
RM:

Code: Alles auswählen

root@RM-Test-Pi3Bplus-27:~# /usr/local/etc/config/addons/www/show_syslog_actual.cgi
Content-type: text/html

<!DOCTYPE html>
<html>
<head>
  <title>myHM-SysLog: HistoryBuffer.csv</title>

  <!-- meta charset="utf-8" -->
  <meta http-equiv="Content-Language" content="de">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="pragma"        content="no-cache">
  <meta http-equiv="expires"       content="0">

  <!-- meta http-equiv="refresh" content="300;" -->
  <script type='text/javascript' language='javascript'>
    var myReload;

    function myActReload() {
      myReload = setTimeout( 'location.reload();', 60000 );
    }

    function myStopReload() {
      clearTimeout( myReload );
    }

    myActReload();
  </script>

  <script type='text/javascript' language='javascript' src='TableFilter/tablefilter.js'></script>

  <style>
    table {
      border-collapse: collapse;
    }

    td, th {
      border: 1px solid black;
      padding: 3px;
    }

    th { background-color: #EBECEE; !--lightgrey; }
  </style>
</head>
<body>
<p align=center>&nbsp;<br>
      <button id='But_ActReload'  style='display:none;' onclick="myActReload();
         document.getElementById('But_ActReload' ).style.display='none';
         document.getElementById('But_StopReload').style.display='';
         location.reload();"
      ><b>start</b> auto-refresh</button>
<button id='But_StopReload' style='display:;'     onclick="myStopReload();
         document.getElementById('But_ActReload' ).style.display='';
         document.getElementById('But_StopReload').style.display='none';"
      ><b>stop</b> auto-refresh</button>
<br>&nbsp;</p>
<!-- # loginresponse: {"version": "1.1","result": "QSmohM92NS","error": null} -->
<!-- # version: 1.1, result: QSmohM92NS; -->
# HistoryBuffer.csv: 23718 Byte(s)<br>
<!-- # logoutresponse: {"version": "1.1","result": true,"error": null} -->
# HistoryBuffer.csv: 241 Zeile(n)<br>
<p><!-pre>
<table id="table1" border=1 width="99%" align="center"
       style="!-font-family: Consolas, Roboto Mono, Menlo, Courier New, Courier;">
<tr><th width=1%>Zeit</th><th width=1%>Kanal/Variable</th><th>Aktivitaet</th></tr>
can't read "DATETIME": no such variable
    while executing
"string range $DATETIME 8 9"
    invoked from within
"if $lcomplete {
  # puts "<tr><td nowrap>[string range $DATETIME 2 end]</td>"
    puts "<tr><td nowrap>[string range $DATETIME 8 9].[string range $DAT..."
    ("for" body line 20)
    invoked from within
"for {set li 0} {[incr li] < [llength $lines]} {} { set l [lindex $lines $li] ; # --- vorwaerts!

  if [regexp {([^,]*),([^,]*),([^,]*),(.*),([^,]*),(...."
    (file "/usr/local/etc/config/addons/www/show_syslog_actual.cgi" line 157)
CCU3:

Code: Alles auswählen

# /usr/local/etc/config/addons/www/show_syslog_actual.cgi
Content-type: text/html

<!DOCTYPE html>
<html>
<head>
  <title>CCU3-Systemprotokoll</title>

  <!-- meta charset="utf-8" -->
  <meta http-equiv="Content-Language" content="de">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="pragma"        content="no-cache">
  <meta http-equiv="expires"       content="0">

  <!-- meta http-equiv="refresh" content="300;" -->
  <script type='text/javascript' language='javascript'>
    var myReload;

    function myActReload() {
      myReload = setTimeout( 'location.reload();', 60000 );
    }

    function myStopReload() {
      clearTimeout( myReload );
    }

    myActReload();
  </script>

  <script type='text/javascript' language='javascript' src='TableFilter/tablefilter.js'></script>

  <style>
    table {
      border-collapse: collapse;
    }

    td, th {
      border: 1px solid black;
      padding: 3px;
    }

    th { background-color: #EBECEE; !--lightgrey; }
  </style>
</head>
<body>
<p align=center>&nbsp;<br>
      <button id='But_ActReload'  style='display:none;' onclick="myActReload();
         document.getElementById('But_ActReload' ).style.display='none';
         document.getElementById('But_StopReload').style.display='';
         location.reload();"
      ><b>start</b> auto-refresh</button>
<button id='But_StopReload' style='display:;'     onclick="myStopReload();
         document.getElementById('But_ActReload' ).style.display='';
         document.getElementById('But_StopReload').style.display='none';"
      ><b>stop</b> auto-refresh</button>
<br>&nbsp;</p>
<!-- # loginresponse: {"version": "1.1","result": "7SchhHGvNl","error": null} -->
<!-- # version: 1.1, result: 7SchhHGvNl; -->
# HistoryBuffer.csv: 96 Byte(s)<br>
<!-- # logoutresponse: {"version": "1.1","result": true,"error": null} -->
# HistoryBuffer.csv: 1 Zeile(n)<br>
<p><!-pre>
<table id="table1" border=1 width="99%" align="center"
       style="!-font-family: Consolas, Roboto Mono, Menlo, Courier New, Courier;">
<tr><th width=1%>Zeit</th><th width=1%>Kanal/Variable</th><th>Aktivitaet</th></tr>
<tr><td nowrap>22.03. 22:52:13</td>
<td nowrap>SV_Protokoll</td>
<td !-style="word-wrap: break-word">TIMER_EVENT</td></tr>
</table></pre>
<script language='javascript' type='text/javascript'>var tf = setFilterGrid('table1',1);</script>
<p id="bottom" !-align="right">--- 22-03-23 08:01:03 ---
<script type='text/javascript'>setTimeout("window.scrollTo(0, document.getElementById('bottom').offsetTop);",500)</script>
<p>
<!-- import proc_urlencode.tcl failed: no download-button! -->
<script type='text/javascript'>
  function handleClick(cb) {
    if( cb.checked ) { document.getElementById('predata').style.display='';
              } else { document.getElementById('predata').style.display='none' }
  }
</script>
<input type='checkbox' onclick='handleClick(this);' name='showdata'> show data ...
<pre id="predata" style="display:none">CHANNEL-ID,CHANNEL,VALUE-ID,VALUE,UNIT,DATE TIME
,,SV_Protokoll,TIMER_EVENT,,2022-03-22 22:52:13</pre>
</body>
</html>
Auffällig bei RM:

Code: Alles auswählen

can't read "DATETIME": no such variable
Grüße, Baxxy

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von MichaelN » 23.03.2022, 08:28

Ist das Format der CSV unter OCCU und RM unterschiedlich?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

mademyday
Beiträge: 272
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von mademyday » 23.03.2022, 09:34

vielleicht einfach mal ein paar Muster-Zeilen der Logs von verschiedeben Systemen hier posten?

original CCU2:

Code: Alles auswählen

CHANNEL-ID,CHANNEL,VALUE-ID,VALUE,UNIT,DATE TIME
,,WZ_Temp,19.800000,,2022-03-23 09:20:15
,,WZ_Feucht,38.000000,,2022-03-23 09:20:20
,,Aussen_Temp,7.000000,,2022-03-23 09:20:25
,,Aussen_Feucht,71.000000,,2022-03-23 09:20:25
,,Aussen_Temp_max,7.000000,,2022-03-23 09:20:25
...

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: watch HistoryBuffer.csv - außerhalb der WebGUI (CCU2)

Beitrag von MichaelN » 23.03.2022, 10:15

RM:

Code: Alles auswählen

CHANNEL-ID;CHANNEL;VALUE-ID;VALUE;UNIT;DATE TIME
;;Rollo_Automatik;"0";;2022-01-16 12:54:59
;;Protokolleintrag;"ACHTUNG: Reboot der CCU - Status Balkontür aktualisieren";;2022-01-16 12:54:59
;;Protokolleintrag;" DANN Prg-ID: 3859 / Prg-Name: PGM_Bootprogramm / kein Ausloeser = nach CCU-Reboot (ReGaHss Neustart) oder durch Aktivieren gestartet = ";;2022-01-16 12:54:59
;;Licht_Automatik;"0";;2022-01-16 12:54:59
;;Protokolleintrag;"*PGM_Schatten-Level* 
 SONST (normale Beschattung)  durch  kein Ausloeser nach CCU-Reboot (ReGaHss Neustart) oder durch Aktivieren gestartet und dem Wert:
 um: 16.01. 12:55 Uhr";;2022-01-16 12:55:19
;;Protokolleintrag;"init value";;2022-01-16 12:55:21
;;Protokolleintrag;"NEUE Servicemeldung
Lichtsensor_WZ_West : 
hat Kommunikationsfehler 
seit: 16.01.22 12:55 (16.01.22 12:55)

";;2022-01-16 12:55:40
;;Licht_Automatik;"1";;2022-01-16 12:56:08
=> , vs ;
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“