ESP8266 - Tür und Fenster Sensor/Alarm mit sehr geringem Standby verbrauch (<1µA)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • bird: Es gibt Versionen des ESP8266-12, bei denen GPIO04 und GPIO05 vertauscht sind. Ich hatte das auch schon bei einem Exemplar und habe mich gewundert, dass der ESP nicht so arbeitet wie er soll. Aber wie Du schon geschrieben hast, kann man das sehr einfach in der Software ändern.

  • ESP8266 - Tür und Fenster Sensor/Alarm mit sehr geringem Standby verbrauch (<1µA)? Schau mal ob du hier fündig wirst!

  • So, bei mir läuft jetzt alles und funktioniert (fast) einwandfrei. Auf einen Tasterdruck hin wird das Pushingbox-Szenario ausgelöst, welches mir per Pushbullet eine Mitteilung auf den PC und das Handy schickt. Der Akku kann direkt auf der Platine per USB geladen werden. So kann z. B. zum Laden eine Powerbank angeschlossen werden.

    Vielen, vielen Dank für die Entwicklung und die sehr gute Dokumentation.

    Der ganze Aufbau war dann doch einfacher als gedacht. Ein paar Probleme gab es aber schon. So waren GPIO04 und GPIO05 vertauscht, was sich aber einfach im LUA-Skript ändern ließ. Dann hatte ich nicht bedacht, dass beim Spannungsregler LT1763 der Sensor-Pin mit OUT verbunden werden muss. Das führte dazu, dass der ESP mit zu hoher Spannung versorgt wurde. Außerdem war es das erste Projekt mit einem Mikrocontroller. Ich habe die Firmware mit Arduino-IDE kompiliert und ewig nach der .hex-Datei gesucht, die sich im temp-Ordner von Windows befand. Die Referenzspannung des ESP musste ich empirisch ermitteln, damit die richtige Akkuspannung ausgegeben wurde. Bei meinem Modul liegt sie bei etwa 1,005V, bzw. war das der Wert, mit dem die richtige Spannung ausgegeben wurde.

    Also, ich bin sehr zufrieden. Einzig die WLAN-Stärke wird nicht richtig ausgegeben. Ich erhalte immer nur eine 0. Woran kann das liegen? Außerdem wäre es schön, wenn Datum und Uhrzeit wie beim Briefkasten-Projekt angezeigt werden.


    Super Projekte! :danke_ATDE:

  • >Also, ich bin sehr zufrieden. Einzig die WLAN-Stärke wird nicht richtig ausgegeben

    nur eine Zelle?

    wo ist deine 5V Versorgung für USB?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • Ist eine Li-Ion Zelle. Später im Gehäuse kommt ein Lipo-Akku ran.
    Was meinst du mit 5V Versorgung? USB ist nur zum Laden des Akkus mit dem TP4056 gedacht.

    ich blicke nicht mehr durch,

    wlan?
    Li akku?
    Wandler?

    Der TO hat ein Bauvorhaben gepostet, du modifizierst und bringst andere Komponenten rein, also wenn du Fragen hast dann bitte stelle deinen gesamten Aufbau in Wort und Bild vor, wer helfen mag möchte sich nicht die Brotkrumen zusammen suchen aus verschiedenen Postings.

    Wlan Adapter typisch am USB brauchen 5V. Das ESP braucht nur 3,3V der PI braucht nur 3,3V aber was wenn der ESP zuviel schluckt? was wenn du naoch was am USB hast?

    Deswegen wenn Fragen von dir zu deine Config auftauchen DANN stelle uns alle relevanten Infos zur Verfügung sonst:


    So, bei mir läuft jetzt alles und funktioniert.....Super Projekte! :danke_ATDE:

    braucht ja keiner mehr was zu schreiben ;)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Das einzige, das ich am vorgestellten Projekt geändert habe, ist das Hinzufügen der Lade- und Schutzschaltung des Akkus. Das ganze sieht man auf der Rückseite der Platine. Der Akku kann dadurch z.B. mit einem 5V Handynetzteil geladen werden. Das kann man sich auch wegdenken. Ich wollte nur eine Anregung geben.
    Der Wandler LT1763 ist eine Alternative zu den AS1363 und SPX3819. Der war leichter zu beschaffen, hat aber ein anderes Gehäuse. Hier wurde er von joh.raspi erwähnt.

    Mein Problem bezog sich nicht auf die Hardware sondern auf die Software. Die WLAN-Stärke (%rssi%) wird mir bei Pushingbox/Pushbullet und im ESPlorer nur mit 0(0%) ausgegeben.

    So richtig verstehe ich deine Verwirrung und Fragen nicht. Vielleicht liegt das auch daran, dass ich mit meinem Kopf zu sehr im Projekt stecke und den Wald vor lauter Bäumen nicht sehe.

    Einmal editiert, zuletzt von bird (3. Februar 2016 um 13:59)

  • Hey bird,

    Das Board sieht ja super aus. Gut gemacht. :thumbs1:
    Modifikationen usw. sind natürlich gerne gesehen! Ich hab hier extra alle möglichen Erweiterungen weggelassen damit man das ganze leichter nachvollziehen kann. Dran bauen ist ja immer einfacher. ;)

    Freut mich dass du es auch so schnell zum laufen gebracht hast und meine Anleitung brauchbar ist.

    Das Problem mit GPIO4 und GPIO5 ist ja bekannt, ich werd im Schaltplan aber nochmal explizit darauf hinweisen.

    Der LTC ist eigentlich ziehmlich genial. Allerdings bleiben seine Stärken(Sehr hohe Eingangsspannung, Geringer Eigenverbrauch im aktiven Zustand) bei diesem Projekt komplett ungenutzt.
    Der Pin heißt übrigens nicht Sensor Pin sondern "Sense" Pin. :)

    Was hast du denn für ein Programmiergerät dass du die .hex brauchst? Geht das nicht auch über die Arduino IDE direkt?

    Was ich noch vergessen habe zu erwähnen ist dass für die Spannungsmessung Präzisions Widerstände verbaut werden sollten da die gemossene Spannung unter den verschiedenen Bedingungen(Temperatur) sonst zu stark verfälscht wird.

    Die interne Referenzspsannung lässt sich recht einfach mit einem 10K Poti + Multimeter ermitteln. Einfach ein paar Zeilen Code die nichts weiter machen wie den ADC Wert bspw. alle 100ms über den UART auszugeben auf den ESP ladaen und am Poti so lange drehen bis der ADC Wert zwischen 1023 und 1024 schwankt. Anschließend die am ADC Pin (Poti Schleifer) anliegende Spannung mit dem Multimeter messen und schon hat man die Referenz Spannung. Mit einem größeren Poti (mehr Ohm) klappt das ganze zumindest mit meinem Multimeter nicht da es dann beim anlegen immer den im Terminal ngezeigten Wert verfälscht hat.

    Das mit der Wlan Signalstärke sollte eigentlich schon funktionieren. Habs zur sicherheit grad nochmal mit Pushingbox getestet.
    Ausser nochmal die Schreibweise der Variable ($rssi$) zu prüfen fällt mir da jetzt auch nichts ein.
    Du könntest sonst aber mal folgende Zeilen im ESPlorer testen: (Es muss nur die SSID angepasst werden)

    Auf Datum und Uhrzeit hab ich hier der einfachheit halber bewusst verzichten. Ausserdem wäre das hauptsächlich für Pushingbox interessant. Bei IFTTT kann man Uhrzeit und Datum bspw. generell auch so einbauen lassen.
    Ich schreib dir aber gerne eine kurze Anleitung wie sich das ganze um diese Funktion erweitern lässt.

    DON'T PANIC!


  • Was hast du denn für ein Programmiergerät dass du die .hex brauchst? Geht das nicht auch über die Arduino IDE direkt?

    Ich habe den µISP-Stick. Ich hatte ein paar Programme ausprobiert und mich dann für avrdude entschieden. Ich habe keine Möglichkeit gefunden, den Programmer in Arduino IDE einzubinden. Mit avrdude ging alles abgesehen von Schreibfehlern relativ problemlos.


    Was ich noch vergessen habe zu erwähnen ist dass für die Spannungsmessung Präzisions Widerstände verbaut werden sollten da die gemossene Spannung unter den verschiedenen Bedingungen(Temperatur) sonst zu stark verfälscht wird.

    Den 47k Widerstand hatte ich leider nicht als Präzision. Allerdings habe ich den selektiert. Ich überprüfe später nochmal, ob die Spannung abweicht, dann tausche ich den noch aus.



    Die interne Referenzspsannung lässt sich recht einfach mit einem 10K Poti + Multimeter ermitteln.

    Danke für die Erklärung. Irgendwo hattest du ja geschrieben, dass du die Erklärung nachreichst.

    Das mit der Wlan Signalstärke sollte eigentlich schon funktionieren.

    Ich bekomme ja sowohl bei Pushingbox als auch beim ESPlorer etwas ausgegeben, aber ebn nur eine "RSSI: 0 (0%)".


    Du könntest sonst aber mal folgende Zeilen im ESPlorer testen:

    Das hat funktioniert. Bekomme ich das irgendwie eingebaut?



    Auf Datum und Uhrzeit hab ich hier der einfachheit halber bewusst verzichten. Ausserdem wäre das hauptsächlich für Pushingbox interessant. Bei IFTTT kann man Uhrzeit und Datum bspw. generell auch so einbauen lassen.
    Ich schreib dir aber gerne eine kurze Anleitung wie sich das ganze um diese Funktion erweitern lässt.

    Eine Anleitung wäre super. Bei Pushbullet ist es schwierig, die genaue Uhrzeit der Meldung herauszufinden, bzw. sieht man das nicht auf den ersten Blick. Ich habe schon versucht, etwas aus dem Skript vom Briefkasten-Projekt einzubauen, aber dafür reichen meine Kenntnisse bei weitem nicht aus.
    Automatisch zusammengefügt:
    Ok, das Problem mit der Anzeige der Wlan-Stärke scheint sich gelöst zu haben. Ich habe bei der Fritzbox die Sendeleistunng erhöht und den Kanal geändert. Woran es genau lag, kann ich nicht sagen. Bei 6% Leistung und Kanal 1 funktioniert es nicht, ebenso nicht bei 100% und Kanal 13. Mit Kanal 1 und 100% ging es plötzlich. Mal sehen, wie stabil das ist.

    Einmal editiert, zuletzt von bird (3. Februar 2016 um 22:32)

  • Hab grad mal wegen dem µisp geschaut. Der müsste sich schon über die IDE nutzen lassen. Die Arduino IDE macht auch nichts anderes wie avrdude aufzurufen.
    Stell mal bei Programmer "USBtinyISP" ein und versuchs mal so.

    Wie jetzt. Wenn du die Zeilen im ESPlorer testest wird das richtige angezeigt und sonst nicht?

    Ich hatte damit eigentlich noch keine Probleme. Hab aber noch nicht allzu viel tests bezüglich der Reichweite gemacht.
    Bei meinen Sensoren hab ich das auch nur am Anfang testweise aktiviert. Als ich gesehen habe wie gut der Empfang ist hab ich es wieder deaktiviert.
    Hab mir überlegt das über einen Jumper aktivier bzw. deaktivierbar zu machen.

    Hier mal wie das mit der Signalstärke einer meiner Sensoren im test aussah:


    Ich teste das mit der Uhrzeit bis Morgen mal selber und schreibe das kurz zusammen.

    DON'T PANIC!

  • Mit dem Mikrocontroller probiere ich beim nächsten Projekt oder Update. Ich hatte mich da früher nie rangetraut und für kleinere Aufgaben wie mit einem Taster schalten einen riesen Aufwand betrieben. Jetzt nur noch ein bisschen C lernen und dann läuft das. ;)

    Die Wlan-Anzeige würde ich auch später wieder deaktivieren. Ich habe nur jetzt in der Testphase unglaubliche Probleme mit dem Empfang. Ich wohne im 2. OG eines Mietshauses und bekomme keine Verbindung unten am Briefkasten (Ich nutze das Projekt ja als Postmelder). Jetzt, da die Wlan-Anzeige funktioniert, probiere ich etwas rum. Einen Stock höher als der Briefkasten habe ich mit dem ESP07 mit entfernter Keramokantenne und externer 5dBi-Antenne gerade so Empfang (50%). Direkt vor dem Router sind es 160%. Morgen stelle ich mal den Router um und probiere nochmal.


    Ich teste das mit der Uhrzeit bis Morgen mal selber und schreibe das kurz zusammen.

    Vielen Dank für deine Mühe.

    Einmal editiert, zuletzt von bird (4. Februar 2016 um 00:13)

  • Und, reichts? :)
    Ich wohne im im Erdgeschoss, da ist es zum Briefkasten nicht soo weit.

    Uhrzeit+Datum sind integriert. Hier der Link zur angepassten Version: (Jetzt weiß ich auch wie das mit den branches funktioniert. :) )
    https://github.com/8n1/ESP8266-Ti…e/date-time_mod

    Zu erklären gibt es eigentlich nicht viel.
    Du musst einfach nur alle Luaskripte bei denen "date-time mode" dabei steht (insgesamt 5 EDIT: 6) nochmal neu hochladen und kompilieren. Davor wieder die config.lua und pushingbox_request.lua anpassen.

    Was für Variablen dazu gekommen sind steht am Anfang der pushingbox_scenario.lua.

    Der Server von dem die Zeit geholt wird muss ein Webserver sein, darf also bspw. kein NTP Server sein (über NTP dauerte es mit den verschiedenen Beispielen die ich getestet hab viel zu lange)
    Winter und Sommerzeit werden nicht berücksichtigt.

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (5. Februar 2016 um 18:29)

  • Also, im Briefkasten habe ich jetzt gerade so Empfang, dafür aber nur sehr schlechten am Schreibtisch. Da muss ein Repeater her.


    Danke für die Zeitfunktion. Nach ungefähr 100 Versuchen bekomme ich das nicht hin.
    Meine Fritzbox stellt die Zeit zur Verfügung. Mit deren IP bekomme ich im ESPlorer die folgende Meldung:


    Mit einer Adresse von Google bekomme ich folgende Meldung:

    Code
    Getting time...
    PANIC: unprotected error in call to Lua API (cannot open parse_date.lc)
    PANIC: unprotected error in call to Lua API (attempt to call a string value)
    ü!†MÕþ2­¦é<1P)Ì
    í)ýè

    Was dazu führt, dass das Skript endlos läuft.


    Mit einem NTP-Server, den ich ja nicht verwenden soll, sieht es so aus:

    Code
    Getting time...
    Time over: Could not connect to: 129.6.15.30 ...
    
    
    Trying to send the API request anyway...


    Was ist da los? Habe ich einfach nur die falsche Adresse eingegeben?

  • Ach mist, tut mir leid. Da fehlt noch ein Skript:
    https://github.com/8n1/ESP8266-Ti…/parse_date.lua
    Hochladen und kompilileren, dann müsste es zumindest mit der IP von google klappen. Habs grad nochmal getest.


    Der Grund wieso es mit der Fritzbox oder vielen anderen Routern nicht klappt ist dass die aus irgendeiniem Grund keinen "Date" Header mitsenden.
    Der Code ist aber auf diesen Header angewiesen denn er macht eigentlich nichts anderers wie genau diesen "Date" Header auszuwerten.

    Der Versuch mit der IP von google hätte bestimmt geklappt wenn ich die parse_date.lua nicht vergessen hätte mit hochzuladen. :shy:

    NTP funktinoiert komplett anders. Da kommt ja auch kein HTTP zum einsatz sondern NTP. Einen "Date" Header den man so einfach auswerten könnte gibt es da nicht.
    Bei NTP muss man sich zuerst mit dem Server synchronisieren, anschließend bekommt man einen Timestamp den man dann weiterverabeiten kann.

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (5. Februar 2016 um 18:30)

  • Danke, danke. Jetzt funktioniert es.
    Heute kam der Li-Po-Akku (740mAh), der ist jetzt im Gehäuse verschwunden. Morgen hole ich den Reed Switch ab und nehme noch einen Präzisionswiderstand mit. Dann wird der Briefkasten umgebaut. Ich habe nämlich dummerweise keine Klappe dran.
    Dann warte ich noch auf den Repeater und dann kann es aber losgehen. :)

    Wenn alles klappt, wird das schon eine echte Hilfe sein. Wenn ich wichtige Post erwarte, fahre ich hin und wieder extra zur Wohnung,um den Briefkasten zu checken. Meist ist dann doch nichts drin.

    Also nochmal 1000 Dank für die Dokumentation und die anschließende Hilfe.

  • Hey super. Und bitte bitte. :)

    Über einen umbau wären sie bei uns glaub nicht so erfreut. Wobei, solange das von aussen nicht ersichtlich ist... :D

    Dann drück ich dir die Daumen dass das mit dem Repeater klappt.

    Wenn dir im Betrieb noch was auffällt oder du noch ein Feature brauchst sag bescheid. :)

    DON'T PANIC!

  • So, jetzt sage ich nochmal Bescheid. :D
    Bisher läuft alles sehr verlässlich: keine Fehlmeldungen und alle Briefe bzw. Werbesendungen werden sicher erkannt.

    Absoluter Luxus wäre, wenn ich noch wüsste, was eigentlich im Briefkasten ist. Beim Briefkastenprojekt wurde das ja schon mit der Axis IP Cam realisiert.
    Könnte man nicht auch so eine kleine TTL Kamera integrieren (evtl. mit IR Leds)? Die braucht 3,3V und man müsste einfach nur -soweit wie ich das sehe- TX und RX an das ESP-Modul anschließen. Eigentlich dürfte sich dann an der Hardware nichts weiter ändern. Die Kamera wird dann genau wie das ESP erst durch die Klappe/Fenster/Tür mit Strom versorgt.
    Ich stelle mir das so vor: Die Klappe wird geöffnet, dann gibt es eine Zeitverzögerung von vielleicht 10 Sekunden. Die Kamera macht ein Foto, welches irgendwo hochgeladen wird. Je nach dem wie lange das Hochladen dauert, sendet das ESP alle Daten an den hinterlegten Service. Bei z. B. Pushingbox kann man eine Adresse für ein Bild hinterlegen und dieses in die Nachricht integrieren.
    Das Ganze wäre ja auch für den Tür- und Fenster-Alarm interessant.

    Hier hat jemand mal was ähnliches gemacht.

  • Hey, freut mich. :)

    Die Idee mit der seriellen Kamera kam mir auch schon. Ist aber gar nicht so einfach. Man kann bei Pushingbox beispielsweise nicht direkt ein Bild mit schicken sondern nur einen Link hinterlegen. Das Bild wird dann immer bevor es die Email verschickt heruntergeladen und der Email angehängt.
    Das Bild muss daher über eine öffentlich zugängliche URL abrufbar sein was aber imho Privatsphäre-technisch eher fragwürdig ist.
    Die URL bzw. das Bild müsste daher vor einem unbefugten auslesen irgendwie geschützt werden. (bspw mit einem API key)
    Es gibt aber bestimmt Online Services die das erlauben.
    Was auch gehen müsste ist den ESP als Bilder Server zu verwenden und über eine Portweiterleitung kurz von ausserhalb erreichbar zu machen.

    Die Kamera soll laut beschreibung bis zu 30 Sekunden brauchen bis sie das Bild gemacht hat. Leider steht nicht dabei was für Unterschiede (zeitlich) es da bei verschiedenen Auflösungen gibt.
    Im von dir verlinkten Artikel hab ich aber grad noch folgendes gefunden:

    Zitat


    1 picture Each 5 seconds at 160 × 120


    Was ja ganz ok wäre. Kommt aber sehr auf das Einsatzszenario an.

    Die Idee hat durchaus was, hatte bisher aber noch nicht soo dass verlangen danach. :) Und nur um mal ein bischen damit zu experimentieren war mir das Modul dann doch etwas zu teuer.
    Ich könnte jetzt aber auch gar nicht abschätzen wie lange ich für sowas brauche und ob es noch irgendwelche Stolpersteine gibt die es zu beachten gibt.
    Ich werds aber auf jeden Fall noch testen, voraussichtlich aber nicht allzu bald. Bin aber recht zuversichtlich das es kappen wird.

    DON'T PANIC!

  • Hi,
    Thx für den Tipp. :)
    Sieht aber auf den ersten Blick um einges aufwändiger(Code/Hardware) als mit so einer UART TTL Kamera.
    Werd ich mir demnächst aber mal genauer anschauen.

    Die max. Spannung ist was ich gesehen hab auch 3.0V. Man müsste da dann wohl am besten die Versogrungsspannung des ESP angleichen.

    DON'T PANIC!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!