Guten Abend,
ich würde gerne alle meine Rolläden einer Ebene zusammen fassen. Dazu habe ich meine Rolläden des Erdgeschosses z.B. alle am Anfang mit EG.<Raum> benannt.
Nun wollte ich in einem Structure alles zusammenfassen, um es mir zu vereinfachen wollte ich das ganze so schreiben:
define Rolleaden.EG structure EG EG.*
Ich musste allerdings feststellen das dies so nicht geht. Die Structure Syntax will wohl wirklich alle devices einzeln angegeben haben.
Wäre es denn Sinvoll einen Dummy + ein notfiy dafür anzulegen? Oder gibt es dafür eine vereinfachte Variante? So wäre es Perfekt. Zur not muss ich dann wohl bei dem strucutre leider die Devices einzeln angeben.
Falls Rolläden dazu kommen muss ich das strucutre oder was auch immer es wird nicht abändern, da alles was mit EG anfängt mit rein genommen wird.
Danke und einen schönen Abend Fixel
HI,
Structure will jedes Gerät einzeln... ein bisschen Tipparbeit. Wieviele Rolläden hast du denn und wieviele kommen noch?
Bei mir war der Aufwand überschaubar (schlimmer sind Lampen, da kommen viel öfter welche dazu).
Grüße,
Oli
Zitat von: KernSani am 13 Februar 2017, 22:17:21
HI,
Structure will jedes Gerät einzeln... ein bisschen Tipparbeit. Wieviele Rolläden hast du denn und wieviele kommen noch?
Bei mir war der Aufwand überschaubar (schlimmer sind Lampen, da kommen viel öfter welche dazu).
Grüße,
Oli
so viele nicht mehr, aber bei einem Rolladenaktor tausch wäre es auch hilfreich. (kein vergessen es wieder neu ins structure ein zu binden usw.)
Eigentlich wollte ich nur wissen, ob jemand vergleichbare Ideen hat, wie es mit .* funktionieren würde 8) :P
Sonst muss ich wohl die Rolläden einzeln ins structure eintippen ;D
denkbar wäre natürlich eine kleine sub (ungetestet und nur aus dem Kopf runtergetippt)
sub myUtils_fillStruc($$$) {
my ($name,$strucType, $devspec) = @_;
my @list = devspec2array($devspec);
my $def = join(" ",@list);
fhem("defmod $name structure $strucType ".$def);
}
Ich glaube ich probiere das gleich noch "in echt" aus...
Grüße,
Oli
EDIT: Obiges Coding ist getestet... Aufruf (über die Kommandozeile) mit:
{myUtils_fillStruc(<name>,<structure type>,<devSpec>)}
<name> = Name der structure, <structure type> = der typ (z.B. "floor" und devSpec der Devices, die in die Structure aufgenommen werden sollen (also in deinem Fall z.B. "EG.*", wenn es keine nicht-Rollos mit dem Namen gibt. Konkreter Aufruf bei mir:
{myUtils_fillStruc("st_og_licht","floor","OG_.*_Licht")}
oder aber 'addstruct' benutzen
define Rolleaden.EG structure EG EG.*
addstruct Rolladen.EG EG.*
Grmpf... Das ist natürlich einen Tick einfacher ;-) Danke, wieder was gelernt.
Hi,
ich hatte auch mal mit structure experimentiert, aber ich mache jetzt doch alles per notify. Z.B. so schalte ich bei langem Tastendruck alle Lampen aus:
dg_fl_Taster3a:press_long:.* set dg.*Lampe.* off
Da geht dann "*"...
Gruß,
Thorsten
Zitat von: Thorsten Pferdekaemper am 14 Februar 2017, 07:44:35
Hi,
ich hatte auch mal mit structure experimentiert, aber ich mache jetzt doch alles per notify. Z.B. so schalte ich bei langem Tastendruck alle Lampen aus:
dg_fl_Taster3a:press_long:.* set dg.*Lampe.* off
Da geht dann "*"...
Gruß,
Thorsten
Nachteil an dem notify ist, dass ich noch einen Dummy zum schalten bräuchte, ich verwende das structure nicht in Verbindung mit einem Taster oder Schalter.
Aber Danke für all die Ideen! Werde mal schauen was ich mir da schönes raus picke 8) ::)
Hi,
ich habe das bei mir auch über structures. Die Zuordnung EG / OG ist ja fix und ist einmal Tipparbeit. Ich habe aber je nach Jahreszeit die Rolläden auch in verschiedenen Gruppen geschaltet und ich habe auch Gruppen, die ich für die Sonnenschutzsteuerung benutze.
Diese Gruppen sind dynamisch. Da habe ich folgende Lösung aufgesetzt:
Das Namensmuster für die Rolläden ist ROLL_OG_AZ_SW bedeutet: Rolladen, Obergeschoß, Arbeitszimmer, Südwest
Auf dieser Basis kann man nun wundervoll mit Regex arbeiten und z.B. ROLL_OG.* oder ROLL_.*.SW, ROLL_OG_AZ.* etc. schatlet (also alle im OG, oder alle in SW oder Rolläden im Arbeitszimmer
mittels dem Attribut alias macht man dann wieder schön lesbare Namen für die Weboberfläche daraus
Nun habe ich in der 99_Utils.pm eine Funktion, die die structures daraus dann entsprechend automatisch anleget. Diese Funktion wird beim Start von FHEM aufgerufen oder per at einmal am Tag (wegen Jahreszeiten)
Entsprechende Fenster / Türe Sensoren habe ich dann nach folgendem Muster benannt
HNDL_OG_AZ_SW
SWTC_OG_AZ_SW
Sprich die Homematic Three-State Türgriff Sensoren heißen alle HNDL_xxx, etwaige Kontaktsensoren heißen heißen SWTC_xxx. Damit kann man dann mittels Regex extrem einfach aus dem Rolladen Namen auf den zugeordneten Türgriff Sensor schließen. Gerade bei Terrassentüre natürlich wichtig, damit der Rolladen nicht zugeht, so lange man noch auf der Terrasse sitzt.
Und nun kann man in seinen eigenen Routinen sehr einfach die jeweilige Verknüpfung Rolladen und Offen/Zu Sensor machen.
Auch für etwaige notifies wird das nun sehr einfach:
define ntfy_Sonnenschutz Aussentemp:temperature.* { if( ReadingsVal( Aussentemp", "temperature", 20.0) > 22.0 ) ) { fhem( "set ROLL.*.S.*. 25";; } else { fhem( "set ROLL.*.S.*. 100";; }
Damit gehen alle Rolläden, die nach Süden sind auf 25%, wenn Aussentemp größer 22°
Nebenbemerkung: es wäre nach natürlich logischer zu sagen STOCKWERK_ZIMMER_AUSRICHTUNG_SENSORTYP (sprich z.B. OG_AZ_SW_ROLL), aber andersrum sind die REGEX dann einfacher.
Ich habe 18 Rolläden ...