
Ez a példa eredetileg ciszterna vízszintméréséhez készült, de természetesen más hasonló távolságmérési feladatokra is használható.
A megvalósításhoz szükség van egy LILYGO® TTGO T-Internet-POE ESP32-WROOM LAN8720A programozható alaplapra, egy PoE tápegységre, valamint egy AJ-SR04M ultrahangos távolságmérő szenzorra. Fontos, hogy csak ez a változat megfelelő, amelynek kivezetései: 5V, Trig, Echo, GND.
Forrasszuk fel az alaplaphoz mellékelt sorkapcsokat a panelre.
A Tasmota telepítéséhez szükség van egy soros–USB átalakítóra. A bekötési sorrend balról jobbra haladva a következő:
RX
TX
üres
üres
GND
3.3V
Amikor feszültség alá helyezzük a soros–USB átalakítót, nyomjuk meg az alaplapon található BOOT gombot, hogy az eszköz bootloader, vagyis programozható módba kerüljön.
Nyissuk meg webböngészőben a következő oldalt: https://tasmota.github.io/install/
Állítsuk az adatátviteli sebességet 115200 Baud értékre, majd telepítsünk egy alap Tasmota firmware-t.
A telepítés befejezése után az eszközt az USB-C porton keresztül helyezzük tápfeszültség alá. Csatlakozzunk a megjelenő Tasmota-xxxx Wi-Fi hálózathoz, majd böngészőből nyissuk meg a 192.168.4.1 címet, ahol beállíthatjuk az eszköz Wi-Fi kapcsolatát.
Miután az eszköz felcsatlakozott a hálózatra, a kapott IP-cím beírásával elérhetővé válik a webes kezelőfelület.
A webes felületen az Update menüpontban töltsük fel az erre a célra fordított tasmota32_15_Lilygo_POE_SR04.bin firmware-t. Ez már tartalmazza a PoE Ethernet csatlakozáshoz és az ultrahangos szenzorhoz szükséges meghajtókat.
A kezelőfelületen a Configuration / Other menüpont alatt a Template mezőbe másoljuk be az alábbi tartalmat:
{"NAME":"LilyGO T-Internet-POE","GPIO": [0,1,672,1,1,0,0,0,1856,6720,736,704,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1888,0,0,1], "FLAG":0,"BASE":1,"CMND":"EthType 0|EthClockMode 3|EthAddress 0"}
Ezután kapcsoljuk be az Activate lehetőséget, majd mentsük el a módosítást.
Húzzuk ki az USB-s tápellátást, majd PoE adapteren keresztül csatlakoztassuk az eszközt a hálózathoz. Ha a hálózaton működik DHCP szolgáltatás, és a korábbi beállítások megfelelőek, akkor az Ethernet kapcsolat külön IP-címmel elérhető lesz.
Ezt ellenőrizhetjük a router DHCP listájában, illetve az eszköz kezdőoldalán az Informationmenüpont alatt is.
Az SR04 ultrahangos szenzort az alábbi módon kötöttük össze az alaplappal:
5V -> 3.3V sorkapocs(szerencsére a szenzor működik 3.3V-on is)
GND -> GND sorkapocs(a két hosszú sorkapocs utolsó lábai)
IO36 -> Echo
IO12 -> Trig
Az eszközt célszerű vízálló kötődobozba építeni. A szenzort a középső tömszelencéhez, a hálózati kábelt pedig az ellenkező oldalon vezessük be. Így az eszköz akár a hálózati kábelnél fogva belógatva is elhelyezhető kútba vagy ciszternába, a maximális vízszint fölött biztonságos távolságra.
Fontos, hogy a doboz általában csak fröccsenő víz ellen védett, tehát ha víz alá kerül, beázhat. A nagyobb biztonság érdekében érdemes a doboz illesztéseit a végén sziloplaszttal vagy megfelelő tömítőanyaggal körbekenni, hogy minél jobban ellenálljon a nedvességnek.
Hozzunk létre egy új virtuális eszközt a Domoticz-ban, amelynek típusa „Távolság”.
Ezután a Tasmota eszköz webes felületén a Configuration / Domoticz menüpontban a Sensor idx 6 (Count/PM1) mezőbe írjuk be ennek az új virtuális eszköznek az idx számát.
Fontos, hogy az MQTT szerver elérhetősége is megfelelően legyen beállítva a Tasmota eszközön. Csak ezt követően várható, hogy a mért értékek megjelennek és folyamatosan frissülnek a Domoticz rendszerben.
Egy egyszerű trükkel a mért távolság értékéből pozitív vízszintet is tudunk megjeleníteni.
Ehhez hozzunk létre egy új virtuális „Távolság” típusú eszközt Domoticz-ban, például „Vízszint” néven.
Ezután egy rövid dzVents script segítségével egy elméleti maximális vízszintből kivonjuk a mért távolságot, és az eredményt ebbe az új eszközbe írjuk.
forrás eszköz idx (Tasmota által mért távolság)
kijelző (virtuális) eszköz idx
bazis_cm = 200 → maximális (elméleti) vízszint cm-ben
A szenzor távolságot mér lefelé (pl. 150 cm)
Ebből kivonjuk a max szintet (pl. 200 cm)
→ így kapjuk a víz magasságát (pl. 50 cm)
###############################################
return {
on = {
-- Ez a script akkor fut le, ha a 215-ös idx eszköz frissül
-- (ez a Tasmota által küldött távolság adat)
devices = { 215 }
},
execute = function(domoticz, device)
-- Elméleti maximális vízmagasság cm-ben
-- (pl. ciszterna teljes mélysége)
local bazis_cm = 200
-- Ellenőrizzük, hogy van-e érték
if device.sValue == nil then
domoticz.log("Nincs sValue!", domoticz.LOG_ERROR)
return
end
-- A mért távolság (cm), stringből számmá alakítva
local tavolsag = tonumber(device.sValue)
-- Ha nem szám, akkor hibát logolunk
if tavolsag == nil then
domoticz.log("Nem szám a távolság!", domoticz.LOG_ERROR)
return
end
-- Vízszint számítása:
-- max szintből kivonjuk a mért távolságot
-- (minél kisebb a távolság, annál magasabb a víz)
local vizszint = bazis_cm - tavolsag
-- Ne legyen negatív (pl. ha üres a tartály)
if vizszint < 0 then
vizszint = 0
end
-- Ne legyen nagyobb, mint a maximális érték
if vizszint > bazis_cm then
vizszint = bazis_cm
end
-- A cél (virtuális) eszköz lekérése idx alapján
-- (ide írjuk ki a számolt vízszintet)
local vdev = domoticz.devices(218)
if vdev then
-- Az új vízszint érték frissítése cm-ben
vdev.updateDistance(vizszint)
-- Log a debughoz (nagyon hasznos később)
domoticz.log(
"Ciszterna: tav="..tavolsag.."cm vizszint="..vizszint.."cm",
domoticz.LOG_INFO
)
else
-- Ha nincs ilyen eszköz, hibát jelez
domoticz.log("218 virtuális eszköz nem található!", domoticz.LOG_ERROR)
end
end
}
###############################################