W internecie dostępny jest genialny projekt QuinLED autorstwa Quindora. Był to jeden z pierwszych przykładów wykorzystania w praktyce modułu ESP. Dzięki nieco przerobionemu w stosunku do oryginału skryptowi Lua w Domoticzu, możemy do sterowania modułem wykorzystać ESP Easy, zamiast specjalizowanej wersji oprogramowania opartego na NodeMCU i kolekcji skryptów Lua wgrywanych do modułu ESP8266.
Jedynym problemem był fakt, iż wsad do ESP trzeba było przygotować i wgrywać przy pomocy ciekawego, ale java'owego ESPEsplorera lub innych narzędzi współpracujących ze skryptami lua. Oznaczało to, że część modułów w domu będzie działać w oparciu o NodeMCU, a część o ESP Easy, które jest znacznie prostsze i szybsze w konfiguracji, a do tego teraz już obsługuje OTA, czyli aktualizację w locie przez wbudowaną stronę www modułu.
Poprosiłem więc o pomoc kolegów na forum ESP Easy i poniżej znajdziecie wynik tej współpracy.
Poprosiłem więc o pomoc kolegów na forum ESP Easy i poniżej znajdziecie wynik tej współpracy.
QuinLED na ESP Easy
Kod Lua, który należy zapisać w Domoticzu w katalogu Scripts i nazwać stosownie do nazwy ściemniacza w kontrolerze (w przykładzie: Dimmer Strip Test) prezentuję poniżej (autor: cherowley z forum Easy ESP, z moimi modyfikacjami):
commandArray = {}
DomDevice = 'Dimmer Strip Test'
IP = 'espip'
Port = '80'
GPIO = 4
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
function send(msg)
runcommand = "curl http://"..(IP)..":"..(Port).."/"..(msg)..""
print (runcommand)
print(os.capture(runcommand))
end
if devicechanged[DomDevice] then
print("ESPEasy Dimmer Strip Test Script")
if(devicechanged[DomDevice]=='Off') then
print("Turning OFF " .. DomDevice)
send("control?cmd=PWM," .. tostring(GPIO) .. ",0")
elseif (devicechanged[DomDevice]=='On') then
print("Turning On with value : " .. tostring(uservariables['HoldDimmer1']))
otherdevices_svalues[DomDevice] = tostring(uservariables['HoldDimmer1'])
send("control?cmd=PWM," .. tostring(GPIO) .. "," .. tostring(tostring(uservariables['HoldDimmer1']*32)))
else
print("Value sent from domoticz is : " .. otherdevices_svalues[DomDevice])
uservariables['HoldDimmer1'] = otherdevices_svalues[DomDevice]
send("control?cmd=PWM," .. tostring(GPIO) .. "," .. tostring(tostring(uservariables['HoldDimmer1']*32)))
commandArray['Variable:HoldDimmer1'] = uservariables['HoldDimmer1']
end
end
return commandArray
Ściemniacz należy dodać ręcznie w Domoticzu, jako Lightwave RF typu 5, co powoduje, że do dyspozycji mamy 32 poziomy jasności. Następnie należy dostosować nazwę skopiowanego powyżej i zapisanego skryptu do nazwy nadanej ściemniaczowi (w przykładzie powyżej: script_Dimmer_Script_Test.lua) oraz dostosować odpowienio zmienne na początku skryptu (adres IP modułu ESP, port www oraz GPIO, które będzie sterować LED-ami).
Dzięki modyfikacji skryptu, w wyniku jego działania w logu Domoticza odkłada się także odpowiedź modułu ESP na przesłane polecenie, co oczywiście można wykorzystać do własnych celów.
Dla zainteresowanych: dyskusja na forum Easy ESP na ten temat.
Dla zainteresowanych: dyskusja na forum Easy ESP na ten temat.
Brak komentarzy:
Prześlij komentarz