Fragen zur Funktion JumpTable Zustandsmaschine Details

Begonnen von Fritz R., 18 Januar 2015, 11:22:38

Vorheriges Thema - Nächstes Thema

Fritz R.

Hallo, gibt es irgendwo eine detailierte Beschreibung. Mit dem was im Einsteiger.pdf steht komm ich irgendwie nicht klar. Ich würde das ganze gerne wirklich verstehen und nicht nur ein konkretes Beispiel ins laufen kriegen. Also habe ich absichtlich versucht die Register so zu stellen, dass es nach meinem Verständnis nicht gehen sollte, geht aber trotzdem.

Konkret:
Ich habe einen HM-LC-SW4-BA-PCB und den 1. Kanal mit einer 12 Tasten Fernbedienung gepeered.
Zum Test habe ich Knopf 7 long mit einer Einschaltdauer von 20 sek definiert. Funktioniert. Vorsicht: die LED blinkt dann solange bis die Zeit abläuft, ich dachte zunächst das Ding schaltet ein und aus !
Nun hab ich die JumpTable Einstellung verbogen


Kerze_mittel_Sw_01 type:switch -
list:peer register         :value
   1:      sign             :off
                       RC_12_Btn_07                    RC_12_Btn_08
                       lg              sh              lg              sh
ActionType             jmpToTarget     jmpToTarget     jmpToTarget     jmpToTarget
CtDlyOff               geLo            geLo            geLo            geLo
CtDlyOn                geLo            geLo            geLo            geLo
CtOff                  geLo            geLo            geLo            geLo
CtOn                   geLo            geLo            geLo            geLo
CtValHi                100             100             100             100
CtValLo                50              50              50              50
MultiExec              on              on
OffDly            [s]  0               0               0               0
OffTime                unused          unused          unused          unused
OffTimeMode            absolut         absolut         absolut         absolut
OnDly             [s]  0               0               0               0
OnTime            [s]  20              unused          4               unused
OnTimeMode             absolut         absolut         absolut         absolut
SwJtDlyOff             no              off             on              on
SwJtDlyOn              no              off             on              on
SwJtOff                on              off             dlyOn           dlyOn
SwJtOn                 dlyOff          dlyOff          on              on


Ich dachte wenn ich den On Zustand auf dlyOff springen lasse und den auf no stelle, sollte doch spätestens der 2. Druck auf den Knopf nichts mehr auslösen, da ja der JumpTable aus dem Zustand dlyOff nicht mehr weiter geht. Der Schalter funktioniert aber gleich weiter wie vorher.
Kann mir jemand auf die Sprünge helfen.


frank

ein schalter hat 4 zustände (timer) mit den entsprechenden, einstellbaren timerzeiten. diese timer sind im kreis hintereinander angeordnet in folgender reihenfolge: off->ondly->on->offdly->off.

angenommen die 4 timer sind alle auf 1s gesetzt. dann wird dieser kreis unendlich lange durchlaufen. da off und ondly jeweils den zustandswert "aus" haben, und on, offdly den zustandwert "ein", wirst du ein permanentes blinken mit 2s ein und 2s aus zu sehen bekommen. so läuft die zustandsmaschine ohne zusätzliche trigger von aussen.

jetzt kannst du noch trigger von aussen definieren, die zusätzliche sprünge bewirken. die grundschaltung (kreis) der timer wird dadurch aber nicht verändert. du kannst aber zb durch geschickte sprünge bestimmte timer ausblenden.

Zitatda ja der JumpTable aus dem Zustand dlyOff nicht mehr weiter geht.
eben nicht. dein timer offdly ist mit 0s gesetzt. sobald du da rein springst ist er schon abgelaufen und nach off gewandert. off hast du auf unused (unendlich), wodurch die zustandsmaschine hier stoppt.

"SwJtDlyOn on" => bei eintreffen eines triggers im zustand dlyon wird nach zustand on gesprungen. Jt=jumpTarget/ziel.
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

Fritz R.

#2
Danke. Die Grundsätze hatte ich auch so verstanden und wollte das ausprobieren und daher die Frage was passiert wenn man den Kreis unterbricht.

Zitateben nicht. dein timer offdly ist mit 0s gesetzt. sobald du da rein springst ist er schon abgelaufen und nach off gewandert

genau das versteh ich nicht wenn SwJtDlyOff auf "no" setzte springt er trotzdem auf off ? Was bewirke ich dann mit "no"
laut Einsteiger.pdf ist no

Zitatno       keine Reaktion, bleib wo du bist

sollte also stehen bleiben und nicht mehr in den nächsten Zustand wechseln. Irgenwie hab ich da einen Knoten im Verständnis.

Edit:
Hab ich da einen Denkfehler und der grundsätzlich Ablauf kann garnicht verändert werden?
Ist die Angabe nur falls der Timer noch läuft und "no" bedeutet Timer wird nicht neu gestartet? Aber für was sind dann die anderen Zustände gut?

frank

ZitatHab ich da einen Denkfehler und der grundsätzlich Ablauf kann garnicht verändert werden?
genau, das sagte ich ja mit

Zitatjetzt kannst du noch trigger von aussen definieren, die zusätzliche sprünge bewirken. die grundschaltung (kreis) der timer wird dadurch aber nicht verändert. du kannst aber zb durch geschickte sprünge bestimmte timer ausblenden.

"SwJtDlyOn no" => bei eintreffen eines triggers im zustand dlyon wird nicht gesprungen. hier werden immer ziele angegeben, die nur durch äussere trigger ausgelöst werden können.
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

vbs

Also bei ELV kann man ein PDF für 1€ erstehen, in dem diese ganzen Register für die Zustandsmaschine imo gut erklärt sind:
http://www.elv.de/HomeMatic%C2%AE-programmieren-%E2%80%93-Aktionsprofile-f%C3%BCr-Aktoren-erarbeiten/x.aspx/cid_726/detail_38635

Kann ich wirklich empfehlen.

Fritz R.

Danke für die Unterstützung. Ich glaub jetzt hab ich's geschnallt, hatte einfach zu kompliziert gedacht. Zumindest tun meine ausprobierten Beispiele jetzt wie erwartet.

ZitatAlso bei ELV kann man ein PDF für 1€ erstehen, in dem diese ganzen Register für die Zustandsmaschine imo gut erklärt sind:
kann ich auch empfehlen. Hier wird ein Dimmer erklärt und das ist nochmal eine andere Hausnummer.

Für alle die ebenfalls Probleme haben folgende Zusammenfassung auf welche falschen Schlüsse ich unterwegs war.

Ich dachte ich könnte die Zustandsmaschine verändern in dem ich die SwJt... Werte verändere. Das geht nicht. Der Ablauf ist fest und wird so wie die Timer gesetzt sind durchlaufen.
Was man verändern kann ist, wie sich die Zustandsmaschine verhält wenn ein Trigger (von außen) kommt. Dann kann man sagen wenn Trigger dann Sprung auf ..., oder eben bei no  keine Reaktion, weiter wie wenn kein Trigger gekommen wäre, d.h. je nachdem wo sich die Zustandsmaschine gerade im Ablauf befindet kann ich die Reaktion auf einen Triigger verändern.
Klingt sehr abstrakt, aber wenn man mal damit gespielt hat versteht man für was das gut ist, allerdings auch warum es in der Homematic Software nur unter Expert-Modus erreichbar ist.