westerholt.me

ESP-01 und DeepSleep

Bei einer meiner Basteleien habe ich mich mit dem Strombedarf des ESP8266 in der Bauform ESP-01 beschäftigt. Im normalen Betrieb verbraucht dieser etwa 150 mA mit Spitzen bis 210 mA. Für den Betrieb am Kabel ist das sparsam genug. Ich wollte jedoch lieber einen Sensor „off the grid“ (also mit Batterie) betreiben, und da ist das leider irre viel. Zum Vergleich: Eine normale 9V Batterie hat nur etwa 500 mAh. Dann wäre nach wenigen Stunden bereits die Batterie leer.

Bei einem Sensor, der nur alle 15 Minuten einen Wert misst und über WLAN überträgt, würde der Chip die meiste Zeit gar nichts zu tun haben. In dieser Zeit könnte er also problemlos schlafen und Strom sparen. Das lässt sich in der Theorie auch leicht bewerkstelligen, denn der ESP8266 unterstützt verschiedene Sleep Modes. Der für mich interessante war der DeepSleep. Dabei wird wirklich alles abgeschaltet, das heißt dann aber auch, dass nach dem Aufwachen erst wieder eine WLAN Verbindung hergestellt werden muss, was eine gewisse Zeit in Anspruch nimmt und daher auch wieder Energie kostet. Bei sehr kurzen Schlafzyklen würde sich das irgendwann nicht mehr lohnen.

Den Deep Sleep kann man einfach über ESP.deepSleep(sleepTime * 1000000) aktivieren. sleepTime sind hier die Sekunden. Das ganze geht auch über das AT Command AT+GSLP=x Millisekunden.

Nach Ablauf der Zeit wird über den GPIO16 der Trigger zum Aufwachen gesendet. Und da liegt das Problem. Beim ESP-01 ist dieser PIN nicht verbunden. Dieser müsste mit dem Reset (RST) PIN verbunden sein, damit der ESP-01 nach dem Ablauf der Sleep Time resettet wird. Das ganze kann man zum Glück fixen. Dazu muss vom ESP8266 Modul der GPIO16 mit dem RST Pin Verbunden werden:

Fix für den ESP8266 Deep Sleep

Fix für den ESP8266 Deep Sleep

Das ganze ist etwas fummelig, aber machbar. Für etwas komplexere Projekte würde ich (seit dem ich das nun weiß 🙂 ) jedoch lieber zum ESP-12 greifen. Der hat auch den Vorteil, dass dort mehr GPIOs nutzbar sind. Und GPIO16 ist dort auch schon herausgeführt, sodass man sich diesen Hack sparen kann. Allerdings ist der ESP-12 auch ein klein wenig teurer. Es ist also letztlich immer eine Abwägungssache.

 

WLAN für Bastelprojekte mit dem ESP8266

Ich habe vor einiger Zeit bereits über den fantastischen Funkchip nRF24L01 geschrieben, mit dem auf einfache (und sehr günstige) Art und Weise die eigenen Hobbyprojekte über Funk vernetzt werden können. Daran hat sich auch nichts geändert, allerdings gab es für mich zwei Gründe nun doch einen anderen Chip zu verwenden.

Auch wenn es sich meistens nicht um besonders sensible Daten handelt, hätte ich dennoch gerne eine verschlüsselte Funkübertragung für manche Sachen. Das wäre mit dem nRF24L01+ nicht so einfach zu lösen und außerdem gibt es ja bereits auch verschlüsselte Funkstandards. Der andere Punkt ist, dass ich mit dem nRF24L01 immer auch einen Empfänger irgendwo anstöpseln muss, damit die Daten von einem leistungsfähigeren Server verarbeitet werden können.

Beide Probleme löste für mich das WLAN Modul ESP8266. Es unterstützt das normale WLAN Protokoll, kommuniziert also direkt mit meinem WPA2 verschlüsselten WLAN Netz und braucht daher auch keinen gesonderten Empfänger, da es über den ohnehin vorhandenen WLAN Router direkt z.B. eine REST API im Internet oder Heimnetz aufrufen kann.

Das ESP8266 Modul gibt es als fertigen Chip für etwa 2 € aus dem fernen Osten. Die Chips haben eigene Bezeichnungen. So ist der ESP-01 in der gleichen „Bauform“ wie der nRF24L01 aufgebaut. ESP-12 ist ein Chip, der mehr GPIO des Moduls über PINs nach außen führt und daher eine breitere Einsatzmöglichkeit bietet.

Nach einer kurzen Eingewöhnung kann ich behaupten, der ESP8266 ist mein neuer Lieblings-Hobby-Funkchip 🙂

Die FrOSCon findet dieses Jahr vom 20. bis 21. August statt. Das Programm ist seit kurzem Online: https://froscon.de

Alle Subscriber einer Mailingliste

Ich verwalte für meinen Verein einige Mailinglisten, die mit Mailman (Open source … yay 🙂 ) betrieben werden. Dabei kommt es gelegentlich vor, das diese mit anderen Datenbeständen abgeglichen werden müssen. Über das Webinterface kann man sich die Abonnenten zwar auch anzeigen lassen, allerdings können sie von dort nicht so leicht exportiert werden, da sie nach Buchstaben sortiert auf Unterseiten dargestellt werden.

Viele einfacher geht das ganze mit

./list_members LISTENNAME

Zu finden unter /usr/lib/mailman/bin oder ähnlichem Pfad, je nach Distribution.

JRE Setup Bug

Der aktuelle Installer von Oracle Java Runtime Environment (JRE) 8 hat ein merkwürdiges Verhalten, was meiner Meinung nach ein Bug sein muss.

Der eigentliche Installer (.exe) ist nur ein Wrapper für ein MSI Paket. Sowohl den Wrapper als auch das MSI kann man mit Parametern oder einer Config Datei aufrufen. Das funktioniert alles auch prima, zumindest solange wie es manuell z.b. über Kommandozeile gestartet wird.

Wird genau der gleiche Aufruf über SCCM als Paket verteilt und ausgeführt, schlägt das Setup mit dem Error Code 1603 fehl. Wenn man vorher die Datei c:/ProgramData/Oracle/Java/java.settings.cfg erstellt, funktioniert alles. Hää? Der Installer hätte die Berechtigung die Datei selbst zu erstellen?!

In der java.settings.cfg stehen auch nur die Einstellungen, die dem Installer übergeben werden (SILENT=Enable etc.).

Ich kann es mir nicht erklären …

« Older posts

Copyright © 2016 westerholt.me

Up ↑