FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Muschelpuster am 21 April 2016, 20:22:31

Titel: Verschattung nach Solarleistung - Rollläden gehen nicht mehr auf
Beitrag von: Muschelpuster am 21 April 2016, 20:22:31
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
Titel: Antw:Verschattung nach Solarleistung - Rollläden gehen nicht mehr auf
Beitrag von: Ellert am 22 April 2016, 08:35:38
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.
Titel: Antw:Verschattung nach Solarleistung - Rollläden gehen nicht mehr auf
Beitrag von: Muschelpuster am 22 April 2016, 09:26:32
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