LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von blueb6 » 05.09.2015, 13:18

Hallo irgendwie funktioniert mein script nicht

bekomme immer die meldung keine leeren batterien gefunden
abar unter servicemeldungen habe ich 2 geräte wo steht Leere Batterie

Code: Alles auswählen

! ===================================================
! Script prüft ob eine HM-Komponente aus dem Gewerk "Battriebetrieb"
! eine Batteriewarnung hat; wenn ja wird in die Systemvariable V_LowBat
! die Komponente mit notwendigem Batterietyp hineingeschrieben und
! die Mail 05 aus dem Mail-Addon aufgerufen. Der Text der Systemvariablen
! V_LowBat kann über eine TCL-Zeile im Mail-Addon wie
! var v50 = dom.GetObject('V_LowBat').State();
! ....
! set v50 $values(v50)
! in die Mail übernommen werden.
!
! Voraussetzungen
! ===============
! - notwendige System-Variable: V_LowBat als Typ String
!
! - alle überprüften Komponenten müssen dem Gewerk "Batteriebetrieb"
! zugeordnet sein
!
! - das Mail-Addon muss installiert und konfiguriert sein
!
! ACHTUNG:
! Script enthält system.Exec-Aufruf; dies KANN zu Problemen auf
! der CCU führen (siehe diverse Threads im FHZ-Forum,
! läuft bei mir aber ohne Probleme)
!
! Script von meine-homematic.de abgeändert für Mail-Addon
! V 1.0 SL / 04.03.2012
! ===================================================
var myAssembly = dom.GetObject("Batteriebetrieb");
string itemID;
string text = "";
string stdout;
string stderr;
integer counter = 0;
! Auflistung Geräte nach Batterietyp
string cr2016 = "HM-RC-4\tHM-RC-4-B\tHM-RC-Sec3\tHM-RC-Sec3-B\tHM-RC-P1\tHM-RC-Key3\tHM-RC-Key3-B";
string cr2032 = "HM-PB-2-WM\tHM-SwI-3-FM\tHM-PBI-4-FM\tHM-Sec-TiS";
string lr44 = "HM-Sec-SC\tHM-Sec-RHS";
string lr6 = "HM-Sec-MDIR\tHM-CC-TC\tHM-CC-VD\tHM-WDS100-C6-O\tHM-WDS40-TH-I\tHM-WDS10-TH-O\tHM-WDS30-T-O\tHM-Sec-Key\tHM-Sec-SD\tHM-Sec-WDS\HM-CC-RT-DN";
string lr3 = "HM-RC-12\tHM-PB-4Dis-WM\tHM-Sen-EP\HM-TC-IT-WM-W-EU";
string battyp;
string index;
! Durch alle angemeldeten Geräte laufen
foreach(itemID, myAssembly.EnumUsedIDs())
{
! Gerätedetails & Schnittstelle holen
var item = dom.GetObject(itemID);
var device = dom.GetObject(item.Device());
var interface = dom.GetObject(item.Interface());
! Name, Adresse und Kanal auslesen
string interface_name = interface.Name();
string device_address = device.Address();
device_address = device_address.StrValueByIndex(":", 0);
string channel_name = interface_name # "." # device_address # ":0.LOWBAT";
var channel = dom.GetObject(channel_name);
! Batterie leer?
if ( (channel.State() == true) && (channel.Value() == true) )
{
! Gerät enthält CR2016-Batterie?
batlink = "unbekannt";
foreach (index, cr2016) {
!WriteLine(device.HssType());
if (index == device.HssType()) {
battyp = "CR2016 ";
}
}
! Gerät enthält CR2032-Batterie?
foreach (index, cr2032) {
if (index == device.HssType()) {
battyp = "CR2032 ";
}
}
! Gerät enthält LR44-Batterie?
foreach (index, lr44) {
if (index == device.HssType()) {
battyp = "LR44 ";
}
}
! Gerät enthält LR6-Batterie?
foreach (index, lr6) {
if (index == device.HssType()) {
battyp = "LR6 / AA";
}
}
! Gerät enthält LR3-Batterie?
foreach (index, lr3) {
if (index == device.HssType()) {
battyp = "LR3 / AAA";
}
}
! Text zusammensetzen
text = text # "- " # item.Name() # " vom Batterietyp: " # battyp # "\r\n";
! Counter erhöhen (Anzahl leerer Batterien)
counter = counter + 1;
}
}
! Mind. eine leere Batterie gefunden?
if ( counter > 0 )
{
! setzen der Systemvariablen mit der Liste der Komponenten
dom.GetObject('V_LowBat').State(text);
! Eigentliche Mail absenden
system.Exec("/etc/config/addons/email/email 10", &stdout, &stderr);
}
else
{dom.GetObject('V_LowBat').State("keine leeren Batterien gefunden");
        system.Exec("/etc/config/addons/email/email 10", &stdout, &stderr);}

{ ! Systemvariable loeschen dom.GetObject('V_LowBat').State(""); }
wer kann mir da helfen

Danke
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

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

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von alchy » 05.09.2015, 17:08

ungern,
das Script schon sehr alt und müsste aktualisiert werden. Ausserdem enthält es den bösen system.exec usw. kurzum es ist überholt. Suche mal im Forum, es gibt es aktuellere Lösungen.

Aber zum ersten Testen, beim groben Durchschauen:
Wenn Du ALLE im Script angegebenen Voraussetzungen für das Script erfüllst
und die letzte Zeile

Code: Alles auswählen

{ ! Systemvariable loeschen dom.GetObject('V_LowBat').State(""); }
komplett löschst

dann müsste es zumindest funktionieren.
Aber schau nach anderen Lösungen, ein paar Gründe habe ich ja oben aufgeschrieben.

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.

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von blueb6 » 06.09.2015, 00:04

alchy hat geschrieben:ungern,
das Script schon sehr alt und müsste aktualisiert werden. Ausserdem enthält es den bösen system.exec usw. kurzum es ist überholt. Suche mal im Forum, es gibt es aktuellere Lösungen.

Aber zum ersten Testen, beim groben Durchschauen:
Wenn Du ALLE im Script angegebenen Voraussetzungen für das Script erfüllst
und die letzte Zeile

Code: Alles auswählen

{ ! Systemvariable loeschen dom.GetObject('V_LowBat').State(""); }
komplett löschst

dann müsste es zumindest funktionieren.
Aber schau nach anderen Lösungen, ein paar Gründe habe ich ja oben aufgeschrieben.

Alchy
Danke alchy, habe schon viel gesucht und bin immer wieder auf das skript gestoßen, bzw auf ein skript mit CUXD aber das ist glaub ich in meinen fall nnicht das richtige.

hast du vielleicht einen link füt mich?
danke
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

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

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von alchy » 06.09.2015, 10:54

blueb6 hat geschrieben: Danke alchy, habe schon viel gesucht und bin immer wieder auf das skript gestoßen, bzw auf ein skript mit CUXD aber das ist glaub ich in meinen fall nnicht das richtige.
hast du vielleicht einen link füt mich?
danke
Hast du das Script so geändert, wie ich oben schrieb?
Dann sollte auch das funktionieren, WENN du alle im Script angegebenen Voraussetzungen erfüllst. Einfach mal im Script Executer (Signatur) ausführen und die JSON Ausgabe posten, falls es nicht geht.

Die Umstellung auf CUXD.EXEC ist sozusagen Pflicht. Einen Link findest du in meiner Signatur.
Es gibt viele Scripte zum Thema Batterie leer. Einfach mal nach Batterie leer suchen oder auch nach v_lowbat.
Es kommt ja auch darauf an, was du willst?
a Einmal täglich eine Nachricht sozusagen als Status Mail, oder
b nur dann eine Nachricht ,wenn eine Batterie leer ist.

Wenn b das ist was du willst, dann lege ich dir mein >> Servicemeldungen *allinclusive* Script << ans Herz.
Aber auch da wird CUXD.EXEC vorausgesetzt. Das supporte ich auch noch ne Weile. :wink:

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.

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von blueb6 » 09.09.2015, 14:30

Hallo alchy

soweit dürfte das script jetzt funktionieren, ich bekomme Batterie leer Meldungen.

Meine frage ist jetzt bei welcher spannug wird diese Meldung erzeugt?
Wird die Meldung auch bei HM-Sec-SC erzeugt oder ist die Batterie leer Meldung beim Fensterkonatkt nur über den Heizungshermostat ersichtlich?

Danke

lg Tom
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

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

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von alchy » 09.09.2015, 16:55

Batteriespannungen als solches sind nur bei den wenigsten Sensoren auslesbar. Zum Beispiel bei den HM-TC-IT-WM-W-EU.
Bei Battery leer wird intern nur einer der Gerätedatenpunkte i.d.R. LOWBAT auf true gesetzt. Vergleichbar mit dem Ein oder Ausschalten.
Die meisten Geräte funktionieren danach noch unterschiedliche Zeit. Aber da musst du deine eigenen Erfahrungen sammeln oder im Forum suchen.
Auch die HM-Sec-RHS haben diesen Datenpunkt. Ganz einfach kannst du einen Sensor abfragen mit z.B. diesen Script:
Dabei musst du nur JEQ012345678 durch deine eigene Seriennummer ersetzen.

Code: Alles auswählen

if (dom.GetObject("BidCos-RF.JEQ012345678:0.LOWBAT").Value()) { WriteLine("Batterie leer"); } else { WriteLine("Batterie o.k."); }
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.

juebue
Beiträge: 3
Registriert: 06.03.2021, 17:49
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von juebue » 06.03.2021, 17:54

Hallo zusammen,
bin auf dieses hilfreiche Forum gestoßen. Danke für die bisherigen Posts.
Habe das sript erfolgreich eingerichtet. Systemvariable enthält auch den korrekten Text.
TLC EInrichtung ist erfolgt. Leider wird immer nur statt des Strings "null" ausgegeben.
Woran kann das liegen? Kann jemand helfen?
Zuletzt geändert von juebue am 10.03.2021, 19:24, insgesamt 1-mal geändert.

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

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von alchy » 06.03.2021, 18:05

Daran das in deinem geheimen TCL Reiter ein Fehler ist.

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.

juebue
Beiträge: 3
Registriert: 06.03.2021, 17:49
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von juebue » 10.03.2021, 19:54

Hallo Alchy,
sorry, bewege mich noch nicht lange in Foren. Hier mein alt. TLC-skript, das ich vermutlich gerade "zerschossen" habe, denn nach einer versuchten Änderung habe ich leider nicht auf "TLC-check" sondern "übernehmen" :( geklick.
Skript:

Code: Alles auswählen

load tclrega.so

array set values [rega_script {

var v7 = dom.GetObject('V_LowBat').State();

} ]

set v7 $values(v7)
akt. Fehlermeldung:
"Das Tcl-Skript ist fehlerhaft: (can't read "values(v1)": no such element in array)"

LG Jürgen
Zuletzt geändert von alchy am 10.03.2021, 20:25, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

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

Re: LowBat-Meldungen per E-mail: ein paar Anfängerfragen

Beitrag von alchy » 10.03.2021, 20:50

Der TCL Reiter wäre zumindest funktionsfähig, wenn auch durchaus zu verbessern.
Leider stehen solche Scripte aber auch immer noch in der Anleitung des Addons. :oops:

Grobe Erklärung:
Du versuchst mittels .State() den Status des Objectes V_Lowbat auszulesen.
Handelt es sich bei V_LowBat als z.B. Systemvariable als einzigstes Object mit dem Namen auf der CCU, würde es also funktionieren wie gewollt und in der Emailvorlage könntest du mit $v7 den Wert dessen einfügen.

Wie sieht dann deine E-Mailvorlage aus?

Wenn er z.B. so aussieht

Code: Alles auswählen

Text aus $v7
und gesendet wird dir

Code: Alles auswählen

Text aus null
dann gibt es das Object V-Lowbat nicht auf deiner der CCU

Alchy
PS: das Batterie-Leer-script ist auch hoffnungslos veraltert und überholt

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.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“