Jump to content

Båtautomasjon med batteriovervåking og Zigbee


Sjøbliss

Recommended Posts

Dreuf skrev for 1 time siden:

Spørs om du får spenning tilbake fra spolen i rele. Kanskje en "slukkediode" er hva du trenger.


Jeg tenkte ‘fly-back’ diode på de store releene - det er kanskje det samme som ‘slukkediode’?Ideen er vel at strømpulsen som dannes i relespolen når strømmen brytes tar snarveien gjennom dioden. Koples med dioderingen mot siden av spolen som får pluss og andre enden på minus. Selv om det er optokoplere på relekortene så har vel 5/12V felles jord og da kan den pulsen fort forplante seg tilbake til ESP og trigge reset. Dersom relekortet settes slik at jord er adskilt og strømforsyningen er galvanisk skilt så burde dette ikke kunne skje, men fly-back diode er god praksis uansett for å ikke svi relekontaktene på relekortene. Ser at noen små releer jeg har liggende (beregnet for å sjaltes direkte med lav strøm fra microkontroller) har slik diode innebygget


@Sjøbliss: De relekortene er vel ‘aktiv lav’, dvs trigges når GPIO legges til jord. Da vil vel ikke metoden med sperrediode fønke?

 

Orker ikke å legge aksent på alle rele-ordene 😂 Og i mellomtida ser jeg at @Mastiff har løst problemet.

 

Sjøbliss skrev for 1 time siden:

@Mastiff, her kommer det med tesje :D (bare tulla, bra du graver!!)

 

Nå releet veksler kan du få "overskudd"-strøm på en måte. Fra spolen på releet. Ikke lasten som går gjennom. Det blir som støy, men kanskje ESP oppfatter det som høy, selv om den skal være satt lav. Kan være den får "hetta" og booter. Det er i alle fall en teori. Dersom du kobler en sperrediode mellom GPIO og kontrollpinnen på releet.

 

bilde.png.559ea68b3d188762a2b19f4448f31ba2.png

Denne skal kobles slik at den enden med grå ring (til høyre på bildet over) skal være nærmest releet. Du kan tenke deg ringen som "her skal ingen strøm komme inn"-ringen. Slike dioder kalles ofte rettediode, ensretter, eller bare diode.

 

Om du skal være ekstra flink setter du en motstand mellom dioden og jord for å lede slike strømmer til jord. En 200-300ohm diode bør være ok. Kobles i tilfelle mellom høyresiden (ringsiden) av dioden og jord.

 

Prøvde meg på en rask "sketch".

 

relay_resistor_esp.png.0b1faf6efc6240a252fb9c389d24e2f6.png

Kommer det støy fra releet her stoppes det av dioden og ledes til jord. Uten resistor kan man tenke seg at med "mye støy" så kan dioden kverkes, men det er nok ikke sannsynlig at det er mye her. Dog, det kan være smart.

Redigert av Fantino (see edit history)
Link to post

@Fantino klarer ikke helt skjønne hva du tenker, er det en slik løsning du ser for deg?

 

583300959_ESPandrelayonlydiode.png.6d45f7fff54659727dfa040ba0ddb14f.png

 

Setter du dioden andre veien får du kortslutning til jord. Klarer ikke vri hodet mitt til at dette kommer til å løse problemet...

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post

Typisk nerdeforum (altså typisk omtrent alle forumene jeg er med på, bare på hver sine områder)! :giggle: Når problemet er praktisk løst på en enkel måte, fortsetter diskusjonen om hvordan den egentlig burde vært løst på en mer innviklet måte! :lol: Det er nok en form for forstyrrelser her, for hvis jeg slår på (denne gangen altså ikke av) alle releene samtidig med gruppebryteren i Home Assistant (noe jeg aldri kommer til å gjøre noen gang uansett), så booter ESP-en. Men jeg har kjørt en liten stresstest med ti repetisjoner på å å slå av og på hvert rele etter tur, med 4 sekunders pause mellom dem, og da fungerer det uten det minset problem. Selv det er jo en idiotisk høy takt på et relé som skal slås av og på for hver tur. Så det praktiske problemet er som sagt løst, men hvis herrene føler for å nerde videre er det selvsagt fritt fram! :rolleyes:

 

Link to post

Vi gir oss aldri - merk aksenten på tegningen.. 😂


Se tegning under for hva jeg mente med ‘fly-back’ diode. Denne lar den motsatte pulsen ta ‘snarveien’ når strøm til relespolen brytes, slik at den ikke kommer tilbake til avsender (i like stor grad da). 

 

Jeg er ikke overbevist om at pulsen som trigger reset går til GPIO da det vel ikke trigger reset i prinsippet? Har mer tro på en puls gjennom jord som er felles som gjør at ESP trigges fordi innspenning på ESP blir for lav i et millisekund eller to.

 

Ang sperrediode så mente jeg bare at så lenge inngang på relekort skal legges til jord for å kjøre rele/må være ‘høy’ for å holde det av, så vil 220R resistoren trekke til jord hele tida slik at releet står på. Er også usikker på om GPIO på ESP tåler å legges til jord over en 220R i parallell med optokoplerinngang. Har bare fiklet med esp8266 så langt og der var grensa 12 mA så vidt jeg kunne finne ut. Til slutt vil dioden ‘spise’ kanskje 0.5-0.7V av GPIO signal slik at en kanskje nærmer seg grensa for hva som skal til for å holde relekort ‘åpent’ (3.3 - 0.7V osv)? Jeg mener at optokopler skal være godt nok her og at en må fjerne evt pulser som forplanter seg via felles jord. Kan antakeligvis også løses ved helt adskilt power da, dvs en 5V powersupply som ikke har felles jord med 12V.

 

Da går jeg og nerder videre med Wemosen min 😇

 

Red: @Sjøbliss Når jeg ser på siste tegningen din så har du vel egentlig tegnet akkurat det jeg tegnet - bare penere 😊 Men GPIO går ikke inn på spolen på disse kortene, men gjennom optokopler. Så om du flytter tegningen din til det store releet er vi altså dønn enige.
 

 

4A59EFD3-DE97-48E4-84E7-AA7B45E51AA4.jpeg

Redigert av Fantino (see edit history)
Link to post

Når jeg tenker på det er jeg mer og mer enig med deg @Fantino. Overskuddsstrømmen i spolen drar sikkert jord for høy og derfor blir spenningspotensialet til ESPen for lavt og den booter. Her tror jeg du er inne på noe. 

 

Forstår jeg det riktig at disser reléene (med aksent!) for arduino, lik f.eks. denne: 

image.png.b1e5aa685c3a64ea90f4ad56e0a10047.png

 

I praksis er først en optokobler, som igjen trigger et relé? Vil det si at det skjematisk bør se slik ut med sperrediode? 

 

516604106_ESPandopto.png.adf3a16f3c219b3cd05c6304f06005bc.png

 

I tilfelle burde jo det være en del av disse reléne fra fabrikk. Og kanskje det "heavy duty" reléet til @Mastiff ikke har det? Så dersom han bruker dette for å trigge det andre så kan kanskje problemet være løst. En optokobler, som trigger ett relé som igjen trigger det neste reléet.... 

 

Og som du sier. Dersom man har forskjellige jord så vil kanskje dette ikke bli et problem. 

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post
Mastiff skrev for 4 timer siden:

 Så det praktiske problemet er som sagt løst, men hvis herrene føler for å nerde videre er det selvsagt fritt fram! :rolleyes:

 

 

Lurer du på om vi vil det? Klabert! :D Takk som byr tenker jeg. 

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post

:lol: Nerding over alle støvleskaft er virkelig et kjennetegn på alle tekniske forum!

 

Men alvorligere talt: De releene er omrent som det, bare en annen farge på printkortet. Det er de som er her: https://www.aliexpress.com/item/32649659086.html?spm=a2g0s.9042311.0.0.43a24c4doheTQ7

 

De har 5mA triggercurrent, og det burde ikke være noe problem i det hele tatt, så vidt jeg har forstått. Men fremdeles skjønner jeg ikke helt hvorfor det skal reagerer sånn på det store releet mitt, for ifølge tekniske data skal det kunne veksle 10 ampere på 30V, og da må det vel kunne veksle et stort relé uten problemer. Men det med jord høres interessant ut. Jeg tar jord til ESP-en og relékortene på innsiden av 12V-5V-strømforsyningen og til de store releene på utsiden av den strømforsyningen. Kan jeg skille jord på noen annen måte? Er ikke jord = jord uansett hvor man tar det fra i systemet?

Link to post

@Sjøbliss: Om du putter GPIO pinnen på den siste tegningen på motsatt side av dioden i optokopleren og tar bort GND (optokopler fores med pluss fra VCC til kortet) så tror jeg du har laget en ganske eksakt tegning av hvordan de kortene er. Mener en kan se fly-back dioden på bildet i rød ring. Den beskytter trolig transistordelen av optokopler når den åpnes. GPIO trenger egentlig aldri levere strøm til kortet, den kan ‘flyte’ og så gi jord når relé skal trigges. Så jeg mener disse kortene skal være ‘trygge’ for følsom elektronikk. Og som @Mastiff sier så skal releene overhodet ikke ha noe problem med å styre de store releene.


7C3561AB-77A8-4B24-820B-10CE6DF14CB3.jpeg.6733918a2aadf6b7a90240a954feb25b.jpeg

 

@Mastiff:  Kortene har som regel en jumper som vi har diskutert tidligere i tråden. Dersom denne settes slik at kontrollsiden av optokopler fores fra ESP og relesida fra annen 12V forsyning så er de helt adskilte. Men det forutsetter at det ikke er gjennomgående jord i strømforsyningen, og det er det som regel. Men noen av disse små switch mode duppeditt strømforsyningene er ‘galvanisk isolerte’. De typiske LM7305 ‘Low Drop’ og lignende forsyninger har alltid gjennomgående jord (og brenner av masse strøm i varme).

 

Med slike svære releer som skal sjaltes så er det nok lurt å ha på dioder over spolen på disse, evt også en liten motstand som @Sjøbliss var inne på. Det er standard når en driver releer med transistorer (spesielt MOSFET som hater slike negative pulser) men disse grove releene er vel typisk beregnet for ‘grov’ 12V input fra bil/båtsystem og kommer derfor ikke med sånt.

 

Det blir uansett teori dette da, men det er vel stort sett bare spenningsdropp på forsyning eller at RST pinne trekkes lav som trigger reset på ESP mener jeg?

Redigert av Fantino (see edit history)
Link to post

Supert @Fantino, da har jeg mer eller mindre skjønt den biten. Optokopler er bra :)

 

Nå sitter jeg på en fin lørdag mens konen leser til eksamen og ungdommen drikker formiddagsøl i kjelleren og koser meg med en ESP og en dallas temp-sensor som kom i posten. Skal bruke den til å overvåke temperaturen på vv-berederen hjemme men den kunne like gjerne brukes i båten. Har tenkt å kjøre den med 9V batteri og trenger da også å overvåke spenningen på dette slik at jeg kan skifte batteriet i tide. Håper jeg kan få et år, kanskje 2 ut av et slikt batteri. Muligens kunne jeg fått enda mer med en spesielt strømgjerrig ESP32, det skal jeg nok også bestille meg.

 

IMG_20210220_144249.jpg.233cf9f79c4ae15cfebec764eaa7f2d6.jpg

 

Har satt opp en MQTT bryter i HA som jeg kan skru av / på for å slå av Deep Sleep slik at det går å flashe den. Nå skal jeg bare optimalisere litt på Deep Sleep slik at den sover 59 av 60 minutter og så våkner kjapt for å ta en måling og sende til HA. En gang i timen burde være nok tenker jeg men kanskje jeg starter med hvert 20 minutt.  20 minutter sleep, så 20 sekunder måling, back-to-sleep.

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post

Jeg har som sagt jord på hver sin side av strømforsyningen, men det virker som om det er full gjenomgang på den. Uansett, det ble litt fuglerede nedi den boksen jeg bruker, men det var ikke noe problem å få plass til 30A Biltema-releer, som styrer de store releene og styres av relékortet.

 

Men en liten ting lurer jeg på her: Hvordan får jeg egenvalgt topic på MQTT-meldingene fra voltmeteret? Altså ina219. Jeg prøvde dette, men det ble bare feil:

 

Sitat

sensor:
  - platform: ina219
    i2c_id: bus_a
    address: 0x40
    shunt_resistance: 0.1 ohm
    bus_voltage:
      name: "INA219 Bus Voltage"
    max_voltage: 32.0V
    max_current: 3.2A
    update_interval: 20s
    state_topic: madmax/esp/madmaxhekk/spenning

 

Link to post

Dermed var reléproblemet mitt løst for godt. Jeg la til ekstra 30A Biltema-releer foran hvert av de store releene fordi jeg er nødt til å veksle jord, ikke 12V+ i systemet mitt (så relékortet koblet til ESP-en veksler Biltema-releene med 12V+ mens de igjen veksler de store releene med jord). Men ESP-en startet fremdeles om igjen kanskje hver tiende gang jeg slo av et av de store. Og da ble det releet slått på igjen når ESP-en kom i gang igjen, noe som jo tar rundt 3-4 sekunder.

 

Det skyldes at jeg ikke bruker den innebygde, upålitelige funksjonen for å ha samme status ved oppstart som da ESP-en ble slått av eller startet om. Istedenfor har jeg i Node-RED progammert et oppsett som leser inn alle endringer i reléstatusen og lagrer det til ei fil, sånn at når det kommer "birth message" fra en ESP (altså at den kommer opp igjen etter å ha vært av), leser den inn denne fila og setter alle statusene til den som sist var innlest (noe som tar noen brøkdeler av et sekund). Men når denne problemomstarten skjer, går det så fort at ESP-en ikke får sendt signalet om endring i reléstatusen til Node-RED. Så jeg la inn en omvei, som kanskje er litt "dirty", men fungerer 100 %:

 

Hver gang jeg utløser en switch, altså et relé sånn at statusen endres, sender switchfunksjonen først en "imitasjon" av statusmeldingen som kommer fra releet når det blir vekslet på vanlig måte. Så har jeg lagt inn et halvt sekunds pause (delay), og først da går selve kommandoen til releet. Dermed er det kommet en statusendring til Node-RED før ESP-en eventuelt starter om igjen på grunn av et spenningsfall på jord, eller hva det nå er.

 

Jeg har lagt dette både på når jeg slår på og av releene, for et par ganger har jeg sett at ESP-en har startet om igjen når jeg har slått på alle releene i boksen samtidig. Problemet er egentlig bare aktuelt når releene skal være av, for jeg har redundans i systemet (ja, jeg er totalt sprø...): Jeg bruker et Phidgets 16-kanals IO-kort, sånn at når jeg slår på et relé med ESP-en, blir det samme releet også vekslet med jord fra Phidgets-kortet, som styres med et Python-skript på Pi-en, et skript som av seg selv husker hva som var av og på før en eventuel omstart. Dermed fungerer alt av strøm selv om ESP-en eller Phidgetsen svikter når releene skal slås på, for releet vil likevel være slått på av den andre.  Det som ikke funker, er hvis releene skal slås av, og den ene da "henger" (altså i praksis at ESP-en har staret om igjen og beholdt feil på-status), for da vil releet fortsatt være på. Derfor var det så viktig å få ordnet problemet med ESP-en og de store releene.

 

Sånn ser boksen ut nå, de svarte kablene som går ut i nederste venstre hjørne er der Phidgetsen kobles inn, de tjukke, røde er strøm ut og inn.

 

Ingen beskrivelse er tilgjengelig.

Redigert av Mastiff (see edit history)
Link to post

@Mastiff: Du har jo snart dobbel kontrollsystem a-la dynamisk posisjonering nå 😂 Jeg sitter og gruer meg til å få ting inn i akkurat samme boks. Det er alltid da det blir problemer som må løses med loddebolt og ikke bare nappe av en Dupont-ledning 😬 Har dessverre nada å bidra med på Node Red osv men nå som jeg har bevegd meg forsiktig inn i Wifi-verdenen så kommer det sikkert noen spørsmål etterhvert.

 

Ble aldri 100% fornøyd med statusbildet på telefonen. Skal ikke ha det mer fancy da jeg merker at jeg er på grensa av hva esp8266 håndterer, men skulle gjerne flyttet litt på elementene osv. Og jeg har ikke mer enn 70% kontroll på den håndstjålne koden.. Noen som har snublet over et en eller annen applikasjon der en kan generere et skjermbilde og så få spydd ut ferdig html/css-kode?...

Link to post

@Fantino Jeg har jo to styreplasser i båten... :wink: Men alt er ikke ekte redundant, for kablene forfra går til spaken i førerhuset, og bare spakene der er koblet direkte til motoren, så da blir det juks... Det får bli på den neste motoren, når jeg pensjonerer meg om sju år (da er jeg 62 og gidder ikke mer). Da skal jeg ha en nyere Suzuki 200 med elektrisk motorstyring. Men rattet er iallfall redundant, de fungerer uavhengig av hverandre! Så da kan jeg og fruen være rykende uenige om hvor vi skal og styre hver vår vei...

 

Jeg er selv bare en halvstudert røver på Node-RED, men en del har jeg jo plukket opp. :giggle: Lodding bruker jeg helst bare på strømkablene, jeg unngår å lodde signalkablene fra ESP-en, da foretrekker jeg å bytte dem. Jeg har bestilt en haug med plastplugger (eller hva man skal kalle det) i forskjellige legder opp til 20, sånn at det bare sitter en enkelt plugg på hver ESP og hvert av ekspansjonskortene. Jeg håper at det vil gjøre at det sitter veldig sikkert, ved hjelp av litt smeltelim.

 

Angående det problemet ditt, er det vel et veldig typisk eksempel på der du heller burde brukt Home Assistant til å trekke inn dataene, behandle dem og lage skjermbildet. Er det noen spesiell grunn til at du ikke gjør det, men velger å bruke ESP-ens server? Eventuelt bytter ut ESP-en med en Pi til og bruker GPIO-pinnene der. Den kan jo uten problemer lage det du vil ha.

Link to post

@Mastiff: Kan trøste deg med at jeg i prinsippet er helstudert men så lenge vitnemålet er 40 år gammelt i år så betyr det særs lite :-D

 

Jeg liker å ha full kontroll og det er vel derfor jeg sutrer nå mhp. den websida med stjålen kode som jeg ikke har full koll på. Det er også det som så langt har holdt meg borte fra HA/NR/Linux/rPi osv men jeg havner nok der en gang. Og nå har jeg jo laget jomfru-webserveren min... Applikasjonen er stand-alone - dvs. bruker Wemos i soft AP mode (tror jeg det heter) og skal kun starte når dynamoene lader, ikke være avhengig av nett og kjøre på egenhånd om den ikke overvåkes via det lokale webet også. Det siste var faktisk ett av punktene jeg måtte dille en del med. Og den er basert på rask jeg hadde i roteskuffen(e). Jeg klarer meg helt fint med det der "barneroms"-grensesnittet - men alltid kult om en kan få det til å se litt fancy ut også. Snublet over noe interessant i dag som jeg er i ferd med å sjekke ut nå: remotexy.com

 

Link to post

Den Remotexy-greia så ganske snedig ut, takk for tipset! Den må jeg huske, for jeg har tenkt å lage et voltmeter til min fars trebåt, så det er lett for ham å sjekke spenningen på batteriet som driver pumpa (det er ikke noe annet elektrisk om bord). Veldig enkelt oppsett, med en liten Clas-boks, en ESP-32 og en INA219, som han kan sjekke på mobilen fra hytta. Jeg lurte litt på hvordan jeg skulle lage grensesnittet så det ble enkelt nok for ham å sjekke på mobilen (han er godt oppe i 80-årene), det kan være svaret.

 

Link to post

Ser veldig bra ut @Fantino, ser smart ut den remotexy også. Det med web-UI er alltid litt dill og absolutt ikke mitt fagfelt. CSS er absolutt hit+miss hele tiden.

 

Jeg har i dag ferdigstilt min batteridrevne VVB sensor. Tror det kan være litt læring i dette om noen har lyst å prøve seg. Først og fremst kjøpte jeg en boks med batteriluke på Kjell, det kan sikker fås billigere et annet sted, men i alle fall.

https://www.kjell.com/no/produkter/elektro-og-verktoy/elektronikk/elektronikkbokser/p006208

 

Monterte fast med lim et slikt settebrett som jeg har kjøpt en haug av fra Ebay. Dobbeltsidig teip og smekk fast. Monterte så ESP og mostander fast, limte kablene inn og ut med smeltelim og skrudde det sammen. Så til det som var litt dill.

 

IMG_20210221_133030.jpg.5782d990b5dd5c7aeb3b8ca6203ef742.jpg

 

Når du kjører ESPhome med deep sleep så fungerer det ikke å bruke ESPhome APIet. Fordelen med dette APIet er mest det at enheten dukker opp under integrasjoner og du lett kan "adde den" inn. Dessverre er ikke dette praksisk med Deep Sleep fordi du ønsker at ESPen skal kjøre bare sekunder. Å få opp APIet tar 30-60 sekunder, kanskje mer. Det er ikke bra. Så derfor etter mye frem og tilbake så disablet jeg APIet og bruker nå bare MQTT. De gode nyhetene er at du mer eller mindre bare installerer Mosquitto på HA og legger inn credentials i ESPhome config så kommer enhetene opp automatisk ved hjelp av discovery. Det eneste du mister en den fine GUIen under integrasjoner. Visstnok er dette noe de jobber med, men for meg så var dette 100% akseptabel workaround.

 

Neste var at hver gang ESPen gikk i sleep så sa ESPhome til HA at enheten ikke var tilgjengelig lenger. Jeg har satt den opp til å oppdatere sensorene hver 20 minutt, men så fort ESPen gikk i sleep fikk MQTT sensoren status "unavailable". Det går jo ikke. I configen hadde jeg satt opp "expire" til 1 time. Tanken er at dersom den ikke har oppdatert etter 1 time, da er den unavailble. Fant ut at jeg kunne sette MQTT topic på birth og will message til blank, da slutter ESPhome å oppdatere for denne enheten, og MQTT respekterer expiry. All good!

 

Så tilsist var det batteriet. Ønsker å vite sånn ca hvor bra batteriet er, altså SOC e.l. Satte opp en enkel spenningsdeler med 3 motstander for å dele batterispenningen i 1/3. Har jo 9V batteri så da er vi på ca 3V som er OK å sende inn på en GPIO på ESPen. I config tar  jeg å ganger dette opp igjen slik at riktig spenning vises i HA. Har også laget en enkel template sensor for å gjøre om spenning til en SOC basert på spenningen jeg måler. Den går gradert i 0,05V steg fra 9,2V til  8,75V. 9,2 er 100% og 8,75V er 0%. Om det stemmer vet jeg ikke, men er nok ikke så ille. Jeg tror det tar en del tid før vi ser at det faller fra 100% men så vil den gå raskt ned. Dette får vi se :) Jeg har selvsagt kjøpt et Lithium batteri, ønsker ikke å skifte dette hele tiden. Er vi heldige får 1-2 år, men uheldig kanskje 3-6mnd. Spent på dette. Hadde bare 1MOhm mostander så satte 2 i serie for å få 2Mohm:

 

358916247_ESPTempSensor.png.2f259e0bfd0e6103f8e4b16a3e9a9e27.png

Jeg vet det finnes spesielle ESP32 med lavt batteriforbruk men nå har jeg bare brukt en NodeMCU som jeg hadde liggende i skuffen. En ulempe med denne var at den har en Power LED som lyser, selv når den er i deep-sleep. Det går ikke å skru denne av i software så jeg tok en skalpell og skjerte dioden rett av kortet, funka fint det!  Se manglende diode merket med blå ring:

 

1340124685_Screenshot2021-02-21at15_18_10.png.7758b135a455161a10145c96fcb63688.png

 

Enda en ulempe med deep sleep er at du ikke får tak i ESPen for å gjøre endringer. Den booter opp og "sleeper" igjen på 5-6 sekunder. Det går innmari fort. Derfor laget jeg en knapp i HA som setter en state i MQTT til ON eller OFF. 

 

1563654181_Screenshot2021-02-21at15_07_10.png.5fe786f287e5d4f324c5e3000743e3db.png

 

Enkel kode for å få dette til (bare pass på å ha Mosquitto installert: https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md):

Sitat

switch:

  - platform: mqtt

    unique_id: sleep_esp_water_tank

    name: "Deep Sleep Water Tank ESPHome"

    state_topic: "homeassistant/esphome/deep_sleep-water_tank_temperature"

    command_topic: "homeassistant/esphome/deep_sleep-water_tank_temperature"

    payload_on: "ON"

    payload_off: "OFF"

    state_on: "ON"

    state_off: "OFF"

    retain: true

 

Det som skjer når ESP starter er at den booter, kobler opp til MQTT, sjekker state på topicen over, er den ON  så vent 2s og kjør ny sleep syklus. Uten den delayen på 2s får ikke den tid til å oppdatere sensorene. Hver sensor sjekker med 1s interval så det går unna.

 

Full config på ESPhome noden her:

 

Sitat

esphome:
  name: water_tank_temperature
  platform: ESP32
  board: esp32doit-devkit-v1

wifi:
  ssid: "wifi"
  password: "password"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Water Tank Temperature"
    password: "password"

captive_portal:

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
#api:
#  password: "password"
# Disabled, not working with Deep Sleep

ota:
  password: "password"

dallas:
  - pin: GPIO23
    update_interval: 1s
 
sensor:
  - platform: dallas
    address: 0xXXXXXXXXXXXXXX
    name: "Water Heater Temperature"
    unit_of_measurement: "°C"
    force_update: true
    expire_after: 1h
  - platform: adc
    id: "V"
    pin: GPIO33
    name: "Water Heater Sensor Battery Voltage"
    attenuation: 11db
    update_interval: 3s
    unit_of_measurement: "V"
    force_update: true
    expire_after: 1h
    filters:
      - multiply: 3
  - platform: template
    name: "Water Heater Sensor Battery Level"
    unit_of_measurement: '%'
    update_interval: 3s
    expire_after: 720h
    lambda: |-
      if (id(V).state > 9.2) {
        return 100;
      } else if (id(V).state > 9.15) {
        return 90;
      } else if (id(V).state > 9.10) {
        return 80;
      } else if (id(V).state > 9.05) {
        return 70;
      } else if (id(V).state > 9.0) {
        return 60;
      } else if (id(V).state > 8.95) {
        return 50;
      } else if (id(V).state > 8.9) {
        return 40;
      } else if (id(V).state > 8.85) {
        return 30;
      } else if (id(V).state > 8.8) {
        return 20;
      } else if (id(V).state > 8.75) {
        return 10;
      } else {
        return 0;
      }

deep_sleep:
  id: deep_sleep1
  run_duration: 5s
  sleep_duration: 20min

mqtt:
  # control if the ESP will use Deep Sleep or not
  broker: 10.0.0.10
  username: mqtt
  password: 2Good4mqtt
  # MQTT  Buttin in Home Assistant control if the ESP will use Deep Sleep or not
  on_message:
    - topic: homeassistant/esphome/deep_sleep-water_tank_temperature
      payload: 'ON'
      then:
        - delay: 2s
        - deep_sleep.enter: deep_sleep1
    - topic: homeassistant/esphome/deep_sleep-water_tank_temperature
      payload: 'OFF'
      then:
        - deep_sleep.prevent: deep_sleep1
  # Disable ESPHome setting device as unavailable while in deep sleep
  birth_message:
    topic: myavailability/topic
    payload:
  will_message:
    topic: myavailability/topic
    payload

 

Så vidt jeg kan se tar set bare 4-5 sekunder for ESPen å kjøre opp, oppdatere alle tre sensorene og så ned igjen i sleep. Utrolig stilig. :) Den kobler jo opp Wi-Fi, logger på MQTT, leser av sensorene, inkludert litt mattematikk på SOC. Er sikkert mulig jeg kunne fått det enda raskere med statisk IP setting (den kjører DHCP nå) og litt sånn, men det er maks 1s vil jeg tro. Den er syl-kjapp!

 

Obs for å sette opp dallas sensoren se her: https://esphome.io/components/sensor/dallas.html For å finne IDen så kjører du Dallas uten mer instilling, enabler debug og fyrer opp. Da lister den alle sensorene du har koblet til så du kan tagge de inn i configen. Så du kan i praksis ha et helt lass med sensorer på en ESP (slik som @Fantino).

 

Så denne helgen har jeg lært mye, igjen! :)

 

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post

@Sjøbliss: Her var det utrolig mye lærdom, og ikke minst mange stilpoeng. Små breadboard må nok settes i bestilling. Så ut til å være en veldig kjekk måte å få tingene kjapt på veien! Og ikke minst nyttig å få en demo av Deep Sleep som jeg tenker å bruke på et annet prosjekt som er på tenkestadiet.

 

Ang spenningsdeler for ADC så tror jeg muligens du kan få noe avvik da den interne spenningsdeleren har lavere impedans men dette var jo uansett bare en tilleggsfeature. Den interne ADC på esp8266 har visstnok ca 20 MOhm impedans og område 0-1V, og så står det en 220/100 kOhm spenningsdeler på den på for å konvertere den til 0-3.3V. Med de komponentene du hadde for hånden kunne du brukt 1 stk MOhm mellom batteri pluss og AO og hadde da fått en 0-13.2V range.

 

Visste jeg hadde lest noe om dette ifm at jeg sleit med analoge målinger fra strømsensorene mine. Litt info her og spenningsdeleren er vist på Node MCU skjematikk ser jeg. Om batteriet ikke varer lenge nok kan du jo vurdere å konvertere til en av disse som nettopp dukket opp i postkassen min😂

 

1CDD0CE2-8C64-4270-9074-D22C3935AB1A.jpeg.98d3783f59f75f43b64122dffa3f608e.jpeg
 

 

 

 

Hvilket program er det du bruker for å få til de lekre kretstegningene dine? Jeg trenger noe sånt som er enkelt nok til at jeg orker å lære meg det 😁

 

@Mastiff: Det eneste teite med RemoteXY er muligens at det ser ut til å være knyttet til appen deres, dvs en må ha den på telefonen. Er sikkert veier rundt det da og er sikkert uansett enklere enn å lære seg html og css som jeg for min del ser litt mørkt på 😝

Redigert av Fantino (see edit history)
Link to post

Takk for tilbakemeldingen @Fantino, skal lese litt mer om adc. Vet at det er forskjell på ESP 8266 og 32, bl.a. er det mange adc GPIOer på 32en. Men litt av grunnen til at jeg grov dypt i resistor skuffen var for å minimere strømforbruket. 9V med 3Mohm blir ifm ohms lov 0,00003Watt. Dette er jo også en kilde til batteri-tapping. Og her er 90% nøyaktig mer en godt nok. Jeg tenker jeg kjører løsningen til den dør og batteriet er flatt. Da vet jeg spenningen målt med denne konstruksjonen og sa har jeg vel egentlig det jeg trenger. Men skal sjekke intern impedans slik at jeg kan eventuelt justere multiplikator ihht totalen. 

 

Tegneprogram er Fritzing. Koster en symbolsk sum for å laste ned.

 

https://fritzing.org/download/

 

Det finnes bedre online løsninger men de koster for mye. Fritzing gjør jobben og hjelper meg å sortere i hodet før jeg setter det på brettet. Du kan også planlegge breadboard plassering av komponenter, det kan være handy selv om jeg ikke har teste det. 

Hjemmeside: https://www.sbarmen.no/

 

"Sofia" Nor Star 350 HT, 2008 modell med D6-370

"Sobasa" Nidelv 300 Sport, 2007 modell med D6-350: Historisk Finn annonse

Link to post

@Sjøbliss: Ja lite vits i å svi av strømmen bare for å måle den! Den interne spenningsdeleren som da står i parallell med 1M vil vel gi effektivt rundt 300k men med 2M før den så burde batteriet leve lenge. Jeg skal bruke en av de der 220 til 12/5/3.3V supplyene til å detektere om landstrøm er tilgjengelig i et tilleggsprosjekt til Lithium i en kameratbåt (batterimonitor PZM017 til Blynk via ESP) og kom bare på at en sånn liten dings kunne vært brukt her.

 

Fritzing må jeg teste ut mer ser jeg. Jeg levde i den villfarelsen at det kun kunne brukes til slike breadboardtegninger 😊

Link to post

@Fantino Jeg vet ikke om det går an å snike seg rundt den. Det ser ut som det er Bluetooth, ikke wifi, den går på. Da er det verre å bruke noe annet enn den appen de lager selv. Men HTML og CSS er egentlig ganske logisk. Jeg kunne ingenting, men lærte meg nok til å gjøre det jeg ville med en del prøving og feiling. Notepad++ er grei å jobbe med, da ser man ofte feilene.

 

 

Link to post

Delta i diskusjonen

Du kan skrive innlegget nå, det vil bli postet etter at du har registrert deg. Logg inn hvis du allerede er registrert.

Guest
Svar på dette emnet

×   Du har postet formatert tekst..   Fjern formattering

  Only 75 emoji are allowed.

×   Innholdet du linket til er satt inn i innlegget..   Klikk her for å vise kun linken.

×   Det du skrev har blitt lagret.   Slett lagret

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...