RaspberryPi - Domoticz + ESP - LED pásek a Si7020
- April 08 2018
- Raspberry Pi, Cubieboard, Banana Pi, BeagleBone
- 4980x Přečteno
Mohlo by vás zajímat: ESP8266 + ArduinoIDE + Domoticz a RaspberryPi - Raspbian + Domoticz
V dnešním návodu bych chtěl popsat jak nejjednodušeji odesílat teplotu pomocí ESP8266 (Wemos d1 mini) do Domoticz a také přes Domoticz ovládat LED pásek. Tento led pásek je připojen k ESP a EPS spíná tranzistor, který slouží k ovládání LED pásku.
Nejprve bych hodně stručně popsal zapojení teplotního senzoru Si7020 a LED pásku k ESP.
ESP -> Si7020 ( popř. jiný teplotní a vlhkostní senzor komunikující přes I2C)
3,3V -> Vcc
GND -> GND
GPIO-4 (D2)->SDA
GPIO-5 (D1)-> SCL
ESP -> N - MOSFET
GPIO-15 (D8) -> G
GND -> S
LED pásek
Vcc -> 12V Adaptér
GND -> D
Nejlehčí cesta jak ovládat LED pásek a posílat teplotu + vlhkost do Domoticz je nahrát do ESP ESPEasy a poté provést jeho nastavení.
ESPEasy V2.0.0 si stáhneme z GitHubu zde: https://github.com/letscontrolit/ESPEasy/releases
Po stažení stačí archív rozbalit, připojit ESP8266 - v případě desky od wemos stačí použít micro USB kabel, jelikož deska má už v sobě USB rs232 převodník. V archívu od ESPEasy se již nachází program esptool.exe, který nahraje ESPEasy do ESP8266.
Před samotnou konfigurací ESPEasy je zapotřebí v Domoticz vytvořit nový hardware, toto provedeme v Setup -> Hardware.
Zde napíšeme jméno našeho HW (například: Wemos - esp8266) a jako typ zvolíme dummy.
K tomuto HW přidáme senzor a tím získáme tzv. Idx. Přidání se provádí kliknutím na Create Virtual Sensors. Zde si napíšeme název například Ložnice a zvolíme jaká data má Domoticz očekávat, v mém případě teplota + vlhkost.
Dále přidáme spínač pro ovládání LED pásku:
Pokud chceme z Domoticz řídit i jas LED pásku je zapotřebí editovat spínač v Domoticz. Přejdeme tedy do záložky Switches a zde klikneme na edit. Zde už stačí změnit Switch Type na Dimmer.
Poté je zapotřebí si najít a zapamatovat si Idx senzoru teploty a vlhkosti, toto Idx najdeme v Setup-> Devices.
Konečně můžeme přejít na nastavení ESPEasy. Do webového prohlížeče dáme IP adresu ESP na kterém běží ESPEasy - v případě, že tutu adresu nevíme doporučuji použít nějakou aplikaci např. na mobilním telefonu se mi osvědčila aplikace Fing Network Tools, tato aplikace zjistí IP adresu všech zařízení připojených do sítě.
Po zadání IP adresy do prohlížeče se otevře úvodní stránka ESPEasy.
Zde přejdeme do záložky Controllers a klikneme na Edit, kde nastavíme IP adresu Domoticz a port.
V ESPEasy je zapotřebí nastavit senzor a ovládání led pásku. Toto nastavení se provádí v záložce devices, zde klikneme na edit a provedeme nastavení senzoru teploty/vlhkosti dle print screenu. Zde je zapotřebí zadat správné idx senzoru a také si zde zvolíme prodlevu - jak často má ESP odesílat hodnotu teploty a vlhkosti do Domoticz.
Ještě je zapotřebí provést konfiguraci spínače - řízení našeho LED pásku, to provedeme následovně:
Poté co dokončíme nastavení v ESPEasy můžeme otevřít Domoticz a zde by už měla být zobrazena aktuální hodnota teploty a vlhkosti.
Bohužel nastavování ještě nekončí, je zapotřebí v Domoticz napsat script, tento script bude ovládat LED pásek. Otevřeme si tedy: Setup -> More options -> Events a zde klikneme na New.
Zvolíme jméno pro script, vybereme jazyk ve kterém budeme vytvářet script, v tomto případě LUA v posledním rozklikávacím okénku vybereme Device a zaškrtneme Event active.
Poté stačí zkopírovat script který je níže, v tomto scriptu změnit jméno spínače(pokud máte jiné), vložit IP adresu ESP a kliknout na Save.
local PWM_sensor_name1 = 'LED pasek' -- jmeno senzoru -.>setup->device
local IP_address= 'IP_ESP' -- IP ESP
local GPIO_pin= '15'
commandArray = {}
for i, v in pairs(devicechanged) do
if (i == PWM_sensor_name1) then
if(v == 'Off' ) then
sensor_set_value = 0
elseif(v == 'On') then
sensor_set_value = 100
else
sensor_set_value = otherdevices_svalues[PWM_sensor_name1]
end
calculated_PWM_value= math.ceil(sensor_set_value*1023/100)
print('PWM hodnota :'..calculated_PWM_value)
commandArray['OpenURL']=('http://'.. IP_address.. '/control?cmd=PWM,' ..GPIO_pin.. ',' ..calculated_PWM_value)
end
end
return commandArray