Auslöser eines Programmes finden und loggen

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

Moderator: Co-Administratoren

sdkoenig
Beiträge: 45
Registriert: 15.09.2013, 20:58

Re: Auslöser eines Programmes finden und loggen

Beitrag von sdkoenig » 18.10.2019, 17:31

Hallo,

bräuchte doch Eure Hilfe. Habe versucht Hinweise zu meinem Problem zu finden, es zu Tracen und eine Lösung zu finden, aber ich komme nicht weiter.
Ich versuche einen auslösenden Wassersensor HmIP-SWD zu identifizieren.

Im Script werden
src = HmIP-RF.00189A498DD8B6:1.WATERLEVEL_DETECTED
und prg richtig ausgelesen

Bei src.ValueTypeStr() hätte ich INTEGER erwartet bekomme aber BINARY
und dom.GetObject(((dom.GetObject(src)).Channel())).HssType() liefert keinen Wert zurück.
Habe auch versucht hier den Fehler zu finden scheitere aber.

Jetzt hoffe ich könnte ihr mir helfen, das Script doch ans Laufen zu bekommen.

vg
Sebastian

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

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 18.10.2019, 18:31

Das Script sollte auch bei diesem Wassersensor etwas ermitteln:
Theoretisch würde ich bei Wasserstandsmeldung über den von dir benutzten Datenpunkt: HmIP-RF.00189A498DD8B6:1.WATERLEVEL_DETECTED
die Ausgabe

Programm: DANN DEINPROGRAMMNAME durch Kanal: DEINWASSERMELDERKANAL1 WATER_DETECTION_TRANSMITTER mit DP: WATERLEVEL_DETECTED mit dem Wert: true am: 18.10. 18:00 Uhr


erwarten.
Ist es so?
Nein - dann muss ich mal schauen.
Ja - was gefällt dir daran nicht?

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.

sdkoenig
Beiträge: 45
Registriert: 15.09.2013, 20:58

Re: Auslöser eines Programmes finden und loggen

Beitrag von sdkoenig » 27.10.2019, 21:40

Hi Alchy,

würde die Ausgabe so kommen, wäre ich zufrieden - aber das ist sie leider nicht ;-)

Habe etwas gebraucht die Zeit zu finden / zu bekommen mir noch mal das Script anzusehen.
Hier was ich rausgefunden habe:
Es handelt sich um ein: HmIP-SWD
Nach deinem Script sollte / müsste src.ValueTypeStr() = Integer sein, ist aber Binary.
Damit versucht das Script das zuevaluieren: (dom.GetObject(((dom.GetObject(src)).Channel())).HssType() -> schlägt aber fehlt :-(

Hier die Werte die ich ermitteln konnte:
srcValue = true
src.TypeName() = "HSSDP"
src.ValueTypeStr() = Binary
src.HssType() = WATERLEVEL_DETECTED
(src.Value()).ToString(1)) = true
dom.GetObject(((dom.GetObject(src)).Channel())).HssType() -> führt zu Fehler.

Hoffe das hilft bei der Analyse.
Falls Du noch mehr Infos brauchst, lass mich wissen welche.

VG
Sebastian

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

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 27.10.2019, 22:21

sdkoenig hat geschrieben:
27.10.2019, 21:40
Nach deinem Script sollte / müsste src.ValueTypeStr() = Integer sein, ist aber Binary.
wie kommst du auf den Trichter und auf den Rest?
Wegen den Übersetzungszeilen ?

Code: Alles auswählen

if ( (src.ValueTypeStr() == "Integer") && (dom.GetObject(((dom.GetObject(src)).Channel())).HssType() == "WATERDETECTIONSENSOR") ) {
   if (src.Value() == 0 ) { srcValue = "trocken"; }
   if (src.Value() == 1 ) { srcValue = "feucht"; }
   if (src.Value() == 2 ) { srcValue = "nass"; }
Die sind nicht für den Sensor sondern für den alten HM-Sec-WDS. So wie du augenscheinlich denkst funktioniert das Script nicht.
Eigentlich wollte ich da nie eine Übersetzung einbauen, ein paar sind es doch geworden just4fun.
Es werden nicht alle Datenpunkte übersetzt, aber trotzdem sollten alle Datenpunkte oder Auslöser eines Programms generell zu einer Ausgabe führen. :!: Da hat sich noch nie jemand gemeldet, das ein Auslöser nicht ermittelt worden wäre. (Kann natürlich sein, das das Script nicht so viele USer einsetzen) :oops:


Ich würde dich also bitten dein Programm zu posten wo du dieses Script einsetzt und wo es angeblich keine Ausgabe erzeugt wird
Dazu bitte dann das Systemprotokoll, wo ersichtlich ist das es grundsätzlich funktioniert.
Sprich du löst das besagte Programm erst manuell aus (das erzeugt einen Eintrag manuell ausglöst) und dann löst du den Wassermelder aus.
Und sollte nichts im Systemprotokoll eingetragen werden, dann bitte das >> Fehlerprotokoll << vom Zeitpunkt der Auslösung +/- paar Sekunden.

Danke

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.

sdkoenig
Beiträge: 45
Registriert: 15.09.2013, 20:58

Re: Auslöser eines Programmes finden und loggen

Beitrag von sdkoenig » 19.11.2019, 16:27

@Alchy: schon mal Danke für die schnelle Hilfe - leider kann ich mich nicht so oft um das System kümmern, wie ich gern würde :roll:

alchy hat geschrieben:
27.10.2019, 22:21
wie kommst du auf den Trichter und auf den Rest?
Wegen den Übersetzungszeilen ?
Die sind nicht für den Sensor sondern für den alten HM-Sec-WDS. So wie du augenscheinlich denkst funktioniert das Script nicht.
Eigentlich wollte ich da nie eine Übersetzung einbauen, ein paar sind es doch geworden just4fun.
genau, aber nicht weiter erzählen :?
alchy hat geschrieben:
27.10.2019, 22:21
Ich würde dich also bitten dein Programm zu posten wo du dieses Script einsetzt und wo es angeblich keine Ausgabe erzeugt wird
Dazu bitte dann das Systemprotokoll, wo ersichtlich ist das es grundsätzlich funktioniert.
Bildschirmfoto 2019-11-19 um 16.23.05.png
Das Script hatte ich zuvor noch mal aus dem Programm gelöscht und neu aus diesem Thread kopiert "! v 0.92 ", damit ich sicher gehe, dass meine Tests und Versuche nichts kaputt gemacht haben

Manuell ausgelöst:
Bildschirmfoto 2019-11-19 um 16.19.53.png
Bildschirmfoto 2019-11-19 um 16.19.38.png
...sieht glaube ich gut aus oder?

Dann den Wassersensor ins Wasser:
Bildschirmfoto 2019-11-19 um 16.20.40.png
Bildschirmfoto 2019-11-19 um 16.20.58.png
Sollte ja anders aussehen und an dem "++++ Finger weg ++++++++" Teil war ich diesmal nicht dran

... wo muss ich suchen?

JensDev
Beiträge: 19
Registriert: 10.03.2020, 11:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von JensDev » 17.03.2020, 18:07

Hallo alchy,

versehen oder gewollt - irgendwann zwischen v0.8 und v0.92 ist beim Loggen der manuellen Auslösung der Name des WebUI-PGM verloren gegangen?
Bei mir habe ich das so angepasst:

Code: Alles auswählen

 }
 else
 {
-  slist = slist # " manuell am: "#system.Date("%d.%m. %H:%M Uhr")#" ausgeloest";
+  slist = prg.Name() # slist # " manuell am: "#system.Date("%d.%m. %H:%M Uhr")#" ausgeloest";
 }
Vielen Dank für das Skript - ohne hätte ich die Sonderfälle meiner Sonnenschutz-Logik nie prüfen und nachvollziehen können!

Viele Grüße
Jens

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

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 17.03.2020, 19:31

Nö, das war nicht so gewollt, sorry. :oops:
Danke fürs Melden.

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.

PHundhausen
Beiträge: 107
Registriert: 20.02.2019, 10:42
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 4 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von PHundhausen » 07.04.2020, 18:14

Hallo zusammen,

habe das Script installiert und es funzt gut !

Jetzt würde ich gerne einen bereits gemachten Vorschlag aufgreifen, daß die Protokollierung nur dann erfolgt, wenn der Programmname auf " <LOG>" endet.

Mir ist klar, daß ich nur die letzte Zeile

if ( (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(sysvarOut) ) { dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarOut).State( slist ); }

in eine entsprechende Bedingung zu packen brauche, allerdings stelle ich mich zu blöd an, die formal richtige Bedingung in das Script zu bringen. Könnt ihr bitte helfen ?

Schon mal vielen Dank !
------------------------------------------
Stand 27.01.2024:

Home (RaspberryMatic auf RP4 mit HB-RF-ETH): 1203 Kanäle in 202 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten
Office (RaspberryMatic auf CCU3): 359 Kanäle in 51 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
------------------------------------------

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

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 07.04.2020, 19:15

Das verstehe ich nicht :oops:
Du legst doch selber fest in welchen Programm du das Script ausführen willst.
Kopierst du das Script nur in die Programme, deren Name <LOG>enthält.

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.

PHundhausen
Beiträge: 107
Registriert: 20.02.2019, 10:42
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 4 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von PHundhausen » 07.04.2020, 22:51

Ne, ich würde gerne eine andere Vorgehensweise wählen.

Hintergrund: Ich habe den Scriptaufruf zuerst einfach hinten an den "Dann" Part angehängt, mit dem Ergebnis, daß ich falsche Infos über den Auslöser zurück bekommen habe, da der Auslöserwert im Dann-Part angepaßt wird.

Also hab ich jetzt zahlreiche Programme umgeschrieben, sodaß die Scriptausführung der erste Befehl im jeweiligen Dann-Part ist. Und ich will die Programme ja nicht jedesmal wieder umgruppieren müssen, wenn ich das Logging für dieses Programm gezielt an- oder abschalten möchte.

Übrigens hab ich Dank eures Programmes schon meinen schlimmsten Verursacher gefunden, der meinen Duty Cycle auf 99% gepusht hat.

Du brauchst auch das Script nicht zu ändern, es würde mir reichen, wenn du mir hier als Post die richtige Syntax postest, dann übernehme ich das allein in die Scripte bei mir.
------------------------------------------
Stand 27.01.2024:

Home (RaspberryMatic auf RP4 mit HB-RF-ETH): 1203 Kanäle in 202 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten
Office (RaspberryMatic auf CCU3): 359 Kanäle in 51 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
------------------------------------------

Antworten

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