[gelöst] nur in einer Liste vorhandene Aktoren sollen geschaltet werden

Begonnen von cyrusfd, 22 September 2021, 09:13:35

Vorheriges Thema - Nächstes Thema

cyrusfd

Hallo,

ich habe bei meiner Gartenbeleuchtung eine Schaltuhr integriert. Diese schaltet die Lampen an, wenn die Sonne untergeht und um 22:30 wieder aus.

define Garten_Lampen structure room HM_57E255_Sw_01 HM_57E255_Sw_04 HM_760BDB_Sw_02 HM_760BDB_Sw_01 HM_760BDB_Sw_03
attr Garten_Lampen alias alle Lampen


define Garten_Licht_an at *{sunset("HORIZON=-0.833",0,"16:00","22:30")} {fhem("set Garten_Lampen on") if (Value("Schaltuhr_an_aus") eq "an");;;;}

Im Winter möchte ich jedoch nur einen Teil dieser Lampen schalten.
Ich habe mir gedacht, dass ich ein Dropdown-Menü mache und die Lampen auswähle, die geschaltet werden sollen.
attr Lampen_Auswahl setList state:multiple,Loggia,GO,GU,Pool,Wuerfel
attr Lampen_Auswahl webCmd state


Wie kann ich jetzt die Auswahl, die ich getroffen habe in meine Schaltung integrieren?

Vielen Dank für eure Hilfe
LG
Cyrus



TomLee

Wie ich dich verstehe macht das Modul lightScene genau das was du dir wünschst, nimm statt structure einfach das Modul.

Gruß

Thomas

MadMax-FHEM

Oder MSwitch: https://forum.fhem.de/index.php/topic,121817.0.html

Aber wo stehen denn die ausgewählten Werte drin, wenn du es so machst?

In state?
Kannst du da (so) überhaupt mehrere auswählen und eintragen?

Wenn die Werte in state (oder einem andern Reading) stehen, dann: ReadingsVal("Devicename", "state_oder_Readingname", "Ersatzwert")

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

frank

ZitatIm Winter möchte ich jedoch nur einen Teil dieser Lampen schalten.
structure kann man auch "verschachteln".
also zb eine structure für die winter_lampen, die dann auch in die garten_all structure eingebunden werden kann.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

Zitat von: MadMax-FHEM am 22 September 2021, 10:39:50
Oder MSwitch: https://forum.fhem.de/index.php/topic,121817.0.html
Kann schon sein, dass man sowas damit machen kann, aber du nutzt das doch (auch) nicht, oder?

Zitat
Aber wo stehen denn die ausgewählten Werte drin, wenn du es so machst?
Ein Test würde es zutage fördern...



Aber den "link" zwischen den Schlüsselwörtern im dummy und den Devicenamen sehe ich hier noch nicht...?

ad structure: Geräte hinzufügen oder löschen geht:
ZitatDie Liste der Devices die einer Struktur zugeordnet sind kann duch das Kommando addstruct / delstruct im laufenden Betrieb verändert werden.
Zitat von: frank am 22 September 2021, 11:14:09
structure kann man auch "verschachteln".
also zb eine structure für die winter_lampen, die dann auch in die garten_all structure eingebunden werden kann.
Das kann man dann auch mit addstruct etc. kombinieren.

Ansonsten hatte ich sowas ähnliches früher mal für meine Rollläden gemacht, da habe ich einfach (mit setreading) ein eigenes Reading in die zu schaltenden Geräte geschrieben und dann (via WeekdayTimer) nur die Geräte geschaltet, die das Reading mit dem richtigen Wert hatten (das könnte man dann in einer readingsGroup ein- und ausschalten).

(ein backup ist manchmal hilfreich, hier die betreffenden Codes):

define Timer_Rolladen_Automode_1 WeekdayTimer TYPE=CUL_HM:FILTER=model=HM-LC-Bl1PBU-FM:FILTER=automode=1 !$we|{sunrise_abs_dat($today,"CIVIL",rand(240),"06:45","08:00")}|on\
$we|{sunrise_abs_dat($today,"CIVIL",rand(240),"08:40","09:00")}|on\
{sunset_abs_dat($today,"CIVIL",rand(240),"20:45","22:20")}|off {fhem ("set\
$NAME:FILTER=STATE!=$EVENT $EVENT")}

define rg_Rollaeden readingsGroup <Gerät>,<Offen>,<automode>,<Offen-Pos.>,<Gekippt-Pos.>,<Jalousie>,<On-Hold> (Rolladen_.*|Jalousie_.*)..:level,automode,?WindowContactOpenMaxClosed,?WindowContactTiltedMaxClosed,?JalousieTurnLevel,?WindowContactOnHoldState,
attr rg_Rollaeden commands {'level' => 'pct:0,10,20,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100','automode' => 'automode:0,1,2,3,4,5','WindowContactOpenMaxClosed' => 'WindowContactOpenMaxClosed:10,20,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100','WindowContactTiltedMaxClosed' => 'WindowContactTiltedMaxClosed:10,20,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100',}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Wernieman

Wenn man eine Liste der zu schaltenden Geräte hat, könne man per Code die Liste durchgehen und an/abschalten. Ist "nur" etwas Programmieraufwand ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Zitat von: MadMax-FHEM am 22 September 2021, 10:39:50
Oder MSwitch: https://forum.fhem.de/index.php/topic,121817.0.html

Zitat von: Beta-User am 22 September 2021, 11:18:43
Kann schon sein, dass man sowas damit machen kann, aber du nutzt das doch (auch) nicht, oder?

Korrekt: nutze ich nicht.

Aber ich nutze auch kein DOIF und nenne es, wenn ich denke/weiß, dass es damit geht/gehen könnte trotzdem 8)

Ebenso andere Module die ich nicht nutze...
...weil ich es legitim (und gute Hilfe) finde, mögliche Lösungen zu nennen, weil ja der Fragende schon noch ein wenig selber recherchieren "darf"...

Eine Google-Suche funktioniert doch auch so: man bekommt eine Menge vorgesetzt (wo eine Maschine dachte könnte passen ;)  ) und dann muss man eben filtern... 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cyrusfd

Vielen Dank für die vielen Anregungen.
Ich habe es mal mit LightScene versucht.
4 verschiedene Szenen wurden in meineLightScene definiert.
define meineLightScene HM_57E255_Sw_01 HM_57E255_Sw_04 HM_760BDB_Sw_02 HM_760BDB_Sw_01 HM_760BDB_Sw_03

Wenn ich in meiner Schaltuhr folgendes definiere, passiert nichts. Die verschiedene Szenen funktionieren jedoch manuell.
*11:54 {fhem("set meineLightScene scene on") if (Value("Schaltuhr_an_aus") eq "an");;}

Vielleicht kann mir jemand auf die Sprünge helfen.

Der_Tom

Zitat von: MadMax-FHEM am 22 September 2021, 10:39:50
Oder MSwitch: https://forum.fhem.de/index.php/topic,121817.0.html

Aber wo stehen denn die ausgewählten Werte drin, wenn du es so machst?

In state?
Kannst du da (so) überhaupt mehrere auswählen und eintragen?

Wenn die Werte in state (oder einem andern Reading) stehen, dann: ReadingsVal("Devicename", "state_oder_Readingname", "Ersatzwert")

Gruß, Joachim


Danke für die Erwähnung.
Geht zwar , aber auch nicht ohne eine gute Portion Erfahrung und ganz sicher nicht als 'quickie'

Gruss Thomas

cyrusfd

ich glaube ich hatte einen Denkfehler...
die Szene muss ja ausgelesen werden, damit er geschaltet werden kann.
*12:38 {
my $temp=ReadingsVal("meineLightScene","State","");{fhem("set meineLightScene $temp on") if (Value("Schaltuhr_an_aus") eq "an");;}
}

leider funktioniert dieser Code auch nicht.

justme1968

State gibt es nicht. nur state oder STATE. und nur ersteres ist ein reading.

aber: es ist doch immer noch verdreht. die lightScene ist das device das zum (gruppen weise) schalten verwendet wird. nicht für die interaktion bzw. zum auswählen was geschaltet werden soll.

du brauchst:
- eine lightScene oder mehrere structures um zu schalten. bei lightScene würdest du mehrere szenen anlegen wie alles_aus, winter_an, sommer_an, ...
- ein at oder weekday timer der zur gewünschten zeit schaltet. d.h. z.b. die aktuell gewünschte szene auswählt.
- die auswahl ist kann dann entweder anhand des aktuellen monats automatisch sein oder z.b. per dummy den du über das menü entweder auf sommer/winter stellst oder direkt auf die gewünschte szene.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MadMax-FHEM

Hast du die commandref zu lightscene gelesen?

Also du definierst eine lightscene (hast du wohl gemacht).

Dann schaltest du die Lichter wie sie sollen und speicherst das mithilfe des lightscene-Devices ab:


set lightsceneDevice save NameDerLichtSzene1


Dann schaltest du wieder und speicherst

set lightsceneDevice save NameDerLichtSzene2

usw.

Dann kannst du mit

set lightsceneDevice scene NameDerLichtSzeneX eben eine bestimmte gespeicherte Einstellung abrufen...


EDIT: hatte es schon, daher lasse ich es (auch wenn doppelt ;)  )...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

TomLee

ZitatAlso du definierst eine lightscene (hast du wohl gemacht).

Ich hab Zweifel:


define meineLightScene HM_57E255_Sw_01 HM_57E255_Sw_04 HM_760BDB_Sw_02 HM_760BDB_Sw_01 HM_760BDB_Sw_03


eher


define meineLightScene LightScene HM_57E255_Sw_01 HM_57E255_Sw_04 HM_760BDB_Sw_02 HM_760BDB_Sw_01 HM_760BDB_Sw_03


cyrusfd

ich habe folgende Szenen in meineLightScene bereits definiert
Scene_Aus --> Alles aus
Scene_Sommer --> Alles an
Scene_Winter --> nur ein Teil an

in meiner Schaltuhr, die normalerweise mit "Sunset" funktioniert, habe ich testweise folgendes eingegeben.
*13:02 {
my $temp=ReadingsVal("meineLightScene","state","");{fhem("set meineLightScene [color=red]scene[/color] $temp on") if (Value("Schaltuhr_an_aus") eq "an");;}
}

Das state wurde jetzt korrigiert und der fehlende Code "scene" hinzugefügt. Jetzt funktioniert es!!!

Vielen Dank an alle






TomLee

Wozu soll das on in dem set-Befehl denn gut sein ?

Zitat von: CommandrefSet

    all <command>
    execute set <command> for alle devices in this LightScene
    save <scene_name>
    save current state for alle devices in this LightScene to <scene_name>
    scene <scene_name>

Und weil keiner bisher was sagte, nimm in Zukunft besser Readingsval für state und nicht Value für STATE.