Lampenstatus anzeigen?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Lampenstatus anzeigen?

Beitrag von Pihero » 09.04.2020, 08:57

alchy hat geschrieben:
08.04.2020, 13:45
Fragen sind die Sätze mit den komischen gebogenen Zeichen am Ende. :shock:
Wie viele davon siehst du denn?
Ironie fließend ... :D
alchy hat geschrieben:
06.04.2020, 20:11
Mal ganz praktisch gefragt, was triggert jetzt dein Script?
Per Zeitsteuerung...was natürlich blöd ist...ich stelle daher auch um auf den Programmansatz ;)

Danke und Gruß, Philipp

Sweatchuck
Beiträge: 125
Registriert: 07.09.2016, 08:44
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Lampenstatus anzeigen?

Beitrag von Sweatchuck » 06.06.2020, 16:19

Hallo,

ich habe das Script von Alchy entsprechend meiner Anforderung umgebaut, leider bekomme ich aber meine IP-Geräte nicht angezeigt.

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ausgabe der eingeschalteten Lichter
! (c)by Alchy
string liste = "Beleuchtung-Innen";
! Dont touch behind this Line
string index; 
string slist ="";
string list = "";
integer counter = 0;
foreach (index, liste) {
object sec = dom.GetObject(""#index#"");
string itemId;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);
if (item.IsTypeOf(OT_CHANNEL)) {
var device = dom.GetObject(item.Device());
var hssType = item.HssType();
if ( (hssType == "SWITCH") && (item.State()) ) {
counter = counter +1;
list = list #item.Name() #"  ";
}
if ( (hssType == "DIMMER") && (item.State()) ) {
counter = counter +1;
list = list #item.Name() #"  ";
}
}
}
}
    if (counter > 0) {
    if (counter == 1) { slist = counter#" Licht ist an, das Licht " #list ; }
    if (counter > 1) { slist = counter#" Lichter sind an, die Lichter " #list; }
    } else{
    slist = "kein Licht ist an";
}
dom.GetObject("_Test").State(slist);
!WriteLine(slist);
Kann jemand helfen?

Gruß
Sweatchuck

Benutzeravatar
Baxxy
Beiträge: 10889
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 615 Mal
Danksagung erhalten: 2239 Mal

Re: Lampenstatus anzeigen?

Beitrag von Baxxy » 06.06.2020, 17:04

Sweatchuck hat geschrieben:
06.06.2020, 16:19
Kann jemand helfen?
Eine Seite zurück hatte ich ein Beispiel für IP-Geräte (unvollständig) gepostet.
IP-Schaltaktoren kannst du mit einbeziehen indem du deine Zeile...

Code: Alles auswählen

if ( (hssType == "SWITCH") && (item.State()) ) {
durch...

Code: Alles auswählen

if ( ((hssType == "SWITCH") || (hssType == "SWITCH_TRANSMITTER")) && (item.DPByHssDP("STATE").Value())) {
- Zählt nur die "Statusmitteilung Schaltausgang" der Aktoren)
oder

Code: Alles auswählen

if ( ((hssType == "SWITCH") || (hssType == "SWITCH_VIRTUAL_RECEIVER")) && (item.DPByHssDP("STATE").Value())) {
- Zählt alle eingeschalteten (virtuellen) Kanäle der Aktoren
ersetzt.

Bei IP-Dimmern kann ich nicht helfen da ich keine "Testobjekte" habe.
Da hilft dir aber sicher ein Blick in die Homematic IP Devices - Technical Documentation. :wink:

Grüße
Baxxy

Sweatchuck
Beiträge: 125
Registriert: 07.09.2016, 08:44
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Lampenstatus anzeigen?

Beitrag von Sweatchuck » 06.06.2020, 17:39

Da ich aktuell nur Schalter habe, war das die Lösung.

Besten Dank.

Besteht die Möglichkeit beim Eintragen des Gewerks oder Raum eine &-Verknüpfung zu verwenden?

Also wenn ich bei

Code: Alles auswählen

string liste = "Beleuchtung-Innen\tWohnzimmer"
eingebe wird das Gewerk Beleuchtung-Innnen sowie der Raum Wohnzimmer durchsucht.

Ich würde aber gerne den Raum Wohnzimmer abfragen aber nur die Schalter/Dimmer im Gewerk "Beleuchtung-Innen.

So könnte ich direkt die Schaltaktoren für z.B. den TV herausfiltern und muss nicht das ganze Haus mit dem Gewerk Beleuchtung-Innen abfragen.

P.S. Natürlich könnte ich Gewerke für jeden Raum anlagen. Schöne wäre aber wenn man beim string liste direkt kombinationen angeben könnte.

Grüße
Sweatchuck

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Lampenstatus anzeigen?

Beitrag von tomdler » 01.11.2023, 21:44

Ich habe einiges ausprobiert bekomme es aber nicht hin. Brauche Eure Hilfe!

Code: Alles auswählen

! Alle Kanäle in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ist ein Kanal an dann Logikvariable true
! v0.1 by Alchy
string liste = "Licht";
! Dont touch behind this Line
string index;
string slist ="";
integer counter = 0;
foreach (index, liste) {
object sec = dom.GetObject(""#index#"");
string itemId;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);
if (item.IsTypeOf(OT_CHANNEL)) {
if (item.DPByHssDP("STATE").Value())
{counter = counter +1; WriteLine(item);}
}}}
if (counter > 0) {
slist = counter#" Lichter sind noch an";
} else{
slist = "alle Lichter sind aus";
}

! Ausgabe in Systemvariable
(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Licht an")).State(slist);
!WriteLine(slist);
Dieses Skript benutze ich zur Zeit - Wenn ich das Skript teste wird folgendes ausgegeben. aber nur >3 Lichter sind noch an< wird in die Systemvariable geschrieben.

Code: Alles auswählen

WZ-Licht Fenster SÜD 02
WZ-Licht Schrankwand 02
Balkon-Licht 01
3 Lichter sind noch an
Mein Ziel ist es, dass zusätzlich alle Lichtquellen angezeigt werden die noch an sind, wie im Test auch. Damit ich diese direkt ausschalten kann, wenn sie mal wieder vergessen wurden beim Verlassen des Hauses.

Weiterhin fehlen noch einige Dosen und Schalter die ich nicht ins Skript integriert bekomme.
HmIP-BS2, HmIP-BDT, HmIP-PDT


Vielen Dank schon mal im Voraus.
Thomas
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Lampenstatus anzeigen?

Beitrag von tomdler » 06.11.2023, 22:42

Code: Alles auswählen

! Alle Kanäle in wählbaren verschiedenen Räumen/Gewerken/Favoriten (trennen mit \t )
! Ist ein Kanal an dann Logikvariable true
! v0.1 by Alchy
string liste = "Licht";
! Dont touch behind this Line
string index;
string slist ="";
string list ="";
integer counter = 0;
foreach (index, liste) {
object sec = dom.GetObject(""#index#"");
string itemId;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);

if (item.IsTypeOf(OT_CHANNEL)) {
if (item.DPByHssDP("STATE").Value())

{counter = counter +1; WriteLine(item);list = list #item.Name() #"; \n";}
}}}
if (counter > 0) {slist = counter#" Lichter sind noch an:  \n" #list ;} else{
slist = "alle Lichter sind aus";
}

! Ausgabe in Systemvariable
(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Licht an")).State(slist);
WriteLine(slist);
Den ersten Teil meines Problems habe ich geschafft und sieht jetzt so aus:

Code: Alles auswählen

5 Lichter sind noch an:  
WZ-Licht Fenster SÜD 02; 
WZ-Licht Schrankwand 02; 
Balkon-Licht 01; 
WZ-Licht Fenster klein 02; 
Shelly RGBW2 EIN/AUS 01; 
Was noch fehlt sind die Zwischendosen und Schalter HmIP-BS2, HmIP-BDT, HmIP-PDT

vielleicht kann jemand helfen
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

Benutzeravatar
Baxxy
Beiträge: 10889
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 615 Mal
Danksagung erhalten: 2239 Mal

Re: Lampenstatus anzeigen?

Beitrag von Baxxy » 06.11.2023, 23:11

tomdler hat geschrieben:
06.11.2023, 22:42
Was noch fehlt sind die Zwischendosen und Schalter HmIP-BS2, HmIP-BDT, HmIP-PDT
Da du ja schon die (von mir) erweiterte Version des Scriptes adaptiert hast sollten IP-Schaltaktoren angezeigt werden.
Dimmer müssten extra implementiert werden da man bei denen den "EIN-Zustand" nicht über STATE sondern über LEVEL > 0.0 erkennt.

Xel66
Beiträge: 14181
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 589 Mal
Danksagung erhalten: 1502 Mal

Re: Lampenstatus anzeigen?

Beitrag von Xel66 » 07.11.2023, 00:22

Ich benutze zwar eine andere Version des Scripts (die 0.3er) in der auch noch die Räume mit angegeben werden. Meine Auswertestrings für die Status lauten:

Code: Alles auswählen

if ( (hssType == "SWITCH") && (item.DPByHssDP("STATE").Value()) ) {counter = counter +1; info = info # counter # ": "#item.Name() #" im "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
if ( (hssType == "DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1; info = info # counter # ": "#item.Name() #" im "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
if ( (hssType == "VIR-LG-RGBW-DIM-CH") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;info = info # counter # ": "#item.Name() #" im  "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
if ( (hssType == "SWITCH_VIRTUAL_RECEIVER") && (item.DPByHssDP("STATE").Value()) ) {counter = counter +1;info = info # counter # ": "#item.Name() #" im  "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
if ( (hssType == "VIRTUAL_DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;info = info # counter # ": "#item.Name() #" im  "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
if ( (hssType == "DIMMER_VIRTUAL_RECEIVER") && (item.DPByHssDP("LEVEL").Value()) ) {counter = counter +1;info = info # counter # ": "#item.Name() #" im  "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}
 
Falls es als Vorlage interessant ist. Du müsstest noch die Raumangaben ("wo") und die LastDPActionTime() für den Einschaltzeitpunkt entfernen. In den Strings werden Dimmer, Switches und die virtuellen Pendants (Hue-Leuchten) berücksichtigt.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
Henke
Beiträge: 1527
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 307 Mal

Re: Lampenstatus anzeigen?

Beitrag von Henke » 07.11.2023, 01:01

Etwas kürzer, besser wartbar:

Code: Alles auswählen

string sDP = "";
if ( (hssType == "SWITCH") || (hssType == "SWITCH_VIRTUAL_RECEIVER")  ) { sDP = "STATE"; }
if ( (hssType == "DIMMER") || (hssType == "VIR-LG-RGBW-DIM-CH") || (hssType == "VIRTUAL_DIMMER") || (hssType == "DIMMER_VIRTUAL_RECEIVER") ) { sDP = "LEVEL"; }
if ( (sDP != "" ) && item.DPByHssDP(sDP).Value()){	counter = counter + 1; info = info # counter # ": "#item.Name() #" im "#wo # " ("#item.LastDPActionTime().ToTime().ToString("%H:%M")#")\n";}

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Lampenstatus anzeigen?

Beitrag von tomdler » 09.11.2023, 20:44

Allen vielen Dank, für die schnelle Hilfe.
Habe es endlich hinbekommen.

Ich hatte eine Gruppe/ Favorit mit dem selbem Namen und unterschiedlichen Geräten und Kanälen.

Die Ergebnisse kamen also aus zwei Quellen, dies war für mich nicht sofort erklärbar.

Neue Favoriten angelegt jetzt klappts.


Danke nochmal Thomas
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

Antworten

Zurück zu „HomeMatic allgemein“