Mar-05-2023, 11:12 PM
Well...
First, thank you for the reply as it's appreciated...
Second, the reason is because I'm a complete newbie Python coder and haven't yet reached a level of understanding to even understand the above code...but I'll certainly give it a try, and try and learn from it...I'm diligently reading my O'Reilly Intro to Python book right now (sadly I bought it years ago and it's an older addition). Python is quite different from the other languages I've used so there's a bit of a learning curve for me...
But Thirdly, I'm trying to understand, given the code I posted, why the addition of Print statements or the lack thereof can cause random failures when the code is executed. I'm assuming it's because of how variable scope declarations are handled in Python, but I'm not sure.
I'm trying to build a system that will monitor 4 of my off grid buildings, each with its own solar and battery system. Right now I have to walk to within Bluetooth range of each building (spread over 40 acres) and connect to the BMS' with a phone app, to get readings. All these building are interconnected on my LAN (some wired, some microwave linked). I found a potential solution for bluetooth connectivity using RPis on GitHub (username tgalarneau, project BMS) and have tweaked his code base for my purposes. The idea is to use an existing RPi in each building to attach and read the BMS data every 5 minutes and publish that data to an MQTT broker in the main building. I'll then grab that JSON based MQTT data and push it into my Maria/MySQL DB and then present a unified view of all the systems using Grafana. I'm more familiar with all of that process and less with Python, but heck, I like to learn...and I'm snowed in now anyway...
The borrowed code was writing multiple messages to MQTT and I wanted to unify that into a single message containing the data I want to track, so I pulled the MQTT post process out of the original individual functions (and deleted a couple I didn't need at all to streamline things) and thought I could use a global list to hold the values retrieve by each function that I want to use, and then have a singled MQTT post process. So, I've kind of hacked tgalarneau's code without really understanding its finer points.
Your code dealing with "delegates" is new to me so I guess I need to dig into that a lot more to understand why the "tgalarneau" code was set up the way it was.
So, do you see anything in the code I have that would be causing a seemingly random "works/fails" situation and the "list index out of range" issue?
Again, thanks for the reply...
First, thank you for the reply as it's appreciated...
Second, the reason is because I'm a complete newbie Python coder and haven't yet reached a level of understanding to even understand the above code...but I'll certainly give it a try, and try and learn from it...I'm diligently reading my O'Reilly Intro to Python book right now (sadly I bought it years ago and it's an older addition). Python is quite different from the other languages I've used so there's a bit of a learning curve for me...
But Thirdly, I'm trying to understand, given the code I posted, why the addition of Print statements or the lack thereof can cause random failures when the code is executed. I'm assuming it's because of how variable scope declarations are handled in Python, but I'm not sure.
I'm trying to build a system that will monitor 4 of my off grid buildings, each with its own solar and battery system. Right now I have to walk to within Bluetooth range of each building (spread over 40 acres) and connect to the BMS' with a phone app, to get readings. All these building are interconnected on my LAN (some wired, some microwave linked). I found a potential solution for bluetooth connectivity using RPis on GitHub (username tgalarneau, project BMS) and have tweaked his code base for my purposes. The idea is to use an existing RPi in each building to attach and read the BMS data every 5 minutes and publish that data to an MQTT broker in the main building. I'll then grab that JSON based MQTT data and push it into my Maria/MySQL DB and then present a unified view of all the systems using Grafana. I'm more familiar with all of that process and less with Python, but heck, I like to learn...and I'm snowed in now anyway...
The borrowed code was writing multiple messages to MQTT and I wanted to unify that into a single message containing the data I want to track, so I pulled the MQTT post process out of the original individual functions (and deleted a couple I didn't need at all to streamline things) and thought I could use a global list to hold the values retrieve by each function that I want to use, and then have a singled MQTT post process. So, I've kind of hacked tgalarneau's code without really understanding its finer points.
Your code dealing with "delegates" is new to me so I guess I need to dig into that a lot more to understand why the "tgalarneau" code was set up the way it was.
So, do you see anything in the code I have that would be causing a seemingly random "works/fails" situation and the "list index out of range" issue?
Again, thanks for the reply...