Replies: 5 comments 13 replies
-
Hi @hazbot72
It is great to hear about another successful installation - it's so handy even when Solis Cloud is down for some reason ;) I made it more interactive with my recent automation to report on the inverter status. Check it out over here - https://github.com/alienatedsec/solis-ha-modbus-cloud/wiki/Sample-Automations#inverter-status-changes
If you could share any configs for your NodeRED it would be great - I am going to upgrade from the
I know that @jmccrohan was analysing the traffic when we discussed my attempts for my design (which ended up with this repo), and maybe he could share the outcome of his investigation. I even looked at the emails and found our conversation about sniffing Waveshare's data back in February :) |
Beta Was this translation helpful? Give feedback.
-
@alienatedsec here is the Node Red flow which I use to pull metrics from the Waveshare server and forward to MQTT & InfluxDB I am using Node Red 3.0.2 and the module "node-red-contrib-modbus" 5.25.0 The blocks of registers to pull from the inverter are defined in the "inject" node. Each block has an arbitrary name (block1, block2 etc) which needs to match up to the same names in the "switch" node There is a function node corresponding to each block which adds the title of each metric and its scaling factor if any. Lastly the list of metrics which are to be forwarded to InfluxDB (I don't send all of them, only a few) is in the function node called "filter to DB" |
Beta Was this translation helpful? Give feedback.
-
Page 34, point 6.4 onwards of this guideline could allow sniffing data from datalogger https://www.waveshare.com/w/upload/4/4d/RS485-to-eth-b-user-manual-EN-v1.33.pdf |
Beta Was this translation helpful? Give feedback.
-
Similar to comments above, I'm just starting out with a simple sniff of the modbus traffic between the datalogger and inverter, using an isolated RS485 to USB jobbie. I'd be interested if anyone has found the same strange pattern of requests the logger does: Interestingly, there are several repeats of the same read multiple requests (same starting address, same length) across the three blocks. I'm guessing there isn't much storage in the logger, so its reading smaller blocks and sending the register data to Solis cloud in multiple pushes, but it is strange that there are so many repeat requests for the same registers. Obviously some of the returned data will be different, but given the clock data seems to report only a single snapshot every 4 mins, it seems a bit strange. Anyone else see similar? |
Beta Was this translation helpful? Give feedback.
-
Instead of intercepting the RS485 traffic, you could intercept the connection of the S3 stick to the Solis Cloud and redirect/decode/block the traffic at HTTPS level. But, I actually recommend completely replacing the S3 firmware with ESPHome. |
Beta Was this translation helpful? Give feedback.
-
I followed the design laid out here and was pleasantly surprised that I managed to get it all set up correctly on first attempt and everything works perfectly.
My datalogger (S3-WIFI-ST) continues to send data to Solis Cloud as before and is none the wiser that it is no longer plugged directly into the inverter. Meanwhile I am collecting stats locally every 10 seconds using Node Red with the modbus add-in, and forwarding them to MQTT and a subset to InfluxDB. From there I view everything in Grafana.
Many thanks @alienatedsec for documenting this! It is exactly the setup that I had been hoping for.
One thing I thought I might have been able to do is to "snoop" the traffic coming from the datalogger and then decipher the Modbus requests which (it thinks) it is sending to the inverter. I thought this might help to figure out which registers I need to capture.
I have tried using tcpdump/Wireshark to capture network packets and decode them as Modbus protocol (which apparently Wireshark can do) , but I do not get any recognisable traffic this way.
I also tried setting up a Modbus TCP proxy (https://github.com/tiagocoutinho/modbus-proxy) on a Raspberry Pi and directing requests from the client Waveshare through it, and again the datalogger kept working fine but there isn't enough detail in the proxy logs to figure out what the datalogger is doing.
Anybody else tried this approach to decode what the datalogger is requesting?
It's just a side note to the otherwise successful outcome but I am curious to see if this is possible or even useful.
Beta Was this translation helpful? Give feedback.
All reactions