Akuelle 10_CUL_HM.pm ist bei mir fehlerhaft

Begonnen von sepultura30, 23 Februar 2021, 18:07:20

Vorheriges Thema - Nächstes Thema

sepultura30

Hallo,

die Aktuelle 10_CUL_HM.pm arbeit bei mir nicht sauber, im DOIF habe ich diesen Code drinnen:

([Flur_Oben] eq "on")
  (set Flur_Oben on-for-timer 120)

wenn jetzt das Licht angeht, dann springt das DOIF immer hin und her "cmd_1 cmd_2 cmd_1 cmd_2 u.s.w" und ich bekomme das Licht auch nicht mehr aus.
Mit dieser Version vom 20.02.2021 16:03:14 habe ich keine Probleme, die läuft sauber.

Grüße

Sandro

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

#2
Hallo Sandro,

egal wie es mit den Versionen, das ist äußerst unsaubere Code!
Du musst 2 Dinge beachten:
1. STATE (state) bei einem Homematic Device zu verwenden ist äußerst kritisch! Schau Dir im Eventmonitor an was da passiert wenn Du schaltest!
2. Du setzt auf ein on (trigger) ein on-for-timer - der schon immer wieder ein state=on erzeugt. Das muss eigentlich schon immer eine  Schleife geben wie Du beschreibst. Wenn es das bisher nicht gemacht hat war es ein Fehler! :)

Nimm z.B. level der wird nicht neu gesetzt - etwas kritisch bleibt das (auf alle Fälle event-on-change-reading setzen).

([Flur_Oben:level] == 100)   (set Flur_Oben on-for-timer 120)

Programmiere doch den Schalter direkt auf timer? Mit Template oder mit register direkt (hier beschrieben)
Code ist nur Prinzip und stimmt so nicht!
set hminfo templateSet Flur_Oben autoOff self01:short 120

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sepultura30

Hallo Otto,

besten Dank, so geht es und ich habe alles bei mir umgestellt.


Zitat von: Otto123 am 23 Februar 2021, 19:35:14
Hallo Sandro,

egal wie es mit den Versionen, das ist äußerst unsaubere Code!
Du musst 2 Dinge beachten:
1. STATE (state) bei einem Homematic Device zu verwenden ist äußerst kritisch! Schau Dir im Eventmonitor an was da passiert wenn Du schaltest!
2. Du setzt auf ein on (trigger) ein on-for-timer - der schon immer wieder ein state=on erzeugt. Das muss eigentlich schon immer eine  Schleife geben wie Du beschreibst. Wenn es das bisher nicht gemacht hat war es ein Fehler! :)

Nimm z.B. level der wird nicht neu gesetzt - etwas kritisch bleibt das (auf alle Fälle event-on-change-reading setzen).

([Flur_Oben:level] == 100)   (set Flur_Oben on-for-timer 120)

Programmiere doch den Schalter direkt auf timer? Mit Template oder mit register direkt (hier beschrieben)
Code ist nur Prinzip und stimmt so nicht!
set hminfo templateSet Flur_Oben autoOff self01:short 120

Gruß Otto