Paulie72 schreef op vrijdag 20 april 2018 @ 09:04:
Ik maak gebruik van Domoticz met Milight verlichting in de woonkamer, gang en de slaapkamer van onze zoon.
Nu wil ik in de gang een simpele draadloze schakelaar gebruiken. Ik gebruik hiervoor de Xiaomi Gateway en de Wireless Single Button switch.
het is nu zo dat ik het deels werkend heb.
Ik kan niet een On en Off actie op 1 knop hebben want dan blijft de lamp aan staan. Kies ik ervoor dat ik 1 knop het Off commando geef en een andere knop het On commando dan werkt het.
Als ik er nu voor kies alles onder 1 switch in te stellen. Dan werkt het half als ik bij de switch instelling de Off een delay heeft van 1 of meer seconden. Dan zie je dat de lamp direct uitgeschakeld wordt.
Mijn Blocky is eigenlijk heel eenvoudig
https://ibb.co/jmHDbn
Mijn switch:
https://ibb.co/cQWObn
Ik gebruik dezelfde switch samen met een Sonoff S20 (met Tasmota firmware) die ik gedemonteerd hebt en de print in een lasdoos buiten in de tuin hebt geplaatst. Een stukje LUA code om alles te laten schakelen is daarna voldoende. Ik laat een variabele mee schakelen zodat ik voor dit moment 3 variaties kan schakelen.
1. Aan
2. Uit
3. Aan voor 2 minuten
Ik heb de switch voor een lamp bij een tuinhek waar een brug over de sloot is. Erg donker als je met de hond de tuin uitloop en de brug over moet

. Nu kan ik dus bepalen wat ik met de lamp wil doen. Hangt van de route af of de lamp voor de terugweg nog moet branden of dat dit punt mijn vertrekpunt is en de lamp dus maar even hoeft te branden.
Je moet dus een 2 tal variabelen aanmaken in Domoticz ( Setup --> More Options--> User Variables)
Als voorbeeld met mijn code. Je kunt deze namen zelf bedenken zolang je deze maar gelijk houdt met de code.
Maak aan:
switch_state_tuinhek &
switch_state_tuinhek_double
Beide met
Variable type:
String
Variable value:
Off (begin stand)
tip: Als je met variabelen werken en om wat voor reden ook werkt het niet zoals het moet check dan altijd eerst je variabelen en de status. Heb mij in het begin erg veel tijd gekost waarom iets niet werkte en bleek dat de status van de variabelen verkeerd was.
Wil je de LUA code gebruiken maakt dan in /home/pi/domoticz/scripts/lua en bestand aan met de naam:
script_device_tuinhek_verl.lua. Ook deze naam mag jezelf verzinnen maar het moet beginnen met
script_device_. Anders werkt de code niet als de status van de switch veranderd.
En tot slot mijn LUA code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| commandArray = {}
if devicechanged['Xiaomi Tuinhek'] then
if (devicechanged['Xiaomi Tuinhek'] == 'Click' and uservariables['switch_state_tuinhek'] == 'Off') then
commandArray['Lamp bij Tuinhek']='On'
commandArray['Variable:switch_state_tuinhek']= 'On'
print('<font color="blue">Lamp bij Tuinhek is aan!!</font>')
elseif (devicechanged['Xiaomi Tuinhek'] == 'Double Click' and uservariables['switch_state_tuinhek_double'] == 'Off') then
commandArray['Lamp bij Tuinhek']='On FOR 2'
commandArray['Variable:switch_state_tuinhek_double']= 'On'
print('<font color="blue">Lamp bij Tuinhek is aan voor 2 minuten!!</font>')
commandArray['Variable:switch_state_tuinhek_double']= 'Off'
commandArray['Variable:switch_state_tuinhek']= 'Off'
elseif (devicechanged['Xiaomi Tuinhek'] == 'Click' and uservariables['switch_state_tuinhek'] == 'On') then
commandArray['Lamp bij Tuinhek']='Off'
commandArray['Variable:switch_state_tuinhek']= 'Off'
commandArray['Variable:switch_state_tuinhek_double']= 'Off'
print('<font color="blue">Lamp bij Tuinhek is uit!!</font>')
end
end
return commandArray |
Zoals je ziet stuur ik bij de 2 Elseif beide variabelen aan. Als je dat niet doet dan raakt de boel in de war als je eerst een enkele klik doet en vervolgens een dubbelklik. Op deze manier kun ik alles achter elkaar uitvoeren en raakt het niet in de was en loop nu al een tijd prima.
Aangezien de switch nog Long Press of iets heeft kun je de code ook hiermee uitbreiden. Kwestie van de een ElseIf kopiëren en aanpassen naar de Long Press. Je zal dan nog een variablen moeten aanmaken hiervoor en ook deze bij alle ElseIf moeten laten mee schakelen.
Natuurlijk kun je ook Bocky gebruiken maar daar ben ik vanaf gestapt omdat LUA veel makkelijke te beheren is en ook beter leesbaar.
Lua code zal vast verbeterpunten hebben en mogelijk korter kunnen. Dit werkt voor mij en was ook een tijd aan het zoeken naar een goede manier dit werkt.
[
Voor 9% gewijzigd door
MikeOO op 21-04-2018 08:14
]