Räume mit eingeschaltetem Licht auflisten

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

Moderator: Co-Administratoren

EckartS
Beiträge: 243
Registriert: 13.11.2012, 23:11
Wohnort: Nürnberg
Danksagung erhalten: 2 Mal

Räume mit eingeschaltetem Licht auflisten

Beitrag von EckartS » 16.08.2018, 18:56

Hallo,

vor allem wer Kinder im Haus hat, will sich vielleicht - z. B. beim Absperren des Hauses - auflisten und per Push-Message senden lassen, in welchen Räumen noch Licht brennt.

Das macht das nachfolgende Script, das beliebig in Programme eingebaut werden kann. Die Vorlage waren ein paar vergleichbare Skripte im Forum, daher Dank an deren Autoren.

Das Script hier setzt voraus, dass
1. Aktoren/Kanäle für Innenlampen (Schalter/Dimmer) alle in das Gewerk "Licht" aufgenommen sind
2. ihnen ein Raum zugeordnet ist
3. dass in der *Raumbeschreibung* der Raumliste ein Klarname steht wie "Wohnzimmer" oder "im Wohnzimmer"
Der Raumname selbst ist beliebig und wird nicht ausgegeben
4. die CCU- oder Raspberrymatic-Version >2.29.22 ist. Sonst muss Contains() mit Find() umschrieben werden.

Das Script gibt die Liste der Räume mit eingeschaltem Licht im string "Nachricht" zur weiteren Verarbeitung aus.
Nur in meinem Beispiel: "Nachricht wird in die SV "Msg.Nachricht" geschrieben und mit "CCU SV Trigger" ein getrenntes Push-Prg, hier zPNP, ausgelöst. Das ist hier auskommentiert.

Mögliche Verbesserungen:
- Wer die Listen der einschlägigen Geräte in den Zeilen 14 und 15 erweitern will: gerne
- Mit HM-IP ist das nicht getestet, weil ich HM-IP nicht habe. Wer das tut und Fehler findet, könnte sich melden.

Grüße, EckartS

Code: Alles auswählen

! Skript.Innenlicht
! Eingeschalte Innenlampen identifizieren
! Mit getrenntem Programm Push-Nachricht versenden. EckartS, 08.2018

! Voraussetzungen:
! 1. Innenlampen alle in das Gewerk "Licht" je ein Raum zugeordnet 
! 2. In der *Beschreibung* der Raumnamen steht ein Klarname wie "Wohnzimmer" oder "im Wohnzimmer" 
!    Der Raumname selbst ist beliebig und wird nicht ausgegeben
! 3. Nur in diesem Berspiel: Die SV "Msg.Nachricht" und "CCU SV Trigger" sind definiert, hier auskommentiert,
!    bei mir für ein getrenntes Push-Prg
!    Sonst steht im string "Nachricht" die Liste der Räume mit eingeschaltetem Licht zur eigenen Verarbeitung 

var sec=dom.GetObject("Licht"); ! ggf. an den Name des Gewerks anpassen
! Listen ggf. um weitere Gerätetypen getrennt mit Kommata oder Leerzeichen erweitern
string schaltaktoren = "HMW-IO-12-Sw14-DR HMW-IO-12-Sw7-DR HM-LC-Sw4-DR HM-LC-Sw1-FM HM-LC-Sw2-FM HM-LC-Sw4-WM HM-LC-Sw4-SM HM-ES-PMSw1-Pl ";
string dimmeraktoren = "HMW-LC-Dim1L-DR HM-LC-Dim1T-FM HM-LC-Dim1TPBU-FM HM-LC-Dim1T-CV HM-LC-Dim2T-SM HM-LC-Dim2L-SM";
! Ausschluss (Kanalbezeichnungen getrennt mit Kommata oder Leerzeichen einfügen)
string except = "JEQ0149028:15 JEQ0713135:18"; ! die hier eingetragenen Kanäle werden ignoriert, auch wenn sie dem Gewerk "Licht" zugeordnet sind

! -- Ab hier nichts ändern --
string i; string list = ""; string x; string Nachricht = ""; string roomdesc;
foreach(i,sec.EnumUsedIDs()){
  var item=dom.GetObject(i);
  if(item.IsTypeOf(OT_CHANNEL)){
    var dev=dom.GetObject(item.Device());
    if(schaltaktoren.Contains(dev.HssType())){
       var state=item.DPByHssDP("STATE");
       if(state.Value()){
         x=state.Name().ToString().Replace(".STATE","").Replace("BidCos-Wired.","").Replace("BidCos-RF.","").Replace("HmIP-RF.","").Replace("HmIP-Wired.","");
         roomdesc = "";
         var room = dom.GetObject(item.ChnRoom());
         string sroom=room.Name();         
         if (sroom <> "") {roomdesc = roomdesc#room.EnumInfo();}
           else {sroom = "%3f%3f%3f [" # x # ", kein Raum zugeordnet]";}           
         if (roomdesc == "") {roomdesc = "im " # sroom;}
         if (!except.Contains(x)){
           list = list # "- " # roomdesc  # "\r\n"; 
         }
       }
    }
    if(dimmeraktoren.Contains(dev.HssType())){
       var state=item.DPByHssDP("LEVEL");
       if(state.Value()){
         x=state.Name().ToString().Replace(".LEVEL","").Replace("BidCos-Wired.","").Replace("BidCos-RF.","").Replace("HmIP-RF.","").Replace("HmIP-Wired.","");
         roomdesc = "";
         var room = dom.GetObject(item.ChnRoom());
         string sroom=room.Name();         
         if (sroom <> "") {roomdesc = roomdesc#room.EnumInfo();}
           else {sroom = "%3f%3f%3f [" # x # ", kein Raum zugeordnet]";}
         if (roomdesc == "") {roomdesc = "im " # sroom;}
         if (!except.Contains(x)){
           list = list # "- " # roomdesc  # "\r\n"; 
         }
       }
    }
  }
}
! -- Auf eigene Verwendung hin anpassen -- Erstellung des Nachrichteninhalts          
if (list != ""){
  Nachricht = "Licht ist noch an\r\n"# list # "\r\n";   
! dom.GetObject("Msg.Nachricht").State(Nachricht);
! dom.GetObject("CCU SV Trigger").State(0);
  }          
  
711 Kanäle in 113 Geräten und 134 CUxD-Kanäle in 24 CUxD-Geräten

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von jp112sdl » 17.08.2018, 11:55

Gibt es mittlerweile einen Workaround, um Zeichenketten mit Zeilenumrüchen auf der WebUI-Startseite
  • mit korrektem Zeilenumbruch
  • ohne "Absturz" der WebUI-Oberfläche
anzeigen zu können?

Sobald ein <br/> auftaucht, laufen auch die Hintergrundaktualisierungen der WebUI nicht mehr.
1.png
1.png (7.08 KiB) 2920 mal betrachtet

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von alchy » 17.08.2018, 13:56

jp112sdl hat geschrieben:
17.08.2018, 11:55
Sobald ein <br/> auftaucht, laufen auch die Hintergrundaktualisierungen der WebUI nicht mehr.

Dem sollte eigentlich nicht mehr so sein. :shock:
Das </br> wird ja sinnloser Weise erst da eingefügt (halbwegs aktuelle FW & Rega vorausgesetzt),
weil Steuerzeichen wie /n die Klickibunti zum anhalten gebracht haben.

Auf der Startseite haben aber die html tags keine Funbktion, daher auch der Ausdruck sinnlos.
Dann schaue man sich die Systemvariable mal unter Status und Bedienung an, oder z.B. im Systemprotokoll wenn diese geloggt wird usw.
Ich habe es aufgegeben.



Zum Script:
Wieder ein Clone aus mehreren Scripten :roll:
Die Laufzeit sollte recht lang sein, hab aber nicht getestet.
Das mit den Gerätelisten ist ein nettes Gimmick, ich bin in den einschlägigen Scripten davon weg, da sie nur Pflege bedürfen.
Man kann Schalter und Dimmer auch anders identifizieren.
Durch die Vorselektierung durch ein Gewerk, Raum, o.ä. kann der User sich selber zusammenstricken was er durchsucht und angezeigt haben will. Es soll ja auch Leute geben, die mit Batterieaktoren Licht anmachen usw.

^^ soll aber um Himmels Willen keine Kritik sein nur eine Anregung.

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.

EckartS
Beiträge: 243
Registriert: 13.11.2012, 23:11
Wohnort: Nürnberg
Danksagung erhalten: 2 Mal

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von EckartS » 17.08.2018, 15:56

Hallo Alchy,
- Dimmer und Schalter könnte ich durch "Dim1..2" und "Sw1..4" im Namen finden. Gibt es noch elegantere Methoden?
Hallo jp122sdl,
- Am Ende einfügen:
- Nachricht=Nachricht.Replace("/r/n"," ");
Grüße, EckartS
711 Kanäle in 113 Geräten und 134 CUxD-Kanäle in 24 CUxD-Geräten

ScienceFiction
Beiträge: 50
Registriert: 22.12.2011, 18:00
Wohnort: Hessen - Wetteraukreis

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von ScienceFiction » 20.08.2018, 12:46

Mal so als Idee in den Raum geworfen, alternativ oder zusätzlich kann man sich einen "Generaltaster" einrichten. Wenn ich die Wohnung verlasse drücke ich besagten Taster, welcher alle Lichter ausschaltet, Rollos runter fährt und die Alarmanlage Zeitfaktor X aktiviert. Interessanter ist da eher eine Liste in welchen Räumen noch ein Fenster geöffnet ist.

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von AndiN » 20.08.2018, 13:12

Die Idee mit dem Generaltaster habe ich so umgesetzt. Per TTS (Sprachansage) werden die offenen Fenster angesagt mit dem Hinweis, dass die Alarmanlage nicht scharf geschaltet werden kann.

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

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

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von alchy » 20.08.2018, 14:00

EckartS hat geschrieben:
17.08.2018, 15:56
Hallo Alchy,
- Dimmer und Schalter könnte ich durch "Dim1..2" und "Sw1..4" im Namen finden. Gibt es noch elegantere Methoden?
für meine Begriffe schon. Schau dir mal die Methode .HssType() genauer an.
Nur weil du im Namen der Geräte ein DIm oder Sw hinterlässt, muss das doch nun nicht jeder so machen. :shock:
Wenn du also den Namen filtern würdest, wäre dein Script vielleicht für dich nutzbar, aber die Veröffentlichung doch ziemlich sinnfrei.

ScienceFiction hat geschrieben:
20.08.2018, 12:46
Interessanter ist da eher eine Liste in welchen Räumen noch ein Fenster geöffnet ist.
und auch ein solches Script findest du schon im Forum, genau wie die Lichterscripte.

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.

EckartS
Beiträge: 243
Registriert: 13.11.2012, 23:11
Wohnort: Nürnberg
Danksagung erhalten: 2 Mal

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von EckartS » 20.08.2018, 14:56

Hallo alchy,

der offizielle Name des Geräts von EQ3 enthält bei Schaltaktoren immer ein "Sw#" (#=Zahl der Schaltaktoren) und bei Dimmern ein "Dim#". Also kein frei vom Benutzer vergebener Name. Und den EQ3-Namen finde im Script ja jetzt schon mit HssType().

Grüße, EckartS
711 Kanäle in 113 Geräten und 134 CUxD-Kanäle in 24 CUxD-Geräten

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

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von alchy » 20.08.2018, 15:13

Ahso, das meinst du. :mrgreen: Warum redest du da von Namen?

Sag ich doch. .HssType() DIese Methode solltest du dir ja auch nochmal anschauen, die bietet noch mehr, als eben HM-LC-Sw1PBU-FM für das entsprechende Gerät Homematic Funk-Schaltaktor für Markenschalter, 1fach Unterputzmontage - auszugeben.
Nebenbei: Eine HMIP-PSM könnte auch z.B. eine Stehlampe schalten.

Aber das führt jetzt hier zu weit. Ich wollte dir nur Anregungen geben und kein weiteres Script entwickeln.
Ich hab ja schon genug eigene Scripte, auch zu dem Thema, gepostet. Da du Teile davon kopiert hast, wirst du das wissen.

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.

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

Re: Räume mit eingeschaltetem Licht auflisten

Beitrag von dtp » 20.08.2018, 17:52

ScienceFiction hat geschrieben:
20.08.2018, 12:46
Mal so als Idee in den Raum geworfen, alternativ oder zusätzlich kann man sich einen "Generaltaster" einrichten. Wenn ich die Wohnung verlasse drücke ich besagten Taster, welcher alle Lichter ausschaltet, Rollos runter fährt und die Alarmanlage Zeitfaktor X aktiviert. Interessanter ist da eher eine Liste in welchen Räumen noch ein Fenster geöffnet ist.
Hab ich so in der Art umgesetzt. Sobald unser Haus von außen abgeschlossen wurde, erhalten wir Push-Nachrichten auf unsere Smartphones, wenn noch Fenster/Türen gekippt oder geöffnet sind. Dabei wird die Priorität automatisch zwischen Warn- und Alarmmeldungen unterschieden. 60 Sekunden nach dem Umschalten auf Abwesenheit wird die Meldeanlage scharf gestellt. Ab dann erhalten wir bei detektierter Bewegung im Haus und bei der Betötigung der Fenstergriffe entsprechende Alarmmeldungen. Zudem werden automatisch alle noch eingeschalteten Verbraucher ausgeschaltet, sofern nicht explizit ausgenommen. Auch darüber gibt es eine Push-Nachricht. 48 Stunden nach Abwesenheit wird die Anwesenheitssimulation gestartet.

Sobald die Haustür aufgeschlossen wurde, schaltet sich das Haus auf anwesend. Damit werden dann die Meldeanlage und die Anwesenheitssimulation deaktiviert. Zudem schaltet sich automatisch bei Dunkelheit das Licht im Flur des EG an.

Nebenbei wird auch die Videotürsprechanlage bei Abwesenheit auf‘s Smartphone umgeleitet.
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!“