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.
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.
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?
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.
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.
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.