I've been lurking around here for about six months without properly introducing my weather station. I diverged pretty dramatically from the source code provided for the weather station. I rewrote the orchestration aspects of the weather station in Python 3 while continuing to leverage the drivers written by SwitchDoc Labs that I manually upgraded to Python 3.
I rewrote a lot of the software because I wanted to store my readings in PostgreSQL, expose an API that could read the sensors directly and talk to the database to obtain daily, weekly, monthly, and yearly totals for rainfall, etc., and utilize MQTT to capture telemetry from the station including weather readings and basic board telemetry because I'm a huge Node-RED fan. I also wanted my weather station to run asynchronously. As a result, I built my weather station to run as a web application utilizing the Python library aiohttp. The attached image shows the basic structure of the web application.
I'm having a bit of trouble getting the lightning sensor to cooperate with me so my weather station is still on the bench next to me. However, I'm hopeful I can solve my problems sometime soon so I can get the kit outside. My station is located in North Carolina so I'm very concerned about heat as well.
The challenge with heat isn’t strictly limited to the board. The intensity of the sunlight here throws off the temperature sensor by 20-25F in direct sunlight during the summer. I purchased a Stevenson-like enclosure for the temperature sensor so will need to test that as well.
I’d be delighted to write an article, however, I’d really like to get my setup working first. I’m disappointed that I’ve not been able to capture reliable readings on the lightning strikes with the simulator.
The lightning simulator appears to be working fine. The challenge I'm having is detecting all of the simulated strikes. I'm fairly certain I have too much electronics nearby. Need to move it to the bench in my garage to continue testing.
Unfortunately no. My issue is more around consistently detecting the strikes. I can run the test script and consistently detect them. Stop and restart the script, and not detect any without changing anything on the lightning simulator.
Some interesting results. Following a cold restart, the script throws "Remote I/O Error" from the I2C mux for the initialization of the BME680 sensor. If I run BME680/read-all.py immediately after the error is thrown on my app, the read-all.py script also throws a "Remote I/O Error." If I run testSHT30.py and then run BME680/read-all.py, I get readings from the pressure sensor. I'm going to have to investigate why initializing the pressure sensor following a reboot throws that error.
Hooray! I finally got some time to sit and tinker. Unfortunately, my tinkering continues to puzzle me. Let me explain. I disassembled my weather station and went back to the bench. Currently, the only things connected to my RPi are my PiGrover and PiWeather. Following a cold boot, I SSH to my RPi and attempt to run BME680/read-all.py which produces a "Remote I/O Error". I'm going to reformat the SD card in my RPi and start from scratch :-).
Sigh...now I'm really concerned. I've reformatted the SD card with a clean installation of Raspberry Pi OS and updated the OS. SSH, camera, and I2C interfaces have been enabled. I've installed pigpio and enabled the daemon, and installed python-smbus. Executing testSDL_Pi_TCA9545.py shows me all relevant connections minus the connection for the sunlight sensor. Finally, I attempted to execute BME680/read-all.py only to receive the "Remote I/O Error". Is it possible that my PiWeather board has become defective?