Skriptdebugging/Logging

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Benutzeravatar
trood
Beiträge: 42
Registriert: 21.03.2017, 11:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erkrath
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Skriptdebugging/Logging

Beitrag von trood » 22.01.2022, 18:12

Ich benutze zur Entwicklung neuer Homematic scripts das Skriptparser-AddOn und in den scripts dann tonnenweise WriteLine als Debugging-Hilfe fürs stdout. Nicht HighTech, aber es erfüllt immerhin seinen Zweck.

Dazu hab ich zwei Fragen:
- geht das auch "besser/schöner"
- wie kann ich das Logging dauerhaft so bauen, dass es auch später funktioniert, wenn die Programme auf der CCU eventgesteuert ablaufen - ich habe noch nicht rausbekommen, wie ich den stdout generisch z.B. zu einem syslog oder weblogging weiterleiten kann. gibt es da was "fertiges" als plugin oder muss ich mir mit CuxD-exec-curl aushelfen, um die Logs von der CCU in Echtzeit rauszubekommen?

Danke für Anregungen!
LG
Thorsten
LG
Thorsten

MichaelN
Beiträge: 9561
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Skriptdebugging/Logging

Beitrag von MichaelN » 22.01.2022, 18:24

Mächtigstes Werkzeug : SDV von Black
Ansonsten findest du in meiner Signatur noch ein paar Tipps.
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 +++

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: Skriptdebugging/Logging

Beitrag von [sprotte80] » 22.01.2022, 18:56

Hi
MichaelN hat geschrieben:
22.01.2022, 18:24
Mächtigstes Werkzeug : SDV von Black
noch mächtiger: Hm-Internal
https://forum.fhem.de/index.php/topic,82923.0.html

live-Syslog-Fehler-Meldungen
live-Rpc-Events
live-Systemprotokoll
Echtzeit-Schritt-für-Schritt-Debugger

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Benutzeravatar
trood
Beiträge: 42
Registriert: 21.03.2017, 11:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erkrath
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Skriptdebugging/Logging

Beitrag von trood » 22.01.2022, 19:07

oh danke! Schau ich mir beide gerne mal an. Was ich aber noch nicht kapiert habe: wie kommt das WriteLine dann mal in irgendein brauchbares (externes) Log-System, wenn die Scripts dann auf der CCU ausgeführt werden? Interaktiv im Editor reicht eben nicht. Hab ich was übersehen?
LG
Thorsten

MichaelN
Beiträge: 9561
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Skriptdebugging/Logging

Beitrag von MichaelN » 22.01.2022, 19:11

[sprotte80] hat geschrieben:
22.01.2022, 18:56
noch mächtiger
Ja, wenn man auf Kotau steht.
trood hat geschrieben:
22.01.2022, 19:07
wie kommt das WriteLine dann mal in irgendein brauchbares (externes) Log-System
Du kannst die Ausgabe einer protokollierten Systemvariable zuweisen oder ins Fehlerprotokoll schreiben lassen (über System.Exec)
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 +++

[sprotte80]
Beiträge: 331
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 23 Mal

Re: Skriptdebugging/Logging

Beitrag von [sprotte80] » 22.01.2022, 19:54

Hi
MichaelN hat geschrieben:
22.01.2022, 19:11
Ja, wenn man auf Kotau steht.
Hätte ich bei SDV vom Black tun sollen und nicht fehler melden.
SDV-Fehler melden und Docu schreiben tun == sperrung im SDV

mit logger in system.Exec tust du ins syslog schreiben.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

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

Re: Skriptdebugging/Logging

Beitrag von Baxxy » 22.01.2022, 20:16

Wie schon geschrieben wurde, mit CUxD oder System.Exec per logger ins syslog (/var/log/messages) schreiben. Log entweder direkt per ssh auf der Zentrale mit tail begutachten oder über eine Einstellungen in der Systemsteuerung an einen Syslog-Server weiterleiten und dort verarbeiten.
Zuletzt geändert von Baxxy am 22.01.2022, 20:24, insgesamt 1-mal geändert.

Benutzeravatar
trood
Beiträge: 42
Registriert: 21.03.2017, 11:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erkrath
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Skriptdebugging/Logging

Beitrag von trood » 22.01.2022, 20:19

Die Idee mit der protokollierten Variable finde ich gut, vielen Dank.

Hab das gerade mal ausprobiert, aber im SysLog finde ich im Klartext weder den Inhalt, noch den Namen der Variablen im betroffenen Zeitfenster - wohl aber bspw. den Namen des auslösenden Programms. Gibt es da einen Trick, wie var.State("content"); wirklich auch extern ankommt?

system.Exec ist doch die "böse" Funktion, oder?

Dann gucke ich mir mal den CUxD Syslog an, ob das besser klappt.
LG
Thorsten

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

Re: Skriptdebugging/Logging

Beitrag von alchy » 22.01.2022, 21:28

Lass dir nichts einreden.
Du kannst gern ohne "die beiden mächtigen" Werkzeuge das Scripten erlernen, dann erlernst du es wahrscheinlich besser wie viele andere hier mit den Tools. :mrgreen:
Das eine Werkzeug basiert ja auf dem anderen zumindest anfänglich. :roll:

aber mal zum Thema
In das Fehlerprotokoll kann man auf die verschiedenste Wege etwas eintragen. Mittlerweile wurde ds schon zigmal kopiert.

Mal zwei Möglichkeiten einmal mit system.exec und einmal mittels CUxD.
( PS: System.exec ist mittlerweile nicht mehr gaaanz so böse wie vor ein paar Jahren.)

Man könnte logger benutzen

Code: Alles auswählen

! Schreiben ins Systemfehlerprotokoll
! https://homematic-forum.de/forum/viewtopic.php?f=43&t=72261&p=702401#p702401
string slist = " der String soll ins Fehlerprotokoll ";
string stdout;string stderr; system.Exec("logger -t script -p user.debug [1. Alchy sagt mit System.Exec: "#slist#" - Script  durch ]", &stdout, &stderr);
!oder
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [2. ALCHY SAGT mit CUXD: " #slist #" - Script durch ]"); 
eine weitere Möglichkeit ist aber auch z.B. SYSLOG von CUxD direkt zu benutzen:

Code: Alles auswählen

string slist = " der String soll auch noch ins Fehlerprotokoll ";
dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State("[3. Alchy sagt mit SYSLOG:  "#slist #" - Script durch ]");

Im Systemprotokoll (hat nichts mit dem o.g. >> Fehlerprotokoll << zu tun)
geht das unter anderen auch mit einer protokollierten Systemvariable.
trood hat geschrieben:
22.01.2022, 20:19
Hab das gerade mal ausprobiert,
Wenn du Probleme mit Scripten hast, dann poste diese - oder zumindest einen lauffähigen Teil davon - in Codetags eingebettet.


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
trood
Beiträge: 42
Registriert: 21.03.2017, 11:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erkrath
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Skriptdebugging/Logging

Beitrag von trood » 22.01.2022, 21:36

das CUxD-Pendant hat bei mir sofort funktioniert. Das reicht mir völlig so, zumal auch die LogFacility sich dadurch ändert und man aufm syslog so viel besser vorab filtern kann. Danke.

PS: meine Rolladensteuerung ist schon fertig gescriptet - ich häng nur seit einiger Zeit beim Logging/Debugging in der Luft. Passt für mich jetzt. Und mir reicht mein vorhandenes Syntax-Highlightning im N++.
LG
Thorsten

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“