Auslöser eines Programmes finden und loggen

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

Moderator: Co-Administratoren

tomdler
Beiträge: 7
Registriert: 10.11.2018, 15:14
Hat sich bedankt: 1 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von tomdler » 13.06.2019, 19:34

Vielen Dank für die schnelle Antwort, habe es nun an verschiedenen Stellen Integriert leider funktioniert es nicht.
Die Systemvariable Anwesenheit habe ich selbst angelegt. Der Klarnamenbug hat wohl auf meiner CCU2 zugeschlagen.
Habe es auch schon mit der ID versucht ohne Erfolg.
Dateianhänge
Systemvariable.jpg
Systemvariable 2.jpg
--------------------------------------------
205 Kanäle und 917 Datenpunkte in 30 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-FSM16, 1x HmIP-SLO, 1x HmIP-STHO, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 4x HM-MOD-Re-8, 2x HmIP-SRH, 2x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HmIP-eTRV-2, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-RCV-50, 3x HMIP-PS, 1x HmIP-PDT, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

alchy
Beiträge: 9542
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 215 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 13.06.2019, 21:09

tomdler hat geschrieben:
13.06.2019, 19:34
Vielen Dank für die schnelle Antwort, habe es nun an verschiedenen Stellen Integriert leider funktioniert es nicht.
Wie kommt man auf so was. Man probiert es doch erstmal aus und dann integriert man es.
tomdler hat geschrieben:
13.06.2019, 19:34
Die Systemvariable Anwesenheit habe ich selbst angelegt. Der Klarnamenbug hat wohl auf meiner CCU2 zugeschlagen.
Habe es auch schon mit der ID versucht ohne Erfolg.
3 Sätze die sich gegenseitig ausschließen. :shock:
Wenn du die Systemvariable Anwesenheit selbst angelegt hast, dann kannst du vom Klarnamenbug zumindest bezüglich der Systemvariable nicht betroffen sein.
Weil nämlich der Klarnamenbug nur auf die originale Systemvariable Anwesenheit mit der ISE_ID 950 zutrifft, deren Name dann eben nicht Anwesenheit sondern ${sysVarPresence} wäre . Somit würde ein Script welches auf das Objekt Anwesenheit zugreift dieses nicht finden, weil es ja nicht so heißt. Zig mal beschrieben, die Suche nach Klarnamenbug sollte Beiträge meinerseits bringen.
UND
Wenn du vom Klarnamenbug betroffen wärst würde die Verwendung der ISE_ID statt des Namens trotzdem funktionieren, sofern diese natürlich korrekt ist.

Also zurück auf Anfang und schauen was da los ist. Da kommen wir dann zu deinem Browserbild wo der halbe Befehl und völlig sinnloser Weise eine interne IP Adresse geschwärzt ist. Was willst du mir damit sagen? Für Rätselraten helfe ich hier nicht mehr.

Was wird ausgegeben, wenn du das folgende Script ausführst unter Script testen bzw. im Script Executer usw.

Code: Alles auswählen

string slist = "Testmail von Alchy";
object oSysvar = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Anwesenheit");
if( (oSysvar) && (slist!="") && (!oSysvar.Value()) )
{
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01 '"#slist# "'"); 
WriteLine("Mail raus");}else{WriteLine("Pustekuchen weil Systemvariable nicht da oder: "#oSysvar.Name()#" ist :" #oSysvar.Value());
}
Alchy

.................... 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.

tomdler
Beiträge: 7
Registriert: 10.11.2018, 15:14
Hat sich bedankt: 1 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von tomdler » 13.06.2019, 22:05

Ausgabe:

Pustekuchen weil Systemvariable nicht da oder: Anwesenheit ist :true
--------------------------------------------
205 Kanäle und 917 Datenpunkte in 30 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-FSM16, 1x HmIP-SLO, 1x HmIP-STHO, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 4x HM-MOD-Re-8, 2x HmIP-SRH, 2x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HmIP-eTRV-2, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-RCV-50, 3x HMIP-PS, 1x HmIP-PDT, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

alchy
Beiträge: 9542
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 215 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 13.06.2019, 22:16

Dann wird keine Mail verschickt, weil du anwesend bist.
das Gute: es gibt also durchaus eine Systemvariable Anwesenheit.

Wenn du die Variable Anwesend auf nicht anwesend setzen würdest, würdest du auch mit dem Testscript eine Mail erhalten bei nochmaliger Ausführung. korrekt? Nein?
Was gibt das Script aus?
Was steht im Fehlerprotokoll?

was mich dann zur überfälligen Frage treibt:
du hast cuxd.exec korrekt installiert?
das Mailaddon ist installiert, korrekt konfiguriert und funktioniert?

Alchy

.................... 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.

tomdler
Beiträge: 7
Registriert: 10.11.2018, 15:14
Hat sich bedankt: 1 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von tomdler » 14.06.2019, 17:49

Ja, ist alles installiert und funktioniert auch.
********
Ausgabe:
Mail raus

Ist auch angekommen:
Testmail von Alchy
MfG
Deine Zentrale
*********
Habe das Script und den Anhang zum Verschicken der E-Mail erneut an entsprechende Stelle im Dann-Bereich kopiert.

Jetzt wird keine Mail mehr versendet, wenn ich anwesend bin.

Danke für Deine Hilfe.
--------------------------------------------
205 Kanäle und 917 Datenpunkte in 30 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-FSM16, 1x HmIP-SLO, 1x HmIP-STHO, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 4x HM-MOD-Re-8, 2x HmIP-SRH, 2x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HmIP-eTRV-2, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-RCV-50, 3x HMIP-PS, 1x HmIP-PDT, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

SandyDE
Beiträge: 2
Registriert: 28.08.2019, 21:45

Re: Auslöser eines Programmes finden und loggen

Beitrag von SandyDE » 28.08.2019, 21:48

Hallo zusammen,

hab mich hier schon alles in meiner Macht probiert, aber was mache ich falsch wenn im Protokoll nur das hier steht:


Programm: DANN Alarmanlage durch Kanal: HmIP-SWDOxxxxxxxxxx SHUTTER_CONTACT mit DP: STATE mit dem Wert: 1 "" am: 28.08. 21:43 Uhr


Danke für einen kleinen Hinweis.


Liebe Grüße

g55
Beiträge: 108
Registriert: 02.10.2018, 19:24
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 23 Mal
Danksagung erhalten: 8 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von g55 » 28.08.2019, 22:06

@SandyDE, da machst du mMn. nix falsch :wink:
Das script unterstützt eben nicht den HMIP-Kontakt mit "offen/zu", nur den HM-Kontakt.
Der Unterschied ist, dass der HMIP-SWDO seinen Status eben als Zahl = Integer liefert, 0 = zu, 1 = offen. der HM-Kontakt liefert binäre Werte...
Is jedoch für mich kein Problem, bei dir mit "DP: STATE mit dem Wert: 1 " heißt das dann wohl : Fenster / Tür ist offen.
RPi3 v1.2 mit piVCCU3 3.51.6-39 (stable), MultiBoot mit PINN + Thin-LVM on RapbLite10, ca. 13 HM- und 64 HMIP-Geräte, Addons : CUxD, eMail, XML-API, JB-HB, CCU-Historian

alchy
Beiträge: 9542
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 215 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 29.08.2019, 11:22

SandyDE hat geschrieben:
28.08.2019, 21:48
hab mich hier schon alles in meiner Macht probiert, aber was mache ich falsch wenn im Protokoll nur das hier steht:
.
Ich geh mal von aus, das due wie von G55 vermutet die 1 meinst, wo du lieber offen oder geschlossen hättest?

Da muss ich mal etwas ausholen. Der Grundsatz das Scriptes war mal nur die Werte der Objekte anzugeben.
Dann kamen nach und nach Anfragen statt true und false oder auch 1 und 2 doch lieber offen und geschlossen, feucht, nass und trocken usw. auszugeben. Also hatte ich mal begonnen, dies so wartungsarm wie möglich zu integrieren. Natürlich sind dabei noch nicht alle Möglichkeiten erfasst.

UND

Dabei gibt es aber wieder den ein oder anderen Fallstrick.
Mit neueren Geräten kann man z.B. aber wieder selber einstellen, ob Meldung in Position offen offen der geschlossen sein soll usw. Statische Übersetzungen sind dann also wieder falsch. :twisted: Deshalb habe ich da auch nicht großartig weiter gemacht und hatte gehofft, das EQ-3 irgendwann mal die Methoden glattzieht. Die Methoden sind leider eben nicht überall gleich verwendet. Nimmt man z.b Systemvariablen, da geht es durch undokumentierte Methoden einfacher und wartungsarm.

Lange Rede....

Hab das mal zusätzlich in eine neue Version eingefügt, musst mal testen.



Alchy

.................... 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.

SandyDE
Beiträge: 2
Registriert: 28.08.2019, 21:45

Re: Auslöser eines Programmes finden und loggen

Beitrag von SandyDE » 30.08.2019, 22:15

Hallo zusammen,
oh, gleich eine neue Version des Scriptes :) vielen Dank

Soweit verstanden und mehr als verständlich. Kann ich ja nun auch selber pflegen, was nicht passt.

Jetzt sieht es so aus, nachdem ich auch die Kanäle umbenannt habe:

"Programm: DANN Alarmanlage durch Kanal: Türkontakt Eingangstür SHUTTER_CONTACT mit DP: STATE mit dem Wert: offen am: 30.08. 22:08 Uhr"

Kann man die roten Sachen auch noch übersetzen? bzw. das Dann kann doch weg oder ist das mit Absicht um zu erkennen aus Bedingung der Auslöser im Programm kommt?

Vielen Dank und liebe Grüße.

alchy
Beiträge: 9542
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 215 Mal

Re: Auslöser eines Programmes finden und loggen

Beitrag von alchy » 30.08.2019, 23:16

DANN ist der String den du gleich am Anfang des Scriptes verwendest.

Code: Alles auswählen

string slist = " DANN "; ! Bitte den Zweig, DANN oder SONST eingeben
machst du da ein

Code: Alles auswählen

string slist = ""; ! Bitte den Zweig, DANN oder SONST eingeben
draus ....



viel weiter unten kommt dann

Code: Alles auswählen

    slist = "Programm: "#slist #" durch Kanal: " #(dom.GetObject(dom.GetObject(src)).Channel()).Name() #" "#dom.GetObject(((dom.GetObject(src)).Channel())).HssType() #" mit DP: "#src.HssType() #" mit dem Wert: "#srcValue #" am: "#system.Date("%d.%m. %H:%M Uhr");
das kann man dann auch anpassen ungefähr z.B. in

Code: Alles auswählen

    slist = "Programm: "#slist #" durch Kanal: " #(dom.GetObject(dom.GetObject(src)).Channel()).Name()  #" mit dem Wert: "#srcValue #" am: "#system.Date("%d.%m. %H:%M Uhr");
Alchy

.................... 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.

Antworten

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