Vedenkulutuksen seurantaa laser-sensorin avulla
Tämä projekti on tehty yhteistyössä AHaa Elektroniikan kanssa, joka toimitti vedenkulutuksen seurannassa käytetyn valosensorimoduulin.
Olen yrittänyt jo jonkin aikaa löytää toimivaa menetelmää vedenkulutuksen seurantaan, koska vesimittarissani ei ole valmista pulssiulostuloa. Jotkin vesimittarimallit aiheuttavat pyöriessään muuttuvan magneettikentän, jota voi mitata hall-anturin avulla. Tämän voi helposti varmistaa kompassin avulla. Kompassi ei värähtänytkään vesimittarini läheisyydessä.
Yksi vaihtoehto on seurata vesimittarin laskurin lukeman muuttumista. Tällainen onnistuu esimerkiksi kameran ja kuvantunnistukseen perustuvan dialEye -sovelluksen avulla. Tämä vaikutti kuitenkin tarpeisiini turhan monimutkaiselta ratkaisulta.
Tutkin myös vesimittarin osoittimien seuraamista etäisyysantureiden avulla. Osoittimet ovat hieman lähempänä lasin pintaa kuin mittarin taustalevy. Tämä ero on mahdollista havaita kun osoitin kulkee anturin ohi.
Kokeilin kahta erilaista anturia (VL6180X ja TCRT5000), jotka toimivat kohtalaisesti kunhan anturin painoi aivan vesimittarin lasiin kiinni. Anturit eivät toimineet kuitenkaan riittävän luotettavasti näin lyhyellä etäisyydellä. Myös anturien sijoittelu oli tehtävä tarkasti. Molemmat anturit perustuvat infrapunavaloon, joka läpäisee erittäin huonosti lasia ja vettä.
Seuraava ajatus oli Mikko Ruotsalaisen inspiroimana käyttää näkyvää laservaloa vesimittarin osoittimen valaisemiseen ja siitä heijastuvan valon mittaamiseen valosensorimoduulia. Komponenttien (LM393 -valosensorimoduuli ja KY-008 -lasermoduuli) tilaamisen jälkeen tein pikaisen prototyypin pahvista, mikä vahvisti menetelmän toimivuuden.
Lopullista versiota varten tein 3D-tulostimella lasermoduulille ja valomoduulille kotelon. Kotelo asettuu vesimittarin lasin päälle peittäen sen kokonaan. Koteloa pyörittämällä voi tarvittaessa hienosäätää laserin asentoa. Sopiva asento löytyy kun kotelosta lähtevä johto on vesimittarin lähtöliitännän suuntaan.
Koska käyttämäni tulostusfilamentti oli mustaa, maalasin kotelon kupoli-osan valkoiseksi paremman heijastuksen aikaansaamiseksi. Valkoinen filamentti toimisi luultavasti suoraan ilman maalaamista. Anturikotelossa on lisäksi paikka vedonpoistonippusiteelle. Tukevalla kuminauhalla varmistin että kotelo pysyy paikoillaan vesimittarin päällä. Kotelon mallit löytyvät GitHubista.
Laservalo valaisee vesimittarin nopeinta kuusisakaraista osoitinta. Kyseinen osoitin pyörähtää kokonaisen kierroksen yhden desilitran kulutuksesta. Anturi antaa pulssin sekä osoittimen sakaran kohdalla, että niiden välissä. Tällöin anturin tarkkuudeksi saadaan 0.1l / 12 = 0.0083l.
Kehitysalustana käytin jälleen Wemos D1 Miniä, jonka sijoitin vesimittarin läheisyyteen kalvorasian sisään. D1 Minin ja anturin välillä on lyhyt nelinapainen johto, joissa kulkee maadoitus, 5V jännite laserille, 3.3V jännite valomoduulille sekä analoginen jännitesignaali takaisin Wemosille. Kytkentä on halutessaan mahdollista tehdä myös käyttämällä valoanturin omaa vertailupiiriä ja sen digitaalista ulostuloa.
Alla olevassa kytkennässä ei ole virhettä, vaan jostain syystä ostamani lasermoduulin pinnit oli merkitty piirilevylle väärin. On myös hyvä huomioida että valosensorimoduuli toimisi myös 5V jännitteellä, mutta Wemos ei pysty vastaanottamaan näin korkeaa jännitettä takaisin.
Wemosin ohjelmaksi tutkin muutamia eri vaihtoehtoja. Valmiit ja helppokäyttöiset ohjelmistot kuten ESPHome, Tasmota tai ESPEasy saattaisivat tässä käyttötarkoituksessa toimia. Niiden hyviä puolia on ettei ohjelmointiosaamista tarvita ja että muutokset ja asetukset voi tehdä asennuksen jälkeen etänä web-selaimen kautta. Ne tuntuivat kuitenkin liian rajoitetuilta ja raskailta käyttötarkoitukseeni.
Päädyin lopulta tutun MySensors -kirjaston käyttöön. Käyttämäni koodi löytyy GitHubista. Koodi laskee valomoduulin lähettämästä analogisignaalista milloin vesimittarista heijastuva valo on kirkastumassa ja milloin himmenemässä. Tämän tiedon perusteella lasketaan hetkellinen kulutus (litraa per minuutti) ja veden kokonaiskulutus. Koodi lähettää erikseen myös tiedon myös jokaisen hanan avaamisen ja sulkemisen välisestä kulutuksesta ja tapahtuman kestosta.
Yllä olevilla tiedoilla voidaan tehdä Home Assistantiin monipuolisia sääntöjä vesivuotojen havaitsemiseen ja päävesiventtiilin sulkemiseksi automaattisesti. Päävesiventtiili voidaan sulkea esimerkiksi hetkellisen kulutuksen ylittäessä 30 litraa minuutissa, hanan ollessa auki yli 15 minuuttia kerrallaan tai kun hana on auki yli minuutin ja kulutus tänä aikana on yli 20 litraa minuutissa.
Sittemmin olen siirtynyt käyttämään ESPHomea. ESPHomen käyttöönotosta ja vedenkulutuksen seurannan toteuttamisesta ESPHomen avulla löytyy oma kirjoitus. ESPHomen tarvitseman komponentin koodi ja anturin konfiguraatiotiedosto on ladattavissa GitHubista
13 thoughts on “Vedenkulutuksen seurantaa laser-sensorin avulla”
Mielenkiintoinen setti. Täytyy testata.
Millainen luentatarkkuuteen olet päässyt? Eli pulssista luettu vs mittarin näyttämä?
Erittäin hyvä kysymys. En ole todellista tarkkuutta vielä ehtinyt testata. Täytyypä tehdä alkuun vaikka viikon mittainen testi ja palata asiaan.
Nyt reilun viikon mittainen testi on tehty ja näyttäisi että anturi ei ehdi lukea ihan kaikkia pulsseja. Testijakson todellinen kulutus oli 1,8006m3 ja pulsseista laskettu kulutus 1,7598m3. Eli reilun 2% ero lukemissa olisi. Luultavasti kaikkein nopeimpien virtausten aikana osa pulsseista tippuu matkalla.
Tuota eroa on luultavasti mahdollista pienentää muuttamalla pulssien laskentaa herkemmäksi koodissa. Toinen vaihtoehto on valaista hitaampi vesimittarin viisari, jolloin pulssejakin tulee vähemmän.
Onpas mielenkiintoinen projekti. Kiitos sen jakamisesta! Tämä on pakko kokeilla toteuttaa itsekin. Komponentitkin löytyvät jo 🙂 Katsoin aluksi, että vesimittarisi olisi tismalleen sama kuin itselläni, mutta eihän se kuitenkaan ole. Minulla se musta kuusi-sakarainen viisari on aivan keskellä mittaria ja mittarissa on sen lisäksi neljä muuta punaista viisaria. Myös mittarin halkaisija on hieman isompi. Osaisitko suositella, mikä olisi paras väline noiden jakamiesi 3d-mallien muokkaukseen? Pitäisi siis skaalata koteloa hieman suuremmaksi, siirtää laser-anturi keskelle ja samalla säilyttää komponenttien paikkojen mittasuhteet ennallaan.
Aluksi lähtisin vaikka ihan pahvista protoilemaan, että saat valoanturin ja laserin toimivat paikat selvitettyä. Mallit tein SolidWorksilla ja tallensin myös STL-versiot GitHubiin. STL:t aukeavat lähes millä tahansa ohjelmistolla, mutta niitä ei välttämättä pysty kaikilla muokkaamaan. Omaa kokemusta ei ole, mutta Autodesk Fusion 360 voisi olla yksi varteenotettava vaihtoehto (ilmaisesta) ohjelmistosta, mitä kokeilla
Sinulla on todella mielenkiintoinen blogi, olen tässä lueskellut sivukaupalla kuukausien aikana.
Hauskasti vähän sama matka tullut itsellä kuljettua kodinautomaatiossa myös, esphome nyt käytössä wemos d1 mineissä. Kiitos näistä teksteistä!
Hauska kuulla että näistä kirjoituksista on ollut iloa!
Tere! Mainio juttu tuo ESPHome-versio tästä. Yllättävän vähällä kikkailulla sai järkevän oloista dataakin ulos. Koodiin piti sarjaprinttejä muuttaa ESP_LOGD:ksi, jotta ESPhomen loggaus toimi.
Miten nuo kumulatiiviset (päivä, eilinen, vko) jne on toteutettu? Näissä menee jokin mulla pieleen, eikä graafien piirrot onnistu järkevästi näillä kerätyillä datoilla. Onko tuo staattinen SEND_FREQUENCY 30s ollut hyvä? Onko käytännön haittaa tiputtaa se vaikka 2 sekuntiin?
Hauska kuulla että sait homman pelittämään. Kumulatiiviset on tehty sql-sensoreina, esim. eilinen: ’SELECT * FROM kulutus WHERE date = DATE_ADD(CURDATE(), INTERVAL -1 DAY)’. Nykyisin Home Assistantissa on tosin Utility Meter -integraatio, jonka avulla nuo pitäisi onnistua helpommin.
Itse ainakin olen ollut tyytyväinen 30 sekunnin lähetystaajuuteen. Ainut haitta minkä nopeammasta keksin, niin mahdollinen vaikutus järjestelmän suorityskykyyn, varsinkin jos nopeasti raportoivia sensoreita on Home Assistantissa paljon.
Olisin rakentamassa kahdelle mittarille seurantaa, kuinka tähän onnistuisi saada paikallisnäyttö? ja tarvitsisin myös listauksen ”rautalangasta” tilattavista tarvikkeista t:aloittelija
Nyt jos tekisin homman uudelleen, valitsisin todennäköisesti jutussakin mainitun dialEyen tai muun kameranäköön perustuvan mittauksen.
ESP-pohjaisiin mikrokontrollereihin kuten tässäkin käytettyyn Wemosiin on mahdollista kytkeä erilaisia näyttöjä. Sellaisen käytöstä minulla ei ole omakohtaista kokemusta, mutta netti on täynnä esimerkkikoodeja ja ohjeita.
kyselin monesta paikasta ja päädyin myös tuohon dialeye ratkaisuun, tänään aamupäivällä laitoin osat tilaukseen:)
Paikallisnäyttö oli helppoa tehdä, itse käytin esp32:sta ja mustavalkoista OLED-näyttöä, jonka liitin esp32:n i2c -väylään. Hankalinta oli askarrella muovikotelo johon tuon näytön sai edes välttävällä tavalla nätisti asennettua. 3d-tulostin voisi tässä olla kiva juttu! Softana tietysti esphome, jolla saa näytölle oikeastaan mitä tahansa dataa home assistantista tai esp32:een liitetystä paikallisesta sensorista, kuten vaikka tuosta vesimittarista.
OLED-näyttö tässä tapauksessa on amazonista tilattu ”AZDelivery OLED Parent 128 x 64 Pixel 0.96 Inches ”.
Tuo Kimmon mallin mukaan tehty laserilla ja valoisuusanturilla toteutettu mittaus on ollut itselleni aivan riittävän tarkka, kun veden laskutus ei kuitenkaan tapahdu sen kautta. Tärkeintä on nähdä onko jatkuvaa veden virtausta, siis vuotoja tai ylipäätään kulutusta silloin, kun kiinteistössä ei ole ketään paikalla.