482 761 läst · 1 879 svar
483k läst
1,9k svar
Elmätare, H1-port / P1-port / HAN-port (många namn verkar florera)
Medlem
· Stockholm
· 1 418 inlägg
Jag har nu fixat min läsare så den fungerar OK.B Bo Berglund skrev:Jag har fått hem de beställda regulatorerna under tiden men nu skall jag iväg igen så det blir testat senare.
Jag har också insett att en simpel RC-koppling på RESET nog är en dålig idé med tanke på strömförsörjningens problem, det borde vara något som håller ESP i reset tills allt stabiliserats och först då släpper loss systemet. Kanske ett par sekunder eller så..
Gjorde följande:
Hårdvara
- Bytte RJ-12-kabeln mot en ny med "rätt" längd och bättre kontakt. Den existerande hade problem att klicka fast i mätaren.
- Bytte ut de två dioderna som droppar från 5V till 3.6V som supply mot en dedicerad regulator TLV1117-33IDCY. Detta ger renare 3V3 spänning.
Firmware
- Lade till delay(2000) överst i setup() för att säkerställa att spänningen är stabil när ESP8266 börjar jobba
- Lade till delay(1) överst i loop() för att sänka strömförbrukningen (från 80 till 30 mA). Tidigare tillbringade koden mest tid i diverse servercheckar mot WiFi, vilket drar ström. Nu blir det mycket färre sådana eftersom den får en delay(1) varje varv.
Nu är den igång som det var tänkt och jag får mina data igen.
😀
Elektroniktokig
· Nårrrje ;-)
· 143 inlägg
Medlem
· Stockholm
· 1 418 inlägg
Jag skrev för fort...
Nu i kväll har den satt igång och resettar sig med några minuters mellanrum och sen går den ett tag och resettar igen. ????? 🤬
Ingen bestämd tid mellan starterna.
Det finns två anrop i koden till ESP.restart(); och den ena finns vid startup när den inte får tag på WiFi-routern. Då låter jag den vänta 1 sekund och sen starta om. Detta för att ifall jag får strömavbrott så startar ESP-modulen snabbare än routern när strömmen är tillbaka så den lyckas inte koppla upp.
Den andra har jag i loop() för att starta om efter 26 dygn.
Denna har jag tagit bort nu så nu finns där bara det anrop som görs vid startup().
Få se nu ifall den beter sig i natt...
Nu i kväll har den satt igång och resettar sig med några minuters mellanrum och sen går den ett tag och resettar igen. ????? 🤬
Ingen bestämd tid mellan starterna.
Det finns två anrop i koden till ESP.restart(); och den ena finns vid startup när den inte får tag på WiFi-routern. Då låter jag den vänta 1 sekund och sen starta om. Detta för att ifall jag får strömavbrott så startar ESP-modulen snabbare än routern när strömmen är tillbaka så den lyckas inte koppla upp.
Den andra har jag i loop() för att starta om efter 26 dygn.
Denna har jag tagit bort nu så nu finns där bara det anrop som görs vid startup().
Få se nu ifall den beter sig i natt...
Det är ju ALDRIG någon som påstått det. Om du inte vet hur dessa USB-kablar fungerar så låt bli att spekulera! Det hjälper ingen.B Bo Berglund skrev:
Tvärtom är fördelen att de går att använda till alla mätare, även de som måste förses med spänning för att fungera, då de tar spänning från hostdatorns USB-port.
/M
Medlem
· Stockholm
· 1 418 inlägg
För att komplettera redogörelsen:B Bo Berglund skrev:Jag skrev för fort...
Nu i kväll har den satt igång och resettar sig med några minuters mellanrum och sen går den ett tag och resettar igen. ????? 🤬
Ingen bestämd tid mellan starterna.
Det finns två anrop i koden till ESP.restart(); och den ena finns vid startup när den inte får tag på WiFi-routern. Då låter jag den vänta 1 sekund och sen starta om. Detta för att ifall jag får strömavbrott så startar ESP-modulen snabbare än routern när strömmen är tillbaka så den lyckas inte koppla upp.
Den andra har jag i loop() för att starta om efter 26 dygn.
Denna har jag tagit bort nu så nu finns där bara det anrop som görs vid startup().
Få se nu ifall den beter sig i natt...
Det ville inte heller funka utan jag fick omstarter speciellt under natten och idag alldeles för många.Ungefär en omstart varannan minut...
Så jag har gjort följande:
1) Jag införde kod för att mäta Vcc-spänningen regelbundet och skicka med MQTT.
Detta visade att det inte handlar om något spänningsproblem. Vcc ligger stabilt på 3.45V med väldigt små variationer. Mätning varje minut och direkt vid omstart.
2) Jag införde en mätning av WiFi-styrkan oftare än tidigare för att se variationerna.
Här såg jag att nivån var rätt låg även om jag fixade med antennen vid elmätaren (-85 till -89 dBm). Problematiskt.
3) Så jag bestämde mig för att modifiera WiFi-systemet genom att dra en längre kabel till WiFi-accesspunkten inomhus men närmast elmätaren och sätta den i fönstret mot gatan.
Nu fick jag upp nivån till mellan -80 och -73 dBm, och efter det har jag inte sett några omstarter.
Så troligen beror omstarterna på att den tappat kontakten med WiFi...
Har varit igång ett par timmar nu. Få se över natten hur det går.
Äntligen....fick även jag tag på en ny elmätere.
Det blir bra att kunna se belastningen/spänningen på faserna, men även få in totalmätningen enkelt i smarta-hemmet.
Blev ju sugen på microproduktion, bara för att nyttja fyrkvadrantfunktionen i mätaren 😊
Men lite tjorvigt att det verkar vara skillnad på hur datat läses ut beroende på vilken leverantör av mätare man har, knepig standard?
Nåja, jag har en rolig höst framför mig känns det som.
Det blir bra att kunna se belastningen/spänningen på faserna, men även få in totalmätningen enkelt i smarta-hemmet.
Blev ju sugen på microproduktion, bara för att nyttja fyrkvadrantfunktionen i mätaren 😊
Men lite tjorvigt att det verkar vara skillnad på hur datat läses ut beroende på vilken leverantör av mätare man har, knepig standard?
Nåja, jag har en rolig höst framför mig känns det som.
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Medlem
· Västernorrland
· 2 057 inlägg
Ett tips är att komplettera koden med att vid uppstart läsa anledningen till omstart och skicka denna uppgift i ett persistent mqtt-meddelande så fort det går att skicka. Då har man alltid tillgång till anledningen till senaste uppstart.B Bo Berglund skrev:För att komplettera redogörelsen:
Det ville inte heller funka utan jag fick omstarter speciellt under natten och idag alldeles för många.Ungefär en omstart varannan minut...
Så jag har gjort följande:
1) Jag införde kod för att mäta Vcc-spänningen regelbundet och skicka med MQTT.
Detta visade att det inte handlar om något spänningsproblem. Vcc ligger stabilt på 3.45V med väldigt små variationer. Mätning varje minut och direkt vid omstart.
2) Jag införde en mätning av WiFi-styrkan oftare än tidigare för att se variationerna.
Här såg jag att nivån var rätt låg även om jag fixade med antennen vid elmätaren (-85 till -89 dBm). Problematiskt.
3) Så jag bestämde mig för att modifiera WiFi-systemet genom att dra en längre kabel till WiFi-accesspunkten inomhus men närmast elmätaren och sätta den i fönstret mot gatan.
Nu fick jag upp nivån till mellan -80 och -73 dBm, och efter det har jag inte sett några omstarter.
Så troligen beror omstarterna på att den tappat kontakten med WiFi...
Har varit igång ett par timmar nu. Få se över natten hur det går.
Jag lägger mina pengar på att det är watchdog som rebootar och troligtvis i samband med mqtt reconnect. Mqtt i esp8266 är jättedålig på att hantera WiFi-bortfall. Vilket stödjs av indikationen att det sker vid dålig WiFi-kontakt.
Så här gör jag:P Putteman skrev:
https://www.homewizard.com/sv/butik/aktiv-p1-grenare/
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Medlem
· Stockholm
· 1 418 inlägg
Vet inte hur "folk" gör, men jag har pulat med detta i snart ett år nu på två installationer och med samma mjukvara för ESP8266-modulen tagen från GitHub på båda. Fast jag har ju kompletterat/modifierat koden...P Putteman skrev:
Nu har jag insett att man skall placera så lite som möjligt på den adapter som kopplas till mätaren!
Jag tänker nu programmera om båda enheterna så att de bara gör absolut minimum av jobb:
- Starta upp och koppla in WiFi samt skicka ett startmeddelande till MQTT-brokern.
Därefter:
- Läs HAN-meddelande från porten och skicka som det är via MQTT till en broker.
- Vänta sedan in nästa meddelande (alternativt sov i 60 s och vänta sedan på meddelande).
Allt annat som befintlig kod gör nu får sedan utföras av en MQTT-klient på servern eller nån annan stans.
Då kan man preparera data precis som man vill med en applikation som körs på tex en linux-server och skickar det man vill till en databas.
Medlem
· Stockholm
· 1 418 inlägg
Hur får man reda på orsaken till att den startade om?it-snubben skrev:
Så man kan skicka det som MQTT.
Efter reset så är väl all sådan information raderad?
Medlem
· Västernorrland
· 2 057 inlägg
Det var ett tag sedan jag gjorde något som behövde veta omstartsanledning men sök efter getResetReason() och prova om du får något användbart.B Bo Berglund skrev:
Elektroniktokig
· Nårrrje ;-)
· 143 inlägg
Med mindre du svært gjerne vil bygge koden selv, så har vi et godt alternativ:B Bo Berglund skrev:
Om du har laget din egen hardware med ESP8266 eller ESP32 kan du benytte vår firmware - som er åpent tilgjengelig. Du kan bygge/kompilere kildekoden selv, eller benytte ferdigbygget binærkode for ESP8266 og de fleste varianter ESP32.
https://github.com/UtilitechAS/amsreader-firmware
https://github.com/UtilitechAS/amsreader-firmware/releases
Reboot reason vil du da finne på Info-siden:
Medlem
· Västernorrland
· 2 057 inlägg
Det är sant att det finns problem med att ladda på med funktionaliteter i en esp8266 men den är mer kompetent än vad man kan tro. Bara man hanterar dess brister och förstår vad som orsakar problemen.B Bo Berglund skrev:
Det, i mitt tycke, det vanligaste misstaget är att göra massa onödiga beräkningar, sammanställningar och leveranser i varje loop. Man vill bearbeta direkt när data finns att beräkna på istället för att göra det när tid finns. Man lastar den med arbete hundratusentals gånger per sekund.
Det finns en watchdog som resetar ESPn om den inte föds inom en viss tid, vilket sker vid varje loop slut (och när man använder delay() ). Om loop tar för lång tid startar esp om.
Det betyder dock inte att ESP inte hinner med tyngre jobb. Tvärtom, om man sprider ut arbetet i tid så hinner den med mycket och om man gör upprepade onödiga matematiska beräkningar (dvs som ger samma resultat varje gång) en enda gång och sparar resultatet så slösar man inte tid.
Eventuell (teoretisk) lösning, är att göra olika sammanställningar/beräkningar i olika separata varv i loop. Det hinner ofta gå många varv i loop innan nästa data kommer in. Varv 1 gör man en beräkning, varv 2 en annan osv...