LowBat script und e-mail Funktion

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Re: LowBat script und e-mail Funktion

Beitrag von alchy » 05.05.2015, 21:11

Durch alle Kanäle könntest Du so rennen:

Code: Alles auswählen

...
foreach (itemID, dom.GetObject(ID_CHANNELS).EnumUsedIDs()) 
..
Ob das sinnvoll ist, ist eine andere Frage. :shock:
Grundsätzlich habe ich aber auch die Batterie-leer-Geschichte >> H I E R << integriert.

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.

omicronCZ
Beiträge: 223
Registriert: 31.07.2011, 17:37
System: CCU
Wohnort: Czech Rep.
Hat sich bedankt: 87 Mal
Danksagung erhalten: 14 Mal

Re: LowBat script und e-mail Funktion

Beitrag von omicronCZ » 30.05.2015, 22:50

wendy2702 hat geschrieben:Hi,
OK aber bitte habt nachsicht mit mir falls etwas unklar ist oder so, bin auch noch Homematic einsteiger. Habe alles aus diesem Thread zusammengetragen und hoffentlich nichts vergessen....Anleitung Batterie Script_V02.docx
Hello, sorry for english, but can not speak German.

This script is great, but I have no installed (do not use yet) "CUxD", I have only installed normal classic "E-mail Add-On", but the Your script is calling through the "CUxD" - how would it look using only E-mail Add-On?

Or use CUxD is a better solution because of a pushover? I'm sorry, I'm not advanced ...

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: LowBat script und e-mail Funktion

Beitrag von Homoran » 31.05.2015, 09:06

Hi omicron,
generally it is recommended not to use the system.exec command. This may cause some severe troubles.
You should use the alternative command of cuxD instead.
So alchy uses cuxD



Gesendet von meinem LIFETAB_S785X mit Tapatalk
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

omicronCZ
Beiträge: 223
Registriert: 31.07.2011, 17:37
System: CCU
Wohnort: Czech Rep.
Hat sich bedankt: 87 Mal
Danksagung erhalten: 14 Mal

Re: LowBat script und e-mail Funktion

Beitrag von omicronCZ » 31.05.2015, 12:08

Aha, thanks for the explanation, I have no experience with cuxD - it is only enough to install (no more complicated configuration), and let it use those scripts?

I also found the newer thread "Servicemeldungen allinclusive * * Script", it is preferable to to solve this newer way?
Thanks again!

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

Re: LowBat script und e-mail Funktion

Beitrag von alchy » 31.05.2015, 16:16

omicronCZ hat geschrieben:I have no experience with cuxD -
don't need.
omicronCZ hat geschrieben:it is only enough to install (no more complicated configuration), and let it use those scripts?
after installing from cuxd you must install the (28)system device with function exec
according picture:
cuxd.exec.jpg
and accept at this new device at the CCU WebGui at Teach-in devices

reboot the CCU

omicronCZ hat geschrieben: I also found the newer thread "Servicemeldungen allinclusive * * Script", it is preferable to to solve this newer way?
newer? - yes :wink:
better? - *IMHO* :wink:
but you have also to install cuxd and the ^^ cuxd.exec device if you use my script.
this script send you all service message per mail / pushover / prowl

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.

omicronCZ
Beiträge: 223
Registriert: 31.07.2011, 17:37
System: CCU
Wohnort: Czech Rep.
Hat sich bedankt: 87 Mal
Danksagung erhalten: 14 Mal

Re: LowBat script und e-mail Funktion

Beitrag von omicronCZ » 31.05.2015, 17:06

Thanks a lot Alchy :D , I gave the discussion to the "Servicemeldungen *allinclusive* Script" forums thread...

Slice
Beiträge: 1207
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 142 Mal
Danksagung erhalten: 85 Mal

Re: LowBat script und e-mail Funktion

Beitrag von Slice » 10.03.2016, 14:37

Vielen Dank an alle dier hier fleißig gepostet haben.
Ich habe das Skript bei mir mit dem Email-Addon eingebunden und bekomme jetzt auch eine Email einmal am Tag.
Scheint bisher alles zu klappen, mal schauen wann die erste leere Batteriemeldung kommt! :D
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.75.7 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

falke69
Beiträge: 61
Registriert: 05.11.2016, 19:51

Re: LowBat script und e-mail Funktion

Beitrag von falke69 » 05.11.2016, 19:59

Hallo zusammen,
auch wenn dieser Post bereits etwas älter ist, kann mir vielleicht der eine oder andere weiterhelfen.
Aktuell verwende ich folgenden Code:

Code: Alles auswählen

! Email-Warnung über niedrigen Batterie - Ladestand
var myAssembly = dom.GetObject("Batterie betrieben");
! Geändert für Email-Addon / CUXD / TCL von PIX
 
! Variablen initialisieren
string itemID;
string text = "";
integer counter = 0;
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\tHM-SCI-3-FM\tHM-PBI-4-FM";
string lr44 = "HM-Sec-SC\tHM-Sec-RHS\tHM-Sec-SC-2";
string lr6 = "HM-Sec-MDIR\tHM-CC-TC\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\tHM-CC-RT-DN\tHM-Sen-MDIR-O-2\tHM-Sec-MDIR-2\tHM-WDS30-OT2-SM\tHM-Sec-SCo";
string lr3 = "HM-RC-12\tHM-PB-4Dis-WM\tHM-Sen-EP";
string lr61 = "HM-LC-Sw4-Ba-PCB";
string batlink;
string index;
 
! Durch alle angemeldeten Geräte iterieren
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) {
            if (index == device.HssType()) {
                batlink = "CR2016";
                }
            }
 
        ! Gerät enthält CR2032-Batterie?
        foreach (index, cr2032) {
            if (index == device.HssType()) {
                batlink = "CR2032";
                }
            }
 
        ! Gerät enthält LR44-Batterie?
        foreach (index, lr44) {
            if (index == device.HssType()) {
                batlink = "LR44";
                }
            }
 
        ! Gerät enthält LR6-Batterie?
        foreach (index, lr6) {
            if (index == device.HssType()) {
                batlink = "LR6";
                }
            }
 
        ! Gerät enthält LR3-Batterie?
        foreach (index, lr3) {
            if (index == device.HssType()) {
                batlink = "LR3";
                }
            }
 
        ! Gerät enthält LR61-Batterie?
        foreach (index, lr61) {
            if (index == device.HssType()) {
                batlink = "LR61";
                }
            }
 
        ! Text zusammensetzen
        text = text # "- " # item.Name() # " vom Typ " # batlink # " \r\n";
 
        ! Counter erhöhen (Anzahl leerer Batterien)
        counter = counter + 1;
        }
    }
 
    ! Mail-Text zusammensetzen
    string Nachricht;
    string sDate = system.Date("%d.%m.%Y");
    Nachricht = " \r\n Prüfung des Ladestandes der Batterien vom " # sDate # ". \r\n";
 
! Mind. eine leere Batterie gefunden?
if ( counter > 0 ) {
    Nachricht = Nachricht # "\r\n Der Ladezustand folgender Batterien ist niedrig: \r\n" # text;
    Nachricht = Nachricht # "\r\n Bitte tauschen Sie die Batterien zeitnah aus. ";
} else {
    Nachricht = Nachricht # "\r\n Keine Batterie muss getauscht werden. ";
}
 
    ! Nachricht in Variable füllen und E-Mail absenden
    !--------------------------------------------------
    dom.GetObject("Mailtext").State(Nachricht);
 
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 03");
Eine Mail bekomme ich auch mit folgenden Inhalt:

Hallo,

Prüfung des Ladestandes der Batterien vom 05.11.2016.

Keine Batterie muss getauscht werden.

Deine Homematic CCU

Das Problem: es ist mindestens ein Gerät mit einer leeren Batterie vorhanden. Dieses Gerät findet man auch unter den "Batterie betrieben" in den Gewerken.
Hatt vielleicht jemand eine Idee, wo der Fehler liegt?

Vielen Dank

yomix
Beiträge: 16
Registriert: 29.04.2014, 06:35

Re: LowBat script und e-mail Funktion

Beitrag von yomix » 23.01.2018, 21:15

Guten Abend,

ich hoffe das der Thread hier noch Beachtung findet :shock: da ja der letzte Eintrag etwas länger her ist !!

Ich habe mich heute dem Thema mal angenommen und versucht hier alles zu lesen und umzusetzen , jetzt habe ich die Anleitung von
alchy versucht umzusetzen. Leider bekomme ich immer eine Mail mit dem Inhalt " null " ist das richtig ?? den ich habe beim testen des
Scripts bzw z.Z keine leeren Batterien in Betrieb :-)

Ich hoffe das mir jemand helfen kann :D


alchy hat geschrieben:
homey21 hat geschrieben:

Code: Alles auswählen

! ===================================================
! Script prüft ob eine HM-Komponente aus dem Gewerk "Batteriebetrieb" 
! 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 v7 = dom.GetObject('V_LowBat').State();
!                ....
!                set v7 $values(v7)
! 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
!
! 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";

string lr3 = "HM-RC-12\tHM-PB-4Dis-WM\tHM-Sen-EP";
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
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 05");
    }

    else

    {
    dom.GetObject('V_LowBat').State("keine leeren Batterien gefunden");
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 05");
    }

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

Re: LowBat script und e-mail Funktion

Beitrag von alchy » 24.01.2018, 09:09

Das gepostete Script sollte zwar noch funktionieren, jedoch ist es sehr stark überaltert.
die null in der mail kommt wahrscheinlich wegen einem nicht korrektem TCL Reiter im Mailaddon.
Das ist aber ein anderes Thema.

Das Batterieleer-Script müsste, wenn überhaupt noch benötigt :?: , überarbeitet werden.


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.

Antworten

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