







- Ein manuelles Auslösen des Programmes erzeugt auch eine Meldung / Reaktion sofern es eine aktuelle Servicemeldung gibt.
- Bei Benutzung der Systemvariablen als Speicherort, darf dies NICHT über die Favoriten der Startseite zugeordnet werden und ein protokollieren ist auch nicht ratsam
Im Fehlerfall erwarte ich gar nichts mehr
Das >> Fehlerprotokoll << sowie den Nachweis der korrekten Installation in Form von >>Bildschirmcopys<< könnten aber trotzdem hilfreich sein.

11/2023 - Batteriezuweisungen HM-PB-2-FM & HmIP-SWO-PR korrigiert. Danke fürs Melden
Neu in v1.996
- pragmatische Umgehung des EG-3 Bugs mit HMIP vs. HmIP
- Batteriezuweisungen HmIP-DLS, HmIP-STI, Danke @ HM-Villa
- Batteriezuweisung HmIP-DLD und Fehlerübersetzung Schließmechanismus blockiert - danke @ joesch
Neu n v1.995
- Abbruchcode bei keiner Servicemeldung angepasst
- Integration des CallMeBots für WhatApp Nachrichten (auch wenn er im Vergleich zu Telegram & Pushover starke Verzögerung aufweist.
- wenn die Zeiten mit versendet werden, wird jetzt auch die Anzahl der aktuellen Auslösungen angegeben
- Entfernung der eigenen Funktionen zwecks Sonderzeichen - .ToUTF8() und .UriEncode() waren nun lange genug an Bord.
- Batterietypen &
- Sabotagemeldung HM-Sec-MDIR-3
- lt.Meldung brunna_da_erna hinzugefügt bzw. geändert. vielen Dank
- nur schnell Fix der Zeichenumwandlung - Danke an rf4711
- und Batteriesensoren HmIP-STHO und HmIP-STHO-A hinzugefügt - Danke an Huey
Danke an Larson-SEI180LX fürs Melden
- Leeren der Speichervariable falls in Verwendung und bei Beseitigen der letzten Servicemeldung
- Batterietypen - HmIP-SWD & HmIP-SLO hinzugefügt, danke an JRiemann
Fehler Lageerkennung beim SWD hinzugefügt - testweise
- Batterietypen hinzugefügt - HmIP-SWO-B & HmIP-eTRV-2 danke tinram &HmIP-SAM & HmIP-SPDR danke blackhole
- SABOTAGE hinzugefügt
- Zeilenvorschub ausgebaut
- Auswahlparameter im Setup, ob CR zwischen den einzelnen Meldungen.
- Fix, wenn alle Servicemeldungen von geblockten Geräten sind, wurde trotzdem Nachricht verschickt.
Danke an rolu2 für die Meldung
- da immer mehr die ReGaHss Betaversion für CCU2 verwenden mussten Anpassungen am Script durchgeführt werden
- die von dtp gemeldeten neuen Batterietypen habe ich noch integriert - danke dafür
- da ich nicht zu Hause bin ist der Kram aber weitgehend ungetestet.
- Anpassungen im Script durchgeführt, da einige Geräte keine Meldungen verschickt haben. Danke Tibin das du so hartnäckig warst
- Übersetzungen entfernt, da Freizeichen kein Problem mehr bei Pushdiensten darstellen (zumindest getestet bei Pushover/Telegram/)
- Fehlerfix Danke Frozn
- Batteriezuweisung HM-RC-Sec4-3, Danke Falke69
NEU in 1.5
- Telegram Messenger nun doch mit an Bord
NEU in 1.4
Fehlerroutinen integriert - wer keine Probleme hat, braucht die neue Version auch nicht zu laden

HM-RC-Dis-H-x-EU mit 3 LR3 Batterien integriert
HM-Dis-EP-WM55 integriert
NEU in 1.2
- Eintrag ins Fehlerprotokoll bei Start und Ende des Scriptes hinzugefügt.
Neu in 1.0
- die Möglichkeit in Systemvariable zu speichern ist wieder enthalten auf Wunsch
- bissel am code geöändert um ^^ das auch so zu machen, das es auch richtig geht
- die Systemvariable wird nun auch aktualisiert, wenn sich eine Servicemeldung "auflöst" eine Mail oder sonstiges wird dabei aber nicht versandt!
Neu in 0.99
- Man kann eine Seriennummer eingeben, das Gerät wird dann aus dem Script ausgesperrt
- Batteriezuweisungen hinzugefügt
- Speichern in Systemvariable ersatzlos entfernt

Neu in 0.97
- impementieren der PRIO Funktion lt. Vorschlag von dtp Dankeschön

Damit gewinnt nun nicht die letzte Priorität sondern die höchste Priorität der anstehenden Servicemeldungen
Neu in 0.96
- nur fix, die großen Fernbedienungen haben Akkus und die HM-RC-19-B war gar nicht enthalten. Danke an den User Brati
Neu in 0.95
- wahlweise kann jetzt die Zeit der Servicemeldung mitgeschickt werden
- Pushover: Parameter Userdevice hinzugefügt, um die Nachrichten Geräteweise zu separieren
- Pushover: Parameter HTML hinzugefügt, habe im Script noch keine Anwendung dessen, man könnte aber

NEU in V0.83
- HM-Sec-SCo mit bei den Sonderfehlern Sabotage integriert - Danke an herbi für den Hinweis
Ich habe bei weitem nicht alle möglichen Geräte und bin für sachdienliche Hinweise immer dankbar.
V0.81
- Batterieausgabe jetzt mit Anzahl der leeren Batterien
- Umlaute fix - jetzt auch bei prowl/pushover
...
Da ich langsam Probleme kriege mit der Koordinierung meiner Sachen, möchte ich nun hier
auf die Schnelle unter Tipps und Tricks einen Thread eröffnen. Ich werde hier dann eventuelle
neue Versionen direkt in dem Post editieren.
Angefangen hatte alles mit >> diesem Thread <<.
Daraus hat sich ein Script entwickelt, welches verschiedene Möglichkeiten bietet:
Bei Auftreten von Servicemeldungen kann mittels des Scriptes die Servicemeldung
- per pushover verschickt werden
- per prowl verschickt werden
- per mail verschickt werden
- pushbullet verschickt werden
- telegram verschickt werden
- an WhatsApp
- per Systemvariable gespeichert werden
- ....
Die Servicemeldungen werden dabei übersetzt, ist es eine nicht in das Script integrierte Meldung, wird der Originaltext ausgegeben
Falls es sich um "Batterie leer ServiceMeldung" handelt, wird der Batterietyp gleich mit in die Meldung eingefügt sowie die Anzahl der benötigten Batterien.
Das Script kann also als Ersatz für eines der bekannten Batterieleer Scripte dienen.

Handelt es sich um "Kommunikation war gestört" Meldung, so wird durch das Script (wenn im Setup des Scriptes eingeschaltet) diese bestätigt.
Vereinzelt kommt lt. Usermeldungen vor, daß trotzdem "Kommunikation war gestört" Meldungen nicht quittiert werden, dann bitte die Wartezeit vor Ausführung des Scriptes im Programm leicht erhöhen. Dies kommt vor allem bei hoher Last auf der CCU vor.
dtp hat geschrieben:PRIO_MAX dient als eine Art Peak-Hold-Funktion für PRIO. So ist sichergestellt, dass bei mehreren, gleichzeitigen Servicemeldungen unterschiedlicher Priorität immer die höchste Priorität zum Versenden der Nachrichten verwendet wird. Setzt man PRIO_MAX auf 2, dann werden sämtliche Servicemeldungen als Alarmmeldungen versendet. Setzt man PRIO_MAX auf 1, dann werden alle Servicemeldungen mit der Priorität 1 gesendet, sofern es keine Servicemeldung mit der Priortät 2 gibt. Sprich, je höher der Wert für PRIO_MAX eingestellt wird, desto geringer ist der Spielraum für die einzelnen Prioritäten.
Soweit kurz zur Kurzfunktionsbeschreibung.
Einrichtung:
hier nur ein Bild:
! In den ersten Zeilen des Scriptes Setup durchführen !
Das Script hier aus dem Forum per Copy & Paste wie beschrieben in das Scriptfenster des Programmes kopieren, Setup durchführen, speichern, fertig.
In den ersten Scriptzeilen kann man das Script konfigurieren. Funktionen ein / ausschalten usw.
Es sollte eigentlich alles selbsterklärend sein, ich habe ausserdem fast immer eine Erklärung dahinter geschrieben.
Wer trotzdem Probleme damit hat, darf sich gerne melden, ich werde mich umgehend darum zu kümmern.
Ein Hinweis: Es wird CUXD.exec verwendet.
Die Installation ist also sozusagen "Pflicht", aber CUXD gehört *IMHO* eh auf jede CCU
Einzigste Funktion, die auch ohne CUXD funktioniert, ist das Speichern der Servicemeldung in einer Systemvariablen.
Wer es also erstmal testen will, kann das auch damit tun.
Ich verwende in meinem Script die Standardseriennummer des CUXD:Exec Gerätes mit 3 Kanälen.
Jeder der CUXD und das CUXD.exec Gerät mit den Standardoptionen installiert hat, braucht sich darum nicht zu kümmern.
Für alle anderen, gibt es ja das Setup.

Eine Anpassung des Codes unterhalb des Setups ist meines Erachtens nicht notwendig.
Ich hoffe, damit den Einen oder Anderem zu helfen.
Alchy
Hier nun das Script:
Code: Alles auswählen
! Servicemeldungen auslesen und weiter verarbeiten
! v1.996 (c) by alchy https://homematic-forum.de/forum/viewtopic.php?f=31&t=24618
!++++++ SETUP ++++++
! Bitte in Ruhe die naechsten Zeilen durcharbeiten
var WITHTIME = "ja"; ! Wenn ja, wird die Alarmzeit Zeit mitgesendet
! +++++ Servicemeldungen "Kommunikation war gestoert" bestaetigen? ++++++
var ACCK = "nein"; ! ja oder nein, um anstehende "war Kommunikationsstoerungen" zu bestaetigen
var CR = "ja"; !0 Zeilenvorschub zwischen einzelne Servicemeldungen
! HM Geraet, wessen Systemmeldungen nicht verschickt werden sollen
var BLOCK = ""; ! Seriennummern von Geraeten, welche durch das Script ignoriert werden sollen mit Leerzeichen getrennt.
!++++++ PUSHBULLET +++++++++
var USE_PUSHBULLET = "nein"; ! ja oder nein fuer die Verwendung PUSHBULLET direkt im Script;
var USER ="++++++++++++++++++++"; ! selbsterklaerend
var DEVICE_IDEN = "+++++++++++++++++++";
var PUSHBULLET_CUXD_ID = "CUX2801001:4"; !welches CUXD.EXEC Geraet mit Kanal soll verwendet werden ?
var TITEL = "Homematic"; !kann jeder nennen wie er will
!++++++ TELEGRAM +++++++++
var USE_TELEGRAM = "nein"; ! ja oder nein fuer die Verwendung TELEGRAM direkt im Script;
string CHATID = "+++++++";
string BOTAPI = "++++++++++++++++++++++++";
var TELEGRAM_CUXD_ID = "CUX2801001:2"; !welches CUXD.EXEC Geraet mit Kanal soll verwendet werden ?
!++++++ Prowl Setup fuer die Apfeljuenger +++++++++
! 1. Prowl einrichten ( http://homematic-forum.de/forum/viewtopic.php?f=19&t=7797 )
! 2. cuxd Installation erforderlich
var USE_PROWL = "nein"; ! ja oder nein fuer die Verwendung prowl direkt im Script;
var API_KEY ="DEIN API KEY"; ! selbsterklaerend
var PROWL_CUXD_ID = "CUX2801001:3"; !welches CUXD.EXEC Geraet mit Kanal soll verwendet werden ?
var ANWENDUNG = "Homematic"; !kann jeder nennen wie er will
var KATEGORIE ="Servicemeldung"; !kann jeder nennen wie er will
var TIME_OUT = "10";
!+++++++ Pushover Setup ++++++
! 1. pushover einrichten ( http://homematic-forum.de/forum/viewtopic.php?f=31&t=11579 )
! 2. cuxd Installation erforderlich
var USE_PUSHOVER = "nein"; ! das Übliche
var PUSH_CUXD_ID = "CUX2801001:2"; !welches CUXD.EXEC Geraet mit Kanal soll verwendet werden ?
var USERKENNUNG = "+++++++++++++++++++++"; ! Your User Key
var TOKEN = "+++++++++++++++++++++++++++++++"; ! Application API Token/Key
var USERDEVICE = ""; ! welches eingerichtete Gerät soll die Meldung bekommen? leer = alle Geraete sonst Namen komma separiert
var RETRY = "30"; !wiederholungen des Alarm bei prio >1
var EXPIRE = "120"; ! wie lange bis verfaellt
var SOUND = "siren"; !Sound nach wahl siehe "https://pushover.net/api#sounds"
var HTML ="1"; ! 1 use html codes at the message
var PRIO = "1";
var PRIO_MAX = "-2"; ! siehe http://homematic-forum.de/forum/viewtopic.php?f=31&t=24618&start=530#p288205
!%u200B ++++++++ Pushsaver Setup ++++++++++++++++
var USE_PUSHSAVER = "nein"; ! das Übliche
string TITEL = "Betreff: Servicemeldung";
string PUSHSAVER_CUXD_ID = "CUX2801001:14";
string MELODIE = "6";
string ICON = "10";
string VIBRATION = "1";
string DEVICE = "++++++++";
string PRIVATEKEY = "+++++++++++++++++";
!++++++ WHATSAPP +++++++++
var USE_WHATSAPP = "nein";
var WA_PHONE = "+49++++++";
var WA_CUXD_ID = "CUX2801001:1";
var WA_APIKEY = "+++++++";
!+++++++ Setup Mail verschicken mit CUXD und Emailaddon ++++++
! 1. CUXD incl. exec Geraet sind installiert ( http://homematic-forum.de/forum/viewtopic.php?f=37&t=15298 )
! 2. Mailaddon ist installiert eingestellt und funktioniert ( http://www.homematic-inside.de/software/email )
! 3. Im TCL Reiter im MailAddon wird als erste Zeile "set serviceliste [encoding convertfrom utf-8 [lindex $argv 1]]" ohne Anfuehrungsstriche eingegeben
! 4. in Mailvorlage Nr deiner Wahl wird "$serviceliste" ohne Anfuehrungsstriche im Mailtextfeld eingegeben (was da noch steht ist uninteressant) TCL verwenden wird angehakt
var USE_MAIL = "nein"; ! ja / nein schicken einer Mail direkt ueber das Script
var MAIL_ID = "01"; ! die VORHER praeparierte Mailvorlage 01 - 50 in der aktuellen Version des mailaddon
var MAIL_CUXD_ID = "CUX2801001:1"; ! die Serial des EXEC Geraete - wer nicht weiss was ich meine, einfach so lassen ist die Standard
!+++++++ Systemvariablen Setup ++++++
! 1. Vor Benutzung Systemvariable vom Typ Zeichenkette in CCU anlegen,
var USE_SYSVAR = "nein"; ! ja / nein Speichern der Ausgabe des Scriptes in Systemvariable
var SYSVAR_NAME = "Name deiner Speichervariable"; ! hier den Namen dieser Variablen eintragen
!+++++++ Eigentlich schon fertig mit dem Setup +++++++++++
!+++++ Batteriezuweisungen inklusive Anzahl !Bitte helfen und fehlende Geraete posten ++++++++++++++++
!+++++ noch nicht integrierte Geraete werden mit unbekannt ausgegeben ++++++++++++++++
string cr2016 = "HM-RC-4\tHM-RC-4-B\tHM-RC-Key3\tHM-RC-Key3-B\tHM-RC-P1\tHM-RC-Sec3\tHM-RC-Sec3-B\tZEL STG RM HS 4";
string cr2032 = "HmIP-DLS\tHM-PB-2-WM\tHM-PB-4-WM\tHM-PBI-4-FM\tHM-SCI-3-FM\tHM-Sec-TiS\tHM-SwI-3-FM\tHmIP-FCI1";
string lr14x2 = "HM-Sec-Sir-WM\tHM-OU-CFM-TW";
string lr14x3 = "HmIP-MP3P";
string lr44x2 = "HM-Sec-SC\tHM-Sec-SC2\tHM-Sec-SC-2\tHM-Sec-RHS\tHmIP-WRCC2";
string lr6x2 = "HmIP-WTH-B-2\tHmIP-eTRV-2 I9F\tHmIP-STI\tHmIP-eTRV-C\tHM-CC-VD\tHM-CC-RT-DN\tHM-Sec-WDS\tHM-Sec-WDS-2\tHM-CC-TC\tHM-Dis-TD-T\tHB-UW-Sen-THPL-I\tHM-WDS40-TH-I\tHM-WDS40-TH-I-2\tHM-WDS10-TH-O\tHmIP-SMI\tHmIP-eTRV\tHMIP-eTRV\tHM-WDS30-OT2-SM-2\tHmIP-SMO\tHmIP-SMO-A\tHmIP-SPI\tHmIP-eTRV-2\tHmIP-SPDR\tHmIP-WGC";
string lr6x3 = "HM-Sen-LI-O\tHmIP-DLD\tHM-Sec-MDIR-3\tHmIP-SWO-PL\tHM-Sec-MDIR\tHM-Sec-MDIR-2\tHM-Sec-SD\tHM-Sec-Key\tHM-Sec-Key-S\tHM-Sec-Key-O\tHM-Sen-Wa-Od\tHM-Sen-MDIR\tHM-Sen-MDIR-O\tHM-Sen-MDIR-O-2\tHM-WDS100-C6-O\tHM-WDS100-C6-O-2\tHmIP-ASIR\tHmIP-SWO-B\tHmIP-SWO-PR";
string lr6x4 = "HM-CCU-1\tHM-ES-TX-WM\tHM-WDC7000";
string lr3x1 = "HmIP-DBB\tHmIP-KRCK\tHmIP-RCB1\tHM-RC-4-2\tHM-RC-4-3\tHM-RC-Key4-2\tHM-RC-Key4-3\tHM-RC-Sec4-2\tHM-RC-Sec4-3\tHM-Sec-RHS-2\tHM-Sec-SCo\tHmIP-KRC4\tHmIP-KRCA\tHmIP-SRH\tHMIP-SWDO\tHmIP-SWDO";
string lr3x2 = "HmIP-WTH-1\tHmIP-SWD\tHmIP-SWDM-B2\tHmIP-SWDM-2\tHmIP-SMI55\tHmIP-RC8\tHmIP-STHO\tHmIP-STHO-A\tHM-TC-IT-WM-W-EU\tHM-Dis-WM55\tHM-Dis-EP-WM55\tHM-PB-2-WM55\tHM-PB-2-WM55-2\tHM-PB-6-WM55\tHM-PB-2-FM\tHM-RC-8\tHM-Sen-DB-PCB\tHM-Sen-EP\tHM-Sen-MDIR-SM\tHM-Sen-MDIR-WM55\tHM-WDS30-T-O\tHM-WDS30-OT2-SM\tHmIP-STH\tHmIP-STHD\tHmIP-WRC2\tHMIP-WRC2\tHmIP-WRC6\tHmIP-WTH\tHMIP-WTH\tHmIP-WTH-2\tHmIP-SAM\tHmIP-SLO\tHmIP-SWDO-I\tHMIP-SWDO-I\tHmIP-FCI6";
string lr3x3 = "HM-PB-4Dis-WM\tHM-PB-4Dis-WM-2\tHM-RC-Dis-H-x-EU";
string lr3x3a = "HM-RC-19\tHM-RC-19-B\tHM-RC-12\tHM-RC-12-B\tHM-RC-12-W";
string block9 = "HM-LC-Sw1-Ba-PCB\tHM-LC-Sw4-PCB\tHM-MOD-EM-8\tHM-MOD-Re-8\tHM-Sen-RD-O\tHM-OU-CM-PCB\tHM-LC-Sw4-WM";
string fixed = "HM-Sec-SD-2\tHMIP-SWSD\tHmIP-SWSD";
string recharge = "HM-Sec-Win\tHM-Sec-SFA-SM";
!+++++++++ Setup nun aber wirklich zu Ende - ab hier Finger weg ;-) ++++++++++++++++++
if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC")) { (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY ALLINScript START]"); } else {string stdout;string stderr; system.Exec("logger -t script -p user.debug [ALCHY ALLINScript se START]", &stdout, &stderr);}
if ( dom.GetObject(41).Value() >= dom.GetObject(41).LastValue() ) { boolean GO = true; string slist = "NEUE Servicemeldung" ;if (CR == "ja"){ slist = slist #"\r\n";}} else { string slist = "ALTE Servicemeldung";if (CR == "ja"){ slist = slist #"\r\n\r\n";} boolean GO = false; }
object oTmpArray = dom.GetObject(ID_SERVICES);
if(oTmpArray) {
string sTmp;
string sdesc;
string stest;
foreach(sTmp, oTmpArray.EnumIDs()) {
object oTmp = dom.GetObject(sTmp);
if (oTmp) {
if(oTmp.IsTypeOf(OT_ALARMDP) && (oTmp.AlState() == asOncoming)) {
boolean collect = true;
object trigDP = dom.GetObject(oTmp.AlTriggerDP());
object och = dom.GetObject((trigDP.Channel()));
object odev = dom.GetObject((och.Device()));
var ival = trigDP.Value();
time sftime = oTmp.AlOccurrenceTime(); ! erste Meldezeit
time sltime = oTmp.LastTriggerTime();!letze Meldezeit
var sdesc = trigDP.HssType();
var sserial = odev.Address();
if ((sdesc == "STICKY_UNREACH") && (ACCK == "ja")) { oTmp.AlReceipt(); collect = false;}
if ( (BLOCK.Find(sserial)<0) && (collect) ) {
! Uebersetzen der Fehlermeldungen
if (sdesc == "CONFIG_PENDING") {sdesc = "Konfigurationsdaten stehen zum Transfer an"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if ( (sdesc == "LOWBAT") || (sdesc == "LOW_BAT") ) {sdesc = "Batteriestand niedrig"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "STICKY_UNREACH") {sdesc = "hatte Kommunikationsfehler"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "UNREACH") {sdesc = "hat Kommunikationsfehler"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "ERROR_COMMUNICATION_SENSOR") {sdesc = "hat Kommunikationsfehler"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "DEVICE_IN_BOOTLOADER"){sdesc = "Device startet neu"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "UPDATE_PENDING") {sdesc = "Update verfuegbar"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "U_SOURCE_FAIL") {sdesc = "Netzteil ausgefallen"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "USBH_POWERFAIL") {sdesc = "USB-Host deaktiviert"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if ( (sdesc == "ERROR_SABOTAGE") || (sdesc == "SABOTAGE") ) {sdesc = "Sabotage"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "STICKY_SABOTAGE") {sdesc = "hatte Sabotagemeldung"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "ERROR_REDUCED"){sdesc = "Temperatur kritisch (Lastabsenkung)."; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "ERROR_NON_FLAT_POSITIONING"){sdesc = "Fehler Lageerkennung"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "ERROR_OVERLOAD"){sdesc = "Aktor überlastet."; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (sdesc == "ERROR_JAMMED"){sdesc = "Schliessmechanismus blockiert."; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
! Sonderfehler
if (sdesc == "ERROR") {
if((odev.HssType()=="HM-Sec-RHS") || (odev.HssType()=="HM-Sec-SC") || (odev.HssType()=="HM-Sec-SC-2") || (odev.HssType()=="HM-Sec-SCo") || (odev.HssType()=="HM-Sec-MD") || (odev.HssType()=="HM-Sec-MDIR") || (odev.HssType()=="HM-Sec-MDIR-2") || (odev.HssType()=="HM-Sec-MDIR-3") || (odev.HssType()=="HM-Sec-Sir-WM"))
{
if (ival == 7){sdesc = "Sabotage"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
}
if ((odev.HssType()=="HM-Sec-Key") || (odev.HssType()=="HM-Sec-Key-S") || (odev.HssType()=="HM-Sec-Key-O"))
{
if (ival == 1){sdesc = "Einkuppeln fehlgeschlagen"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 2){sdesc = "Motorlauf abgebrochen"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
}
if (odev.HssType()=="HM-CC-VD")
{
if (ival == 1){sdesc = "Ventil Antrieb blockiert"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 2){sdesc = "Ventil nicht montiert"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 3){sdesc = "Stellbereich zu klein"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 4){sdesc = "Batteriestand niedrig"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
}
}
if (sdesc == "FAULT_REPORTING") {
if (odev.HssType()=="HM-CC-RT-DN")
{
if (ival == 1) {sdesc = "Ventil blockiert."; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 2) {sdesc = "Einstellbereich Ventil zu gross"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 3) {sdesc = "Einstellbereich Ventil zu klein"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 4) {sdesc = "Kommunikationsfehler"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 6) {sdesc = "Batteriestand niedrig"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
if (ival == 7) {sdesc = "Fehlstellung Ventil"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
}
}
if (sdesc == "Batteriestand niedrig") {
string batlink = "unbekannt";
string index;
foreach (index, cr2016) {if (index == odev.HssType()) {batlink = "1x leere CR2016";}}
foreach (index, cr2032) {if (index == odev.HssType()) {batlink = "1x leere CR2032";}}
foreach (index, lr14x2) {if (index == odev.HssType()) {batlink = "2x leere LR14";}}
foreach (index, lr14x3) {if (index == odev.HssType()) {batlink = "3x leere LR14";}}
foreach (index, lr44x2) {if (index == odev.HssType()) {batlink = "2x leere LR44/AG13";}}
foreach (index, lr6x2) {if (index == odev.HssType()) {batlink = "2x leere LR6/AA";}}
foreach (index, lr6x3) {if (index == odev.HssType()) {batlink = "3x leere LR6/AA";}}
foreach (index, lr6x4) {if (index == odev.HssType()) {batlink = "4x leere LR6/AA";}}
foreach (index, lr3x1) {if (index == odev.HssType()) {batlink = "1x leere LR3/AAA";}}
foreach (index, lr3x2) {if (index == odev.HssType()) {batlink = "2x leere LR3/AAA";}}
foreach (index, lr3x3) {if (index == odev.HssType()) {batlink = "3x leere LR3/AAA";}}
foreach (index, lr3x3a) {if (index == odev.HssType()) {batlink = "3x leere AAA Akkus - bitte laden";}}
foreach (index, block9) {if (index == odev.HssType()) {batlink = "9Volt Block leer oder unbestimmt";}}
foreach (index, fixed) {if (index == odev.HssType()) {batlink = "Festbatterie leer";}}
foreach (index, recharge) {if (index == odev.HssType()) {batlink = "Akku entladen - bitte aufladen";}}
slist = slist #odev.Name() # " : "; if (CR == "ja"){ slist = slist #"\r\n";} slist = slist #batlink#" "; if ( WITHTIME == "ja") { if (CR == "ja"){ slist = slist #"\r\n";} slist = slist #oTmp.AlCounter() #" mal seit: "#sftime.Format("%d.%m.%y %H:%M") #" ( zuletzt: "#sltime.Format("%d.%m.%y %H:%M")#")";}
}
else
{
slist = slist #odev.Name() # " : " ; if (CR == "ja"){ slist = slist #"\r\n";} slist = slist #sdesc#" "; if ( WITHTIME == "ja") { if (CR == "ja"){ slist = slist #"\r\n";} slist = slist #oTmp.AlCounter() #" mal seit: "#sftime.Format("%d.%m.%y %H:%M") #" ( zuletzt: "#sltime.Format("%d.%m.%y %H:%M")#")" ;}
}
if (CR == "ja"){ slist = slist #"\r\n\r\n";}
}
} } }
if (slist.Length() <= 25) {
if ( (USE_SYSVAR == "ja") && (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME) ){ (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME).State(""); }
if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC")) { (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY ALLINScript Abbruch BLOCK"#slist.Length()#"]"); } else {string stdout;string stderr; system.Exec("logger -t script -p user.debug [ALCHY ALLINScript se Abbruch BLOCK "#slist.Length()#"]", &stdout, &stderr);}
quit;}
string message = slist.ToUTF8().UriEncode();
! Verarbeiten der Daten zum Versand
if (GO) {
if ( (USE_MAIL == "ja")&&( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#MAIL_CUXD_ID#".CMD_EXEC")) ) { (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#MAIL_CUXD_ID#".CMD_EXEC").State("/etc/config/addons/email/email "#MAIL_ID#" '"#slist#"'");
if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC")) { (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY ALLINScript Mails raus]"); } else {string stdout;string stderr; system.Exec("logger -t script -p user.debug [ALCHY ALLINScript se Mail raus]", &stdout, &stderr);}
}
if ( (USE_PUSHOVER == "ja") &&( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSH_CUXD_ID#".CMD_EXEC")) ){ (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSH_CUXD_ID#".CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/lib/ /usr/bin/curl -s -k -d token='"#TOKEN#"' -d user='"#USERKENNUNG#"' -d device='"#USERDEVICE#"' -d html='"#HTML#"' -d message='"#message#"' -d priority='"#PRIO_MAX#"' -d sound='"#SOUND#"' -d retry='"#RETRY#"' -d expire='"#EXPIRE#"' https://api.pushover.net/1/messages.json"); }
if ( (USE_PUSHBULLET == "ja") &&( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSHBULLET_CUXD_ID#".CMD_EXEC")) ){ (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSHBULLET_CUXD_ID#".CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/lib/ /usr/bin/curl -u '"#USER#"' -k -d device_iden='"#DEVICE_IDEN#"' -d type=note -d title='"#TITEL#"' -d body='"#slist#"' https://api.pushbullet.com/api/pushes"); }
if ( (USE_TELEGRAM == "ja") &&( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#TELEGRAM_CUXD_ID#".CMD_EXEC")) ){ (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#TELEGRAM_CUXD_ID#".CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/lib/ /usr/bin/curl -s -k https://api.telegram.org/bot"#BOTAPI#"/sendMessage -d text='"#message#"' -d chat_id="#CHATID); }
if ( (USE_PROWL == "ja") && ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PROWL_CUXD_ID#".CMD_EXEC")) ){ string url="http://prowl.weks.net/publicapi/add?apikey="#API_KEY#"&application="#ANWENDUNG#"&event="#KATEGORIE#"&priority="#PRIO_MAX#"&description="#slist#"&timeout="#TIME_OUT#""; (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PROWL_CUXD_ID#".CMD_EXEC").State("wget -q -O - '"#url#"'"); }
if ( (USE_PUSHSAVER == "ja") && ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSHSAVER_CUXD_ID#".CMD_EXEC")) ){ (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#PUSHSAVER_CUXD_ID#".CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/lib/ /usr/bin/curl -s -k -d k='"#PRIVATEKEY#"' -d t='"#TITEL#"' -d m='"#message#"' -d s='"#MELODIE#"' -d i='"#ICON#"' -d v='"#VIBRATION#"' -d d='"#DEVICE#"' https://www.pushsafer.com/api");}
if ( (USE_WHATSAPP == "ja") &&( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#WA_CUXD_ID#".CMD_EXEC")) ){ (dom.GetObject(ID_DATAPOINTS)).Get("CUxD."#WA_CUXD_ID#".CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/lib/ /usr/bin/curl -s -k 'https://api.callmebot.com/whatsapp.php?phone="#WA_PHONE#"&text="#message#"&apikey="#WA_APIKEY#"'");}
if ( (USE_SYSVAR == "ja") && (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME) ){ (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME).State(slist); }
} else { if ( (USE_SYSVAR == "ja") && (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME) ){ (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(SYSVAR_NAME).State(slist); }}
if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC")) { (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY ALLINScript ENDE]"); } else {string stdout;string stderr; system.Exec("logger -t script -p user.debug [ALCHY ALLINScript se ENDE]", &stdout, &stderr);}
}
WriteLine("slist: "#slist);
WriteLine("message: "#message);