Auslöser eines Programmes finden und loggen
Moderator: Co-Administratoren
Re: Auslöser eines Programmes finden und loggen
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
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
-
- 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
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
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.
Re: Auslöser eines Programmes finden und loggen
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
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
-
- 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
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"; }
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)
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.
Re: Auslöser eines Programmes finden und loggen
@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
Manuell ausgelöst: ...sieht glaube ich gut aus oder?
Dann den Wassersensor ins Wasser: Sollte ja anders aussehen und an dem "++++ Finger weg ++++++++" Teil war ich diesmal nicht dran
... wo muss ich suchen?
genau, aber nicht weiter erzählenalchy hat geschrieben: ↑27.10.2019, 22:21wie 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.
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: ...sieht glaube ich gut aus oder?
Dann den Wassersensor ins Wasser: Sollte ja anders aussehen und an dem "++++ Finger weg ++++++++" Teil war ich diesmal nicht dran
... wo muss ich suchen?
-
- 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
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:
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
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";
}
Viele Grüße
Jens
-
- 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
Nö, das war nicht so gewollt, sorry.
Danke fürs Melden.
Alchy
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.
-
- 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
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 !
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:
------------------------------------------
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:
------------------------------------------
-
- 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
Das verstehe ich nicht
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
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.
-
- 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
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.
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:
------------------------------------------
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:
------------------------------------------