[Gelöst] Button zum temporären disablen eines Perl-DOIFs über uiTable möglich?

Begonnen von cwagner, 03 Oktober 2023, 08:41:29

Vorheriges Thema - Nächstes Thema

cwagner

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
PI 2B+/3B+ Raspbian 11, Perl 5.32.1, FHEM 6.2: 295 Entities in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cwagner

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
PI 2B+/3B+ Raspbian 11, Perl 5.32.1, FHEM 6.2: 295 Entities in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB