Tasmota távolság / vízszintmérő

 

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.

LILYGO® TTGO T-Internet-POE.png1-szett-1-db-vizallo-ultrahangos-modul-jsn-sr04t-aj-sr04m-vizallo-integralt-tavolsagmero-jelatalakito.jpg

1. lépés

Forrasszuk fel az alaplaphoz mellékelt sorkapcsokat a panelre.

2. lépés

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ő:

soros_usb_program.jpg

3. lépés

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.

4. lépés

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.

connect_usb.png

5. lépés

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.

6. lépés

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.

7. lépés

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.

8. lépés

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:

 

9. lépés

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.

vizszintmerodoboz.jpg

10. lépés

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.

11. lépés – Pozitív vízszint számítása

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.

Fontos beállítandó értékek a scriptben:

Mit csinál ez?



dzVents script:

###############################################

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
}

###############################################

 

Szeretek barkácsolni elkészítem magamnak: