Hey, I installed a new set of pio’s and as far as I know I did it exactly the same way as before (only now they are 1.1’s instead of 1.0. However, after setting them up and connecting them they do not work properly. Initially, all seemed normal as the Pio’s blink blue and the watchdog picks them up. Adding the new pio in the interface also works but then after it is ‘succesfully’ added it doesn’t show an IP or any info and I get this warning:
2024-12-11T10:43:20+0100 ERROR [read config] float() argument must be a string or a real number, not 'NoneType'
Traceback (most recent call last):
File "/usr/local/bin/pio", line 8, in <module>
sys.exit(pio())
^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1682, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1729, in resolve_command
cmd = self.get_command(ctx, cmd_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pioreactor/cli/lazy_group.py", line 25, in get_command
return self._lazy_load(cmd_name)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pioreactor/cli/lazy_group.py", line 33, in _lazy_load
mod = importlib.import_module(modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.11/dist-packages/pioreactor/cli/run.py", line 6, in <module>
from pioreactor import actions
File "/usr/local/lib/python3.11/dist-packages/pioreactor/actions/__init__.py", line 6, in <module>
from pioreactor.actions import od_calibration
File "/usr/local/lib/python3.11/dist-packages/pioreactor/actions/od_calibration.py", line 25, in <module>
from pioreactor.background_jobs.od_reading import start_od_reading
File "/usr/local/lib/python3.11/dist-packages/pioreactor/background_jobs/od_reading.py", line 1217, in <module>
interval: Optional[float] = 1 / config.getfloat("od_reading.config", "samples_per_second"),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/configparser.py", line 839, in getfloat
return self._get_conv(section, option, float, raw=raw, vars=vars,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pioreactor/config.py", line 52, in _get_conv
raise e
File "/usr/local/lib/python3.11/dist-packages/pioreactor/config.py", line 47, in _get_conv
return self._get(section, conv, option, raw=raw, vars=vars, fallback=fallback, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/configparser.py", line 819, in _get
return conv(self.get(section, option, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: float() argument must be a string or a real number, not 'NoneType'
mmm it looks like your configuration on the worker is missing. Can you check your config in the UI to make sure it’s populated (i.e. not empty - specifically check for the section od_reading.config), and then make a insignificant whitespace change in the config so you can save it from the UI? This should redeploy the config from the leader to the workers.
the config is populated, however, I don’t see any section with od_reading.config, maybe that is the problem? Also I see now that my workers (and probably also leader) are version 24.7.18, so outdated indeed. I will update them now.
Side question: How do I check the version of the leader if it is only the leader and does not show up in the pio list in the UI?
Okay after doing a first update (watchdog said it was successful) my UI is now almost completely empty and the config file looks like this. Something went seriously wrong I think, but not so sure what
It’s available on the Updates page. However, you can also SSH into the leader and run pio version.
How did you update just now? That is, what method did you use?
What I think originally happened: your leader had an older version, and your new workers had a more recent version. There were some configuration changes inbetween those versions (specifically around od_reading.config), so the workers were not coming online correctly.
All the data is still there. There was a bug with the “update over internet”, so I suggest the following:
SSH into your leader, and run:
pio update ui -v 24.8.21
This will update your UI to the correct release.
2. Try reloading the UI, and confirm everything shows up okay.
3. Then, you can either continue updating via the release zip methodUpdating the Pioreactor software | Pioreactor Docs, or not update and just reflash the worker images with the correct version (that would be 24.8.22 - different from the version above).
Does that make sense? I’m happy to walk you through it further.
Hey Cameron,
That doesn’t seem to resolve the issue of the UI (still no Pio’s visible and no access to old experiments). I can access the update part but saw it says this weird thing for the current leader version:
If I ask the pio version to the leader it now says 24.9.19, probably from the one update I did through the internet that showed successful in the watchdog. I am available today to work it through if you have some time, thanks a lot!