Batterieprüfung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Batterieprüfung

Beitrag von michaelapp » 19.09.2018, 18:51

Hallo Bratmaxe,

das Skript läuft zwar durch allerdings werden die leeren Batterien nicht vom Skript erfasst.

Im Systemprotokoll steht "Batterie leer" :-(

Gruß
Michael

Tanja
Beiträge: 2
Registriert: 19.09.2018, 20:39

Re: Batterieprüfung

Beitrag von Tanja » 19.09.2018, 20:49

Hallo,
wie verändere ich den Code, wenn ich die Nachricht an eine andere Mailadresse verschicke? Ich nutze kein Outlook oder Thunderbird. Danke

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

Re: Batterieprüfung

Beitrag von alchy » 19.09.2018, 20:55

Auch hier gilt dieselbe Antwort wie in deinem anderen Post.
Die Einstellungen der Mailadresse bewerkstelligst du im EmailAddon

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.

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Batterieprüfung

Beitrag von Bratmaxe » 20.09.2018, 09:34

Okay hat so nicht geklappt, aber so:

Code: Alles auswählen

! Email mit Ergebnis des Batteriechecks
!
! In die Systemvariable Batt_Mldg (TEXT) wird eben-
! falls der Mailtext kopiert.
! Kann natuerlich entfallen ....
!---------------------------------------------------
!
! Achtung: Besser CuXD System.exec verwenden!!!
!---------------------------------------------------

var myAssembly = dom.GetObject("Batterie");
string itemID;
string text = "";
string s_subj ="Batteriemeldung";
integer counter = 0;
            
foreach(itemID, myAssembly.EnumUsedIDs()) {
    var item = dom.GetObject(itemID);
    var device = dom.GetObject(item.Device());
    var interface = dom.GetObject(item.Interface());
    string interface_name = interface.Name();
    string device_address = device.Address();
    device_address = device_address.StrValueByIndex(":", 0);
    boolean condition = false;   
    if (device.HssType().Find("HM-CC-RT-DN")>=0)
    {
        string channel_name = interface_name # "." # device_address # ":4.FAULT_REPORTING";
        var channel = dom.GetObject(channel_name); 
		if ( (channel.State() == 6) ){ condition = true; }
		else{ condition = false; }
    }
    else
    {
		string channel_name = interface_name # "." # device_address # ":0.LOWBAT";
		var channel = dom.GetObject(channel_name);  
		! Datenpunkt der klassischen Hm Geräte konnte nicht gefunden werden, verusche HmIP Datenpunkt abzurufen	   
		if (!channel) 
		{
			channel_name = interface_name # "." # device_address # ":0.LOW_BAT";
			channel = dom.GetObject(channel_name);  
		}
	   
		!Wenn channel nicht gefunden wurde, auch nicht versuchen darauf zuzugreifen
		if ((channel.State() == true) && (channel.Value() == true))	{ condition = true; }
    }
    
    if (condition == true) {
        text = text # "- " # item.Name() # ": Bitte austauschen!\r\n";
        counter = counter + 1;
    }
    else
    {
        text = text # "- " # item.Name() # ": OK!\r\n";
    }
}

if ( counter > 0 ) {
    string MailText;
    string sDate = system.Date("%d.%m.%Y");
    MailText = "Pruefung des Ladestandes der Batterien vom " # sDate # ".\r\n";
    MailText = MailText # "Der Ladezustand einer oder mehrerer Batterien ist niedrig: \r\n\r\n" # text;
    MailText = MailText # "\r\nBitte tauschen Sie die Batterien zeitnah aus.";

	dom.GetObject("Batt_Mldg").State(MailText);
	dom.GetObject("Batt_Mldg_Pushover").State(MailText);
}
else
{
    string MailText;
    string sDate = system.Date("%d.%m.%Y");
    MailText = "Pruefung des Ladestandes der Batterien vom " # sDate # ".\r\n";
    MailText = MailText # "Der Ladezustand aller Batterien ist gut: \r\n\r\n" # text;

	dom.GetObject("Batt_Mldg").State(MailText);
	dom.GetObject("Batt_Mldg_Pushover").State(MailText);
}
Gruß Carsten

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Batterieprüfung

Beitrag von michaelapp » 06.12.2019, 18:35

Hallo Bratmaxe,

ich habe Dein Skript für die Batterieprüfung im Einsatz.

Code: Alles auswählen

! Email mit Ergebnis des Batteriechecks
!
! In die Systemvariable Batt_Mldg (TEXT) wird eben-
! falls der Mailtext kopiert.
! Kann natuerlich entfallen ....
!---------------------------------------------------
!
! Achtung: Besser CuXD System.exec verwenden!!!
!---------------------------------------------------

var myAssembly = dom.GetObject("Batterie");
string itemID;
string text = "";
string s_subj ="Batteriemeldung";
integer counter = 0;
            
foreach(itemID, myAssembly.EnumUsedIDs()) {
    var item = dom.GetObject(itemID);
    var device = dom.GetObject(item.Device());
    var interface = dom.GetObject(item.Interface());
    string interface_name = interface.Name();
    string device_address = device.Address();
    device_address = device_address.StrValueByIndex(":", 0);
    boolean condition = false;   
    if (device.HssType().Find("HM-CC-RT-DN")>=0)
    {
        string channel_name = interface_name # "." # device_address # ":4.FAULT_REPORTING";
        var channel = dom.GetObject(channel_name); 
		if ( (channel.State() == 6) ){ condition = true; }
		else{ condition = false; }
    }
    else
    {
		string channel_name = interface_name # "." # device_address # ":0.LOWBAT";
		var channel = dom.GetObject(channel_name);  
		! Datenpunkt der klassischen Hm Geräte konnte nicht gefunden werden, verusche HmIP Datenpunkt abzurufen	   
		if (!channel) 
		{
			channel_name = interface_name # "." # device_address # ":0.LOW_BAT";
			channel = dom.GetObject(channel_name);  
		}
	   
		!Wenn channel nicht gefunden wurde, auch nicht versuchen darauf zuzugreifen
		if ((channel.State() == true) && (channel.Value() == true))	{ condition = true; }
    }
    
    if (condition == true) {
        text = text # "- " # item.Name() # ": Bitte austauschen!\r\n";
        counter = counter + 1;
    }
    else
    {
        text = text # "- " # item.Name() # ": OK!\r\n";
    }
}

if ( counter > 0 ) {
    string MailText;
    string sDate = system.Date("%d.%m.%Y");
    MailText = "Pruefung des Ladestandes der Batterien vom " # sDate # ".\r\n";
    MailText = MailText # "Der Ladezustand einer oder mehrerer Batterien ist niedrig: \r\n\r\n" # text;
    MailText = MailText # "\r\nBitte tauschen Sie die Batterien zeitnah aus.";

	dom.GetObject("Batt_Mldg").State(MailText);
	dom.GetObject("Batt_Mldg_Pushover").State(MailText);
}
else
{
    string MailText;
    string sDate = system.Date("%d.%m.%Y");
    MailText = "Pruefung des Ladestandes der Batterien vom " # sDate # ".\r\n";
    MailText = MailText # "Der Ladezustand aller Batterien ist gut: \r\n\r\n" # text;

	dom.GetObject("Batt_Mldg").State(MailText);
	dom.GetObject("Batt_Mldg_Pushover").State(MailText);
}
Ich habe mir letztens zwei HmIP-SMI Bewegungsmelder zugelegt, bei beiden waren in den letzten Tagen die Batterien leer. Das Skript hat dies leider nicht erkannt. Eigentlich sollte das Skript die Meldungen erkennen oder?

Gruß
Michael

Xel66
Beiträge: 14164
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1499 Mal

Re: Batterieprüfung

Beitrag von Xel66 » 06.12.2019, 18:51

michaelapp hat geschrieben:
06.12.2019, 18:35
Eigentlich sollte das Skript die Meldungen erkennen oder?
Kommt drauf an, auf welchem Kanal/Datenpunkt dieser Sensor seine Information zur Verfügung stellt.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Batterieprüfung

Beitrag von michaelapp » 06.12.2019, 19:04

So wie ich es gesehen habe hier:

Code: Alles auswählen

HmIP-RF.xxxxxxxxxxxxxx:0.LOW_BAT	

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Batterieprüfung

Beitrag von Bratmaxe » 06.12.2019, 22:18

Bei mir kommt die Meldung von dem BWM.

Wie hoch ist denn die LOW Batt Spannung in den Geräteeinstellungen eingetragen? Bei mir macht der BWM unter 2.3V Probleme, daher ist bei mir 2.3V eingestellt wenn du dort z.B. 2V eingestellt hast dann kann es sein das der BWM seinem Betrieb einstellt, bevor er die LowBatt Meldung abschicken kann...
Gruß Carsten

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Batterieprüfung

Beitrag von michaelapp » 07.12.2019, 00:30

bei mir steht die Low-Bat.-Schwelle auf 2,2V

Ich werde Sie mal auf 2,3V ändern und beobachten.

Antworten

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