Install user.byows_rpi driver?

223 views
Skip to first unread message

Jan Bennett

unread,
Jul 23, 2022, 9:07:55 AM7/23/22
to weewx-user
Hey all -

I am trying to install the driver for the Build Your Own Weather Station using Raspberry pi (byows_rpi.py)

I have updated weewx-config to include BYOWS. I also have the interceptor driver installed.

However, I cannot seem to get the driver to show up under the drivers list when I try 'wee_config --list-drivers'.  I show byows_rpi.py under /usr/share/weewx/user/

I have tried 'sudo wee_config --reconfigure --driver=user.byows_rpi --no-promt' to no avail.

I feel like I've missed a step somewhere about how to actually get the system to recognize the driver.

When I try to run the byows_rpi.py via command line from within the /usr/share/weewx/user/ folder: 'python3 byows_rpi.py' I see the following error:

class ByowsRpi(weewx.drivers.AbstractDevice)
NameError: name 'weewx' is not defined

Any guidance would be greatly appreciated!

Jan Bennett

unread,
Jul 23, 2022, 9:12:50 AM7/23/22
to weewx-user
I should also note that when I 'sudo wee_config --reconfigure --driver=user.byows_rpi --no-prompt' I see the following:

Using configuration file /home/weewx/weewx.conf
Driver user.byows_rpi  failed to load: name 'weewx' is not defined

Tom Keffer

unread,
Jul 23, 2022, 11:02:42 AM7/23/22
to weewx-user
1, It looks like the byows_pi extension does not use the extension installer, so weewx has no way of knowing of its existence. This is why it doesn't show up in the list of available drivers.

2. As for running byows_pi directly, you have a slight problem with your paths. Try either this

cd /usr/share/weewx
python user/byows_rpi.py

or this

cd /usr/share/weewx
python -m user.byows_rpi

-tk

--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/074ed02d-872f-4384-82bf-748449e13ef5n%40googlegroups.com.

Jan Bennett

unread,
Jul 23, 2022, 5:33:48 PM7/23/22
to weewx-user
Thank you for your time in responding.

It is correct that byows_rpi extension is mostly just a python file (byows_rpi.py) saved to /usr/share/weewx/user/

I have followed the directions at the git repository and have verified with Change Driver that I've done the appropriate things to weewx.conf as well.

When I run either of the commands you listed I receive the same error as before:

class ByowsRpi(weewx.drivers.AbstractDevice)
NameError: name 'weewx' is not defined



Tom Keffer

unread,
Jul 23, 2022, 5:51:44 PM7/23/22
to weewx-user
Something is off. Could you send me the copy of byows_rpi.py you are using?


Doug Jenkins

unread,
Jul 23, 2022, 5:55:53 PM7/23/22
to weewx...@googlegroups.com
To add to this thread Jan, could you fork this repo and send a link? I am starting some work on a few enhancements to the wee_extensions and I can create the proper packaging that weewx expects so that future users of the driver can install it properly. 

I would fork the repo, but I do not have a BME280 sensor to properly test the driver.

If it all works, you can send a pull request to the original author and have it merged.

DDJ

Jan Bennett

unread,
Jul 24, 2022, 9:04:09 AM7/24/22
to weewx...@googlegroups.com
I have attached the byows_rpi.py file that I am using currently. Some of the values haven't been changed for my equipment just yet. I need to add the ground temp serial number and some additional wind vane values.

Many thanks for your time and energy here!




You received this message because you are subscribed to a topic in the Google Groups "weewx-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/weewx-user/wtQ92_3SGe8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CAPq0zED6%3DO2-mjrfCdB9N%3DkwNoHdoh429f9aeDtw_4KFSVSFMw%40mail.gmail.com.
byows_rpi.py

Jan Bennett

unread,
Jul 24, 2022, 9:05:41 AM7/24/22
to weewx...@googlegroups.com
I am not familiar with how to do all of that just yet but I will definitely start looking into it!



You received this message because you are subscribed to a topic in the Google Groups "weewx-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/weewx-user/wtQ92_3SGe8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CACC0i0yWnpmvYB22YXdrVgzjQgZfkVdv9Nz%2BZD661KzfXkgn_w%40mail.gmail.com.

Doug Jenkins

unread,
Jul 24, 2022, 9:19:02 AM7/24/22
to weewx...@googlegroups.com
No worries, I already forked it on my GitHub account and started working on it. Will send the link once it done and tested 

Tom Keffer

unread,
Jul 24, 2022, 10:15:03 AM7/24/22
to weewx-user
Your version has been altered --- it's missing an import statement.

Here's the original version. You can give it a try.

Doug: If you're going to work on the driver, perhaps you can port it to WeeWX V4? In particular, it uses the old-style "syslog", instead of the new style "logging". 


Doug Jenkins

unread,
Jul 24, 2022, 1:54:19 PM7/24/22
to weewx...@googlegroups.com
Tom:

I can give it a look. Right now I am trying to get the install.py file working to install the driver properly with the correct statements in weewx.conf. Once I have that working, I can take a look at the logging.

One challenge is that I do not have a BME280, so I am probably going to have to stub out those function calls to see if the solution will work in principle.

hopefully Jan will help us out and verify the driver is working.

DDJ

Message has been deleted
Message has been deleted
Message has been deleted

Jan Bennett

unread,
Jul 24, 2022, 4:43:27 PM7/24/22
to weewx-user
I am quite inexperienced at this and am excited to try and learn a bit more. I am happy to test with my set-up.

When I run byows.rpi.py I get the following:

Traceback (most recent call last):
  File "/usr/share/weewx/user/byows_rpi.py", line 34, in <module>
    import weewx.drivers
ModuleNotFoundError: No module named 'weewx'

Tom Keffer

unread,
Jul 24, 2022, 5:00:41 PM7/24/22
to weewx-user
Jan, perhaps you missed my earlier message, but your version of byows_rpi.py has been altered --- it's missing an import statement. 

You need to download a fresh copy from the repository. You can find it here.

Jan Bennett

unread,
Jul 24, 2022, 5:42:56 PM7/24/22
to weewx-user
Thank you. I verified that I was downloading the entire file by:

renaming the /usr/share/ weewx/user/byows_rpi.py file and then I wget the file you linked. When I run it after downloading it I still get the same response.

Tom Keffer

unread,
Jul 24, 2022, 6:02:53 PM7/24/22
to weewx-user
Hmmm.... that's odd. What do you get if you do this:

grep weewx /usr/share/weewx/user/byows_rpi.py

and when you do this:

cd /usr/share/weewx
python ./user/byows_rpi.py

Please don't summarize. Cut and paste the text from the terminal.

-tk

Jan Bennett

unread,
Jul 24, 2022, 6:04:56 PM7/24/22
to weewx-user
Following your above suggestion about a different way to try running the file, I get two different responses depending on which one I run:

/usr/share/weewx $ python user/byows_rpi.py
Traceback (most recent call last):
  File "/usr/share/weewx/user/byows_rpi.py", line 34, in <module>
    import weewx.drivers
ModuleNotFoundError: No module named 'weewx'

and

/usr/share/weewx $ python -m user.byows_rpi

Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/share/weewx/user/byows_rpi.py", line 335, in <module>
    station = ByowsRpiStation()
  File "/usr/share/weewx/user/byows_rpi.py", line 113, in __init__
    self.bme280_sensor.load_calibration_params(self.bme280_bus, self.bme280_address)
  File "/usr/local/lib/python3.9/dist-packages/bme280/__init__.py", line 154, in load_calibration_params
    compensation_params.dig_T1 = read.unsigned_short(0x88)
  File "/usr/local/lib/python3.9/dist-packages/bme280/reader.py", line 40, in unsigned_short
    return self._bus.read_word_data(self._address, register) & 0xffff
  File "/usr/local/lib/python3.9/dist-packages/smbus2/smbus2.py", line 470, in read_word_data
    self._set_address(i2c_addr, force=force)
  File "/usr/local/lib/python3.9/dist-packages/smbus2/smbus2.py", line 354, in _set_address
    ioctl(self.fd, I2C_SLAVE, address)
TypeError: argument must be an int, or have a fileno() method.

Jan Bennett

unread,
Jul 24, 2022, 6:07:04 PM7/24/22
to weewx-user
$ grep weewx /usr/share/weewx/user/byows_rpi.py
import weewx.drivers
class ByowsRpi(weewx.drivers.AbstractDevice):
    """weewx driver for the Build Your Own Weather Station - Raspberry Pi
            packet = {"dateTime": int(time.time() + 0.5), "usUnits": weewx.METRIC}
    invoke this as follows from the weewx root dir:
    PYTHONPATH=bin python bin/weewx/drivers/byows_rpi.py"""
    packet = {"dateTime": int(time.time() + 0.5), "usUnits": weewx.METRIC}

and

$ grep weewx /usr/share/weewx/user/byows_rpi.py
import weewx.drivers
class ByowsRpi(weewx.drivers.AbstractDevice):
    """weewx driver for the Build Your Own Weather Station - Raspberry Pi
            packet = {"dateTime": int(time.time() + 0.5), "usUnits": weewx.METRIC}
    invoke this as follows from the weewx root dir:
    PYTHONPATH=bin python bin/weewx/drivers/byows_rpi.py"""
    packet = {"dateTime": int(time.time() + 0.5), "usUnits": weewx.METRIC}

Tom Keffer

unread,
Jul 24, 2022, 6:23:36 PM7/24/22
to weewx-user
Ah! The advantages of cutting and pasting over a summarization. You were having a PYTHONPATH problem.

Sounds like you got things working by using the "python -m user.byows_rpi" method.

The other method should also work with an explicit PYTHONPATH. Something like

PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/byows_rpi.py

No matter. You got it working.

As for the TypeError exception: now you're deep into the driver and I have no experience with it. You'll have to ask the author.

-tk



Doug Jenkins

unread,
Jul 25, 2022, 9:01:33 AM7/25/22
to weewx-user
Jan & Tom:

I might be a bit late on this thread, but I modified the driver and created an installer package for it. I was able to test the installer, but I cannot test the driver as I am not running on a Raspberry PI with a BME280 and the other components.
The Repo for this change is in my ddjlabs org on GitHub here:  https://github.com/ddjlabs/BYOWS_RPi

JAN: If you have resolved your issue with Tom's suggestion, then please let me know. I will send this to Jardi Martinez (original author) via pull request so he can incorporate it for future releases.

===== Instructions to install it =====
1. Download the v0.52 package from my github to the root directory of WeeWX (eg /home/weewx)

https://github.com/ddjlabs/BYOWS_RPi/archive/refs/tags/v0.51.zip

2. In the location of where you installed WeeWX (eg /home/weewx), run this command:

sudo ./bin/wee_extension --install v0.52.zip

This process will make a backup of your weewx.conf and add the necessary configuration items and code to the solution. The driver file will be located in the bin/user folder within the WeeWX root directory. You can modify it there as needed. This process will protect your changes as WeeWX updates do not modify the user directory.

===== END INSTRUCTIONS =====

DDJ

Doug Jenkins

unread,
Jul 25, 2022, 9:12:59 AM7/25/22
to weewx-user
Tom, I forgot to mention that I also modernized the logging for this driver. that was included in the second commit. I sent a pull request to the original author this morning.

Jan Bennett

unread,
Jul 25, 2022, 12:34:13 PM7/25/22
to weewx-user
Woohoo! I am now at least uploading to WeatherUnderground successfully with my station.

This was one of my goals for sure.

WeeWX is running, according to the logs, and according to my data now showing up online. However, when I go to localhost/weewx/ the webpage still hasn't updated from when I initially started messing with this (back on 7/1).

SO, it appears the driver works for the BYOWS, but my full install is not working yet. I'm off to troubleshoot this new issue. Thank you so much for writing the installer!
Reply all
Reply to author
Forward
0 new messages