Moin,
ich mache gerade meine ersten Gehversuche mit Rules:
Für eine Fernbedienung im SteamPunk-Design verwende ich einen 6-fach Knebelschalter - von sechs Schaltern sind also immer 5 offen und einer geschlossen.
Die sechs Anschlüsse gehen jeweils auf einen Pin einer MCP23018.
Jeder von Ihnen hat einen Task als Switch-Input MCP23017 mit den Namen Knebelschalter-x und den passenden Port.
Es gibt eine Dummy-Device mit der Tasknummer 1, in der in der Variablen 1 der Zustand des Schalters gespeichert werden soll.
Wenn ich von 1->2 schalte, von 2->3, von 3->2 und von 2->1 schalte, ist immer der Kontakt 2 dabei, weswegen ich mit
on Knebelschalter-2#State do
if [Knebelschalter-1#State]=1
MCPGPIO,12,1
TaskValueSet,2,1,1
LCD,2,1,Hallo
else
MCPGPIO,12,0
endif
if [Knebelschalter-2#State]=1
TaskValueSet,2,1,2
endif
if [Knebelschalter-3#State]=1
TaskValueSet,2,1,3
endif
enddo
die ersten drei Schaltstufen erfassen kann. (Bei Stufe 1 schalte ich zu Testzwecken noch eine LED)
Mit
on Knebelschalter-2#State do
if [Knebelschalter-1#State]=1
MCPGPIO,12,1
TaskValueSet,2,1,1
LCD,2,1,Hallo
else
MCPGPIO,12,0
endif
if [Knebelschalter-2#State]=1
TaskValueSet,2,1,2
endif
if [Knebelschalter-3#State]=1
TaskValueSet,2,1,3
endif
enddo
on Knebelschalter-4#State do
if [Knebelschalter-3#State]=1
TaskValueSet,2,1,3
endif
if [Knebelschalter-4#State]=1
TaskValueSet,2,1,4
endif
if [Knebelschalter-5#State]=1
TaskValueSet,2,1,5
endif
enddo
Bekomme ich alle Schaltstellungen von 1-5.
Mit
on Knebelschalter-2#State do
if [Knebelschalter-1#State]=1
MCPGPIO,12,1
TaskValueSet,2,1,1
LCD,2,1,Hallo
else
MCPGPIO,12,0
endif
if [Knebelschalter-2#State]=1
TaskValueSet,2,1,2
endif
if [Knebelschalter-3#State]=1
TaskValueSet,2,1,3
endif
enddo
on Knebelschalter-4#State do
if [Knebelschalter-3#State]=1
TaskValueSet,2,1,3
endif
if [Knebelschalter-4#State]=1
TaskValueSet,2,1,4
endif
if [Knebelschalter-5#State]=1
TaskValueSet,2,1,5
endif
enddo
on Knebelschalter-6#State do
if [Knebelschalter-5#State]=1
TaskValueSet,2,1,5
endif
if [Knebelschalter-6#State]=1
TaskValueSet,2,1,6
endif
enddo
bekomme ich aber NICHT die Stufe 6, die Dummyvariable verbleibt bei 5. Was kann bei Copy&Paste schief gehen? Wo ist mein Denkfehler?
Am liebsten würde ich nur mit einen on/do/enddo arbeiten - aber wie sähe dann der Trigger aus? Gibt es einen Trigger, mir dem ich jede Veränderung an den Eingängen des MCP "erwischen" kann? (Ginge es, einen Interrupt des MCP auf einen PIN des 8266 zu legen und diesen zu triggern?)
Liebe Grüße & besten Dank
Boris
Hallo Boris,
eine Antwort auf Deine Frage kann ich leider auch nicht geben, aber einen elternativen Vorschlag zum Aufbau Deiner Rules.
Ich würde den Trigger mit dem "1"-Zustand definieren, um die Rules eindeutiger zu gestalten:
...
on Knebelschalter-3#State=1 do
TaskValueSet,2,1,3
endon
on Knebelschalter-4#State=1 do
TaskValueSet,2,1,4
endon
...