Servicemeldungen *allinclusive* Script

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Xerabo
Beiträge: 69
Registriert: 24.08.2010, 22:18
Hat sich bedankt: 10 Mal

Re: Servicemeldungen *allinclusive* Script

Beitrag von Xerabo » 03.11.2016, 20:33

Ah, entschuldige... das script vom ersten Post.
--------------------------------------------
124 Kanäle in 86 Geräten, CCU3, Redmatic -> HomeKit

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

Re: Servicemeldungen *allinclusive* Script

Beitrag von alchy » 03.11.2016, 20:47

Xerabo hat geschrieben:Hi,

ich habe das Script auf meiner CCU2 eingerichtet. Leider reagiert es nicht auf Änderungen der Variable "Servicemeldungen" -
Du erzeugst eine Servicemeldung und das Programm wird nicht gestartet? (Zeitstempel der letzten Programmausführung) oder es wird gestartet, macht aber nicht das was du erwartest?

Xerabo hat geschrieben: bzw. die Servicemeldungen werden nicht gelöscht.
oder erwartest du zuviel? nur die Kommunikation WAR gestört werden vom Script bestätigt!
Xerabo hat geschrieben: Die Var ist vorhanden - das habe ich schon nachgesehen.
Kann ich nicht nachvollzuiehen,was du damit meinst.

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.

Xerabo
Beiträge: 69
Registriert: 24.08.2010, 22:18
Hat sich bedankt: 10 Mal

Re: Servicemeldungen *allinclusive* Script

Beitrag von Xerabo » 03.11.2016, 21:07

Hallo Alchy,

1) Das Programm wird gestartet. Es wird jedoch weder eine prowl-msg versendet noch die Servicemeldungen bestätigt.
2) Ich habe div. "WAR gestört" Meldungen - sie werden nicht bestätigt
3) Damit meinte ich, dass die Variable "Servicemeldungen" vorhanden ist und auch hochzählt, wenn eine neue dazukommt.
--------------------------------------------
124 Kanäle in 86 Geräten, CCU3, Redmatic -> HomeKit

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

Re: Servicemeldungen *allinclusive* Script

Beitrag von alchy » 03.11.2016, 21:31

O.K. also beim Erzeugen einer NEUEN Servicemeldung wird das Programm und damit das Script gestartet. Dann sollte es auch das machen was es soll. :shock:

Hast du im Script NUR Prowl aktiv ? oder noch anderes (mail, Systemvariable...)
Ich kann PROWL nicht testen, da musste ich mich auf andere verlassen.
Kannst ja mal testweise z.B. speichern in Systemvariable mit aktivieren.

Bitte das >> Fehlerprotokoll<<.

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.

Xerabo
Beiträge: 69
Registriert: 24.08.2010, 22:18
Hat sich bedankt: 10 Mal

Re: Servicemeldungen *allinclusive* Script

Beitrag von Xerabo » 03.11.2016, 21:44

ich habe auch die systemvariable für pocketcontrol aktiv - die wird aber auch nicht gesetzt.

was vom fehlerprotokoll wird denn benötigt? Gibt es irgendein Stichwort nach dem ich suchen soll?
--------------------------------------------
124 Kanäle in 86 Geräten, CCU3, Redmatic -> HomeKit

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

Re: Servicemeldungen *allinclusive* Script

Beitrag von alchy » 03.11.2016, 22:05

Xerabo hat geschrieben: was vom fehlerprotokoll wird denn benötigt? Gibt es irgendein Stichwort nach dem ich suchen soll?
Fehlerlog:
Einfach eine Servicemeldung auslösen und den +/- 2min Zeitpunkt des Auslösens der Servicemeldung dann posten. Ausserdem solltest du meine Scriptmarkierung im Log finden.

oder

Noch hilfreicher, die JSON Rückgabe des ScriptExecuters beim Ausführen des Scriptes posten.

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.

MarcMatic
Beiträge: 322
Registriert: 02.03.2014, 10:06
Danksagung erhalten: 2 Mal

Re: Servicemeldungen *allinclusive* Script

Beitrag von MarcMatic » 05.11.2016, 14:55

Hab das Script gerade ausprobiert. Super!

Eine Frsge zur Logik: ich hatte 3 Meldungen (alle nur IST), habe eine behoben. Jetzt werden in der Variable aber noch immer die zuvor 3 Meldungen als alte Meldungen angezeigt obwohl 2 davon ja noch aktuell sind.

Verstehe ich das Konzept nicht oder liegt da ein Fehler bei mir vor?

Lieben Gruss,
Marc

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

Re: Servicemeldungen *allinclusive* Script

Beitrag von alchy » 05.11.2016, 22:27

In der Variablen sollten im Original immer die noch anstehenden Servicemeldungen stehen.
Hattest du 3 und eine geht weg, werden in der Variable nur noch die beiden aufgeführt, ohne das du eine neue Meldung (Mail, Push ... bekommst.) Kommt zu den 2en noch eine dritte hinzu wird auch das wieder in der Variablen abgebildet und du bekommst auch eine Nachricht (inklusive der beiden alten)
Das Wort alte bzw. neue Servicemeldungen verwirrt wahrscheinlich, ist nur ein Überbleibsel aus meinen Tests.
Sollte das nicht so sein, wie ich es beschrieben habe, dann melde dich noch mal mit Bildschrimcopys des Programmes usw.

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.

MarcMatic
Beiträge: 322
Registriert: 02.03.2014, 10:06
Danksagung erhalten: 2 Mal

Re: Servicemeldungen *allinclusive* Script

Beitrag von MarcMatic » 06.11.2016, 06:02

Hallo alchy... hatte versehentlich "auf Änderung" und nicht "Aktualisierung" stehen. Beobachte es jetzt mal weiter.

Lieben Gruss,
Marc

Benutzeravatar
Centauri2k
Beiträge: 684
Registriert: 17.09.2016, 21:13

Re: Servicemeldungen *allinclusive* Script

Beitrag von Centauri2k » 17.11.2016, 20:30

Hallo, ich habe bemerkt, dass ich seit einiger Zeit keine Push-Nachrichten mehr bekomme wenn ich einen Servicemeldung habe.

Am dem Programm habe ich seit der Einrichtung nichts geändert, und es klappte immer. Der Token und die Userkennung von Pushover stimmen. Das CuxD-Gerät stimmt auch.

Code: Alles auswählen

! Servicemeldungen auslesen und weiter verarbeiten zusammengetragen von Alchy & dtp
! v1.2
! Zum Benutzen: Neues Programm in der CCU wie folgt erstellen:
! WENN Systemzustand: Servicemeldungen im Wertebereich größer als 0 bei Aktualisierung auslösen
! DANN mit einer Sekunde Verzögerung Skript (und dann dieses Script komplett einfügen und mit o.k. bestätigen
! In den ersten Zeilen des Scriptes Setup durchführen !

! ++++++ Allgemeine Infos ++++++ UTF8
! Servicemeldungen bei Kommunikationsstörungen "war gestört" wird durch das Script bestätigt (konfigurierbar)
! Im Falle einer Batterieleermeldung, wird der Gerätename und der Batterietyp sowie die Anzahl der Batterien ,
! sonst bei einer anderen Servicemeldung wird der Gerätename und der Fehler (übersetzt) entweder
! ausgegeben / in Variable gespeichert / per prowl / pushover versendet und / oder per Mail verschickt
! das Ganze sollte sowohl als auch funktionieren.
! Bitte Infos bei den Setup durchlesen und beachten, im Zweifelsfalle einfach nachfragen.
! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

! ++++++ ToDo ++++++
! Fehlermeldungen - Batterietypen aktualisieren
! prio für prowl und pushover besser integrieren


!++++++ SETUP ++++++
! Bitte in Ruhe die nächsten Zeilen durcharbeiten
var WITHTIME = "ja"; ! Wenn ja, wird die Alarmzeit Zeit mitgesendet
! +++++ Servicemeldungen "Kommunikation war gestört" bestätigen? ++++++
var ACCK = "ja"; ! ja oder nein, um anstehende "war Kommunikationsstörungen" zu bestätigen
! HM Gerät, wessen Systemmeldungen nicht verschickt werden sollen
var BLOCK = "JEQ012345678"; 


!++++++ PUSHBULLET +++++++++
var USE_PUSHBULLET = "nein"; ! ja oder nein für die Verwendung PUSHBULLET direkt im Script;
var USER ="++++++++++++++++++++"; ! selbsterklärend
var DEVICE_IDEN = "+++++++++++++++++++";
var PUSHBULLET_CUXD_ID = "CUX2801001:4"; !welches CUXD.EXEC Gerät mit Kanal soll verwendet werden ?
var TITEL = "Homematic"; !kann jeder nennen wie er will


!++++++ Prowl Setup fuer die Apfeljünger +++++++++
! 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 für die Verwendung prowl direkt im Script;
var API_KEY ="DEIN API KEY"; ! selbsterklärend
var PROWL_CUXD_ID = "CUX2801001:3"; !welches CUXD.EXEC Gerät 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 = "ja"; ! das Übliche
var PUSH_CUXD_ID = "CUX2801001:1"; !welches CUXD.EXEC Gerät mit Kanal soll verwendet werden ?
var USERKENNUNG = "XXXX";
var TOKEN = "XXXX";
var USERDEVICE = ""; ! welches eingerichtete Gerät soll die Meldung bekommen? leer = alle Geräte sonst Namen komma separiert
var RETRY = "30"; !wiederholungen des Alarm bei prio >1
var EXPIRE = "120"; ! wie lange bis verfällt
var SOUND = "pushover"; !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

!+++++++ Setup Mail verschicken mit CUXD und Emailaddon ++++++
! 1. CUXD incl. exec Gerät 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 Anführungsstriche eingegeben
! 4. in Mailvorlage Nr deiner Wahl wird "$serviceliste" ohne Anführungsstriche im Mailtextfeld eingegeben (was da noch steht ist uninteressant)
var USE_MAIL = "nein"; !   ja / nein schicken einer Mail direkt über das Script
var MAIL_ID = "01"; !  die VORHER präparierte Mailvorlage 01 - 50 in der aktuellen Version des mailaddon
var MAIL_CUXD_ID = "CUX2801001:1"; !   die Serial des EXEC Geräte - 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 Geräte posten ++++++++++++++++
!+++++ noch nicht integrierte Geräte werden mit unbekannt ausgegeben ++++++++++++++++
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\tZEL_STG_RM_HS_4";
string cr2032 = "HM-SCI-3-FM\tHM-PBI-4-FM\tHM-PB-2-WM\tHM-SwI-3-FM\tHM-PBI-4-FM\tHM-Sec-TiS";
string lr14x2 = "HM-Sec-Sir-WM\tHM-OU-CFM-TW";
string lr44x2 = "HM-Sec-SC\tHM-Sec-SC2\tHM-Sec-SC-2\tHM-Sec-RHS";
string lr6x2 = "HM-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-TC-IT-WM-W-EU\tHM-WDS40-TH-I\tHM-WDS40-TH-I-2\tHM-WDS10-TH-O\tHmIP-SMI\tHMIP-eTRV\tHM-WDS30-OT2-SM-2";
string lr6x3 = "HM-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";
string lr6x4 = "HM-ES-TX-WM\tHM-CCU-1";
string lr3x1 = "HMIP-SWDO\tHM-Sec-SCo\tHM-RC-4-2\tHM-RC-Key4-2\tHM-RC-Sec4-2\tHmIP-KRCA\tHMIP-SWDO";
string lr3x2 = "HM-Dis-EP-WM55\tHM-PB-6-WM55\tHM-Sen-MDIR-WM55\tHM-PBI-2-FM\tHM-RC-8\tHM-Sen-DB-PCB\tHB-UW-Sen-THPL-O\tHM-Sen-EP\tHM-WDS30-T-O\tHM-WDS30-OT2-SM\tHM-TC-IT-WM-W-EU\tHM-Dis-WM55\tHM-PB-2-WM55\tHM-PB-2-WM55-2\tHM-Sen-MDIR-SM\tHMIP-WTH\tHMIP-WRC2";
string lr3x3 = "HM-PB-4Dis-WM\tHM-Sen-LI-O";
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";

!+++++++++ Setup nun aber wirklich zu Ende - ab hier Finger weg ;-) ++++++++++++++++++
! var SM_neu = dom.GetObject(41).Value();
! var SM_alt = dom.GetObject(41).LastValue();
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY Script START]");
string slist = "";
if (dom.GetObject(41).Value() > dom.GetObject(41).LastValue()) {  boolean GO = true; string slist = "NEUE SERVICEMELDUNG"; } else { string slist = "ALTE Servicemeldung";}

! ausgelagert:  Quittieren der war gestört Meldungen 
object oTmpArray = dom.GetObject(ID_SERVICES);
              if(oTmpArray) {
                 string sTmp;
                 string sdev;
                 string sdesc;
             string styp;
        foreach(sTmp, oTmpArray.EnumIDs()) {
           object oTmp = dom.GetObject(sTmp);
           if (oTmp){
           if(oTmp.IsTypeOf(OT_ALARMDP) && (oTmp.AlState() == asOncoming)) {
              var trigDP = dom.GetObject(oTmp.AlTriggerDP());
              var ch = dom.GetObject(trigDP.Channel());
              var sdev = dom.GetObject(ch.Device());
              var ival = trigDP.Value();
              var sdesc = trigDP.AlDestMapDP().Name().StrValueByIndex(".", 2);
           
                 if ((sdesc == "STICKY_UNREACH") && (ACCK == "ja")) { oTmp.AlReceipt();}   
        } } } }

! Ende Auslagerung war gestört Meldung   
      



! wird ab 1.0 immer abgearbeitet  
      foreach(sTmp, oTmpArray.EnumIDs()) {
        object oTmp = dom.GetObject(sTmp);
           if (oTmp) {
           if(oTmp.IsTypeOf(OT_ALARMDP) && (oTmp.AlState() == asOncoming)) {
              var trigDP = dom.GetObject(oTmp.AlTriggerDP());
              var ch = dom.GetObject(trigDP.Channel());
              var sdev = dom.GetObject(ch.Device());
              var ival = trigDP.Value();
           var stime = ch.LastTimestamp().ToString("%d.%m.%y %H:%M Uhr");
              var sdesc = trigDP.AlDestMapDP().Name().StrValueByIndex(".", 2);
             var serial = (trigDP.AlDestMapDP().Name().StrValueByIndex(".", 1)).StrValueByIndex(":", 0);

 if (!serial == BLOCK) { 
 
      ! Übersetzen der Fehlermeldungen
        
      if (sdesc == "CONFIG_PENDING") {sdesc = "Konfigurationsdaten stehen zur Übertragung an"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
      if (sdesc == "LOWBAT") {sdesc = "Batteriestand niedrig"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
        if (sdesc == "STICKY_UNREACH") {sdesc = "Kommunikation war gestört"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
        if (sdesc == "UNREACH") {sdesc = "Kommunikation zur Zeit gestört"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
        if (sdesc == "DEVICE_IN_BOOTLOADER"){sdesc = "Gerät startet neu"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
        if (sdesc == "UPDATE_PENDING") {sdesc = "Update verfügbar"; 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"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
      if (sdesc == "STICKY_SABOTAGE") {sdesc = "Sabotage war ausgelöst"; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}

        ! Sonderfehler
        if (sdesc == "ERROR") {
        if((sdev.HssType()=="HM-Sec-RHS") || (sdev.HssType()=="HM-Sec-SC") || (sdev.HssType()=="HM-Sec-SC-2") || (sdev.HssType()=="HM-Sec-SCo") || (sdev.HssType()=="HM-Sec-MD") || (sdev.HssType()=="HM-Sec-MDIR") || (sdev.HssType()=="HM-Sec-MDIR-2") || (sdev.HssType()=="HM-Sec-Sir-WM"))
           {
              if (ival == 7){sdesc = "Sabotage."; PRIO = 1; if (PRIO >= PRIO_MAX){PRIO_MAX = PRIO;}}
            }
            if ((sdev.HssType()=="HM-Sec-Key") || (sdev.HssType()=="HM-Sec-Key-S") || (sdev.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 (sdev.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 (sdev.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 == sdev.HssType()) {batlink = "1x leere CR2016";}}
           foreach (index, cr2032) {if (index == sdev.HssType()) {batlink = "1x leere CR2032";}}
         foreach (index, lr14x2) {if (index == sdev.HssType()) {batlink = "2x leere LR14";}}
           foreach (index, lr44x2) {if (index == sdev.HssType()) {batlink = "2x leere LR44/AG13";}}
           foreach (index, lr6x2) {if (index == sdev.HssType()) {batlink = "2x leere LR6/AA";}}
           foreach (index, lr6x3) {if (index == sdev.HssType()) {batlink = "3x leere LR6/AA";}}
           foreach (index, lr6x4) {if (index == sdev.HssType()) {batlink = "4x leere LR6/AA";}}
           foreach (index, lr3x1) {if (index == sdev.HssType()) {batlink = "1x leere LR3/AAA";}}
           foreach (index, lr3x2) {if (index == sdev.HssType()) {batlink = "2x leere LR3/AAA";}}
           foreach (index, lr3x3) {if (index == sdev.HssType()) {batlink = "3x leere LR3/AAA";}}
         foreach (index, lr3x3a) {if (index == sdev.HssType()) {batlink = "3x leere AAA Akkus - bitte laden";}}
           foreach (index, block9) {if (index == sdev.HssType()) {batlink = "9Volt Block leer oder unbestimmt";}}
                             

      
       slist = slist  #"\n"  #sdev.Name() # " : " # batlink; if ( WITHTIME == "ja") { slist = slist #" seit: "#stime ;}
       }
       else
       {
       slist = slist  #"\n"  #sdev.Name() # " : " # sdesc; if ( WITHTIME == "ja") { slist = slist #" seit: "#stime ;}
      }
} } } } 
    
       
if (( USE_PUSHOVER == "ja") || ( USE_PROWL == "ja") || ( USE_PUSHBULLET == "ja")) {
           string message;
           string newmessage;
           string messageindex;
           message = "";
           message = message # slist;
           foreach(messageindex,message.Split(" ")) {newmessage = newmessage#messageindex#"%20";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("Ä")) {newmessage = newmessage#messageindex#"%C3%84";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("Ö")){newmessage = newmessage#messageindex#"%C3%96";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("Ü")){newmessage = newmessage#messageindex#"%C3%9C";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("ä")){newmessage = newmessage#messageindex#"%C3%A4";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("ö")){newmessage = newmessage#messageindex#"%C3%B6";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("ü")){newmessage = newmessage#messageindex#"%C3%BC";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("ß")){newmessage = newmessage#messageindex#"%C3%9F";}
                  message = newmessage;
                  newmessage = "";
            foreach(messageindex,message.Split("°")){newmessage = newmessage#messageindex#"%C2%B0";}
                  message = newmessage;
                  newmessage = "";
                  ! Kürzen der Nachricht um die jeweils am Ende angefügten Umwandlungscodes.
                  message = message.Substr(0, message.Length()-51);
        } 


 if ( (GO) && (!slist == "") ) {
    if ( USE_MAIL == "ja"){ dom.GetObject("CUxD."#MAIL_CUXD_ID#".CMD_EXEC").State("/etc/config/addons/email/email "#MAIL_ID#" '"#slist#"'"); }
    if ( USE_PUSHOVER == "ja") { dom.GetObject("CUxD."#PUSH_CUXD_ID#".CMD_EXEC").State("/usr/local/addons/cuxd/extra/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("CUxD."#PUSHBULLET_CUXD_ID#".CMD_EXEC").State("usr/local/addons/cuxd/extra/curl -u '"#USER#"'-k -d device_iden='"#DEVICE_IDEN#"' -d type=note -d title='"#TITEL#"' -d body='"#message#"' https://api.pushbullet.com/api/pushes"); }
    if ( USE_PROWL == "ja"){ string url="http://prowl.weks.net/publicapi/add?apikey="#API_KEY#"&application="#ANWENDUNG#"&event="#KATEGORIE#"&priority="#PRIO_MAX#"&description="#message#"&timeout="#TIME_OUT#"";
        dom.GetObject("CUxD."#PROWL_CUXD_ID#".CMD_EXEC").State("wget -q -O - '"#url#"'"); }
    if ( USE_SYSVAR == "ja"){ dom.GetObject(SYSVAR_NAME).State(slist); }

} else { if ( USE_SYSVAR == "ja"){ dom.GetObject(SYSVAR_NAME).State(slist); } }
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug [ALCHY Script ENDE]");
Bildschirmfoto 2016-11-17 um 20.25.58.png
Kann hier jemand einen Fehler erkennen?

Danke

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“