HM Alarmfunktionen wiederherstellen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
agenturgreen
Beiträge: 4
Registriert: 08.05.2017, 20:08

HM Alarmfunktionen wiederherstellen

Beitrag von agenturgreen » 22.09.2017, 15:14

Hallo Zusammen,

ich gehöre zu den Menschen, die seit Jahren hier im Forum erfolgreich Projekte nachgebastelt und für sich optimiert haben.

Obwohl ich nicht vom Fach bin und mit IT oder Programmierung nichts zu tun hab,
bin früher oder später meist zum Ziel gekommen.

Jetzt hat sich nach dem letzten update einiges an Funktionen einfach verabschiedet,
und ich musste diverse Bereiche wieder neu aufbauen.

Der Duty Cycle lag ständig bei 99 % und ich bin erst weiter gekommen, als ich ein paar Programme neu angelegt habe.
Dabei ist mir aufgefallen, dass irgendwie etwas nicht funktioniert bzw. ich es nicht wieder hin bekomme.

System: Raspberry Pi3
Aktuelle Firmwareversion: 2.29.22.20170902
eMail Addon ist installiert und funktioniert
CuxDaemon versendet Mails

Ich bekomme es einfach nicht hin, trotz aller Anleitungen im Forum, dass das Mailprogramme mir den entsprechenden Kontakt, der den Alarm auslöst, anzeigt!

Mailaddon funktioniert, Alarm wird ausgelöst, aber manchmal steht auch in der Alarmmeldung auf der Startseite nicht drin, wer den Alarm verursacht hat.

An welcher Stelle mache ich etwas falsch?

Anbei die dazugehörigen Screenshots:
Bildschirmfoto 2017-09-22 um 15.02.36.png
Bildschirmfoto 2017-09-22 um 15.03.21.png
Im Script selbst steht dieser Text:

Code: Alles auswählen

object oTmpArray = dom.GetObject(ID_SYSTEM_VARIABLES);
if( oTmpArray ) {
    string sTmp;
    string slist ="";
    foreach(sTmp, oTmpArray.EnumIDs()) {
    object oTmp = dom.GetObject(sTmp);
    if ( (oTmp.ValueSubType() == istAlarm) && (oTmp.AlState() == asOncoming) ) {

string sLastTriggerChName = "unbekannt";   
object oLastTriggerDP = dom.GetObject( oTmp.LastTriggerID() );
if( oLastTriggerDP ) { string sLastTriggerChName = (dom.GetObject(oLastTriggerDP.Channel())).Name(); }

slist = slist #oTmp.AlCounter()#" x "#oTmp.Name()  #" - letztmalig am: " #oTmp.Timestamp().ToString("%d.%m.%y %H:%M Uhr") #" von " #sLastTriggerChName #"\n" ;
}
}
}

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01 '"#slist#"'");

WriteLine(slist);
dom.GetObject("SYSvar").State(slist);
Hier noch die Infos aus dem Mail-Programm:
Bildschirmfoto 2017-09-22 um 15.09.16.png
Bildschirmfoto 2017-09-22 um 15.09.25.png
Ist nicht so, dass ich mir das meiste selbst überlegt habe,
und es hat früher auch, etwas anders programmiert, alles über Jahre funktioniert.

Kann mir jemand sagen welchen Fehler ich gemacht habe, oder aber was ich übersehen habe.
Bitte ehrlich und gerade raus, ich kann damit umgehen.

Hauptsache ich bekomme bald wieder Mails mit der Info wer den Alarm ausgelöst hat.

Wenn es einfachere Wege gibt ans Ziel zu kommen,
dann nehme ich auch gern diese,
allerdings habe ich mittlerweile mehrere Scripts und Anleitungen durch.

Alles hat nicht zu Ergebnis geführt!

Freue mich auf eure Rückmeldung...

Philipp
Zuletzt geändert von alchy am 22.09.2017, 23:27, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

regelfritze
Beiträge: 22
Registriert: 04.02.2011, 20:07

Re: HM Alarmfunktionen wiederherstellen

Beitrag von regelfritze » 22.09.2017, 19:46

Nur kurz rübergeschaut fällt mir auf, dass in deinem Scipt Zeile 7 der Ausdruck "ValueSubType()" auf "IstAlarm" geprüft wird.
Wenn ich von einer als "Alarm" deklarierte Systemvariable den Datenpunkt "ValueSubType" abfrage, wird mir als Ergebnis 6 zurückgegeben. Damit ist für mich fraglich, ob dein Ausdruck zuverlässig "true" melden kann.

BadenPower

Re: HM Alarmfunktionen wiederherstellen

Beitrag von BadenPower » 22.09.2017, 21:54

regelfritze hat geschrieben:Damit ist für mich fraglich, ob dein Ausdruck zuverlässig "true" melden kann.
Natürlich, da istAlarm == 6 ist.

Code: Alles auswählen

WriteLine(istAlarm);
.

regelfritze
Beiträge: 22
Registriert: 04.02.2011, 20:07

Re: HM Alarmfunktionen wiederherstellen

Beitrag von regelfritze » 23.09.2017, 14:59

Hallo BadePower

danke, wieder etwas dazugelernt.
Ich habe versucht in der HM_Script Doku zu "istAlarm" und "SubType" weitere Informationen zu finden, leider erfolglos.
Ebenso erfolglos bin ich bisher bei der Suche nach einer Erklärung der ID's zu Objekttyp bzw. Subtype. Gibt es dazu überhaupt eine Doku oder muss man empirisch vorgehen?

Gruß Regelfritze

BadenPower

Re: HM Alarmfunktionen wiederherstellen

Beitrag von BadenPower » 23.09.2017, 20:37

regelfritze hat geschrieben:Gibt es dazu überhaupt eine Doku
Eine offizielle Doku wirst Du vergeblich suchen.
HM-ScriptOverview-ist.jpg
.

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: HM Alarmfunktionen wiederherstellen

Beitrag von hobbyquaker » 24.09.2017, 10:37

regelfritze hat geschrieben:Ich habe versucht in der HM_Script Doku zu "istAlarm" und "SubType" weitere Informationen zu finden, leider erfolglos.
Ebenso erfolglos bin ich bisher bei der Suche nach einer Erklärung der ID's zu Objekttyp bzw. Subtype. Gibt es dazu überhaupt eine Doku oder muss man empirisch vorgehen?
Paul53, TeraX, Thkl, ich und ein paar andere haben vor 5 Jahren mal begonnen all diese undokumentierten Rega-Methoden, Konstanten etc im Homematic Wiki zusammenzutragen. Bis dato ohne Anspruch auf Vollständigkeit, haben sich leider bis heute nicht viele gefunden die sich daran beteiligen... Wäre cool wenn Badenpower sich im Wiki einbringen würde, er hat wohl die meisten Rega Spezialitäten erforscht. Ich bin da mangels Interesse (nutze seit ~2014 die Rega überhaupt nicht mehr) raus.

http://www.wikimatic.de/wiki/Script_Dokumentation
http://www.wikimatic.de/wiki/Kategorie:Methoden
http://www.wikimatic.de/wiki/Konstanten
Zuletzt geändert von hobbyquaker am 24.09.2017, 10:56, insgesamt 2-mal geändert.
Grund: credits

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

Re: HM Alarmfunktionen wiederherstellen

Beitrag von alchy » 25.09.2017, 11:45

Dein gepostetes Programm setzt den Alarm unter Umständen erst nachdem dein Script versucht den Auslöser des Alarmes zu ermitteln und zu verschicken.
ergo - bau eine Verzögerung beim Script ein und teste es so noch einmal.
Grundsätzlich könnte man aber auch das Programm auch aufteilen. Das erste Setzt den Alarm - das 2. liest den Alarm aus und verschickt ihn.
Außerdem könnte man auch den >> Auslöser eines Programmes finden und loggen <<
benutzen statt eine Alarmvariable zu setzten und diese dann wieder "umständlich" auszulesen.

Alchy

Und es ist nicht sehr clever Scripte zu kopieren und die Kopfzeilen zu entfernen.
Nicht das ich wert drauf legen würde. Es schadet nur euch, weil ich dann eben nicht leicht nachvollziehen kann, welche Version du benutzt.

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.

agenturgreen
Beiträge: 4
Registriert: 08.05.2017, 20:08

Re: HM Alarmfunktionen wiederherstellen

Beitrag von agenturgreen » 25.09.2017, 15:30

Sorry wegen der Kopfzeilen, aber wenn man so komplett den Überblick verliert, dann ist jede Zeile mehr manchmal zu viel!

Die Version mit dem Auslöser werde ich genre ausprobieren.

Entscheidend war der Hinweis mit der zeitlichen Abfolge der Punkte,
genau das hatte ich am Wochenende noch entdeckt und ausprobiert.

Aber wie es immer so ist, bei dem internen Alarm hat es funktioniert, beim externen nicht.
Weil da die Kontakte nicht einzeln abgefragt wurden,
sondern "mind. ein Kontakt ist geöffnet" wurde abgefragt.
Deshalb hat es etwas länger gedauert.

Vielen Dank für die professionelle Hilfe!

Antworten

Zurück zu „HomeMatic allgemein“