Gordijnen automatiseren met ESP8266 software problemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
Hallo!

Ik ben bezig met een projectje om mijn gordijnen te automatiseren met een ESP8266. Ik loop alleen tegen wat problemen aan waar ik niet uit kom!

Mijn systeem ziet er zo uit:
Brains:
- ESP8266 computer
- TMC2100 stepper motor

Gordijnen:
- NEMA 17 stepper motor
- Endswitch

Ik heb ze aan elkaar gekoppeld met een CAT 6 internet kabel.

De software die ik heb gemaakt werkt door te communiceren via MQTT naar Home assistant. Hiervoor heb ik in docker een Mosquitto MQTT server gemaakt.

Het probleem wat ik heb is echter dat de gordijnen totaal niet betrouwbaar zijn, ene dag werken ze wel. Andere dag werken ze niet (Ik heb een automatisering gemaakt dat ze met zondsondergang dicht gaan en zonsopkomst weer open) Nu heb ik het idee dat er iets in mijn software niet helemaal lekker zit, maar ik heb te weinig kaas hiervan gegeten om eruit te komen.

Nu vroeg ik mij af of jullie misschien een idee hadden wat ik misschien over het hoofd heb gezien.

Code klik hier :)

Acties:
  • 0 Henk 'm!

  • akatar
  • Registratie: September 2002
  • Laatst online: 16:06
Je zou eens een mqtt explorer kunnen draaien (op je telefoon of ergens anders op) dan kan je in ieder geval zien of het commando geweest is.

Acties:
  • 0 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
akatar schreef op woensdag 23 maart 2022 @ 17:30:
Je zou eens een mqtt explorer kunnen draaien (op je telefoon of ergens anders op) dan kan je in ieder geval zien of het commando geweest is.
Ja dat heb ik gedaan! De ESP stuurt een debug message als hij begint en de command ontvangt en als hij klaar is. Het vreemde is dat de ene keer reageerd heel de ESP niet meer. De andere keer stuur ik de command nog eens en doet hij het gewoon.

Heel vreemd!

Acties:
  • 0 Henk 'm!

  • akatar
  • Registratie: September 2002
  • Laatst online: 16:06
Dan weet je dat je het moet zoeken in de esp.

Acties:
  • 0 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
akatar schreef op woensdag 23 maart 2022 @ 18:55:
Dan weet je dat je het moet zoeken in de esp.
Ja, dat is dus ook mijn vraag. Ik heb het idee dat er iets in mijn code niet helemaal lekker loopt. Daarom heb ik die ook bijgevoegd.

Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 22:11

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Tja, een ESP die niet continu verbinding behoudt met de wifi is op zichzelf niet nieuw. Of heb je uitgesloten dat de verbinding wegvalt? Kun je wellicht opzoeken in je router, en anders de ESP elke X seconden een testbericht laten versturen via MQTT (hoewel je hiermee misschien ook wel voorkomt dat 'ie wegvalt).

Verzend de MQTT-messages verder met de retain-flag, zodat de ESP ze ontvangt als 'ie zich weer aanmeldt. Dan komt het iets minder precies aan.

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • +2 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 00:29

Gizz

Dunder-Mifflin, Inc.

Heb je ook al naar de hardware gekeken?

Denk aan:
  • Slechte voeding, waardoor de ESP crasht
  • ESP8266-bordje met slechte voltage regulators (tijdje terug waren er Wemos D1 clones met onderbemeten LDO's die met moeite de ESP8266 zelf konden voeden. Als er dan nog iets externs aangestuurd moest worden ging het vrij snel mis).
  • Slecht wifi-bereik op de plek van je ESP8266, waardoor de communicatie soms wel, soms niet succesvol is.
En je probeert niet je stepper drivers direct te voeden vanuit je ESP neem ik aan?

Verder lovenswaardig dat je de code helemaal zelf wil maken. Maar met kant-en-klare firmware zoals ESPEasy lijkt mij het debuggen wat eenvoudiger, omdat daar al ingebouwd is dat je de up-time van je ESP kunt zien, de kwaliteit van de wifi, reden van laatste reset enzovoorts.

[ Voor 6% gewijzigd door Gizz op 24-03-2022 10:06 ]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • SANDER_DeEchte
  • Registratie: Februari 2017
  • Laatst online: 09-05 16:40
Die MQTT library die je gebruikt werkt maar half. Zelf heb ik hem ook een keer gebruikt, maar hij is vaker niet verbonden dan wel verbonden.

In de github issues list https://github.com/knolle...open+sort%3Acomments-desc zie je dat heel veel mensen daar last mee hebben. Ik weet niet of er nou wel of geen oplossing was, maar misschien is er iemand in die lijst met een oplossing.

Acties:
  • 0 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
Thijsmans schreef op woensdag 23 maart 2022 @ 21:08:
Tja, een ESP die niet continu verbinding behoudt met de wifi is op zichzelf niet nieuw. Of heb je uitgesloten dat de verbinding wegvalt? Kun je wellicht opzoeken in je router, en anders de ESP elke X seconden een testbericht laten versturen via MQTT (hoewel je hiermee misschien ook wel voorkomt dat 'ie wegvalt).

Verzend de MQTT-messages verder met de retain-flag, zodat de ESP ze ontvangt als 'ie zich weer aanmeldt. Dan komt het iets minder precies aan.
Ik heb laatste dagen even gekeken wat de verbinding doet, volgens Unify is hij nu ruim 2 dagen verbonden. De MQTT messages worden met retain flag verstuurd. Vanmorgen bijvoorbeeld bleven alle gordijnen dicht. Ik heb daarna de kastjes ge-herstart en de gordijnen gingen meteen open. Ik heb helaas geen idee waarom. De ESP8266 waren allemaal verbonden!
Gizz schreef op donderdag 24 maart 2022 @ 09:56:
Heb je ook al naar de hardware gekeken?

Denk aan:
  • Slechte voeding, waardoor de ESP crasht
  • ESP8266-bordje met slechte voltage regulators (tijdje terug waren er Wemos D1 clones met onderbemeten LDO's die met moeite de ESP8266 zelf konden voeden. Als er dan nog iets externs aangestuurd moest worden ging het vrij snel mis).
  • Slecht wifi-bereik op de plek van je ESP8266, waardoor de communicatie soms wel, soms niet succesvol is.
En je probeert niet je stepper drivers direct te voeden vanuit je ESP neem ik aan?

Verder lovenswaardig dat je de code helemaal zelf wil maken. Maar met kant-en-klare firmware zoals ESPEasy lijkt mij het debuggen wat eenvoudiger, omdat daar al ingebouwd is dat je de up-time van je ESP kunt zien, de kwaliteit van de wifi, reden van laatste reset enzovoorts.
Ik heb deze voeding gekocht: https://www.kiwi-electron...2w-5-5x2-1mm-dc-plug-3740

Die zou overkill moeten zijn, aangezien de stepper motor max 1.5A zou moeten trekken.

De power input word gesplit, dus 12v naar de drivers en dan via een Buck converter word het 5v naar de ESP gestuurd.

Ik heb ook zitten kijken naar ESPHome, maar ik kreeg het niet aan de praat. ESPEasy heb ik nog nooit van gehoord. Maar ik heb het gevoel dat mij huidige code wel redelijk ok is maar dat er ergens misschien een bug zit in mijn aansluiting of misschien in de code die wellicht makkelijk is op te lossen.
SANDER_DeEchte schreef op vrijdag 25 maart 2022 @ 16:27:
Die MQTT library die je gebruikt werkt maar half. Zelf heb ik hem ook een keer gebruikt, maar hij is vaker niet verbonden dan wel verbonden.

In de github issues list https://github.com/knolle...open+sort%3Acomments-desc zie je dat heel veel mensen daar last mee hebben. Ik weet niet of er nou wel of geen oplossing was, maar misschien is er iemand in die lijst met een oplossing.
Dat zou ook nog wel een goede kunnen zijn, ik heb ook niet volledig vertrouwen in dat de MQTT library werkt naar behoren, heb je een alternatief? Wat heb jij gebruikt?

Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 22:11

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

EspMQTTClient klinkt als een logische optie :P

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
Maar die is ook op dezelfde PubSubClient Library gebaseerd toch?

Ik heb wel wat anders gevonden, het lijkt dat een van de dingen is de limitswitch die een beetje raar reageerd. Af en toe zegt hij dat hij geactiveerd is zonder dat hij ingedrukt is. Zou het kunnen komen dat D5 (GPIO14) wat foute waardes doorgeeft? Of mischien de manier dat ik de limitswitch heb aangesloten? (NO naar GND -> D5)

Acties:
  • 0 Henk 'm!

  • bouwfraude
  • Registratie: Februari 2004
  • Niet online
SANDER_DeEchte schreef op vrijdag 25 maart 2022 @ 16:27:
Die MQTT library die je gebruikt werkt maar half. Zelf heb ik hem ook een keer gebruikt, maar hij is vaker niet verbonden dan wel verbonden.
De pubsup versie die ik gebruik doet het al jaren. Een thermometer in de schuur verstuurd iedere paar minuten de waarde als erom gevraagd wordt en schakelt de tuinverlichting aan. Ik lees er modbus rtu mee uit en zet dat om naar mqtt die draait anderhalf (2?) jaar zonder onderbreking.

Acties:
  • +1 Henk 'm!

  • wesselvs
  • Registratie: Oktober 2020
  • Laatst online: 19:57
Het lijkt erop dat ik de oorzaken heb gevonden.

1) MQTT probleem : Er zat geen re-connect functie in het script om de verbinding te controleren met de MQTT server.
2) De limitswitches: De limitswitches die willekeurig ingedrukt werden. De ezButton library zou gebruik maken van de internet Pull-Up resistor. Ik denk dat deze niet zo betrouwbaar is op de ESP8266 modules die ik gebruik, Ik heb nu een externe Pull-Up resistor ertussen gezet en het lijkt allemaal een stuk betrouwbaarder te werken!

De laatste paar dagen gaan alle gordijnen netjes open en dicht bij zondsopkomst en ondergang. Hopen dat dit ook echt het probleem was!
Pagina: 1