FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ruckzuck am 04 November 2021, 12:44:22

Titel: KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 04 November 2021, 12:44:22
Hallo,

ich würde gerne meinem KNX-Aktor (Licht), in FHEM, eine Toggle-Funktion spendieren. Dazu habe ich im ersten Schritt das Attribut useSetExtensions aktiviert. Damit wird zumindest das toggle Command erkannt. Wenn ich im Forum richtig gelesen habe, muss ich eventMap noch anpassen, verstehe aber an der Stelle die Zusammenhänge noch nicht. Hier mein Device:

defmod LichtOG KNX 1/1/0:dpt1:steuern:set 1/1/1:dpt1:status:get
attr LichtOG IODev KNX
attr LichtOG devStateIcon status-on:FS20.on:Aus status-off:FS20.off:Ein steuern.*:hourglass:Aus
attr LichtOG eventMap /steuern on:An/steuern off:Aus/
attr LichtOG room Licht
attr LichtOG stateRegex /steuern-[sg]et:/steuern-/ /status-get:/status-/
attr LichtOG useSetExtensions 1

setstate LichtOG status-off
setstate LichtOG 2021-11-03 16:35:55  on
setstate LichtOG 2021-11-04 12:35:30 last-sender 1/0/110
setstate LichtOG 2021-11-02 13:18:47 off
setstate LichtOG 2021-11-02 13:18:47 on
setstate LichtOG 2021-11-04 12:35:30 state status-off
setstate LichtOG 2021-11-04 12:35:30 status-get off
setstate LichtOG 2021-11-04 12:35:30 steuern-set off


Kann mir jemand helfen? Ist es überhaupt bei jedem Device möglich, mit den Bordmitteln den Zustand zu togglen, oder muss man bei manchen Devices über Perl gehen?
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 04 November 2021, 13:50:19
Du gehts das zu kompliziert an!
probier mal folgendes:
defmod LichtOG KNX 1/1/0:dpt1:steuern:set 1/1/1:dpt1:status:get
attr LichtOG devStateIcon on:FS20.on:off off:FS20.off:off
attr LichtOG room Licht

du findest dann (im detail view des devices) ein SET-pulldown mit on, off, toggle.
oder als cmd in der FHEM cmd-line:
set LichtOG toggle
#bzw.
set LichtOG steuern toggle

in der cmd-referenz ist dann noch ein Attribut: KNX_toggle beschrieben, ich denke das braucht du für diesen Fall nicht!
useSetextensions braucht man nicht für KNX-devices....
...ich gehe von einem aktuellen FHEM aus...
l.g. erwin
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 04 November 2021, 14:11:53
Zitat von: erwin am 04 November 2021, 13:50:19
Du gehts das zu kompliziert an!
....

mhm, ok...eigentlich setzte ich auf ein Beispiel hier aus dem Forum, um den "echten" Status des Aktors zurückzulesen und zur Anzeige zu bringen (dazwischen die Sanduhr). Ich finde das eigentlich ganz charmant und würde es gerne so beibehalten.

   
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 04 November 2021, 14:31:07
du hast eine Rückmeldung vom KNX-Aktor und zwar im reading: status-get !
Die Sanduhr wirst du in deinem Fall nie sehen, weil der Schalt-Aktor einfach zu schnell ist.
Um dieses reading als aktuellen status für toggle zu verwenden, mach noch das Attribut:
attr LichtOG KNX_toggle $self:status-get
hinzu.
In der cmd-ref ist das unter dem Attr: KNX_toggle besschreiben.
PS: die erweiterten Beispiele sind ab sofort im wiki unter: https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele (https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele) noch ausführlicher beschrieben.
l.g. erwin
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 04 November 2021, 14:50:48
ok...ich mache da erstmal meine Hausaufgaben:-)

Vielen Dank Erwin
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 09 November 2021, 09:38:16
Hallo erwin,

ich habe mich jetzt an dieses Beispiel aus dem Wiki angelehnt:
define dpt1_1tst KNX 14/1/1:dpt1:EinAus:set 14/2/1:dpt1:Status:listenonly:nosuffix
attr dpt1_1tst devStateIcon on:general_an:Aus off:general_aus:Ein steuern.*:hourglass:Aus
attr dpt1_1tst stateRegex /EinAus-set/steuern-/ /EinAus-get//


...hier fehlte mir nur noch das Attribute stateFormat Status. Ist das devStateIcon mit on:...:aus & off:...:ein so korrekt, oder sollten die Befehle nicht konsequent in Englisch gehalten werden?

Dieses Resultat funktioniert für mich soweit:

defmod LichtTechnikraum KNX 1/0/0:dpt1:EinAus:set 1/0/1:dpt1:status:get:nosuffix
attr LichtTechnikraum IODev KNX
attr LichtTechnikraum KNX_toggle $self:status
attr LichtTechnikraum devStateIcon on:FS20.on:off off:FS20.off:on steuern.*:hourglass:off
attr LichtTechnikraum room Licht
attr LichtTechnikraum stateFormat status
attr LichtTechnikraum stateRegex /EinAus-set/steuern/ /EinAus-get//
attr LichtTechnikraum webCmd :


...mit zwei Einschränkungen:

2. hängt irgendwie mit stateFormat zusammen, aber so ganz verstehe ich es nicht


Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 10 November 2021, 10:51:31
Hi,
ZitatIm set pulldown erscheint toggle nur unter EinAus
Ja, das ist Absicht, bei der Bedienung via FHEMWEB braucht man kein toggle, beim klicken auf das DevStateIcon wird immer implizit der richtige set cmd gesendet.
Bei KNX gibts ja in 99,99% der Fälle ein status GA, das jeweils den richtigen Zustand repräsentiert! - Im Gegensatz zu anderen Steuerungssystemen....
Das toogle cmd wurde für das scripting (AT,notify,doif...) entwickelt, und da ist die Angabe von <gadName> zumutbar!
Abgesehen davon geht ein set on|off|toggle|... nur für die jeweils ERSTE GA-definition im device!
Zitatwenn ich den Aktor jetzt betätige (auch mit on oder off) dann wechselt das Icon mehrfach seinen Zustand, also von set off nach set on sehe ich: FS20.off - FS20.on - FS20.off - FS20.on
Das kann ich nicht nachvollziehen, möglicherweise sind da noch Reste von einem gelöschten eventmap aktiv,
fall das nach fhem restart immer noch auftritt, bitte um:
1) list <device>
2) eventmonitor wo man da sehen kann!
l.g. erwin
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 10 November 2021, 13:13:40
Hi Erwin,

hier die Details zum Device:

Internals:
   .TOGGLESRC LichtTechnikraum:status
   DEF        1/0/0:dpt1:EinAus:set 1/0/1:dpt1:status:get:nosuffix
   DEVNAME    LichtTechnikraum
   FIRSTGADNAME EinAus
   FUUID      610d1916-f33f-8af0-2b65-74630a8761f4f2b5
   GETSTRING  status:noArg
   IODev      KNX
   KNX_MSGCNT 71
   KNX_RAWMSG C01064w0100100
   KNX_TIME   2021-11-10 13:10:43
   LASTInputDev KNX
   MSGCNT     71
   NAME       LichtTechnikraum
   NR         151
   SETSTRING  on:noArg off:noArg EinAus:on,off,toggle
   STATE      off
   TYPE       KNX
   model      dpt1
   .attraggr:
   .attrminint:
   GADDETAILS:
     EinAus:
       CODE       01000
       GROUP      1/0/0
       MODEL      dpt1
       NO         1
       OPTION     set
       RDNAMEGET  EinAus-get
       RDNAMEPUT  EinAus-put
       RDNAMESET  EinAus-set
       SETLIST    :on,off,toggle
     status:
       CODE       01001
       GROUP      1/0/1
       MODEL      dpt1
       NO         2
       OPTION     get
       RDNAMEGET  status
       RDNAMEPUT  status
       RDNAMESET  status
       SETLIST    :on,off,toggle
   GADTABLE:
     01000      EinAus
     01001      status
   READINGS:
     2021-11-10 13:10:43   EinAus-get      off
     2021-11-10 13:09:49   EinAus-set      off
     2021-11-10 12:43:20   IODev           KNX
     2021-11-10 13:10:43   last-sender     1.0.100
     2021-11-10 12:43:20   off             
     2021-11-10 13:10:43   state           off
     2021-11-10 13:10:43   status          off
     2021-11-10 12:43:20   status-get      off
     2021-11-10 12:43:20   steuern-set     off
Attributes:
   IODev      KNX
   KNX_toggle $self:status
   devStateIcon on:FS20.on:off off:FS20.off:on steuern.*:hourglass:off
   room       Licht
   stateFormat status
   stateRegex /EinAus-set/steuern/ /EinAus-get//
   webCmd     :


Ein Video mit dem Effekt und dem Eventlog hänge ich als Datei an.

Vielen Dank

Michael 
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 10 November 2021, 14:16:22
Sorry, auf dem Video ist kein change zu erkennen, weder im detail-view, noch im eventmonitor....
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 10 November 2021, 15:52:00
Zitat von: erwin am 10 November 2021, 14:16:22
Sorry, auf dem Video ist kein change zu erkennen, weder im detail-view, noch im eventmonitor....

mhm, dann weiß ich nicht genau was du erwartest? Ich sehe im Video, dass in Sekunde 9 das Icon beim Wechsel von "on" nach "off" zwischenzeitlich noch einmal "on" darstellt, also: on - off - on - off

Wie kann ich den change anders darstellen?

Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 10 November 2021, 15:58:01
mmh,
da hat mir mein VLC player einen streich gespielt... der zeigt offensichlich bei mir nur das 1 frame von dem Video....
mit Windows media player sehe ich es, obwohl er zurst meckert, das er das format nicht kennt....
ich schau mir das nochmal an!
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 10 November 2021, 16:12:18
Ich kann das mehrfache on/off nicht erkennen, weder im Video, noch im eventmonitor:
um 13:09:43 machst du "set L... EinAus-set on
darauf antwortet der Aktor innerhalb derselben Sekunde mit: status on
...und das Icon geht auf on!
später, um
13:09:49 machst du ein set L... EinAus-set off (schön am Video zu sehen)
darauf antwortet der aktor mit:  status off (um 13:09:50)
...und das Icon geht auf off!
Nachdem dein Icon ja vom reading: status abhängt (attr stateFormat status) gibts in dem Video nur 2 Zustände.
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: Ruckzuck am 10 November 2021, 17:43:08
ok, vielleicht hilft die Betrachtung der Einzelbilder (Anhang)? Es passiert bei Bild 0046. Vielleicht hat es mit dem Browserupdate zu tun? Im gleichen Bild verschwindet ja auch die Markierung des Set Buttons.
Titel: Antw:KNX-Schaltaktor toggeln lassen
Beitrag von: erwin am 10 November 2021, 18:20:59
ok, gesehen hab ich's, erklären kann ich es nicht!
Vor allem kommen nach Bild 41 keine weiteren events, die irgendwas bewirken könnten!
Deine Vermutung -Browserupdate hat was für sich - hast du schon mit einem anderen Browser versucht? Es ist genau nur 1 Frame, das sieht man im Video einfach nicht!
Oder sitzt irgendwo im system ein schelmisches notify,doif,... das ein setreading o.ä. macht ?  :( Das timing könnte passen!
l.g. erwin