úterý 7. listopadu 2017

Arduino elektroměr, plynoměr a vodoměr

V sobotu 4. listopadu jsem měl na konferenci OpenAlt přednášku na téma odečítání elektroměru a vodoměru. Dlouho jsem se na tuto přednášku těšil, protože jsem ty odečty energií doma řešil déle než čtyři roky, nasbíral jsem při tom hromadu zkušeností a měl jsem velkou chuť se o ně podělit, abych dalším lidem ušetřil procházení slepých uliček a ještě přitom všechny pobavil mými pracovními postupy.

Bohužel jsem na to dostal jen 25 minut, což na tak velké téma nestačilo. Snažil jsem se říct všechno, ale po přednášce jsem měl pocit, že jsem řadu věcí jen nakousl a nedokončil, a některé důležité jsem dokonce zapomněl říct úplně.

Proto teď přistupuji k novému experimentu, kdy zkouším tutéž přednášku udělat znovu, doma, v klidu, bez časového omezení. Samotná prezentace ve formátu PDF je jako všechny moje předchozí dostupná na webu zde: pstehlik.cz/prezent/

Čerstvě natočené domácí video je tady: https://youtu.be/d-WzQa8GsAU


Ještě pár linků k věcem, které zmiňuju v přednášce:

Náhodně vygooglovaný 1fázový elektroměr.

Můj 3D model násadky odečítače vodoměru v OnShape.

Ebay odkaz na elektricky ovládaný ventil (až link přestane časem fungovat, použijte ta klíčová slova pro vyhledání nového prodejce stejné věci):
"DC 12V DN20 CR01 2 Way Brass Motorized Valve Electrical Ball Valve".

Plynoměr 3D tisk: Elster BK-G4 Gas Meter Sensor Clip

Budu rád, když vás tato moje domácí a OpenAlt přednáška povzbudí k vlastnímu bastlení :-) Určitě se pochlubte v komentářích buď tady na blogu nebo na G+ či na příští konferenci, kde se jistě potkáme :-)

P.S. ve videu nejspíš několikrát spletu kW a kWh (okamžitý odběr a celkovou spotřebu za určitý čas), ale nic si z toho nedělám. Hádám, že si to většina lidí dokáže v hlavě opravit. Komu to nějak víc vadí, ať se na to video raději nedívá.

59 komentářů:

  1. Ahoj Petře. Děkuji za tvůj článek a pěkné video. Po zhlédnutí mě to natolik nakoplo, že jsem ihned ze šuplíku vytáhl jeden Wemos mini ESP8266 a začal sestrojovat měření plynoměru :-) Menší problém byl s výběrem vhodně citlivého jazýčkového relé, nicméně vše se podařilo (TAP 15) a po vytvoření PHP stránek na domácím NASu již nemusím chodit opisovat měsíční stavy, vše je plně funkční, zautomatizované a zapisované. Jen brzy vyměním HW za ESP32, protože jako další chci připojit elektroměr, vodoměr a další jiné analogové měření. Takže ještě jednou moc díky a ber to jako pozitivní impuls k prospěšnosti tvé osvěty. Ahoj Tom

    OdpovědětVymazat
  2. Tento komentář byl odstraněn autorem.

    OdpovědětVymazat
  3. Objevil jsem
    - https://www.aliexpress.com/item/5-45-A-220V-50HZ-voltage-current-single-phase-Din-rail-KWH-Watt-hour-energy/32813249295.html
    - https://www.aliexpress.com/item/5-65-A-230V-50HZ-voltage-current-DDS238-2-ZN-S-single-phase-Din-rail/32812065998.html

    To sexy mi prijde, ze je existence RS485/modbus. Takze by se daly vycitat vsechny informace (treba nam se posledni dobou stava, ze zasadne klesne napeti). Jenom jsem jeste nenasel prehled prikazu, na ktere reaguje. Ale asi nemuzu chtit vsechno.

    Jdu jeden koupit na pokusy :)

    OdpovědětVymazat
    Odpovědi
    1. jak ste dopadli? sehnali jste a sprovoznili ho? zaujimalo by mne co vse lze vycist. diky

      Vymazat
    2. Proč na měření spotřeby a přímé připojení do lokální sítě (WiFi) nepoužít Itead Sonoff POW R2
      cca 12 dolarů cena

      Vymazat
    3. nejspíš proto, že Sonoff nezvládne víc než 15 A? Bavíme se o domovním přívodu, který má třeba 3x20 A, nebo taky 3x32 A.

      Vymazat
    4. Potom možná toto... vlevo dole jsou další kategorie pro výběr...
      https://goo.gl/nCLnK8

      Vymazat
  4. Ahoj, kdyby jste někdo chtěl podružný vodoměr s originálním impulsním výstupem, pak mohu nabídnou zcela nový kvalitní Siemens. Připojení závit 3/4. Cena 500,- Kč + pošta. A kdyby někomu přebýval s 1" (coulovým) závitem, pak bych měl veliký zájem zase já.

    OdpovědětVymazat
  5. Ahoj Petře, s gustem jsem shlédl tvé video o hledání viníků spotřeby a protože mám rád příběhy s dobrým koncem, tak bych rád věděl, zda ti realizovaná řešení pomohla najít ony viníky zvýšené spotřeby. Dík za odpověď.
    Vláďa

    OdpovědětVymazat
    Odpovědi
    1. To si s dovolením nechám na další přednášku - stavím totiž jedno zařízení, které by mělo pomoci snížit spotřebu a už ho mám skoro hotové, tak bych o něm mohl třeba někde pohovořit :-)

      Vymazat
  6. Moc pěkná přednáška, taky mám doma plastový filtr na vodu a magnet proti tvrdosti vody takže jste ve mě vzbudil obavy o budoucnost filtru, jak je vidět u vás, detekci prasknutí filtru bych možná spíš řešíl kýblem pod filtrem a senzorem v arduinu na hladinu vody nevim jestli by to fungovalo dle mých představ ale bylo by snad pro detekci to rychlejší a přesné. Ještě jednou díky z inspiraci. Jarda V.

    OdpovědětVymazat
    Odpovědi
    1. Díky. Řeknu přesně, co by se stalo s kýblem pod filtrem: proud vody o tlaku 6 atmosfér by ten kýbl odfoukl na druhou stranu místnosti, zpřetrhal jakékoliv Arduino senzory a pak by už v poklidu danou místnost vytopil do výše oken, které by poté tlak vody vyvalil ven. Pokud by v místnosti nebyly okna, naplnila by se vodou až po strop.

      Vymazat
  7. dobrý den, také jsem jeden čas zkoumal, jak měřit spottřebu u mě doma. Narazil jsem na tento projekt, který je taky zajímavý a má zajímavou myšlenku snímání proudu. Jestli to neznáte tak tady, je tam vše pěkně popsané: https://learn.openenergymonitor.org/electricity-monitoring/ac-power-theory/introduction

    OdpovědětVymazat
  8. Narazil jsem na další zajímavý čip CS5460A, jednofázový měřič el energie. Obsahuje vše potřebné pro měření a má i SPI připojení. Viz Datasheet. http://www.farnell.com/datasheets/32393.pdf

    OdpovědětVymazat
  9. Dobry den, shlédl jsem vudeo a velice poučné ,jen mě zarazil z vodoměru grafg kdek se dost zásadně lisi délka hranyh JeJto zpusobene velikostí toho kolečka? Neni to asi přesně v půlce ale špička oproti dlouhe pauze je zvláštní ..

    OdpovědětVymazat
    Odpovědi
    1. je to nejspíš způsobeno tvarem "kolečka" a umístěním snímače.

      Vymazat
  10. Velmi pěkná přednáška :) Jen mě napadlo, není lepší u plynoměru spíše Hallova sonda, než jazýčkové relé? Blbnul jsem s ní jen párkrát ale řekl bych že je citlivější.

    OdpovědětVymazat
    Odpovědi
    1. Určitě ano, sám doma Hallovy sondy používám na detekci otevřených oken a jsem s nimi moc spokojen.

      Vymazat
  11. Výborná přednáška, přesně o tomto uvažuji. K tomu vodoměru osobně bych měl problém s Čínou za 500kč. Vím, že Vám to funguje, otázka jak dlouho :-) Máte nějaký TIP na něco "jistějšího" než Čína za 5 stovek co bych mohl napojit na arduino.

    OdpovědětVymazat
    Odpovědi
    1. v Česku dělají ventily za 2500 Kč, dá se to jednoduše najít na webu.

      Vymazat
  12. Jak elegantně přehazovat směr otevírání na ventilu? Já jsem našel 2 vývody a pro směr se přehazuje + a -.
    Dík

    OdpovědětVymazat
    Odpovědi
    1. Anglicky se to jmenuje h-bridge. Napr. zde http://www.robotroom.com/BipolarHBridge.html

      Vymazat
    2. Případně jsou 3 vodičové a přepínat klasickým relé https://www.ebay.com/itm/DC12V-DN15-CR02-Electrical-Valve-G1-2-Inch-2-Way-CR02-3-Wire-Brass-Motorized-Bal/112795786930

      Vymazat
  13. Elektricky ovládaný ventil pro ty co nemohou, nebo nechtějí zasahovat do rozvodu vody:
    https://www.aliexpress.com/item/DSHA-G1-2in-Electric-Automatic-Manipulator-Shut-Off-Valve-High-Pressure-Hydraulic-Valve-for-Alarm-Gas/32899697912.html?spm=2114.search0604.3.37.39b325afsUypy7&ws_ab_test=searchweb0_0,searchweb201602_3_10065_10068_318_319_10696_10084_10083_10618_452_10304_10307_532_10820_10821_10302_5727312_5727212_204_10059_10884_10887_100031_320_10103,searchweb201603_60,ppcSwitch_0&algo_expid=6224b059-544a-4895-886e-0944c1cb8b86-5&algo_pvid=6224b059-544a-4895-886e-0944c1cb8b86&priceBeautifyAB=0

    nebo i z wifinou:
    https://www.aliexpress.com/item/Electronic-Smart-Garden-Water-Shut-Off-Timers-WIFI-Irrigation-Controller-Watering-System-Automatic-Gas-Valve-Home/32903293047.html?spm=2114.search0604.3.36.240921aaXWDZ42&ws_ab_test=searchweb0_0,searchweb201602_3_10065_10068_318_319_10696_10084_10083_10618_452_10304_10307_532_10820_10821_10302_5727312_5727212_204_10059_10884_10887_100031_320_10103,searchweb201603_60,ppcSwitch_0&algo_expid=18d7b1e0-31e8-4e8b-9931-67d3f0ff3d62-5&algo_pvid=18d7b1e0-31e8-4e8b-9931-67d3f0ff3d62&priceBeautifyAB=0

    OdpovědětVymazat
  14. Ahoj,
    stale resim problem s merenim plynomeru BK-G4.
    Nedari se mi najit zadny pouzitelny senzor, kterym bych ho mohl odecitat.

    Zkousel jsem jazyckova rele, ale ty magnet v plynomeru vubec nedokazal sepnout. Bezny magnet z "nastenky" take ne. Uspel jsem az s neodymovym magnetem.
    Jde o tento typ https://www.aliexpress.com/item/10pcs-N-O-Reed-switch-Magnetic-Switch-2-14mm-Normally-Open-Magnetic-Induction-switch/32803902404.html

    Pak jsem zkousel hall sensor, konkretne typ 44E938 a opet modul z aliexpresu https://www.aliexpress.com/item/KY-003-3pin-Hall-Magnetic-Sensor-Module-for-Diy-Starter-Kit-KY003-1PCS/32847591938.html
    pro priblizne magnetu rukou se rozsveci led a dostavam impuls, ale magnet v plynomeru je opet moc slaby.

    Mate nekdo tip na pouzitelny sensor, ktery bude fungovat s plynomreem BK-G4? Idealne z ciny :-)

    Diky.

    OdpovědětVymazat
    Odpovědi
    1. Ahoj! Na plynomeru BK-G4 mám ten istý problém.Magnet v plynomeru nemože zepnút jazýčkový kontakt a tak mám podezrení zda tam vubec je.Vyskúšaných šest citlivých jaz.kontaktú a bez úspechu.Jak máš nejaké rešení daj vedet. Dekuji e-mail: stetijanin@seznam.cz

      Vymazat
    2. Ahoj, ano, magnet tam opravdu je. Sam jsem zkusil hodne ruznych jazyckovych kontaktu a ani jeden mi to nesepne.
      Kdyz vsak pouziji hall sensor (KY-024 cca 0,4USD na aliexpresu) KY-024, tak pulzy dostavam. https://laskarduino.cz/vstupni-periferie-cidla/230536-keyes-ky-024-halluv-senzor.html
      Problem hallovky je v zakmitavani. Kdyz se plynomer stale toci a je neustaly odber, je to ok. Jenze kdyz se zastavi v nevhodne poloze - magnet je castecne u hallovky, tak sensor neustale cita. Za 20 minut je tak schopny nacitat vice, nez je vubec schopne protect plynomer za hodinu. Kdyz jsem pripojil logicky analyzator, tak dochazi k zakmitavani.
      Vubec se mi to nedari vyresit :-(
      Tady je videt me pripojeni hallovky: https://twitter.com/tuxmartin/status/1077883399942082560

      Co jsem nasel, tak original snimac taky pouziva jazyckovy kontakt https://www.briandorey.com/post/gas-meter-hall-effect-sensor
      Rad bych to vyresil nejak univerzalne. Ne sehnat nejaky jeden 10 stary uz nevyrabeny jazyckovy kontakt a vedet, ze to je jediny, ktery funguje.

      Jak to resi Petr Stehlik? Stejny problem mam u vodomeru se senzorem TCRT5000 - take dochazi k zakmitum.
      Uvitam jakoukoliv radu.

      Vymazat
    3. ukazoval jsem graf naměřených hodnot z TCRT5000 a taky oblast, kterou jsem vymezil jako "zakázanou". Už si to nepamatuju přesně, ale zkrátka je tak velký rozdíl mezi světlou a temnou stranou Síly, že mi to kmitat nemůže. Asi bych měl uveřejnit ten algoritmus, aby to bylo zřejmé.

      Vymazat
    4. Ano, to by bylo skvele :-)

      Vymazat
  15. Nahoře jsem funkční typ napsal. Spolehlivě snímá už 11 měsíců,

    OdpovědětVymazat
    Odpovědi
    1. Ano, ale "TAP 15" je podle meho hledani nejaky snimac od Jablotronu, ktery se uz neprodava https://domovni-alarmy.heureka.cz/jablotron-tap-15-magneticky-kontakt-tap-15/

      Vymazat
  16. např. https://www.abalarm.cz/ishop/magneticke-kontakty/603-tap-15-bila-zavrtny-mensi-2vodic--8595584600378.html

    OdpovědětVymazat
  17. Jazýčkových relé je mnoho typů, nejde jen o citlivost ale kam a jakým způsobem se přivádí magnetické pole. Některá relé reagují lépe, když je magnet přikládán na kraji relé (prakticky nad vodičem, který k relé vede) a ne uprostřed skleněné trubičky. Někdy je potřeba trochu experimentovat.
    https://www.reed-sensor.com/characteristics-reed-switches/
    http://www.hsisensing.com/wp-content/uploads/2016/03/HSI_Reed_Switch_Applicaton_Notes_v12_2013.pdf

    Co se týká trvalých zákmitů hallovy sondy, dá se řešit pomocí mikroprocesoru, který snímá impulsy a v případě, že je doba mezi příchozími impulsy kratší, než doba mezi impulsy, kterou je schopen plynoměr při největším odběru generovat, vyhodnotí se to, jako impuls falešný.

    OdpovědětVymazat
  18. Super video díky za něj :-) Už několik měsíců zbírám informace o měření spotřeby tak jsem se zájmem video celé zhltal. Díky za chuť tohle natočit a zveřejnit.

    Ijacek.007

    OdpovědětVymazat
  19. Pekne reseni, diky za sdileni. Mam trochu strach nacpat invazivne neco do privodu elekriky, nehlede na malo mista v rozvadeci a nutnost nejak posunout ostatni jistice.
    Co takhle merit jen proud neinvasivne? https://www.aliexpress.com/item/32715724000.html?spm=a2g0s.9042311.0.0.8eb74c4dltyk0m

    OdpovědětVymazat
    Odpovědi
    1. přesně tohle už mám nachystané 1,5 roku, že vyzkouším. Snad už se konečně k tomu dostanu!

      Vymazat
  20. Dostal jsem se do fáze, kdy z elektroměru odečítám spotřebu a načtené hodnoty ukládám do databáze (ID|TIMESTAMP|kWh). Ukládají se kumulované spotřeby (stejné číslo, jaké je vidět na displeji elektroměru)
    Je nějaká zkušenost, jak z databáze pomocí SQL SELECT načítat spotřebu za dny,týdný, měsíce... ?

    OdpovědětVymazat
    Odpovědi
    1. samozřejmě, to je hračka, ale doporučuji zvážit databázi jménem InfluxDB - ta časem sama agreguje a zapomíná starší data, to se může hodit.
      Anebo použít RRDTool - to je DB generující rovnou grafy.

      Vymazat
    2. Tak já nad tím bádám už asi 2 dny a jako hračka mi to rozhodně nepřijde. Rád se naučím něco nového. Je ten SELECT někde k dispozici?
      Ad InfluxeDB a RRDToo nemám zkušenosti, ale vypadá to zajímavě, zkusím postudovat.

      Vymazat
    3. Taky bych doporucil InfluxDB, je na ukladani takovych dat primo delana. Vyhoda InfluxDB je, ze nemusite resit schema, proste tam posilate data. Klienti jsou pro vsechny jazyky, jde to jednoduse i "rucne" pres http. Dotazovani je velmi podobne SQL. Udelat prumer za tyden, mesic atd, je strasne jednoduche. Mam s tim profesni zkusenosti a pouzivam to na veskery domaci monitoring. Jen bych doplnil, ze to downsamplovani a zapominani nefunguje samo, musi se to s mensim usilim nastavit.
      Data z InfluxDB umi s minimalnim usilim v hezkych grafech zobrazit jejich Chronograf ci napr. Grafana.
      Vse muze bezet treba na RaspberryPI.

      To jsem se chtel zeptat prave p. Stehlika, proc, kdyz ma arduino s eth. shieldem, ma web na arduino a resi (ne)zapominani hodnot, kdyz je spolehlive to posilat nekam do DB.

      Vymazat
    4. nevím teď vůbec, pane Unknown, které řešení (ne)zapomínání hodnot máte na mysli. Pokud u mého třífázového elektroměru, tak to asi bylo myšleno tak, že web server přímo v tom Arduinu má ukazovat stejné hodnoty jako oficiální elektroměr. Ale opravdu nevím, o čem přesně teď mluvíme. Chtělo by to asi živější chat na případné vyjasnění.

      Vymazat
    5. Pardon za Uknown, az ted jsem zjistil v ramci googlovke integrace musim nastavit Display name.

      Ve videu zminujete, ze kdyz se z nejakeho duvodu Arduino restartuje, tak zapomene puvodni countery.
      Tak zda misto toho aby Arduino bylo zoodpovedne za snimani spotreby a zaroven to zobrazovalo pres web server, co bezi na nem, jak prezentujete ve videu, proc nezvolit spolehlivejsi zpusob a posilat do db a zobrazit to nejakym jinym serverem (custom web, grafovy), coz zaruci persistenci a jednodussi spravu zobrazovanych informaci (napr spotreba per den/tyden/mesic, jako resi p. Jakes).
      Na druhou stranu chapu, ze architektura se tim zesloziti a uz to neni tak "jednoduche a elegatni" reseni ciste pomoci Arduina.

      Vymazat
    6. To je historická záležitost, kdy jsem se ještě nedokázal psychicky připravit/přemluvit na to, že v domě běží nějaký hlavní společný server, který všechno řídí a když klekne, tak nejede nic. Místo toho mám už několik let malinké samostatné jednotky s web servery, které řídí vždycky jednu záležitost, na ničem jiném nezávisí a když náhodou nejedou, tak má problém jen jedna věc, ale všechny ostatní prvky domácnosti fungují normálně.

      Všichni ostatní to dělají přes ten hlavní domácí server. Možná na to jednoho krásného dne taky přejdu, ale zatím se přiznám, že mi vyhovují ty samostatné malé řídicí jednotky.

      Vymazat
    7. Tak jsem nainstaloval/rozchodil influxDB a naimportoval data.
      Struktura je jednoduchá: timestamp, value
      value jsou rostoucí hodnoty (postupné načítání elektroměru v kWh).
      Ležím v tom od pátku, ale do teď jsem našel způsob, jak nad těmi daty udělat dotaz, který zobrazí denní (měsíční, hodinovou, ....) spotřebu.
      Pomůže, prosím, někdo?

      Vymazat
    8. do DB by to chtělo ukládat nikoliv okamžitou hodnotu, ale rozdíl (přírůstek) od minulého měření.

      Vymazat
    9. Pane Jakes, Urcite bych nechal ten counter, z toho se rozdily nechaji dopocitat. Pro vypocet rozdilu pouzijte napr. fuknci Non_negative_derivative ( https://docs.influxdata.com/influxdb/v1.7/query_language/functions/#non-negative-derivative). Druhy parameter je casovy interval pres ktery pocita zmenu. Pokud chcete napr denni prehled, date 24h. Pokud chcete videt prubeh odberu v danem dni, nechate klidne default 1s.
      Cely select musite vhodne omezit casovym oknem pres time > x and time > y (posledni tyden: time > now()-7d). Zkuste to v chronografu ci grafane.

      Vymazat
    10. Velmi chytré! Sice to způsobí problém v případě, že dojde k vynulování čítače, ale jinak parádní využití možností InfluxDB. Vy mě snad nakonec přesvědčíte tam tu elektřinu posílat :-)

      Vymazat
    11. NON_NEGATIVE_DERIVATIVE jsem zkoušel. Nějak se mi nedařilo. Nepomohl byste s konkrétním selectem? Já zkoušel viz níže a select nevracel žádná data.
      > select derivative(max(value)) from "mrazirna" GROUP BY time(1d)

      V databázi údaje jsou:
      > select max(value) from "mrazirna" GROUP BY time(1d)
      name: mrazirna
      time max
      ---- ---
      1564358400000000000 0
      1564444800000000000 150
      1564531200000000000 346.7
      1564617600000000000 551.1
      1564704000000000000 755.2
      1564790400000000000 939.9
      1564876800000000000 1117
      1564963200000000000 1309.4
      1565049600000000000 1494
      1565136000000000000 1721.1
      1565222400000000000 1936


      PS:
      O ukládání rozdílů jsem nikdy neuvažoval, měřák mi rozdíly neposkytuje a abych k tomu ještě psal nějaký skript... to se mi fakt nechce. A navíc si myslím, že to není příliš systémové řešení.

      Vymazat
    12. Agregacni funkce v InfluxDb potrebuji omezit cas zespoda. Takze ve Vasem pripade: select derivative(max(value)) from "mrazirna" where time > now()-7d group by time(1d)

      Vymazat
    13. Nádhera, díky.
      https://petr.maxbox.cz/index.php/2019/08/28/monitoring-power-consumption-kwh-using-node-red-and-influxdb/

      Vymazat
    14. Asi jsem jásal předčasně. InfluxDB nemá datové funkce jako týden, měsíc, rok....
      Nějaké nápady, zkušenosti?

      Vymazat
    15. Co konkretne potrebujete s temi datovymi funkcemi delat? Vetsinou si vypocet casoveho intervalu zaridi aplikace co tu db pouziva.

      Vymazat
    16. Myslel jsem, že je (např. pro Grafana) potřeba vytvořit select (tzn. vydolovat spravna data)a ta aplikaci předložit ke zobrazení. Dále se to hodí například pro fakturaci nájemníkům.

      Vymazat
    17. Visualizacni tooly maji vetsinou template selectu a casove udaje doplnuji dle nastaveni dashboardu.
      Pro fakturaci, i kdyz to budete delat rucne pres cmd terminal, tak stejne znate datumy.
      Samozrejme, select pres jeden rok a group by pres kalendarni mesic jednoduse nepujde, protoze db ceka stejny interval.
      Pokud to je neco jineho, musite napsat konkretni queru co Vam nejde.

      InfluxDb nove nabizi if Flux jazyk pro praci z daty. Je to defaulne ve verzi InfluxDb 2.0, ale da se to zapnout i na 1.7.
      Je to slozitejsi zapis, ale zase tam lze udelat mnohem vic veci. Literal casove intervalu lze zapsat i s mesicem (1mo) ci rokem (1y), umi napr. i joinu: https://docs.influxdata.com/flux/v0.36/

      Vymazat
  21. Tento komentář byl odstraněn autorem.

    OdpovědětVymazat