Adding solar to Wilhelm and getting data into SignalK
My main project this winter has been getting solar installed so that I can keep things up at anchor without running the diesel.
I ordered a 100W panel, a Victron Solar Controller, the cable and some of the hardware from emarine.com. I sized the controller so I can add another 100W panel if needed. This included a Bluetooth LE dongle for the controller, which would allow me to monitor and configure the controller with my phone.
I ordered the rest of the stainless tubing and fittings from defender.com.Love those guys! Always buy from them when I can.
First, I got everything mocked up and tested at home:
With everything hooked up, tested and working, I started to try to reverse engineer the Bluetooth LE protocol with the Victron controller.
They do not provide any documentation for the protocol, so I would have to try to figure it out myself. I ordered the Bluefruit LE Sniffer from adafruit and got it working on my mac. After a few evenings of trying to figure out what was going on, I just duplicated exactly what their app was doing and was able to get data using the raspberry pi. It was a nightmare to get the pi connected to the dongle and the connection was really unreliable. Without documentation, I just could not get it working the way I wanted. The python code which uses gattool and pexpect is here.
So I ordered the Victron VE.Direct USB cable. This ended up being very easy since there was already a python module for reading this on GitHub. I added SignalK delta output to the project, my fork is here.
I got a decent warm day and got everything installed on Wilhelm:
Everything was working and getting great data into WilhelmSK:
It's winter and today was very cloudy, so not much help.
Now, so I can keep track of the performance of the system, time to start recording data from the SignalK. I installed and setup InfluxDB and Grafana and then the signalk-to-influxdb node server plugin.
Here's an example of the result:
Now just waiting for the Sun to come back and get back out on the water!