Vorbereitungen für BOB Workshop in Hannover im März 2023

Das Firmware Update Tool von PyCom läuft in der neuesten Version auch auf dem neuen Notebook sehr gut, die Einstellungen habe ich auch alle beachtet. Da sehe ich keine Probleme.

Mit /lib/onewire.py funktionieren die DS18B20 mit beiden … vanilla-squirrel… Firmware Versionen

Atom läuft nur noch auf dem alten Notebook und PyMkr hakte schon früher manchmal.
Der Menüpunkt " Download from device " ging nie richtig und " Upload projekt to device " stottert heute.

Die IDE Thonny für Windows habe ich beim Spielen mit folgendem entdeckt.
KEYESTUDIO ESP32 Smart Home IoT Stem Kit Kompatibel mit Arduino IDE, mit ESP32 Board, Python C, Musical Project, etc. 13 Funktionen Online-Tutorial: Amazon.de: Computer & Zubehör
Die Beispiele in micropython funktionieren alle.
Thonny funktioniert auf dem RaspberryPi auch sehr gut.

VS Code kenne ich noch gar nicht, hätte auch Probleme mich auf die schnelle einzuarbeiten.

Mit der händischen Konfiguration in user_config.json funktioniert FiPy Nr. 4 seit gestern Abend. Also sollten FiPy, Flash, Firmware, die Libraries und main.py OK sein.
Bleibt die Frage, warum der webserver nicht will.

Eben gerade habe ich an der seriellen Schnittstelle beobachtet, daß das Messen gestoppt hat und der AP für 10 Minuten aktiv war, dann startete das Messen wieder, als wenn nichts geschehen wäre.
Warum ??? Auf dem Bienenmonitor ist nichts zu erkennen.

13 Uhr
Ich habe versucht, 15 FiPy mit der BOB-Software zu flashen : bei 12 hat es auf Anhieb geklappt, bei 2 erst beim zweiten Mal und 1 ist definitiv kaputt. Der hat mir auch am Freitag so viel Ärger bereitet.

Vorgehensweise: mit Atom / pymkr müssen 30 Files zügig geflasht werden. Beim kleinsten Problem muss Atom/pymkr neu gestartet werden. Beim anschliessenden Boot muss sofort das Wlan verbunden werden und es müssen mindestens 50 Messungen zum Bienenmonitor gesendet werden.
Die beiden Wiederholer wurden mit dem Pycom Updater neu geflasht.
Beim dritten kommt jede Hilfe zu spät.

16 Uhr
Es scheint Probleme mit dem Flash zu geben: ein FiPy, der nicht auf Anhieb geflasht werden konnte, sondern erst beim zweiten Mal, hat dann schon gemessen. Aber in der letzten Stunde hat er mitten im Messen gedacht, der Switch an P16 wäre gedrückt und hat den AP aufgemacht. Da der webserver.py noch auskommentiert ist, kann man sich zwar mit einem Tablet verbinden, erhält aber keine Webseite. Nach 10 Minuten schliesst der AP und das Messen geht weiter.
Im Bienenmonitor fällt das kaum auf, man muss schon danach suchen.

Ich schliesse inzwischen einen schlechten Flash nicht mehr aus, um die seltsamen Fehler zu erklären.

Ich habe gestern von @Diren eine neue FiPy-Firmware bekommen. Sie gleicht in Namen und Größe der, die ich schon benutzt habe .
FiPy-1.20.2.rc6-0.10.2-vanilla-squirrel-nosmartconfig.tar.gz (1,2 MB) ( 1188 KB in Windows10 ).
Also noch einmal geflasht ( alles OK ). Dann mit Atom die FiPy-Programme aufgespielt ( alles OK )
Doch beim reboot der gleiche Fehler wie am Wochenende:
Vielleicht kann ja jemand die folgenden Meldungen interpretieren:

entry 0x400a05bc
Starting boot process...
Boot finished.
Init -> CSV logger in directory /sd/hiverizelog
init sensors
init -> DS18B20
Found 6 DS1820.
Gain & initial value set
in webserver.py
Traceback (most recent call last):
  File "main.py", line 14, in <module>
  File "webserver.py", line 142, in <module>
  File "/flash/lib/microDNSSrv.py", line 19, in Create
  File "/flash/lib/microDNSSrv.py", line 161, in Start
OSError: Network card not available
Pycom MicroPython 1.20.2.rc6-0.10.2-vanilla-squirrel-nosmartconfig [v1.20.1.r2-122-gd82a6f43e-dirty] on 2020-03-06; FiPy with ESP32
Type "help()" for more information.
'>>> 
  • Datei main.py
import sys
import time
import uos

'# own code imports
import webserver                                                            ->     line 14
from config import Config
from sensors import hx711, bme280, ssd1306, ds1820
  • Datei webserver.py
print("in webserver.py")
mws = MicroWebSrv()
mws.SetNotFoundPageUrl("http://hiverize.wifi")
MicroDNSSrv.Create({ '*' : '192.168.4.1' })                -> line 142
  • Datei /flash/lib/microDNSSrv.py
def Create(domainsList) :
        mds = MicroDNSSrv()
        if mds.SetDomainsList(domainsList) and mds.Start() :     -> line 19
            return mds
        return None

        if not self._started :
            self._server = socket.socket( socket.AF_INET,
                                          socket.SOCK_DGRAM,
                                          socket.IPPROTO_UDP )  -> line 161
            self._server.setsockopt( socket.SOL_SOCKET,
  • Fehlermeldung: OSError: Network card not available ist die Folge.

Damit ich weiterkomme, habe ich main.py line 14 import webserver auskommentiert. Der AccessPoint liess sich zwar starten, aber die Konfiguration funktioniert nicht ohne Webseite.

Hi Didi,

Das ist nichts neues, die hattest Du doch vorher auch schon drauf, nicht? Bei https://packages.hiveeyes.org/hiveeyes/foss/pycom/vanilla/ sind sie alle aufgelistet, die wir selbst gebacken haben. FiPy-1.20.2.rc6-0.10.2 ist die neueste, ja.

Dieser Code hier steht global auf Modulebene in der webserver.py Datei, wird also bereits beim Laden der Module ausgeführt. Das ist ganz schlecht!

Der Code muss in eine Routine gekapselt werden, die erst gerufen wird, wenn sinnvoll, also erst wenn das “Netzwerk da ist”. Es bietet sich vielleicht jene enable_ap Funktion an?

Viele Grüße,
Andreas.

1 Like

Es ist wie verhext. Ich habe die Einstellungen des PycomUpdaters überprüft und 6 Fipy mit Diren’s File geflasht. Dann mit Atom die FiPy-Files ( alle vom 10.5.2021 , unverändert ) geflasht. Alles OK.
Dann beim booten der bekannte Fehler line 14 …

Soll ich jetzt versuchen, webserver.py erst später zu importieren?

Z.B. so

293. '# enable ap
294. def enable_ap(pin=None):

      import webserver

295. global _wm, loop_run, _wlan, wdt, button_ap
296. '# if in button mode, make sure we don't enter this function again
297. if _config.get_value('general', 'general', 'button_ap_enabled'):
298. button_ap.callback(Pin.IRQ_FALLING, handler=ap_already_enabled)
299. print("Called. Pin {}.".format(pin))

Hi Didi,

Am besten wäre es, den modul-globalen Code in webserver.py abzuschaffen. Bei Vorbereitungen für BOB Workshop in Hannover im März 2023 - #27 by Andreas habe ich beschrieben, wie das zu bewerkstelligen wäre.

Hier im kanonischen Beispiel sieht man ebenfalls, dass MicroDNSSrv.Create() erst nach WLAN().init() gerufen wird.

Viele Grüße,
Andreas.

Vielleicht hilft Dir auch der Patch Fix Bug Wifi on Boot by MKO1640 · Pull Request #33 · Hiverize/FiPy · GitHub von @MKO weiter?

Ich hab auch mal eine Issue dazu angelegt, bei `OSError: Network card not available` on first boot · Issue #42 · Hiverize/FiPy · GitHub. 42(!)

Danke für das Berichten und Feedback auf GitHub. Ich bin gerade für ein Praktikum in den Niederlanden und habe keinen FiPy hier.

1 Like

Hi Diren,

Gerne.

Kein Problem. Ich schicke dann mal einen Patch, vielleicht hilft er Didi weiter.

Viele Grüße in die Niederlande und an die Kollegen,
Andreas.

1 Like

Haben wir schon Zeitdruck? Der März ist ja nicht mehr lang!

Didi / @didilamken ich muss nochmal nachfragen welcher code genau bei dir läuft? Ich frage nochmal, weil die Fehlermeldungen bei mir nicht kommen und ich eigentlich davon ausgehe, dass wir identischen code verwenden.

Aus der BOB-Doku Installation der Bee Observer Firmware unter Windows

Nutzt du den oben verlinkten code, und zwar den aus dem master branch? Bitte nochmal doppel checken, dass wirklich der master versendet wird:

Falls das alles passt, noch eine Idee: Aus: Installation der Bee Observer Firmware unter Windows

Lösche doch bitte den FiPy komplett, bevor du die Software aufspielst, ggf. hilft das wenn auf den alten FiPys noch ältere firmware war!!

Bin heute und morgen zeitlich etwas knapp, kann aber ab Freitag nochmal zumindest “telemäßig” unterstützen.

Ja haben wir, der workshop ist am WE!

Oha. Ja dann schicke ich den Patch baldmöglichst, damit Didi damit testen kann.

Der Workshop ist am 26.3. in Hannover

Von Github hole ich fipy-master.zip. Alle Dateien sind vom 10.5.2021

Dann Pycom-Updater Firmware von Diren mit erase flash file system

pycom-fwtool-cli.exe --port COM17 erase_all habe ich nicht gemacht. Sollte ich ?

Dann Atom /Pymkr

Ja probiere mal! Schaden wird es nicht. ;-) [port mit deinem ersetzen, COM dabei stehen lassen]

In der Powershell vom alten Notebook habe ich noch die alten Befehle gefunden.

.\pycom-fwtool-cli.exe --verbose --port COM5 erase_all
hat in 15 sec funktioniert

PS C:\Users\admin\Documents\uPython\PycomFlash> .\pycom-fwtool-cli.exe --verbose --port COM5 erase_all
Running in PIC mode
Erasing the board can take up to 40 seconds.
Product ID: 152 HW Version: 7 FW Version: 0.0.11
Connecting........
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Auto-detected Flash size: 8MB
Board erased successfully in 15.57 seconds
PS C:\Users\admin\Documents\uPython\PycomFlash>
PS

dann

PS C:\Users\admin\Documents\uPython\PycomFlash> .\pycom-fwtool-cli.exe --verbose --port COM5 flash --tar .\FiPy-1.20.2.rc6-0.10.2-vanilla-squirrel-nosmartconfig.tar.gz
Running in PIC mode
Product ID: 152 HW Version: 7 FW Version: 0.0.11
Connecting.....
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Auto-detected Flash size: 8MB
Script Version: 2.1
Flash params set to 0x023f
Compressed 28672 bytes to 15646...
 Writing bootloader.bin at 0x00001000... (100 %)
Hash of data verified.
Wrote 28672 bytes (15646 compressed) at 0x00001000 in 0.8 seconds (297.9 kbit/s)...

Compressed 4096 bytes to 141...
 Writing partitions_8MB.bin at 0x00008000... (100 %)
Hash of data verified.
Wrote 4096 bytes (141 compressed) at 0x00008000 in 0.1 seconds (364.1 kbit/s)...

Compressed 2027520 bytes to 1199452...
 Writing fipy.bin at 0x00134000... (100 %)
Hash of data verified.
Wrote 2027520 bytes (1199452 compressed) at 0x00010000 in 22.1 seconds (732.8 kbit/s)...

Compressed 4096 bytes to 51...
 Writing at 0x001FF000... (100 %)
Hash of data verified.
Wrote 4096 bytes (51 compressed) at 0x001ff000 in 0.1 seconds (364.1 kbit/s)...

Flash operation successful.
PS C:\Users\admin\Documents\uPython\PycomFlash>

dann mit Atom/pymkr projekt fipy_master ohne Änderungen geflasht

boot: keine Fehlermeldung nach import webserver mehr ( Freu , freu )

1 Like

Exzellent. Ich vermute stark, dass erase_all auch die WiFi Kalibrierungsdaten löscht. Diese werden dann beim nächsten Neustart neu initialisiert, und damit geht dann die Funke auch wieder.

Hier trotzdem der genannte Patch, der das Verhalten in solchen Situationen verbessern könnte, damit das Gerät wenigstens startet.

Jetzt läuft der Accesspoint und ich kann per Browser konfigurieren. Ich habe nur eine passende user_config.json geflasht und schon läuft alles.

Doch was ist jetzt anders??
Ich hatte immer auf dem neuen Notebook den PycomUpdater “pycom_firmware_updater_1.16.6.exe”
zum flashen von" FiPy-1.20.2.rc6-0.10.2-vanilla-squirrel-nosmartconfig.tar.gz" benutzt.

Auf dem alten notebook hatte ich noch das Programm “pycom-fwtool-cli.exe” vom 6.7.2020
Damit habe ich zuerst den flash gelöscht mit " .\pycom-fwtool-cli.exe --verbose --port COM5 erase_all"
und dann die neue Firmware aufgespielt mit
" .\pycom-fwtool-cli.exe --verbose --port COM5 flash --tar .\FiPy-1.20.2.rc6-0.10.2-vanilla-squirrel-nosmartconfig.tar.gz"

Dann mit Atom/pymkr dasProjekt FiPy-master mit "Upload projekt to device " flashen und evtl. eine konfigurierte user_config.json .
Die ganzen Probleme hatten wohl nichts mit dem webserver.py zu tun, das war zufällig

2 Likes

Ganz zufällig war es nicht.

Siehe auch RF Calibration - ESP32 - — ESP-IDF Programming Guide latest documentation.

1 Like