Howto - Ausschalten von Verbrauchern bei Abwesenheit (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 - Ausschalten von Verbrauchern bei Abwesenheit (per zPNP)

Beitrag von dtp » 27.07.2021, 07:36

Nachfolgend möchte ich euch mein das zPNP nutzende Programm samt Skript zum Ausschalten von Verbrauchern bei Abwesenheit vorstellen.

Code: Alles auswählen

! Aktoren für bestimmte Gewerke ausschalten
! Version 2.4, Autor: dtp 

! ----- Listen der Gewerke (trennen mit "\t", alle Gewerke oder Räume: "alle") -----
string tradeList = "Licht\t
                    Verbraucher";  

! ----- Liste der Geräte, die nicht ausgeschaltet werden sollen (trennen mit "\t") -----
string exList = "DG Schlafzimmer Dimmer Kanal 2\t
                 EG Garage Licht\t
                 EG Flur Tablet Sender Wohnzimmer\t
                 EG Flur Tablet Schaltzustand Wohnzimmer\t
                 EG Flur Tablet Schalter Wohnzimmer\t
                 UG Büro Dimmer Kanal 2\t
                 UG HWR Waschmaschine Schalter\t
                 UG HWR Trockner Schalter"; 

! ----- Namen der verwendeten Systemvariablen -----
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional

! ----- Name des zentralen Push-Nachrichten-Programms -----
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

! +++++ Deklaration weiterer Variablen +++++
string message; string list = ""; string trade; string channelName;

! +++++ Setzen der Priorität für die Push-Nachricht +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("-1");

! +++++ Sound für Pushover-Nachricht +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("none");}

! +++++ Skriptkern +++++
if(tradeList == "alle"){tradeList = dom.GetObject(ID_FUNCTIONS).EnumNames();}

foreach(trade, tradeList){
  trade = trade.Trim();
  if(dom.GetObject(ID_FUNCTIONS).Get(trade)){
    foreach(channelName, (dom.GetObject(ID_FUNCTIONS).Get(trade)).EnumUsedNames()){
      if(!exList.Contains(channelName)){
        if((dom.GetObject(ID_CHANNELS).Get(channelName)).DPByHssDP("STATE").Value()){
          (dom.GetObject(ID_CHANNELS).Get(channelName)).DPByHssDP("STATE").State(0); 
          list = list#"\n- "#channelName;
        }
        if((dom.GetObject(ID_CHANNELS).Get(channelName)).DPByHssDP("LEVEL").Value()){
          (dom.GetObject(ID_CHANNELS).Get(channelName)).DPByHssDP("LEVEL").State(0.0); 
          list = list#"\n- "#channelName;
        }
      }
    }
  }
}

! +++++ Erzeugen der Nachricht +++++
message = "Geräte-Kanäle wegen Abwesenheit ausgeschaltet!";

if(list != ""){
  message = message#list;

  ! +++++ zPNP ausführen +++++
  (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
  (dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();
}
2017-04-20_15h24_38.png
Das zugehörige Programm zum Setzen des 60-Sekunden-Timers.
2017-04-20_15h27_54.png
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!“