Alle Lichter an bzw. ausschalten (Je Raum)

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Fuma
Beiträge: 35
Registriert: 06.01.2015, 21:51
Danksagung erhalten: 1 Mal

Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von Fuma » 06.07.2015, 23:36

Hallo zusammen bin mit dem Skripten total neu und hoffe hier im Forum Unterstützung zu bekommen.

Code: Alles auswählen

Ich habe nachfolgendes Skript entdeckt und wollte dies bei  mir anwenden. 
var i = dom.GetObject("Licht");

string itemID;

foreach(itemID, i.EnumUsedIDs()) 
{
    var item = dom.GetObject(itemID);
    WriteLine(item.Name()); 
    WriteLine(item.State());
    if (item.IsTypeOf(OT_CHANNEL)) 
    {
        var device = dom.GetObject(item.Device());
        if ((device.HssType().Find("HM-LC-Sw") > 0) && (item.State() == 0)) { item.State(1); }
        if ((device.HssType().Find("HM-LC-Dim") > 0) && (item.State() == 0)) { item.State(1.00); }
    }
}
WriteLine("Ende");
Ziel sollte hier sein, dass alle Lichter an gehen. Aber irgendwie klappt das nicht
Nachfolgende Ausgabe des Skript testings:

Code: Alles auswählen

HM-LC-Dim1TPBU-FM JEQ0204135:2
0.000000
HM-LC-Dim1TPBU-FM JEQ0204135:3
0.000000
HM-LC-Dim1TPBU-FM JEQ0204155:2
0.000000
HM-LC-Dim1TPBU-FM JEQ0204155:3
0.000000
HM-LC-Dim1TPBU-FM JEQ0204156:2
0.000000
HM-LC-Dim1TPBU-FM JEQ0204156:3
0.000000
HM-LC-Sw1PBU-FM LEQ1170372:1
false
HM-LC-Sw1PBU-FM LEQ1170377:1
false
HM-LC-Sw1PBU-FM LEQ1170451:1
false
HM-LC-Sw1PBU-FM LEQ1170457:1
false
HM-LC-Sw1PBU-FM LEQ1170460:1
false
HM-LC-Sw1PBU-FM LEQ1170551:1
false
HM-LC-Sw1PBU-FM LEQ1170557:1
false
HM-LC-Sw1PBU-FM LEQ1170566:1
false
HM-LC-Sw1PBU-FM LEQ1311547:1
false
HM-LC-Sw1PBU-FM LEQ1312688:1
false
HM-PB-2-FM LEQ1332720:1

HM-PB-2-FM LEQ1332720:2

HM-PB-2-FM MEQ0164378:1

HM-PB-2-FM MEQ0164378:2

HM-PB-2-FM MEQ0164432:1

HM-PB-2-FM MEQ0164432:2

HM-PB-2-FM MEQ0164951:1

HM-PB-2-FM MEQ0164951:2

HM-PB-2-FM MEQ0164962:1

HM-PB-2-FM MEQ0164962:2

HM-PB-2-FM MEQ0164987:1

HM-PB-2-FM MEQ0164987:2

Licht Abstellkammer
false
Licht Fitness
false
Licht Flur Wohnzimmer
false
Licht Heizraum
false
Licht Terasse
false
Licht Treppenhaus von Eingang
false
Licht Waschraum
false
Licht Werkzeugraum
false
Licht Wohnzimmer Couch
1.000000
Licht Wohnzimmer Esstisch
1.000000
Licht Wohnzimmer Mitte
1.000000
Ende
Final würde ich gerne je nach Raum alle Lichter ein bzw. ausschalten und dies mit einem Skript realisieren.
Hoffe mir kann hier jemand weiterhelfen. Wie gesagt.....Bin ungeübt....ich bitte dementsprechend um Rücksicht.

Gruß Thomas
CCU2 + 78 HM Komponenten

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

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von alchy » 07.07.2015, 08:02

Fuma hat geschrieben: Final würde ich gerne je nach Raum alle Lichter ein bzw. ausschalten und dies mit einem Skript realisieren.
Hoffe mir kann hier jemand weiterhelfen. Wie gesagt.....Bin ungeübt....ich bitte dementsprechend um Rücksicht.
Definiere: je nach Raum :!:

Folgendes Script sollte alle Dimmer und Schalter die sich im Gewerk/Raum/Favoriten Licht befinden einschalten.
Um alles abzuschalten einfach im Script die Anweisung .State(1) und State(1.0) zu .State(0) ändern.
Ich verzichte hier auf die Abfrage ob schon ein oder auch ausgeschaltet.
Könnte man noch einbauen um Funkhygiene zu gewährleisten.
Ich wollte es kurz halten, weil auf dem Handy so weniger Wirrwarr entsteht.

Code: Alles auswählen

  Script entfernt by Alchy da neuere Version
https://homematic-forum.de/forum/viewtopic.php?f=19&t=25794#p223998
Alchy
Zuletzt geändert von alchy am 16.03.2017, 19:40, insgesamt 1-mal geändert.
Grund: Script entfernt

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.

Fuma
Beiträge: 35
Registriert: 06.01.2015, 21:51
Danksagung erhalten: 1 Mal

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von Fuma » 07.07.2015, 18:07

Hallo Alchy

Erstmal vielen dank. Das skript klappt erstmal wie ich das wollte.
Ich will das skript nun auf Räume beschrencken. Habe die Aktoren ja dem Gewerk Licht und einem Raum z.B. Wohnzimmer,Küche usw zugeordnet.
Nun will ich, dass eben die Lichter nur in den Räumen Wohnzimmer, Küche, Gang usw angehen und in den restlichen Räumen nicht.

LG Fuma
CCU2 + 78 HM Komponenten

maloross
Beiträge: 52
Registriert: 21.05.2015, 08:49

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von maloross » 07.07.2015, 18:27

Dank an Alchy für's Skript...
Da ich noch programmier-unerfahren bin, würde ich Räume mit

Code: Alles auswählen

object sec = dom.GetObject("Raumname");
ansteuern, oder?

und wenn ich die Prüfung des aktuellen Zustandes einbauen möchte, geht das mit diesem Befehl??

Code: Alles auswählen

if ((device.HssType().Find("Switch") == 0) && (item.State())) { item.State(1); }
Bitte entschuldigt meine Anfängerfragen hier, aber dieser Thread passte grad in meine Programmierung...
Gruß
Die Quotenfrau ;)

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

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von alchy » 07.07.2015, 18:33

Ich habe es geahnt :mrgreen:

Ein Workaround wäre, statt dem Gewerk Licht den Raum im Script einzutragen.
Wenn dir das nicht reicht, sag Bescheid, dann schreib ich dir ein entsprechendes Script.

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.

Fuma
Beiträge: 35
Registriert: 06.01.2015, 21:51
Danksagung erhalten: 1 Mal

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von Fuma » 07.07.2015, 22:57

Na ja Alachy. Wie beschrieben Fuma ---> Anfänger :-D
Wäre also super wenn du mir dieses Skript erstellen könntest.
Top Angebot von dir!

Mfg

Fuma
CCU2 + 78 HM Komponenten

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

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von alchy » 07.07.2015, 23:31

Hast Du mal probiert den Raum einzutragen statt dem Gewerk Licht ?

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.

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

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von alchy » 08.07.2015, 13:22

Auf die Schnelle 2 Scripte die zur Anforderung von Fuma passen sollten.
Schalten von Aktoren in verschiedenen Räumen.
Habe gleich noch die Abfrage eingebaut, nur wenn ein dann ausschalten und umgedreht.

Achtung: Ihr seid selbst dafür verantwortlich, welche Kanäle Ihr mit dem Script schaltet.
Dem Script ist es egal, ob an dem Aktor eine Waschmaschine hängt, oder eine kleine Beleuchtung.

Übertreibt es nicht mit den Kanälen, welche Ihr in einem Rutsch durch das Script schalten lasst.
Man kann das Script auch mit weniger Kanälen, 2 mal mit Verzögerung starten.

Besser als die Schaltungen mittels den Scripten, ist die Einrichtung von Direktverknüpfungen.
Da Direktverknüpfunegn nicht immer machbar sind, gibt es dieses Script. :mrgreen:

Einschalten:

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Gewerken/Favoriten (trennen mit \t )    
! mit HssType des Items einschalten wenn ausgeschalten  
! https://homematic-forum.de/forum/viewtopic.php?t=25794#p223998
! v 0.8 (c) by Alchy
string liste = "Licht\tWohnzimmer";
! Dont touch behind this Line
string index;       
foreach (index, liste) {
object sec = dom.GetObject(index);
if (sec) {
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.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(1);}
if ( (hssType == "DIMMER") && (!item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(1.0);}
if ( (hssType == "SWITCH_VIRTUAL_RECEIVER") && (!item.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(1);}
if ( (hssType == "DIMMER_VIRTUAL_RECEIVER") && (!item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(1.0);}
if ( (hssType == "VIRTUAL_DIMMER") && (!item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(1.0);}
if ( (hssType == "DIGITAL_OUTPUT") && (!item.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(1);}
}
}
}else{WriteLine(index #" ist nicht vorhanden");} 
}
Ausschalten:

Code: Alles auswählen

! Alle Aktoren in wählbaren verschiedenen Gewerken/Favoriten (trennen mit \t ) 
! mit HssType des Items ausschalten wenn eingeschalten  
! https://homematic-forum.de/forum/viewtopic.php?t=25794#p223998
!  v 0.8 (c) by Alchy
string liste = "Licht\tWohnzimmer";
! Dont touch behind this Line
string index;       
foreach (index, liste) {
object sec = dom.GetObject(index);
if (sec) {
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.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(0);}
if ( (hssType == "DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(0.0);}
if ( (hssType == "SWITCH_VIRTUAL_RECEIVER") && (item.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(0);}
if ( (hssType == "DIMMER_VIRTUAL_RECEIVER") && (item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(0);}
if ( (hssType == "VIRTUAL_DIMMER") && (item.DPByHssDP("LEVEL").Value()) ) {item.DPByHssDP("LEVEL").State(0);}
if ( (hssType == "DIGITAL_OUTPUT") && (item.DPByHssDP("STATE").Value()) ) {item.DPByHssDP("STATE").State(0);}
}
}
}else{WriteLine(index #" ist nicht vorhanden");} 
}

Und um die Zuordnung einfach mal anzuzeigen bzw. bei Problemen:

Code: Alles auswählen

! Testscript für Zuordnung der Kanäle
! v0.1 (c) by Alchy
var FUNCTIONS = "Lichte"; 
!++++++ DONT TOUCH BEHIND THIS LINE +++++++++
string i;string slist;
var sec=dom.GetObject(FUNCTIONS);
if (sec){
    foreach(i,sec.EnumUsedIDs()) {
    object item = dom.GetObject(i);
if (item.IsTypeOf(OT_CHANNEL)) {
var dev = dom.GetObject(item.Device());
slist=slist #"Gerät: "#dev.Name() #"\n DeviceTyp: "#dev.HssType() #"\n Kanal: "#item.Name() #"\n KanalTyp: " # item.HssType() #"\n\n"; 
}else{slist = slist#" \n!!!!! "#item.Name() # "!!!!!!\n\n" ; }
}}else{WriteLine(FUNCTIONS # " ist nicht vorhanden");}
WriteLine(slist);

Alchy

@maloross
entschuldige, deine Fragen sind ein bisschen untergegangen.
Mittlerweile mitbekommen?
Zuletzt geändert von alchy am 08.12.2018, 09:39, insgesamt 7-mal geändert.

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.

Fuma
Beiträge: 35
Registriert: 06.01.2015, 21:51
Danksagung erhalten: 1 Mal

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von Fuma » 08.07.2015, 22:28

Alchy du bist top.
Werde es morgen gleich mal probieren.
Schonmal besten Dank für deinen Aufwand.

Lg fuma
CCU2 + 78 HM Komponenten

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Alle Lichter an bzw. ausschalten (Je Raum)

Beitrag von eiGelbGeek » 10.08.2015, 16:05

Ich habe das ganze mal auf eine Beschattung mit Rolladen umgeschrieben ;)
Ich gehe bei der Beschattung von 40% Verschluß der Rolladen aus!
Ich habe meine Rolladen in 3 Gewerken aufgeteilt (auf der Südseite habe ich keine Fenster ;) )

PS: Eigentlich in 4 Gewerken, denn auf der West-Seite habe ich eine Balkontür, damit ich mich nicht ausschliesse habe ich diese nicht dem Gewerk Rolladen-West hinzugefügt, Jedoch möchte ich diesen Rolladen trotzdem in einen anderen Programm (Alle Rolladen verschliessen, die mehr als 0% geöffnet sind verschliessen) nutzen, deswegen das 4te Gewerk indem sich alle Rolladen befinden!

Jenachdem welche Gewerke man in den String Gewerke schreibt, diese werden dann auch an gesprochen! So wie das Script hier nun steht werden alle Rolladen geschlossen. Ich habe dann jeweils noch 3 weitere Programme erstellt für Nord, West und Ost und jeweils logischerweise den String Gewerke angepasst ;)

Jetzt fehlt mir nur noch ein Sonnenstand Sensor, der der CCU sagt, wo gerade die Sonne steht bzw. ob überhaupt Sonne vorhanden ist ;) derzeit löse ich die Programme einfach Manuell aus ...

Vielleicht hilft es irgendwem weiter , wollte für das Anpassen kein neues Thema anfangen ;)




Code: Alles auswählen

string gewerke = "Rolladen-Nord\tRolladen-West\tRolladen-Ost";

string objekte;       

foreach (objekte, gewerke) {

object sec = dom.GetObject(""#objekte#"");

string itemId;

foreach(itemId, sec.EnumUsedIDs())
   {
      var item = dom.GetObject(itemId);
      if (item.IsTypeOf(OT_CHANNEL))
   {
      var dp = item.DPByHssDP("LEVEL");
          if (dp && dp.Value() !=0.40) 
   {
      dp.State(0.40);
      }

   }
   }
   }
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Antworten

Zurück zu „HomeMatic allgemein“