Feinstaubsensor – Teil 5: Konfigurationsdaten löschen

Die Konfigurationsdaten des Feinstaubsensors löschenbraucht man das? Im Normalfall nicht und wer nicht explizit ein Problem damit hat, eine fehlerhafte Konfiguration nicht mehr weg zu bekommen, der kann dieses Kapitel getrost überspringen. Wichtig zu wissen ist vielleicht, was mit Konfigurationsdaten des Feinstaubsensors überhaupt gemeint ist. Das sind die Daten, die sich über die Web-Konfigurationsoberfläche des Feinstaubsensors eingeben lassen, also vor allem WLAN-Netz und Passwort. So lange man Zugang zu dieser Weboberfläche hat ist alles in Ordnung und man kann darüber alle Daten ändern. Nur wenn das nicht mehr klappt, dann kann das Löschen aller Konfigurationsdaten das System quasi in den Urzustand zurück versetzen.

Ich verweise hier wieder auf die originale Anleitung des Stuttgarter Feinstaub Projekts, die man in jedem Fall gelesen haben sollte, auch wenn sie sich zu diesem Thema ziemlich ausschweigt. Lediglich im Feinstaub-Sensoren-Wiki das im Footer der Projektseite verlinkt ist, finden sich die beiden Löchmethoden, die ich nachfolgend auch vorstelle.

Ich wäre vermutlich überhaupt nicht auf die Möglichkeit gestoßen, dass man eine komplette Konfiguration löschen kann, wenn ich mich nicht saudumm selber ausgetrickst hätte. Und das ging so:

Mein NodeMCU-Board war geflasht und ich hatte mich mit dem Smartphone an den internen WLAN-Accesspoint des Feinstaubsensors connected. Experimentell habe ich dort nicht mein eigenes WLAN-Netz konfiguriert, sondern ein Freifunk-Netz. Das kann man durchaus machen – aber …

Die Feinstaub-Firmware hat die Eigenschaft nur dann einen eigenen WLAN-Accesspoint anzubieten, wenn keine gültigen WLAN-Daten konfiguriert sind, bzw, wenn dieses WLAN nicht erreicht werden kann. Mein konfiguriertes Freifunk-WLAN war aber sehr wohl erreichbar, allerdings hatte ich keinen Zugang zum Freifunk-Router, um die IP-Adresse des Feinstaubsensors in Erfahrung zu bringen. Und somit konnte ich nicht mehr per WLAN auf den Feinstaubsensor zugreifen. Ich hatte mich quasi selber ausgesperrt.

Meine erste und naheliegende glorreiche Idee war es dann, einfach die NodeMCU neu zu flashen um alles mit dem Werkszustand zu überschreiben. Interessanterweise hat das aber nichts bewirkt, der Feinstaubsensor hat sich nach wie vor mit dem Freifunk-Netz verbunden. Die Konfigurationsdaten mit den Zugangsdaten zum WLAN müssen also an einer Stelle liegen, die durch Flashen der Firmware nicht überschrieben wird.

Internet Recherche hat dann ergeben, dass dieser ESP8266-Chip auf unserem NodeMCU-Board ein verdammt schlaues Kerlchen ist. Der hat nicht nur WLAN an Board, sondern bietet weitere tolle Funktionen wie Over-the-Air-Update (quasi das Flashen von Updates über WLAN) und ein Flash File System (SPIFFS). Dieses SPIFFS ist auch des Rätsels Lösung, denn da wird ein Teil des Flash Memory dazu verwendet, um ein Dateisystem nachzubilden, in dem dann Dateien abgelegt werden können, wie auf einer Festplatte. Und dieser Bereich wird durch Flashen eines Sketches nicht überschrieben, da er sich an einer anderen Speicheradresse befindet. Wenn ich die Daten richtig interpretiere, die weiter unten beim Überschreiben des Flash File Systems ausgegeben werden, dann teilen sich die 4MB Flash Memory unseres NodeMCU 1.0 Boards wie folgt auf: 1MB für den Sketch (also das Programm) und 3MB für das File System.

SPIFFS Flash File System überschreiben

Ähnlich wie beim Flashen der Firmware gibt es hier zwei Methoden:

Methode A: Konfiguration löschen per Kommandozeile mit esptool

Das Esptool war eine der Alternativen um die Feinstaub-Firmware zu flashen. Mit diesem Tool können wir aber auch das Flash File System überschreiben, wir brauchen nur eine geeignete Datei dazu. Und die gibt es auf den Feinstaub-Seiten bei Github.

Link: https://github.com/opendata-stuttgart/sensors-software

Hier gehen wir in das Verzeichnis der aktuellen Feinstaub-Firmware. Im Sommer 2017 heißt das airrohr-firmware. Und von dort laden wir uns die Datei ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin im Raw-Format herunter. Wer vorher beim Flashen der Firmware schon das ganze Projekt downgeloadet hatte, der hat die Datei bereits unter Arduino/sensors-software-master/airrohr-firmware auf der Festplatte liegen und braucht sie nicht nochmal herunterladen.

Die Arduino IDE muss beendet werden, dann können wir mit Esptool flashen. Hier auf die Speicheradresse bei -ca achten, die lautet anders als beim Flashen der Firmware. Bei -cf wird der Pfad zur spiffs.bin Datei angeben.

$ ~/.arduino15/packages/esp8266/tools/esptool/0.4.9/esptool -vv -cd nodemcu -cb 57600 -ca 0x100000 -cp /dev/ttyUSB0 -cf ~/Downloads/ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin
esptool v0.4.9 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
	setting board to nodemcu
	setting baudrate from 115200 to 57600
	setting address from 0x00000000 to 0x00100000
	setting port from /dev/ttyUSB0 to /dev/ttyUSB0
	espcomm_upload_file
	espcomm_upload_mem
opening port /dev/ttyUSB0 at 57600
	tcgetattr
	tcsetattr
	serial open
opening bootloader
resetting board
trying to connect
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
trying to connect
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
	espcomm_send_command: receiving 2 bytes of data
Uploading 3125248 bytes from /home/helmut/Downloads/ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin to flash at 0x00100000
	erasing flash
	size: 2fb000 address: 100000
	first_sector_index: 256
	total_sector_count: 763
	head_sector_count: 16
	adjusted_sector_count: 747
	erase_size: 2eb000
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	setting timeout 15000
	setting timeout 100
	espcomm_send_command: receiving 2 bytes of data
	writing flash
................................................................................ [  2% ]
................................................................................ [  5% ]
.
.
.
................................................................................ [ 99% ]
............                                                                     [ 100% ]
starting app without reboot
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	espcomm_send_command: receiving 2 bytes of data
closing bootloader

Methode B: Konfiguration löschen per Arduino IDE Plugin

Das Löschen des Flash File Systems können wir auch bequem aus der Arduino IDE heraus erledigen. Dazu müssen wir in der IDE allerdings ein geeignetes Plugin nachrüsten.

Link: https://github.com/esp8266/arduino-esp8266fs-plugin

Dort gibt es auch nochmal eine Anleitung in Englisch..
Von der Releases-Seite: https://github.com/esp8266/arduino-esp8266fs-plugin/releases/latest laden wir uns die ESP8266FS-x.x.x.zip Datei herunter (aktuell ESP8266FS-0.3.0.zip). Im Arduino Sketchbook, also im Verzeichnis Arduino im persönlichen Ordner legen wir ein Verzeichnis tools an, falls es noch nicht existiert. Dann öffnen wir die downgeloadete ESP… Datei mit der Archivverwaltung und entpacken sie in das eben angelegte tools-Verzeichnis. Jetzt gibt es unter tools folgende Struktur: ESP8266FS/tool/esp8266fs.jar.

Die Arduino IDE muss nun neu gestartet werden und dann öffnen wir den Feinstaub-Sketch. Unter Werkzeuge gibt es jetzt einen neuen Menüpunkt: ESP8266 Sketch Data Upload. Den klicken wir an und bestätigen den Hinweis, dass keine Daten existieren mit Yes.

[SPIFFS] data   : /home/helmut/Arduino/sensors-software-master/airrohr-firmware/data
[SPIFFS] size   : 3052
[SPIFFS] page   : 256
[SPIFFS] block  : 8192
[SPIFFS] upload : /tmp/arduino_build_650786/airrohr-firmware.spiffs.bin
[SPIFFS] address: 0x100000
[SPIFFS] reset  : nodemcu
[SPIFFS] port   : /dev/ttyUSB0
[SPIFFS] speed  : 115200

Uploading 3125248 bytes from /tmp/arduino_build_650786/airrohr-firmware.spiffs.bin to flash at 0x00100000
................................................................................ [  2% ]
................................................................................ [  5% ]
.
.
.
................................................................................ [ 99% ]
............                                                                     [ 100% ]

Wie gehts weiter?

Egal welche der beiden Methoden gewählt wurde, das Flash File System ist nun durch Überschreiben gelöscht und damit sind auch alle Konfigurationsdaten des Feinstaubsensors weg. Wir haben den Feinstaubsensor quasi in den Werkszustand zurück versetzt. Die Feinstaub-Firmware an sich wird durch diesen Vorgang nicht berührt. Der Feinstaubsensor sollte nun wieder als Accesspoint arbeiten und ein WLAN mit der Bezeichnung Feinstaubsensor-xxxxxx anbieten, was wir mit einem Smartphone leicht überprüfen können. Wie der Feinstaubsensor darüber konfiguriert wird zeige ich in einem eigenen Artikel.

 


Weitere Artikel in dieser Kategorie:

20 Kommentare

  1. Uwe Paschke

    Bei mir hat es ganz einfach so geklappt:ESP8266 über USB-Kabel an PC. Nach kurzer Zeit auf Fritzbox sichtbar, jetzt anklicken und das Konfig-Menue steht zur Verfügung.
    Gruß Schorschi

  2. Helmut (Beitrag Autor)

    So einfach sollte es auch generell funktionieren. Die Konfigurationsdaten muss man nur löschen, wenn man sich einmal verkonfiguriert hat und nicht mehr ans Konfig-Menü heran kommt.

  3. Paul

    Gestern startete mein Feinstaubsensor nach einer Unterbrechung der Stromversorgung nicht mehr. Nur nach dem flashen der Software (mit meinen angepassten Werten wie ssid und passwort samt Sensoren) war er zur Mitarbeit zu überreden.

    Abhilfe schaffte nur das komplette Löschen des LoLin mit folgendem Befehl:

    ./esptool -cp /dev/ttyUSB0 -cd nodemcu -ce

    und anschliesendem neu-flashen.

  4. Helmut (Beitrag Autor)

    Nur als Anmerkung, damit kein falscher Eindruck beim Leser entsteht:
    Das ist natürlich nicht die Regel, dass ein Feinstaubsensor nach einer Unterbrechung der Stromversorgung nicht mehr arbeitet und neu geflasht werden muss. Meiner läuft seit über einem halben Jahr problemlos und hatte sich in der Zeit nur zweimal aufgehängt, was durch Power-off-on leicht zu beheben war.

  5. Walther Prym

    moin, mein Feinstaubsensor läuft versorgt mit wlan von meinem freifunk.hamburg.net Router und die Ergebnisse sind unter madavi abrufbar. Aber ich kann nun nicht mehr ins Menü und den Wlan Versorger ändern. Nun brauche ich irgendwie verstänliche Hilfe. Verstanden habe ich Schorschi, der oben sagt, den usb Anschluß des ESP 8266 an meinen Computer anschließen, warten bis meine Fritzbox das Modem erkennt und schon bin ich in meinem verschwundenen Konfig Menü. Aber nun meine Frage, wie bekomme ich meine Freifunk Adresse raus und mein Fritz Wlan rein. Für dieses kurz löschen suche ich eine für mich präzise Beschreibung. Oben steht ja wohl alles, bloß ich verstehe es nicht so ganz. Wer kann helfen?
    Walther

  6. Helmut (Beitrag Autor)

    Hallo Walther,
    das Problem kenne ich genau – ich bin ja auch Betreiber eines Freifunkrouters. Und genau aufgrund dieser Problematik ist dieser Artikel entstanden. Dein Problem ist folgendes:
    Du hast den Feinstaubsensor konfiguriert, als der initial ein eigenes WLAN zur Konfiguration angeboten hatte. Dabei hast Du als künftiges WLAN-Netz Dein Freifunk WLAN eingetragen. So weit alles wunderbar und der Sensor arbeitet nun einwandfrei im Freifunk WLAN. Kann man so machen und funktioniert top.

    Nun möchtest Du wieder auf die Konfigurationsoberfläche Deines Feinstaubsensors zugreifen und jetzt hast Du zwei Probleme:
    1) Das Konfigurations-WLAN gibt es nicht mehr, da der Feinstaubsensor das nur dann anbietet, wenn er kein gültiges WLAN konfiguriert hat. Dein PC oder Dein Smartphone befinden sich nun in Deinem privaten WLAN, der Feinstaubsensor aber im Freifunk WLAN. Dem kannst Du nur begegnen, in dem Du PC oder Handy ebenfalls (temporär) ins Freifunk WLAN übernimmst, was ja kein Problem ist.
    2) Wenn Du das geschafft hast, brauchst Du die IP-Adresse Deines Feinstaubsensors im Freifunk WLAN und die weißt Du typischerweise nicht. Es sei denn, Du hättest Deinen Freifunkrouter so konfiguriert, dass Du per SSH einen Fernzugriff darauf hast. Dann kannst Du darüber möglicherweise die IP-Adresse in Erfahrung bringen. Ob das Freifunk WLAN es aber überhaupt gestattet, dass einzelne WLAN-Clients miteinander kommunizieren, ist mir nicht bekannt. Mit dem Netzwerknamen des Feinstaubsensors kommt man erfahrungsgemäß auch nicht weiter.

    So weit die Darstellung der Problematik. Was kannst Du nun machen? Ich habe meinen Feinstaubsensor wieder in mein privates WLAN geholt, weil das zwei Vorteile bietet:
    a) Ich kann den Feinstaubsensor jederzeit umkonfigurieren und
    b) ich kann seine aktuellen Messwerte direkt anschauen.

    Wie macht man das?
    Wie es andere auch schon festgestellt haben, nützt es nichts, den Feinstaubsensor neu zu flashen. Damit würdest Du nur die Firmware neu aufspielen, die Konfigurationsdaten werden dadurch aber weder gelöscht noch überschrieben. Du musst den Bereich des Flashmemory löschen, in dem die Konfigurationsdaten abgelegt sind und danach den ganzen Konfigurationsvorgang neu machen. Aber dann natürlich die Zugangsdaten für das private WLAN eintragen.

    Dazu holst Du den Feinstaubsensor vom Balkon und steckst die NodeMCU an den USB-Port Deines PC, ganz genauso, wie Du es beim Flashen gemacht hast. Alles andere steht oben im Artikel. Danach konfigurierst Du den Feinstaubsensor und wenn er danach wieder startet, schaust Du in Deiner Fritzbox nach einem neuen WLAN-Client – damit hast Du die IP-Adresse Deines Feinstaubsensors im privaten WLAN und kannst sie in den Browser eingeben.

    Ich hoffe, das war so weit verständlich.
    Viel Erfolg

  7. Walther in Hamburg

    Hallo Helmut, ich habe meinen Feinstaubsensor von C. Bohlens mit aufgespielter Firmware bekommen. Die Darstellung meiner Problematik habe ich voll verstanden und kann sie auch nachempfinden. Nun möchte ich mein Konfiguration mit esptool löschen. Dazu habe ich den xxxxxxx spiffs.bin bereitliegen. Den Arduino 1.8.5 habe ich auch mit usb Treiber, …..8266com_index.json und den Bordverwalter eingerichtet. Du schreibst der Arduino IDE muß bendet werden, wozu brauche ich ihn denn? Vielleicht um einen 1. Kontakt mit meinem Computer und den Sensor herzustellen? Statt des ESPTool 0.4.13 der eine Exe ist nehme ich 0.4.9 von Ch. Klippel so habe ich es verstanden. Er ist unten in Deinem Bericht aufgeführt, aber er müßte doch irgendwie kompiliert werden. Das sind z.Zt. meine Probleme. Kannst Du mir noch einmal helfen?
    Walther

  8. Helmut (Beitrag Autor)

    Das ESPTool ist Bestandteil der Arduino IDE, und das ist genau der Grund, warum Du sie installieren musst. Selbst wenn Du Arduino IDE 1.8.5. hast und in meinem Artikel 1.8.3 behandelt wurde, würde ich an Deiner Stelle genau so wie in diesem Artikel beschrieben vorgehen, nach Methode A. Falls das nicht geht, dann musst Du schauen, welches Release vom ESPTool Du hast und den Befehl entsprechend anpassen. Eine ältere Version vom ESPTool irgend woher runterzuladen und zu installieren, das würde ich jetzt nicht tun. Was passiert denn, wenn Du den Befehl so eingibst, wie er oben steht, also:
    ~/.arduino15/packages/esp8266/tools/esptool/0.4.9/esptool -vv -cd nodemcu -cb 57600 -ca 0x100000 -cp /dev/ttyUSB0 -cf ~/Downloads/ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin
    ???

  9. Walther Prym

    Hallo Helmut, ich nehme also esptool 0.4.13, bei Dir steht 0.4.9, der ca Wert hat 0x100000 Adresse statt 0x00000. Ist das so in Ordnung?
    Walther

  10. Helmut (Beitrag Autor)

    Hallo Walter, nimm das ESPTool, das die Arduino IDE bei Dir installiert hat, wenn das 0.4.13 ist und Du das überprüft hast, dann ok. Der Rest des Befehls bleibt wie oben angegeben also auch -ca 0x1000000. Nur den Pfad zur Spiffs.bin Datei musst Du anpassen, falls die bei Dir nicht in Downloads liegt.

  11. Walther

    es hat nicht geklappt meinen Sensor vom Freifunk zu befreien. cmd hat voll auf den Sensor zugegriffen bis zu setting serial port timeouts to 1000ms
    opening bootloader
    resetting board
    trying to connect
    flush start
    setting serial port timeouts to 1ms
    setting serial port timeouts to1000ms
    flush complete
    espcomm send command: sending command header
    espcomm send command: sending command payload und jetzt kommt es immer wieder
    read 0, requested 1 davon kommt er nicht mehr runter
    warning: espcomm sync failed usw.
    wer kann helfen?

  12. Helmut (Beitrag Autor)

    Klingt nach falschem Port oder fehlendem Treiber. Also scheinbar kann das ESPTool nicht mit dem NodeMCU sprechen.

  13. Walther in Hamburg oder Kiel

    Ich suche eine Idee meinen Feinstaub Sensor, der unter Freifunk arbeitet, wieder unter meine Kontrolle zu bringen. Ich kann ihn nicht mit dem esp Tool resetten.
    Den Port habe ich abgefragt, ich glaube, wenn er nicht richtig bestimmt ist bekomme ich gar keine Antwort. Bei den Treibern, er fragt ja nach, habe ich alle angefordert. So ein Problem ruft immer Aktivität bei mir heraus. Im Moment weiß ich aber keine Lösung. Hat jemand eine Idee wie ich hier in Hamburg dieses Versagen irgendwie erkennen kann. Vielleicht gibt es auch ein schwarzes Brett?
    Wer eine Idee hat, bitte melden. Walther, Schilksee@t-online.de

  14. Helmut (Beitrag Autor)

    Ruhig auch mal die Seiten des Stuttgarter Feinstaubprojekts konsultieren: http://luftdaten.info/feinstaubsensor-bauen/

  15. Walther

    Ich glaube ich habe den Fehler! Wenn ich den Node MCU mit dem Computer verbinde fehlt mir der usb2 Treiber. Der Computer sucht vergeblich. wo bekomme ich den her. Ich kann kein Chinesisch.
    Die Stuttgarter sprechen es in Ihrer Aufbauanleitung an, aber ich verstehe das nicht. wer kann helfen?
    Walther

  16. Helmut (Beitrag Autor)

    Scheinbar verwendest Du dann nicht Linux auf Deinem PC. Genau das hatte ich mit Treiber gemeint, der benötigt wird, damit Dein Windows (oder was auch immer) mit dem NodeMCU sprechen kann. Links zu Treiber-Downloads findest Du in der Stuttgarter Feinstaub-Wiki: https://github.com/opendata-stuttgart/meta/wiki/Firmware-einspielen.

  17. Walther in HH

    Danke Helmut, der Link https://github.com/opendata-stuttgart/meta/wiki/Firmware-einspielen von Dir hat mir das Verständnis gebracht, alles richtig zu machen. Mein Sensor ist resettet.
    Walther

  18. Helmut (Beitrag Autor)

    Glückwunsch. Dann war es wohl der Windowstreiber für den USB-Anschluss.

  19. Walther in HH - Lokstedt

    Meinen Feinstaubsensor hatte ich resettet (weil zuerst mit Freifunk verbunden) und so werkelt er still und vernünftig vor sich hin. Ich glaube das Ganze drum herum habe ich auch verstanden. Was mir fehlt ist ein Chatraum, wo man so allgemeine Fragen stellen kann wie z.B. : Wenn ich auf meinem ipad http://feinstaubsensor-37xxxxx.local aufrufe wird der Befehl für mich nicht überraschend geblockt, weil in der FAQ ja so etwas nicht speziell für den ipad angedeutet wird. Hat einer eine Idee wo man solche Fragen stellen kann, wie wieso, warum, weshalb und wer hat welche Ideen?

  20. Helmut (Beitrag Autor)

    Ein Frageforum kann ich nicht anbieten, vielleicht haben die Kollegen in Stuttgart sowas? Wenn Dein IPad sich aber im selben WLAN wie Dein Feinstaubsensor befindet, dann sollte er nicht geblockt werden. Wenn es mit dem Namen nicht funktioniert, dann probier es mal mit der IP-Adresse.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.