FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: cwagner am 03 Oktober 2023, 08:41:29

Titel: [Gelöst] Button zum temporären disablen eines Perl-DOIFs über uiTable möglich?
Beitrag von: cwagner am 03 Oktober 2023, 08:41:29
Auch hier hoffe ich auf eine Erleuchtung von DOIF-Fans: Um den WAF zu verbessern, möchte ich Heizkörperregelungen einzeln temporär abschaltbar machen. Bisher erledigte ich das über ein set <device> disabled in den Details des Device.
In meinem Versuchs-DOIF habe ich den Knopf, aber ich krieg' es nicht gebacken:
define di_uiTable_widget DOIF ##\
## versuch eines temporären set $SELF disabled/enabled über Knopf in UI-Table
attr di_uiTable_widget DOIF_Readings knopf2:{[$SELF:knopf]}
attr di_uiTable_widget room InArbeit
attr di_uiTable_widget uiTable ## FHEM-Widgets mit Hilfe der WID-Funktion\\
{package ui_Table}\
"hier restliche Ui-Table-Def"\
"Button"| widget([$SELF:knopf],"select,disabled,enabled")
#   DEF        ##
### versuch eines temporären set $SELF disabled/enabled über Knopf in UI-Table
#   FUUID      651b322c-f33f-e1df-2fdf-a97e8a8483ab00ef
#   MODEL      FHEM
#   NAME       di_uiTable_widget
#   NOTIFYDEV  di_uiTable_widget,global
#   NR         134551
#   NTFY_ORDER 50-di_uiTable_widget
#   STATE      initialized
#   TYPE       DOIF
#   VERSION    27740 2023-07-10 09:31:11
#   eventCount 18
#   .attraggr:
#   .attrminint:
#   DOIF_Readings:
#     knopf2     {::ReadingValDoIf($hash,'di_uiTable_widget','knopf')}
#   OLDREADINGS:
#   READINGS:
#     2023-10-02 23:51:01   cmd             0
#     2023-10-02 23:35:50   knopf           disabled
#     2023-10-02 23:35:50   knopf2          disabled
#     2023-10-02 23:51:01   mode            enabled
#     2023-10-02 23:51:01   state           initialized
#   Regex:
#     DOIF_Readings:
#       di_uiTable_widget:
#         knopf2:
#           knopf      ^di_uiTable_widget$:^knopf:
#     accu:
#     bar:
#     barAvg:
#     collect:
#     uiTable:
#       di_uiTable_widget:
#         di_uiTable_widget_uiTable_c_1_1_0_0:
#           knopf      ^di_uiTable_widget$:^knopf:
#   condition:
#   do:
#     0:
#   helper:
#     NOTIFYDEV  di_uiTable_widget,global
#     globalinit 1
#     last_timer 0
#     sleeptimer -1
#     triggerDev
#     triggerEvents
#     triggerEventsState
#   uiState:
#   uiTable:
#     dev        di_uiTable_widget
#     header     
#<table uitabid='DOIF-di_uiTable_widget' class=' block wide uiTabledoif doif-di_uiTable_widget ' style='border-top:none;'>
#     package    package ui_Table;
#     reading    knopf
#     table:
#       0:
#         0:
#           0:
#             0          package ui_Table;"hier restliche Ui-Table-Def"
#       1:
#         0:
#           0:
#             0          package ui_Table;"Button"
#         1:
#           0:
#             0          package ui_Table;::DOIF_Widget($hash,$reg,'di_uiTable_widget_uiTable_c_1_1_0_0', widget(::ReadingValDoIf($hash,'di_uiTable_widget','knopf'),"select,disabled,enabled"),'di_uiTable_widget','knopf')
#     tc:
#     td:
#       0:
#       1:
#     tr:
#
setstate di_uiTable_widget initialized
setstate di_uiTable_widget 2023-10-02 23:51:01 cmd 0
setstate di_uiTable_widget 2023-10-02 23:35:50 knopf disabled
setstate di_uiTable_widget 2023-10-02 23:35:50 knopf2 disabled
setstate di_uiTable_widget 2023-10-02 23:51:01 mode enabled
setstate di_uiTable_widget 2023-10-02 23:51:01 state initialized
Gibt es einen Ansatz?

Herzliche Grüße
Christian
Titel: Aw: Button zum temporären disablen eines Perl-DOIFs über uiTable möglich?
Beitrag von: Damian am 03 Oktober 2023, 10:23:43
Damit sollte es funktionieren:

defmod di_uiTable_widget DOIF ##\
attr di_uiTable_widget do always
attr di_uiTable_widget room InArbeit
attr di_uiTable_widget uiTable ## FHEM-Widgets mit Hilfe der WID-Funktion\\
{package ui_Table}\
"hier restliche Ui-Table-Def"\
"Button"| widget([$SELF],"select,disable,enable")

Deine Definition hat lediglich das Reading per setreading geändert, du möchtest aber per set-Befehl das Device schalten, dafür braucht man kein zusätzliches Reading.
Titel: Aw: Button zum temporären disablen eines Perl-DOIFs über uiTable möglich?
Beitrag von: cwagner am 03 Oktober 2023, 15:05:59
Vielen Dank und es war mal wieder bei mir knapp daneben funktioniert halt auch nicht. Die Variante der Parameter hatte ich mit WID probiert und habe.
Funktioniert einwandfrei an Ort und Stelle...

Christian