Hiverize code läuft auf meinem FiPy nicht

#1

@Andreas, @einsiedlerkrebs, ihr habt doch auch einen FiPy auf der Werkbank, könntet ihr mal den code von GitHub - Hiverize/FiPy herunterladen und auf eine FiPy packen, dann schauen was bei euch passiert.

Ich habe zuerst mit make purge-device (dev-Sandkasten von Andreas) alles auf dem FiPy gelöscht und dann via Atom den code oben hochgeladen, dabei diese settings.json (1.4 KB) verwendet.

Hiverize code für FiPy
#2

Schauen wir!

#3

Ich habe nochmals die Hiveeyes / Andreas’ firmware getestet um sicher zu sein, dass alles korrekt angeschlossen ist und alle Sensoren funktionieren, das ist der Fall (Waage ist nicht justiert, funktioniert aber), auch der Versand via WLAN funktioniert und die Daten kommen auf dem Hiveeyes-Server an:

hiveeyes/testdrive/area-005/fipy-cg-01/data.json 
{
"weight": -136837.5, 

"temperature.28ff641d8fd922ab.onewire:0": 20.4375, 
"temperature.28ff641d8fd833ac.onewire:0": 20.4375, 
"temperature.28ff641d8fd18ab0.onewire:0": 20.375, 
"temperature.28ff641d8fd4d5d5.onewire:0": 20.125, 
"temperature.28ff641d8fd8778b.onewire:0": 20.125, 

"temperature.0x77.i2c:0": 23.31, 
"humidity.0x77.i2c:0": 46.36, 
"pressure.0x77.i2c:0": 994.71, 

"memfree": 2294080
}
#4

Habe gerade nochmal versucht die Firmware zu flashen und dabei auch bei den advanced settings “erase during update” beim file system ausgewählt

2019-05-09%2013_10_34-Pycom%20Upgrade

Dennoch sind die Dateien danach noch da!

auch make purge-device scheint nicht zu funktionieren

root@XPS13-CGruber:/home/cgruber/hiveeyes/sources/hiveeyes-micropython-firmware# make purge-device
Format /flash on the device? This will delete your program. [y/n]? #.venv3/bin/rshell --port /dev/ttyS16 --buffer-size 2048 --timing --file tools/clean.rshell
Using buffer-size of 2048
Connecting to /dev/ttyS16 (buffer-size 2048)...
Trying to connect to REPL  connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /flash/
Setting time ... May 09, 2019 13:23:31
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 1970
Entering REPL. Use Control-X to exit.
>
Pycom MicroPython 1.20.0.rc10 [v1.9.4-350eac8] on 2019-04-16; FiPy with ESP32
Type "help()" for more information.
>>>
>>> import os ; os.fsformat(/flash)
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax
>>> took 1.051 seconds
root@XPS13-CGruber:/home/cgruber/hiveeyes/sources/hiveeyes-micropython-firmware# make rshell
.venv3/bin/rshell --port /dev/ttyS16 --buffer-size 2048 --timing
Using buffer-size of 2048
Connecting to /dev/ttyS16 (buffer-size 2048)...
Trying to connect to REPL  connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /flash/
Setting time ... May 09, 2019 13:24:28
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 1970
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/cgruber/hiveeyes/sources/hiveeyes-micropython-firmware> cd /flash
took 0.806 seconds
/flash> ls
cert/          dist-packages/ lib/           sys/           boot.py        main.py        settings.py
took 1.506 seconds
/flash>
#5

Hi Clemens,

Exakt:

#6

Hmm, sollte laut Doku gehen, und ging ja auch schon mal:

If problems occur within the filesystem or you wish to factory reset your module to remove your code, run following code in the REPL:

>>> import os
>>> os.mkfs('/flash')

das geht auch nicht in der REPL

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'mkfs'
>>>
#7

Geht bestimmt auch, wenn mans richtig macht. Bitte Syntax beachten: os.fsformat(/flash) vs. os.mkfs('/flash'). Bei ersterem Aufruf fehlen die Gänsefüßchen, keine Wunder, dass das deshalb auf die Schnauze fällt. Ich vermute eine Makefile-/rshell-Anomalie unter Windows.

Empfehlung: Ggf. einfach API-kompatibel (fsformat vs. mkfs) von Hand auf der rshell ausführen!

#8

In der PyMakr-Konsole unter Atom

>>> import os
>>> os.mkfs('/flash')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'mkfs'
>>>

sollte es auch über

make rshell

in der dev sandbox gehen?

/flash> import os
Unrecognized command: import os
took 0.002 seconds

#9

Das Löschen von Dateien scheint zu funktionieren

>>> os.unlink('settings.json')

Ist der slash das Problem?

#10

Wie würde das denn aussehen? Von make rshell nach /flash und dann nach / und nun mkfs ?? Oder geht das über make rshell nicht?

#11

rshell und REPL sind zwei paar verschiedene Stiefel, auch wenn beides Shells sind. "os" ist ein (eingebautes) Python Paket und Aufrufe darauf können interaktiv über die REPL vorgenommen werden, in die man per "make repl" gelangt. Hierfür die Eingebaufforderung der rshell selbst zu benutzen, war die falsche Abzweigung.

Ergo:

make repl
>>> import os
>>> os.fsformat('/flash')

oder

>>> os.mkfs('/flash')

Je nachdem, wie es zur Laufzeitumgebung passt - egal was die Doku sagt. Vermutlich geht einmal das eine und einmal das andere, weil die Implementierung geändert wurde oder anderes. Irgendwas ist ja bekanntlich immer.

Viel Erfolg!

1 Like
#12

muss ich das verstehen??

>>> os.mkfs('/flash')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'mkfs'
>>>
>>>
>>> import os
>>> os.fsformat('/flash')
>>>
>>>

passt jedenfalls

/flash> ls
cert/   lib/    sys/    boot.py main.py
took 1.357 seconds
#13

Exzellent!

#14

Die Software läuft nun, am Ende waren es Überreste von Andreas’ code. Eigentlich sollten die mit make purge-device aus dem Entwickler-Sandkasten von hiveeyes gelöscht werden, was aber aus bisher nicht eruierbaren Gründen bei mir unter dem Linux-System auf einem Win10-Rechner nicht funktionierte.

Bei einem Softwareupdate (Code, der die Sensoren ausliest) werden über Atom nur geänderte / neue Dateien hochgeschoben, bereits existierende, die ggf. mit dem neu hochgeladenen code inkompatibel sind oder interferrieren werden dabei nicht gelöscht, hat sicher für manche Anwendungsfälle Vorteile, hier war es gerade richtig Sch…!

First trial using the Pycom WiPy