Howto - Servicemeldungen (per zPNP)

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

Moderator: Co-Administratoren

Antworten
dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Howto - Servicemeldungen (per zPNP)

Beitrag von dtp » 27.07.2021, 07:27

Nachfolgend möchte ich euch mein das zPNP nutzende Programm samt Skript zum Senden von Servicemeldungen vorstellen. Das Servicemeldungen-Skript basiert im Kern auf dem von @alchy erzeugten Allinclusive-Skript, wurde von mir aber in vielen Teilen modifiziert.
CCU PRG Servicemeldungen.png
CCU PRG Servicemeldungen.png (24.19 KiB) 3457 mal betrachtet
Im Grunde genommen muss man hier nichts weiter machen, um die entsprechenden Servicemeldungen als Push-Nachrichten über das zPNP zu erhalten. Manchmal möchte man jedoch bestimmte Meldungen ausschließen. So werden z.B. bei HMIP-Heizungsgruppen immer zwei Meldungen erzeugt, wenn es ein Problem mit einem Heizungs- oder Wandthermostat gibt. Eine Meldung für den Thermostaten und eine zweite für die Heizungsgruppe. Daher kann es sinnvoll sein, eine der beiden Meldungen zu unterdrücken. Im Skript besteht die Möglichkeit, bestimmte Geräte, Gerätetypen und/oder Meldungstypen auszuschließen. Dazu gibt es zwei lokale Variablen "exDevicesList" und "exDeviceTypesList".

"exDevicesList" wird in der Form "Gerätname|Meldungstyp\t Gerätename|Meldungstyp" befüllt, also z.B.

Code: Alles auswählen

string exDevicesList = "DG Dach Wettersensor|UNREACH\t
                        UG Büro Fenster|ERROR_SABOTAGE";
wenn man Kommunikationsstörungen des Wettersensors und Sabotage-Meldungen des Fensterkontakts unterdrücken möchte. Lässt man den Meldungstyp weg, so werden sämtliche Servicemeldungen eines Geräts unterdrückt.

"exDeviceTypesList" wird in der Form "Gerätetyp|Meldungstyp\t Gerätetyp|Meldungstyp" befüllt, also z.B.

Code: Alles auswählen

string exDeviceTypesList= "HM-Sec-Key|UNREACH\t
                        HMiP-HEATING";
wenn man von allen Fensterkontakten des Typs "HM-Sec-Key" keine Kommunikationsstörungs- und Sabotagemeldungen und von allen Heizungsgruppen gar keine Servicemeldungen mehr erhalten möchte. Auch hier gilt, dass der Meldetyp optional ist.

Weiterhin sendet das Skript eine Push-Nachricht nach Beseitigung der Servicemeldungen. Da das natürlich unsinnig wäre für die unterdrückten Meldungen, wurde eine Systemvariable "CCU SV Servicemeldungen Vorliste" eingeführt, die man unter der lokalen Variablen "svServicesListPrev" beliebig benennen kann. Diese Systemvariable wird automatisch angelegt, wenn man das Skript erstmalig aufruft. Sie enthält eine Liste aller vorherigen Servicemeldungen außer den ausgeschlossenen. Die Verwendung der Systemvariablen "CCU SV Servicemeldungen Vorliste" ist optional. Nur wenn sie definiert wurde, erhält man Benachrichtigungen über die Beseitigung aller Servicemeldungen.

Die Liste bietet zudem den Vorteil, einen Überblick über das eine Servicemeldung auslösenden Gerät sowie dessen Geräte- und Meldungstyp zu erhalten. Wenn man also bestimmte Meldungen unterdrücken möchte, braucht man die entsprechenden Daten hier nur zu kopieren und in die obigen lokalen Variablen einfügen.

Batteriebetriebene HM- und HMIP-Geräte

Nachfolgend eine Liste aller im Skript berücksichtigten HM- und HMIP-Batterie-Devices, deren LowBat-Zustand erfasst wird:

Code: Alles auswählen

block9   = "HM-LC-SW1-BA-PCB|HM-LC-SW4-PCB|HM-LC-SW4-WM|HM-MOD-EM-8|HM-MOD-RE-8|HM-OU-CM-PCB|HM-SEN-RD-O|";
cr2016   = "HM-RC-4|HM-RC-4-B|HM-RC-KEY3|HM-RC-KEY3-B|HM-RC-P1|HM-RC-SEC3|HM-RC-SEC3-B|ZEL STG RM HS 4|";
cr2032   = "HM-PB-2-WM|HM-PB-4-WM|HM-PBI-4-FM|HM-SCI-3-FM|HM-SEC-TIS|HM-SWI-3-FM|HMIP-DLS|HMIP-FCI1|";
lr14x2   = "HM-OU-CFM-TW|HM-SEC-SIR-WM|";
lr14x3   = "HMIP-MP3P|";
lr3x1    = "HM-RC-4-2|HM-RC-4-3|HM-RC-KEY4-2|HM-RC-KEY4-3|HM-RC-SEC4-2|HM-RC-SEC4-3|HM-SEC-RHS-2|HM-SEC-SCO|HMIP-KRC4|HMIP-KRCA|HMIP-RC8|HMIP-SRH|HMIP-SWDO|HMIP-DBB|HMIP-KRCK|";
lr3x2    = "HM-DIS-WM55|HM-DIS-EP-WM55|HM-PB-2-WM55|HM-PB-2-WM55-2|HM-PB-6-WM55|HM-PBI-2-FM|HM-RC-8|HM-SEN-DB-PCB|HM-SEN-EP|HM-SEN-MDIR-SM|HM-SEN-MDIR-WM55|HM-TC-IT-WM-W-EU|HM-WDS30-T-O|HM-WDS30-OT2-SM|HMIP-STH|HMIP-STHD|HMIP-WRC2|HMIP-WRC6|HMIP-WT|HMIP-WTH|HMIP-WTH-2|HMIP-SAM|HMIP-SWDO-I|HMIP-SMI55|HMIP-SMI55-2|HMIP-SCI|HMIP-WRCD|HMIP-DSD-PCB|HMIP-WRCR|HMIP-STV|HMIP-SWDM|HMIP-WKP|HMIP-FCI6|";
lr3x3    = "HM-PB-4DIS-WM|HM-PB-4DIS-WM-2|HM-RC-DIS-H-X-EU|HM-SEN-LI-O|";
lr3x3a   = "HM-RC-19|HM-RC-19-B|HM-RC-12|HM-RC-12-B|HM-RC-12-W|";
lr44x2   = "HM-SEC-RHS|HM-SEC-SC|HM-SEC-SC2|HM-SEC-SC-2|HMIP-WRCC2|";
lr6x2    = "HM-CC-RT-DN|HM-CC-VD|HM-CC-TC|HM-DIS-TD-T|HM-SEC-WDS|HM-SEC-WDS-2|HM-WDS10-TH-O|HM-WDS30-OT2-SM-2|HM-WDS40-TH-I|HM-WDS40-TH-I-2|HB-UW-SEN-THPL-I|HMIP-ETRV|HMIP-ETRV-2|HMIP-ETRV-C|HMIP-ETRV-C-2|HMIP-SLO|HMIP-SMI|HMIP-SMO|HMIP-SMO-2|HMIP-SMO-A|HMIP-SMO-A-2|HMIP-SPI|HMIP-STHD|HMIP-STHO|HMIP-STHO-A|HMIP-SPDR|HMIP-SWD|ETRV-HMIP-B-UK|HMIP-STE2-PCB|HMIP-WGC|HMIP-STI|";
lr6x3    = "HM-SEC-MDIR|HM-SEC-MDIR-2|HM-SEC-MDIR-3|HM-SEC-KEY|HM-SEC-KEY-S|HM-SEC-KEY-O|HM-SEC-SD|HM-SEN-MDIR|HM-SEN-MDIR-O|HM-SEN-MDIR-O-2|HM-SEN-WA-OD|HM-WDS100-C6-O|HM-WDS100-C6-O-2|HMIP-ASIR|HMIP-ASIR-B1|HMIP-ASIR-O|HMIP-ASIR-2|HMIP-SWO-B|HMIP-SWO-PL|HMIP-DLD|";
lr6x4    = "HM-CCU-1|HM-ES-TX-WM|HM-WDC7000|";
fixed    = "HM-SEC-SD-2|HMIP-SWSD|HMIP-MIO16-PCB|HMIP-PCBS|HMIP-PCBS2|HMIP-PCBS-BAT|HMIP-MOD-RC8|HMIP-MOD-OC8|HMIP-USBSM|HMIP-FWI|HMIP-SFD|ELV-SH-WSC|";
recharge = "HM-SEC-WIN|HM-SEC-SFA-SM|";


Wie man sehen kann, werden hier im Unterschied zu der von eQ-3 benutzten Nomenklatur nur Großbuchstaben verwendet. Dies erleichtert den Umgang mit den Gerätetypen, weil eQ-3 leider nicht immer einheitlich mit Groß- und Kleinbuchstaben arbeitet. Unter "exDeviceTypesList" könnt ihr wahlweise Klein- oder Großbuchstaben oder eine gemischen Schreibweise für die Geräte- und die Meldungstpyen einsetzen. Diese werden innerhalb des Skript immer in Großbuchstaben umgewandelt.

ACHTUNG: Die Gerätnamen unter "exDevicesList" sind weiterhin "Case Sensitive"!

Falls noch jemand ein Gerät findet, was nicht in der Liste ist, immer her damit!
Servicemeldungen325.hsc
(19.8 KiB) 129-mal heruntergeladen
Bis dann,

Thorsten
Zuletzt geändert von dtp am 30.11.2022, 19:37, insgesamt 6-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von dtp » 27.07.2021, 07:46

Anzeige der Servicemeldungen in ioBroker vis

Die Servicemeldungen lassen sich übrigens recht einfach in vis anzeigen. Das sieht dann z.B. für eine Sabotagemeldung und nach ihrem Entfernen so aus:
vis_Servicemeldungen.gif
Dazu bedarf es lediglich eines kleinen Javaskripts.

Code: Alles auswählen

createState('vis.Servicemeldungen', 0, {
  type: 'string',
  read: true,
  write: true,
  desc: 'vis Servicemeldungen',
  def: ''
});

on("hm-rega.0.2093", function(obj){
  var message = obj.state.val;
  if(message.search("Servicemeldung") > 0){
    message = message.replace(/%0A/g, '<br>');
    setState("vis.Servicemeldungen", message);
    setState("vis.0.control.command", '{"instance": "*", "data": "08CCU", "command": "changeView"}');
  } 
});
Mit "vis.0.control.command" kann man automatisch auf den entsprechenden View (bei mir "08CCU") wechseln. Wer das nicht braucht, der löscht die Zeile einfach oder kommentiert sie aus. Der Datenpunkt "2093" ist die ISE_ID für die auf meiner CCU3 erstellte Systemvariable "CCU SV Push Text". Das Skript fragt bei Änderung dieser Systemvariablen den String "Servicemeldung" ab und zeigt im vis-Widget "basic - String (unescaped)" über das Objekt "javascript.0.vis.Servicemeldungen" alles an, was diesen String enthält.

Soll die Visualisierung z.B. drei Minutan nach einer neuen Servicemeldung und 30 Sekunden nach dem Verschwinden der letzten Servicemeldung automatisch wieder zur Startseite zurückkehren, dann einfach das nachfolgende Javaskript erstellten.

Code: Alles auswählen

var timer1 = null, timer2 = null;

on("vis.0.control.data", function(obj){
  if(obj.state.val === "iPad/08CCU"){
    if(getState("hm-rega.0.maintenance").val !== 0){
      if(timer1) clearTimeout(timer1);
      timer1 = setTimeout(function(){
        setState("vis.0.control.command", '{"instance": "*", "data": "01Haus", "command": "changeView"}');
      }, 3 * 60000); // autoamtische Rückkehr auf Homeview nach 3 Minuten
    }
    else{
      if(timer2) clearTimeout(timer2);
      timer2 = setTimeout(function(){
        setState("vis.0.control.command", '{"instance": "*", "data": "01Haus", "command": "changeView"}');
      }, 30 * 1000); // autoamtische Rückkehr auf Homeview nach 30 Sekunden
    }
  }
});
Der View-Name für die Servicemeldungen (im obigen Beispiel "iPad/08CCU") muss dann noch entpsrechend der Anzeige im Datenpunkt "vis.0.control.data" geändert werden. Zudem noch den Startview-Namen (im obigen Beispiel "01Haus") anpassen. Fertig.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von dtp » 01.06.2022, 10:11

Neue Version 3.2.4 mit folgenden zusätzlich aufgenommenen HMIP-Geräten:

HmIP-DLS, HmIP-WKP, HmIP-SWDM, HmIP-SMO-2, HmIP-SMO-A-2, HmIP-SMI55-2, HmIP-FCI1, HmIP-FCI6, HmIP-SFD, HmIP-STI, HmIP-FWI, ELV-SH-WSC
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
stan23
Beiträge: 2028
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von stan23 » 22.11.2022, 10:56

dtp hat geschrieben:
01.06.2022, 10:11
Neue Version 3.2.4
Hi Thorsten,

in Zeile 89 ist ein Fehler in der Variablenbezeichnung:
numServices = dom.GetObject("$src$").Value(); numSercicesPrev = dom.GetObject("$src$").LastValue();
Damit funktioniert die Berechnung des valueDiff nicht.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von dtp » 30.11.2022, 19:38

Danke. Hab's korrigiert in Version 3.2.5.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Drago Museveni
Beiträge: 27
Registriert: 03.07.2022, 14:23
System: CCU
Hat sich bedankt: 14 Mal
Danksagung erhalten: 1 Mal

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von Drago Museveni » 22.06.2023, 13:39

Hallo Torsten,
ich kriege leider keine Nachrichten via zPNP über Servicemeldungen. zPNP ist sauber eingerichtet und funktioniert, ich nutze es für Tür- und Fensteröffnungen. Woran kann es liegen? Ich habe das Programm genau wie im Screenshot angegeben eingerichtet und das aktuelle Skript rein kopiert - damit sollte ich doch "good to go" sein?
Fragende Grüße

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - Servicemeldungen (per zPNP)

Beitrag von dtp » 05.07.2023, 14:32

Sorry, dass ich das jetzt erst sehe. Bin aktuell nicht so häufig hier. Vielleicht kannst du mir mal einen Screenshot deines Programms und das von dir verwendete Skript per PN zusenden. Dann sollte sich das klären lassen.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

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