Javascript zum versenden von Status Mails bei Aenderung von Batteriezustaenden.
- Versendet eine EMail wenn eine oder mehrere Batterien LowBat signalisiert
- Zaehlt die Laufzeiten der Batterien (aktuelle Laufzeit/ letzter Zyklus)
- Speichert das Datum des letzten Batteriewechsels
- Mailversand kann ueber Objekt Flag auch manuell ausgelöst werden (z.B. ueber VIS)
- Nur kurzzeitige LowBat Meldungen werden ignoriert
- Taegliche Statusmail, sofern leere Batterien erkannt wurden
- Kompatibel zur Homematic und Homematic-IP
- Nachruestung weiterer Adaptertypen vorbereitet
- Batteriewechsel kann ueber VIS quittiert werden
- Benoetigte Hard/Software
- Konfiguration des Scripts
- Ablauf nach Script Start
- Steuerung durch VIS
- Problembehandlung
- History
- Homematic CCU (auf CCU2,CCU3 und Raspberrymatic getestet)
- Die Geräte sollten in der Homematic mit individuellen Namen versehen werden
- IO-Broker mit ...
- Java-Script Adapter
- Email-Adapter
Bevor das Script gestartet werden kann, muessen noch ein paar Individuelle Einstellungen angepasst werden.
Als erstes muessen die Adapter, aus denen die Batteriemeldungen ausgelesen werden, konfiguriert werden. Am Beginn des Scripts findet sich die Zeile
var adapterList = [ {header:"", name:"hm-rpc.1.", typ:TOOLTYPE_HM}];
Jeder Adapter Eintrag besteht aus 3 Parametern wie folgt:
Parameter | Zweck |
---|---|
header: | Diese Zeichenkette wird jedem Geraetenamen dieses Adapters voran gestellt. Dies kann praktisch sein, wenn man zum Beispiel 2 Haeuser mit Homematic hat und es dann das Geraet "WC-EG" zweimal gibt. So koennen die Geraete spaeter unterschieden werden, z.B. "Gaestehaus-WC-EG" und "Wohnung-WC-WG". |
name: | der Name der Instanz, aus dem die Batterie Zustaende ausgelesen werden, zum Beispiel name:"hm-rpc.1." bitte beachten, den Punkt am Ende nicht vergessen! |
typ: | Hier muss der verwendete toolChain angegeben werden, zur Zeit gibt es nur den Typ TOOLTYPE_HM, der die Zustaende von Homematic & Homematic-IP kompatiblen Geraeten lesen und verarbeiten kann. Bei Zukünftigen Erweiterungen wird es noch mehr Typen geben. |
Ist in deiner IObroker Installation die Instanz "hm-rpc.1" fuer deine Homematic Geraete zustaendig und die Instanz "hm-rpc.2" fuer deine Homematic-IP Geräte zustaendig, muss die Konfiguration folgendermassen aussehen:
var adapterList = [ {header:"", name:"hm-rpc.1.", typ:TOOLTYPE_HM},
{header:"", name:"hm-rpc.2.", typ:TOOLTYPE_HM}];
Bei Bedarf laesst sich die Liste erweitern
Für die Versendung der EMail ist es zwingend noetig, die Adressen festzulegen. Damit ich nicht, bei einer Aenderung der EMail Adresse in allen möglichen Scripts die Adresse abaendern muss, sind diese Adressen in einem Globalen Script interlegt. Sollte dies bei Dir nicht der Fall sein, muessen folgende Zeilen angepasst und aktiviert werden:
// EMail Einstellungen wenn nicht Global implementiert hier definieren
// const EMAIL_FROM_ADDRESS = "[email protected]";
// const EMAIL_TO_ADDRESS = "[email protected]";
// const EMAIL_SUBJ_HEAD = "MySystemName: ";
Wenn die Globale Debug-Routine von mir (Siehe Debug Routine ) nicht installiert wurde, kommt es zu Fehlermeldungen, weil die Funktion "myDebug" nicht vorhanden ist.
Entweder das Debug Script installieren, oder die folgenden Zeilen im Script wahlweise aktivieren:
In dieser Konfiguration werden keine Debug Meldungen ausgegeben:
// Wenn die Debugfunktion nicht Global implementiert ist, diese Funktion hier aktivieren
function myDebug (debugtext){
// log(debugtext); // Ausgabe der Debugtexte bei Bedarf aktivieren
}
In dieser Konfiguration werden Debug Meldungen im log ausgegeben:
// Wenn die Debugfunktion nicht Global implementiert ist, diese Funktion hier aktivieren
function myDebug (debugtext){
log(debugtext); // Ausgabe der Debugtexte bei Bedarf aktivieren
}
- 30 Sekunden nach Start, versendet das Script eine EMail, in der alle bekannten Geraete, die Batterie betrieben sind, aufgelistet sind
- Wechselt der Status einer Batterie dauerhaft auf BatteryLow, wird nach einiger Zeit, eine Status Mail mit den leeren Batterien versendet
- Sind leere Batterien vorhanden, wird taeglich eine StatusMail ueber den Zustand aller vorhandener Geraete versendet.
- Taeglich wird die Laufzeit der Batterien erfasst und angepasst, dabei werden kurzfristige LowBat Meldungen wieder herunter gezaehlt.
Die Steuerung und Status Anzeige und der Batteriewechsel kann ueber eine VIS View erfolgen.
Die View sieht folgendermassen aus:
Ein Klick auf das Feld "Info Mail Batteriezustand senden" versendet eine Statusmail. Die gelben Felder enthalten die Namen der Geraete, bei denen die Batterie gewechselt werden muss. Ein Klick auf Batterie gewechselt bestaetigt den Batteriewechsel. Dabei wird ueberprueft ob die Batterie auch wirklich OK ist. Im obigen Textfeld wird dann der Erfolg/Misserfolg der Aktion angezeigt.
Die Felder sind nur sichtbar, wenn leere Batterien vorhanden sind.
Die View befindet sich im VIS-Template Ordner
ACHTUNG! Laueft das Script nicht unter der Instanz "0" (javascript.0) sondern z.B. auf der Instanz javascript.1, muss die View angepasst werden. Dazu einfach die Eintraege in der Textdatei durch "suchen und ersetzen" austauschen: Suche: "javascript.0" ersetze mit "javascript.1". Danach kann das Widget in VIS importiert werden.
Oder:
Manuell in VIS anpassen.
Ein Problem das auftreten koennte: Leider kann ich es im Augenblick nicht nachvollziehen, welche Widgets ich unter IObroker installiert habe, die diese View verwendet. Sollte manche Teile nicht in VIS angezeigt werden, bitte pruefen ob folgende Widgets installiert sind:
Genauere Infos bezueglich States sind unter DeveloperInfo zu finden.
Hier einige Ansaetze zur Problembehandlung
Problem: Das Script erfasst Geraete, die ohne Batterie betrieben sind: Kommt vor, insbesondere einige Homematic Geraete, die an 220V betrieben werden, haben einen indicator.lowbat. Diese Geraete koennen von der toolChain auf eine Ausnahmeliste gesetzt werden. Bitte den genauen Geraetetyp auf Github als Issue einstellen, ich versuche dann zeitnah das Geraet auf die Ausnahmeliste zu setzen. Fuer Entwickler sind hier einige Infos zusammengefasst: DeveloperInfo
Bei der Integration von "nicht Homematic" Geraeten bin ich auf mithilfe angewiesen, da ich die erforderlichen Komponenten ZigBee etc. nicht besitze.
Tauchen HMIP Geräte trotz korrekter Script-Konfiguration nicht in der Liste auf, bitte mal in der Object-Liste in IObroker prüfen, ob dort der indicator.lowbat in der Rolle der entsprechenden Geräte richtig gesetzt wurde:
Fehlt diese Rolle, muss sie manuell eingetragen werden. Danach das Script neu starten, dann sollten die Geräte auftauchen.
Ab der IObroker hm-rpc Version 1.14.6 sollte das Problem gelöst sein.
Dies tritt auf, wenn der hm-rega-Adapter nicht richtig konfiguriert ist und dadurch die Namen der Geräte nicht an IOBroker übermittelt werden. Vor der Version 0.1.6 führte dies zum Abbruch des Scriptes. Jetzt werden im Logbuch Warnmeldungen erzeugt, welche die entsprechende Gerätenummer anzeigt. Bitte dann die Konfiguration des hm-rega überprüfen. Achtung! Die Geräte ohne Namen werden NICHT auf LowBat überwacht!
Bitte vorranig ueber ein neues Issue hier auf Github einstellen, oder wenn es nicht anders geht per mail an [email protected]. Eine genaue Fehlerbeschreibung ist zwingend anzugeben!
0.1.7 (2021-10-19)
- (jogicom)
- Kleine Anpassungen an den Warntexten und im ReadMe
0.1.6 (2021-10-18)
- (jogicom)
- Fehler behoben, wenn Geräte in der Homematic nicht mit Namen versehen sind (Object in IOBroker hat kein "name") jetzt wird eine Warnmeldung im Log erzeugt (Danke an Markus!)
- Falscher Datentyp bei der Object Erstellung von STATE_REPLACE_STARTFLAG beseitigt
0.1.5 (2020-06-07)
- (jogicom)
- Fehler behoben, wenn bei ScriptStart ein Geraet LOWBAT hatte
- Fehler behoben, wenn ein Gerät einen kurzfristigen LOWBAT hatte
0.1.4 (2020-06-05)
- (jogicom)
- Anpassungen des ReadMe wegen fehlendem Indicator
- VIS Template war kaputt, neu hochgeladen
0.1.4 (2020-05-14)
- (jogicom)
- Anpassungen des ReadMe
- Beim versenden der taeglichen Statusmail wurde keine Mail versendet, obwohl leere Batterien vorhanden sind. (sendEmail)
- Fehler in der Dokumentation zur Konfiguration beseitigt (Kai)
- Angaben zur Adapterkonfiguration werden jetzt auf vorhandensein geprueft
0.1.3 (2020-05-12)
- (jogicom) Anpassungen des ReadMe, Code neu formatiert und Versionsnummer angepasst
0.1.2 (2020-05-12)
- (jogicom) Ready for Final Test
0.1.0 (2020-05-10)
- (jogicom) First release auf GitHub