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:

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.