Hallo zusammen,
Ich hatte das ganze Thema ursprünglich mit Homematic erschlagen und das hat wunderbar funktioniert. Da habe ich die Position 88% als Merker für die Verschattung genommen. Nachdem mir nun ein Rollladenmotor abgeraucht war und ich nun auf DuoFern umgestiegen bin, funktioniert das DOIF zum Öffnen nicht mehr, obwohl ich (eigentlich) an der Struktur nichts geändert habe.
Aber mal von Anfang an. Das Herunterfahren klappt einwandfrei:define di_Verschattung_1 DOIF ([Solar:total_pac]>2.6 and [DuoFern_Rollladen_Terasse_Tuer:position]<22 and [DuoFern_Rollladen_Terasse_Fenster:position]<22 and [HM_Tuer_WZ_Terasse:state] ne "open" and [du_verschattung:state] eq "an") (set DuoFern_Rollladen_Terasse_.* sunMode on)
Hoch gehen die Rollläden auch, wenn noch beide in sunMode = on haben. Aktuell hat das aber nur der Rollladen Fenster und nix passiert mehr:define di_Verschattung_0 ([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Fenster:sunMode] eq "on" and [DuoFern_Rollladen_Terasse_Tuer:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_.* sunMode off)
DOELSEIF
([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Fenster:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_Fenster sunMode off)
DOELSEIF
([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Tuer:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_Tuer sunMode off)
Vermutlich kann man das schon einfacher formulieren, aber ich nicht ;)
Da die Frage ja sicher kommen wird, hier List des DOIFInternals:
DEF ([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Fenster:sunMode] eq "on" and [DuoFern_Rollladen_Terasse_Tuer:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_.* sunMode off)
DOELSEIF
([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Fenster:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_Fenster sunMode off)
DOELSEIF
([Solar:total_pac]<2.2 and [DuoFern_Rollladen_Terasse_Tuer:sunMode] eq "on") (set DuoFern_Rollladen_Terasse_Tuer sunMode off)
NAME di_Verschattung_0
NR 153
NTFY_ORDER 50-di_Verschattung_0
STATE cmd_1
TYPE DOIF
Readings:
2016-04-21 19:31:51 Device Solar
2016-04-20 20:26:30 cmd_event Solar
2016-04-20 20:26:30 cmd_nr 1
2016-04-21 18:01:31 e_DuoFern_Rollladen_Terasse_Fenster_sunMode on
2016-04-21 18:01:25 e_DuoFern_Rollladen_Terasse_Tuer_sunMode on
2016-04-21 19:31:51 e_Solar_total_pac 0.145
2016-04-20 20:26:30 state cmd_1
2016-04-21 18:00:49 wait_timer no timer
Condition:
0 ReadingValDoIf($hash,'Solar','total_pac','','',AttrVal($hash->{NAME},'notexist',undef))<2.2 and ReadingValDoIf($hash,'DuoFern_Rollladen_Terasse_Fenster','sunMode','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and ReadingValDoIf($hash,'DuoFern_Rollladen_Terasse_Tuer','sunMode','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
1 ReadingValDoIf($hash,'Solar','total_pac','','',AttrVal($hash->{NAME},'notexist',undef))<2.2 and ReadingValDoIf($hash,'DuoFern_Rollladen_Terasse_Fenster','sunMode','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
2 ReadingValDoIf($hash,'Solar','total_pac','','',AttrVal($hash->{NAME},'notexist',undef))<2.2 and ReadingValDoIf($hash,'DuoFern_Rollladen_Terasse_Tuer','sunMode','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
Devices:
0 Solar DuoFern_Rollladen_Terasse_Fenster DuoFern_Rollladen_Terasse_Tuer
1 Solar DuoFern_Rollladen_Terasse_Fenster
2 Solar DuoFern_Rollladen_Terasse_Tuer
all Solar DuoFern_Rollladen_Terasse_Fenster DuoFern_Rollladen_Terasse_Tuer
Do:
0:
0 set DuoFern_Rollladen_Terasse_.* sunMode off
1:
0 set DuoFern_Rollladen_Terasse_Fenster sunMode off
2:
0 set DuoFern_Rollladen_Terasse_Tuer sunMode off
Helper:
event device_name: SB 3600TL-21 780,device_class: Solar-Wechselrichter,device_type: SB 3600TL-21,software_version: 02.60.04.R,serial_number: xxxxxxxxxx,susyid: 138 - SN: xxxxxxxxxx,device_status: Ok,susyid: 138 - SN: xxxxxxxxxx,device_temperature: 36.0°C,susyid: 138 - SN: xxxxxxxxxx,gridrelay_status: Geschlossen,susyid: 138 - SN: xxxxxxxxxx,pac_max_phase_1: 3680,pac_max_phase_1: 3680,pac_max_phase_2: 3680,pac_max_phase_2: 3680,pac_max_phase_3: 3680,pac_max_phase_3: 3680,susyid: 138 - SN: xxxxxxxxxx,energy_production: ,etoday: 27.543,etotal: xxxx.296,operation_time: 10156.16h,feed-in_time: 9782.31h,susyid: 138 - SN: xxxxxxxxxx,dc_spot_data: ,string_1_pdc: 0.103,string_1_udc: 371.55,string_1_idc: 0.278,string_1_idc: 0.278,string_2_pdc: 0.090,string_2_udc: 356.90,string_2_idc: 0.252,string_2_idc: 0.252,susyid: 138 - SN: xxxxxxxxxx,ac_spot_data: ,phase_1_pac: 0.000,phase_1_uac: 0.00,phase_1_iac: 0.000,phase_1_iac: 0.000,phase_2_pac: 0.000,phase_2_uac: 0.00,phase_2_iac: 0.000,phase_2_iac: 0.000,phase_3_pac: 0.145,phase_3_uac: 230.12,phase_3_iac: 0.631,phase_3_iac: 0.631,total_pac: 0.145,susyid: 138 - SN: xxxxxxxxxx,grid_freq.: 49.97,susyid: 138 - SN: xxxxxxxxxx,current_inverter_time: 21/04/2016 19:31:48,inverter_wake-up_time: 21/04/2016 06:05:53,inverter_sleep_time: 21/04/2016 19:31:50
globalinit 1
last_timer 0
sleeptimer -1
timerdev Solar
timerevent device_name: SB 3600TL-21 780,device_class: Solar-Wechselrichter,device_type: SB 3600TL-21,software_version: 02.60.04.R,serial_number: xxxxxxxxxx,susyid: 138 - SN: xxxxxxxxxx,device_status: Ok,susyid: 138 - SN: xxxxxxxxxx,device_temperature: 36.0°C,susyid: 138 - SN: xxxxxxxxxx,gridrelay_status: Geschlossen,susyid: 138 - SN: xxxxxxxxxx,pac_max_phase_1: 3680,pac_max_phase_1: 3680,pac_max_phase_2: 3680,pac_max_phase_2: 3680,pac_max_phase_3: 3680,pac_max_phase_3: 3680,susyid: 138 - SN: xxxxxxxxxx,energy_production: ,etoday: 27.543,etotal: xxxx.296,operation_time: 10156.16h,feed-in_time: 9782.31h,susyid: 138 - SN: xxxxxxxxxx,dc_spot_data: ,string_1_pdc: 0.103,string_1_udc: 371.55,string_1_idc: 0.278,string_1_idc: 0.278,string_2_pdc: 0.090,string_2_udc: 356.90,string_2_idc: 0.252,string_2_idc: 0.252,susyid: 138 - SN: xxxxxxxxxx,ac_spot_data: ,phase_1_pac: 0.000,phase_1_uac: 0.00,phase_1_iac: 0.000,phase_1_iac: 0.000,phase_2_pac: 0.000,phase_2_uac: 0.00,phase_2_iac: 0.000,phase_2_iac: 0.000,phase_3_pac: 0.145,phase_3_uac: 230.12,phase_3_iac: 0.631,phase_3_iac: 0.631,total_pac: 0.145,susyid: 138 - SN: xxxxxxxxxx,grid_freq.: 49.97,susyid: 138 - SN: xxxxxxxxxx,current_inverter_time: 21/04/2016 19:31:48,inverter_wake-up_time: 21/04/2016 06:05:53,inverter_sleep_time: 21/04/2016 19:31:50
triggerDev Solar
timerevents:
device_name: SB 3600TL-21 780
device_class: Solar-Wechselrichter
device_type: SB 3600TL-21
software_version: 02.60.04.R
serial_number: xxxxxxxxxx
susyid: 138 - SN: xxxxxxxxxx
device_status: Ok
susyid: 138 - SN: xxxxxxxxxx
device_temperature: 36.0°C
susyid: 138 - SN: xxxxxxxxxx
gridrelay_status: Geschlossen
susyid: 138 - SN: xxxxxxxxxx
pac_max_phase_1: 3680
pac_max_phase_1: 3680
pac_max_phase_2: 3680
pac_max_phase_2: 3680
pac_max_phase_3: 3680
pac_max_phase_3: 3680
susyid: 138 - SN: xxxxxxxxxx
energy_production:
etoday: 27.543
etotal: xxxx.296
operation_time: xxxx.16h
feed-in_time: xxxx.31h
susyid: 138 - SN: xxxxxxxxxx
dc_spot_data:
string_1_pdc: 0.103
string_1_udc: 371.55
string_1_idc: 0.278
string_1_idc: 0.278
string_2_pdc: 0.090
string_2_udc: 356.90
string_2_idc: 0.252
string_2_idc: 0.252
susyid: 138 - SN: xxxxxxxxxx
ac_spot_data:
phase_1_pac: 0.000
phase_1_uac: 0.00
phase_1_iac: 0.000
phase_1_iac: 0.000
phase_2_pac: 0.000
phase_2_uac: 0.00
phase_2_iac: 0.000
phase_2_iac: 0.000
phase_3_pac: 0.145
phase_3_uac: 230.12
phase_3_iac: 0.631
phase_3_iac: 0.631
total_pac: 0.145
susyid: 138 - SN: xxxxxxxxxx
grid_freq.: 49.97
susyid: 138 - SN: xxxxxxxxxx
current_inverter_time: 21/04/2016 19:31:48
inverter_wake-up_time: 21/04/2016 06:05:53
inverter_sleep_time: 21/04/2016 19:31:50
triggerEvents:
device_name: SB 3600TL-21 780
device_class: Solar-Wechselrichter
device_type: SB 3600TL-21
software_version: 02.60.04.R
serial_number: xxxxxxxxxx
susyid: 138 - SN: xxxxxxxxxx
device_status: Ok
susyid: 138 - SN: xxxxxxxxxx
device_temperature: 36.0°C
susyid: 138 - SN: xxxxxxxxxx
gridrelay_status: Geschlossen
susyid: 138 - SN: xxxxxxxxxx
pac_max_phase_1: 3680
pac_max_phase_1: 3680
pac_max_phase_2: 3680
pac_max_phase_2: 3680
pac_max_phase_3: 3680
pac_max_phase_3: 3680
susyid: 138 - SN: xxxxxxxxxx
energy_production:
etoday: 27.543
etotal: xxxx.296
operation_time: 10156.16h
feed-in_time: 9782.31h
susyid: 138 - SN: xxxxxxxxxx
dc_spot_data:
string_1_pdc: 0.103
string_1_udc: 371.55
string_1_idc: 0.278
string_1_idc: 0.278
string_2_pdc: 0.090
string_2_udc: 356.90
string_2_idc: 0.252
string_2_idc: 0.252
susyid: 138 - SN: xxxxxxxxxx
ac_spot_data:
phase_1_pac: 0.000
phase_1_uac: 0.00
phase_1_iac: 0.000
phase_1_iac: 0.000
phase_2_pac: 0.000
phase_2_uac: 0.00
phase_2_iac: 0.000
phase_2_iac: 0.000
phase_3_pac: 0.145
phase_3_uac: 230.12
phase_3_iac: 0.631
phase_3_iac: 0.631
total_pac: 0.145
susyid: 138 - SN: xxxxxxxxxx
grid_freq.: 49.97
susyid: 138 - SN: xxxxxxxxxx
current_inverter_time: 21/04/2016 19:31:48
inverter_wake-up_time: 21/04/2016 06:05:53
inverter_sleep_time: 21/04/2016 19:31:50
Internals:
Itimer:
Readings:
0 Solar:total_pac DuoFern_Rollladen_Terasse_Fenster:sunMode DuoFern_Rollladen_Terasse_Tuer:sunMode
1 Solar:total_pac DuoFern_Rollladen_Terasse_Fenster:sunMode
2 Solar:total_pac DuoFern_Rollladen_Terasse_Tuer:sunMode
all Solar:total_pac DuoFern_Rollladen_Terasse_Fenster:sunMode DuoFern_Rollladen_Terasse_Tuer:sunMode
Regexp:
0:
All:
State:
Trigger:
Attributes:
alias Verschattung nach Solarleistung aus
group Rolläden
room Maschinenraum
wait 1600
schattige Grüße
Niels
Wenn alle Bedingungen gleichzeitig wahr sind, schaltet nur die erste Bedingung, die wahr wird. Wenn es keine weitere Readingsaktualisierung gibt, wie bei HM, schalten die anderen Bedingung nicht.
... aus der Commandref:
Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste, für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.
Danke, ich ahnte doch, dass das Problem vor dem PC sitzt 8)
Das bedeutet also, um das wieder abzubilden müsste ich 3 getrennte DOIF bauen? Oder die Überwachung des sunMode über Notifys in ein Dummy verlagern (aus/tuer/fenster/beide), was ich schon mal mit HomeMatic vor hatte...
Wenn ich es richtig verstehe, wäre ja auch die CheckAll-Funktionalität eine Option?
Aber nein - alles Blödsinn! Mit dem Wissen, dass das so nicht geht und den neuen Möglichkeiten von DuoFern schaffte ich es jetzt den ganzen Rotz doch mal zu überdenken und komme zu einer ganz simplen Lösung:define di_Verschattung_0 DOIF ([Solar:total_pac]<2.2) (set DuoFern_Rollladen_Terasse_.* sunMode off)
Es ist nämlich völlig egal, ob der sunMode noch aktiv ist, oder ein Rollladen manuell verändert wurde - hiermit fährt nur der Rollladen auf 0, der auch noch den sunMode aktiv hat. Die anderen bleiben in ihrer manuell eingestellten Position. Think simple funktioniert doch manchmal :)
vereinfachte Grüße
Niels