Pylon US3000C, SMA and Eltek Can Bus
Re: Pylon US3000C, SMA and Eltek Can Bus
I have a spare that I could try it on so will give it a go when I'm able to..
85no 58mm solar thermal tubes, 28.5Kw PV, 3x Sunny Island 5048, 2795 Ah (135kWh) (c20) Rolls batteries 48v, 8kWh Growatt storage, 22 x US3000C Pylontech, Sofar ME3000's, Brosley wood burner and 250lt DHW
Re: Pylon US3000C, SMA and Eltek Can Bus
I had a quick go but it didn't roll back.
85no 58mm solar thermal tubes, 28.5Kw PV, 3x Sunny Island 5048, 2795 Ah (135kWh) (c20) Rolls batteries 48v, 8kWh Growatt storage, 22 x US3000C Pylontech, Sofar ME3000's, Brosley wood burner and 250lt DHW
Re: Pylon US3000C, SMA and Eltek Can Bus
Thanks for trying.
Re: Pylon US3000C, SMA and Eltek Can Bus
The Island Manager off Github has had no traffic for some years, there is a rough guide on The Wayback Machine but too lacking in details to follow. So went a different route to get data and use that to turn loads on and off to stop the Sunny Island reducing the Sunny Boy inverter output when the battery is full.
The Pi runs Yasdi2Mqtt, the data is extracted from the SI and converted from SMANet to MQTT and this goes into Node-red. Node-red extracts the SI AC frequency and if this increases above 51 htz in order to throttle the SB inverter output a signal is sent to a Wemo socket to turn it on, anything plugged into the socket turns on and the extra load is recognised by the SI which responds by dropping the AC frequency which allows the SB inverter output to increase. When the frequency drops below 49.5htz the Wemo is sent a signal to turn off. I will add more rules to include the Battery SOC so as an example if its below 70% the Wemo will stay off but I have yet to see the SI throttle the SB when the battery is at 70%, it seems to be able to take the full PV output.
The Pi runs Yasdi2Mqtt, the data is extracted from the SI and converted from SMANet to MQTT and this goes into Node-red. Node-red extracts the SI AC frequency and if this increases above 51 htz in order to throttle the SB inverter output a signal is sent to a Wemo socket to turn it on, anything plugged into the socket turns on and the extra load is recognised by the SI which responds by dropping the AC frequency which allows the SB inverter output to increase. When the frequency drops below 49.5htz the Wemo is sent a signal to turn off. I will add more rules to include the Battery SOC so as an example if its below 70% the Wemo will stay off but I have yet to see the SI throttle the SB when the battery is at 70%, it seems to be able to take the full PV output.
Last edited by Kommando on Mon Oct 16, 2023 6:34 pm, edited 1 time in total.
Re: Pylon US3000C, SMA and Eltek Can Bus
I'd be really interested in this.
I've just spent the weekend trying to get to grips with Modbus. I'm wanting to read the power on the sunny island (modbus 30777) via the webbox but it appears the SI 5048 doesn't do Modbus.
I use an arduino to read the frequency on the grid using a bell transformer and then this turns heaters, immersion on and off some directly using SSR's (with pWM) and some via TPlink sockets.
85no 58mm solar thermal tubes, 28.5Kw PV, 3x Sunny Island 5048, 2795 Ah (135kWh) (c20) Rolls batteries 48v, 8kWh Growatt storage, 22 x US3000C Pylontech, Sofar ME3000's, Brosley wood burner and 250lt DHW
Re: Pylon US3000C, SMA and Eltek Can Bus
This is the Yasdi2mqtt
https://github.com/pkwagner/yasdi2mqtt
When I installed it I had issues with the current stable version 1.3 which were resolved by using version 1.2. This was a Pi 4b running Raspbian Buster
I get this into MQTT
{
"sn": 1260013210,
"time": 1697467267,
"values": {
"Msg": 0,
"Soh": 98,
"TotInvPwrAt": 0.00009765475988388062,
"TotInvCur": 1.4000976756215096,
"TotInvPwrRt": -0.2999023497104645,
"BatSoc": 100.000099144876,
"BatVtg": 53.00000078976154,
"BatChrgVtg": 54.97500081919134,
"AptTmRmg": 0,
"TotBatCur": -1.6999023705720901,
"BatTmp": 9.800097800791264,
"RmgTmFul": 28,
"RmgTmEqu": 164,
"BatSocErr": 16.50000024586916,
"GnRmgTm": 0,
"InvPwrAt": 0.00009765475988388062,
"InvPwrAtSlv1": 0.00009765475988388062,
"InvPwrAtSlv2": 0.00009765475988388062,
"InvPwrAtSlv3": 0.00009765475988388062,
"InvVtg": 229.90000342577696,
"InvVtgSlv1": 0,
"InvVtgSlv2": 0,
"InvVtgSlv3": 0,
"InvCur": 1.3000976741313934,
"InvCurSlv1": 0.00009765475988388062,
"InvCurSlv2": 0.00009765475988388062,
"InvCurSlv3": 0.00009765475988388062,
"InvFrq": 49.900000743567944,
"InvPwrRt": -0.2999023497104645,
"InvPwrRtSlv1": 0.00009765475988388062,
"InvPwrRtSlv2": 0.00009765475988388062,
"InvPwrRtSlv3": 0.00009765475988388062,
"ExtPwrAt": 0.00009765475988388062,
"ExtPwrAtSlv1": 0.00009765475988388062,
"ExtPwrAtSlv2": 0.00009765475988388062,
"ExtPwrAtSlv3": 0.00009765475988388062,
"ExtVtg": 4.200000062584877,
"ExtVtgSlv1": 0,
"ExtVtgSlv2": 0,
"ExtVtgSlv3": 0,
"ExtCur": 0.30009765923023224,
"ExtCurSlv1": 0.00009765475988388062,
"ExtCurSlv2": 0.00009765475988388062,
"ExtCurSlv3": 0.00009765475988388062,
"ExtFrq": 0,
"ExtPwrRt": 0.00009765475988388062,
"ExtPwrRtSlv1": 0.00009765475988388062,
"ExtPwrRtSlv2": 0.00009765475988388062,
"ExtPwrRtSlv3": 0.00009765475988388062,
"TotExtPwrAt": 0.00009765475988388062,
"TotExtCur": 0.30009765923023224,
"TotExtPwrRt": 0.00009765475988388062,
"TotLodPwr": 0.00009765475988388062,
"GdRmgTm": 0,
"Pac": 0.00009765475988388062,
"Firmware": 7.210000342456624,
"Iac": 1.4000976756215096,
"Vac": 230.00000342726707,
"Fac": 49.900000743567944,
"ChpPwrAt": 0.00009765475988388062,
"ChpRmgTm": 0,
"ChpStrRmgTm": 0,
"Sic1PvPwr": 0,
"Sic2PvPwr": 0,
"Sic3PvPwr": 0,
"Sic4PvPwr": 0,
"TotSicPvPwr": 0,
"TotSicBatCur": 0.00009765475988388062,
"TotMccLodPwr": 0.00009765475988388062,
"TotPvPwrAt": 0,
"TotLodPwrAt": 0,
"SlfCsmpPwrAt": 0,
"SlfCsmpIncPwr": 0,
"BatCpyThrpCnt": 1,
"GdCsmpPwrAt": 0,
"GdFeedPwrAt": 0,
"PacPV": 0.00009765475988388062,
"PacFeed-In": 0.00009765475988388062,
"PacConsumption": 0.00009765475988388062,
"kWhPV": 0,
"FwVer": 7.210000342456624,
"OnTmh": 88640.70132084936,
"FwVer2": 7.200000341981649,
"EgyCntIn": 43436.60064725578,
"EgyCntOut": 28757.300428517163,
"EgyCntTm": 87931.60131028295,
"GnEgyCnt": 44960.70066996664,
"GnEgyTm": 19812.500295229256,
"GnOpTmh": 19881.400296255946,
"GnStrCnt": 56438,
"GdEgyCntIn": 0,
"GdEgyCntOut": 108.10000161081553,
"GdEgyTmh": 0,
"GdOpTmh": 2266.0000337660313,
"GdCtcCnt": 0,
"TotTmh": 0,
"Sic1EgyCntIn": 0,
"Sic2EgyCntIn": 0,
"Sic3EgyCntIn": 0,
"Sic4EgyCntIn": 0,
"TotSicEgyCntIn": 0,
"Sic1TdyEgyCntIn": 0,
"Sic2TdyEgyCntIn": 0,
"Sic3TdyEgyCntIn": 0,
"Sic4TdyEgyCntIn": 0,
"TotSicDyEgyCntI": 0,
"Serial Number": 1260013210,
"E-Total-In": 43436.60064725578,
"E-Total": 28757.300428517163,
"h-On": 88640.70132084936,
"TotLodEgyCnt": 0,
"SlfCsmpIncEgy": 0,
"SlfCsmpEgy": 0,
"SlfCsmpIncTdy": 0,
"GdCsmpEgyTdy": 0,
"kWhFeed-In": 0,
"kWhConsumption": 0,
"GdFeedEgyTdy": 0,
"Adr": "Master",
"OpStt": "Operating",
"OpSttSlv1": "---",
"OpSttSlv2": "---",
"OpSttSlv3": "---",
"CardStt": 2,
"Prio": "Ina",
"BatChrgOp": "Float",
"AptPhs": "Off",
"GnDmdSrc": "None",
"GnStt": "Off",
"InvOpStt": "Run",
"InvOpSttSlv1": "---",
"InvOpSttSlv2": "---",
"InvOpSttSlv3": "---",
"Rly1Stt": "Off",
"Rly2Stt": "Off",
"GnRnStt": "Off",
"Mode": "Operation",
"Error": "-----",
"ChpStt": "Idle",
"PvGdConStt": "---",
"LodGdConStt": "---",
"BatMntStt": "Off"
}
I pass this into a MQTT in node, followed by a change mode with the following
SET msg.payload
TO THE VALUE payload.values.BatVtg which gives me the numeric value of the battery voltage out the change mode.
Use a change mode for every value you want to extract.
https://github.com/pkwagner/yasdi2mqtt
When I installed it I had issues with the current stable version 1.3 which were resolved by using version 1.2. This was a Pi 4b running Raspbian Buster
I get this into MQTT
{
"sn": 1260013210,
"time": 1697467267,
"values": {
"Msg": 0,
"Soh": 98,
"TotInvPwrAt": 0.00009765475988388062,
"TotInvCur": 1.4000976756215096,
"TotInvPwrRt": -0.2999023497104645,
"BatSoc": 100.000099144876,
"BatVtg": 53.00000078976154,
"BatChrgVtg": 54.97500081919134,
"AptTmRmg": 0,
"TotBatCur": -1.6999023705720901,
"BatTmp": 9.800097800791264,
"RmgTmFul": 28,
"RmgTmEqu": 164,
"BatSocErr": 16.50000024586916,
"GnRmgTm": 0,
"InvPwrAt": 0.00009765475988388062,
"InvPwrAtSlv1": 0.00009765475988388062,
"InvPwrAtSlv2": 0.00009765475988388062,
"InvPwrAtSlv3": 0.00009765475988388062,
"InvVtg": 229.90000342577696,
"InvVtgSlv1": 0,
"InvVtgSlv2": 0,
"InvVtgSlv3": 0,
"InvCur": 1.3000976741313934,
"InvCurSlv1": 0.00009765475988388062,
"InvCurSlv2": 0.00009765475988388062,
"InvCurSlv3": 0.00009765475988388062,
"InvFrq": 49.900000743567944,
"InvPwrRt": -0.2999023497104645,
"InvPwrRtSlv1": 0.00009765475988388062,
"InvPwrRtSlv2": 0.00009765475988388062,
"InvPwrRtSlv3": 0.00009765475988388062,
"ExtPwrAt": 0.00009765475988388062,
"ExtPwrAtSlv1": 0.00009765475988388062,
"ExtPwrAtSlv2": 0.00009765475988388062,
"ExtPwrAtSlv3": 0.00009765475988388062,
"ExtVtg": 4.200000062584877,
"ExtVtgSlv1": 0,
"ExtVtgSlv2": 0,
"ExtVtgSlv3": 0,
"ExtCur": 0.30009765923023224,
"ExtCurSlv1": 0.00009765475988388062,
"ExtCurSlv2": 0.00009765475988388062,
"ExtCurSlv3": 0.00009765475988388062,
"ExtFrq": 0,
"ExtPwrRt": 0.00009765475988388062,
"ExtPwrRtSlv1": 0.00009765475988388062,
"ExtPwrRtSlv2": 0.00009765475988388062,
"ExtPwrRtSlv3": 0.00009765475988388062,
"TotExtPwrAt": 0.00009765475988388062,
"TotExtCur": 0.30009765923023224,
"TotExtPwrRt": 0.00009765475988388062,
"TotLodPwr": 0.00009765475988388062,
"GdRmgTm": 0,
"Pac": 0.00009765475988388062,
"Firmware": 7.210000342456624,
"Iac": 1.4000976756215096,
"Vac": 230.00000342726707,
"Fac": 49.900000743567944,
"ChpPwrAt": 0.00009765475988388062,
"ChpRmgTm": 0,
"ChpStrRmgTm": 0,
"Sic1PvPwr": 0,
"Sic2PvPwr": 0,
"Sic3PvPwr": 0,
"Sic4PvPwr": 0,
"TotSicPvPwr": 0,
"TotSicBatCur": 0.00009765475988388062,
"TotMccLodPwr": 0.00009765475988388062,
"TotPvPwrAt": 0,
"TotLodPwrAt": 0,
"SlfCsmpPwrAt": 0,
"SlfCsmpIncPwr": 0,
"BatCpyThrpCnt": 1,
"GdCsmpPwrAt": 0,
"GdFeedPwrAt": 0,
"PacPV": 0.00009765475988388062,
"PacFeed-In": 0.00009765475988388062,
"PacConsumption": 0.00009765475988388062,
"kWhPV": 0,
"FwVer": 7.210000342456624,
"OnTmh": 88640.70132084936,
"FwVer2": 7.200000341981649,
"EgyCntIn": 43436.60064725578,
"EgyCntOut": 28757.300428517163,
"EgyCntTm": 87931.60131028295,
"GnEgyCnt": 44960.70066996664,
"GnEgyTm": 19812.500295229256,
"GnOpTmh": 19881.400296255946,
"GnStrCnt": 56438,
"GdEgyCntIn": 0,
"GdEgyCntOut": 108.10000161081553,
"GdEgyTmh": 0,
"GdOpTmh": 2266.0000337660313,
"GdCtcCnt": 0,
"TotTmh": 0,
"Sic1EgyCntIn": 0,
"Sic2EgyCntIn": 0,
"Sic3EgyCntIn": 0,
"Sic4EgyCntIn": 0,
"TotSicEgyCntIn": 0,
"Sic1TdyEgyCntIn": 0,
"Sic2TdyEgyCntIn": 0,
"Sic3TdyEgyCntIn": 0,
"Sic4TdyEgyCntIn": 0,
"TotSicDyEgyCntI": 0,
"Serial Number": 1260013210,
"E-Total-In": 43436.60064725578,
"E-Total": 28757.300428517163,
"h-On": 88640.70132084936,
"TotLodEgyCnt": 0,
"SlfCsmpIncEgy": 0,
"SlfCsmpEgy": 0,
"SlfCsmpIncTdy": 0,
"GdCsmpEgyTdy": 0,
"kWhFeed-In": 0,
"kWhConsumption": 0,
"GdFeedEgyTdy": 0,
"Adr": "Master",
"OpStt": "Operating",
"OpSttSlv1": "---",
"OpSttSlv2": "---",
"OpSttSlv3": "---",
"CardStt": 2,
"Prio": "Ina",
"BatChrgOp": "Float",
"AptPhs": "Off",
"GnDmdSrc": "None",
"GnStt": "Off",
"InvOpStt": "Run",
"InvOpSttSlv1": "---",
"InvOpSttSlv2": "---",
"InvOpSttSlv3": "---",
"Rly1Stt": "Off",
"Rly2Stt": "Off",
"GnRnStt": "Off",
"Mode": "Operation",
"Error": "-----",
"ChpStt": "Idle",
"PvGdConStt": "---",
"LodGdConStt": "---",
"BatMntStt": "Off"
}
I pass this into a MQTT in node, followed by a change mode with the following
SET msg.payload
TO THE VALUE payload.values.BatVtg which gives me the numeric value of the battery voltage out the change mode.
Use a change mode for every value you want to extract.
Re: Pylon US3000C, SMA and Eltek Can Bus
According to the Webbox Modbus manual it should convert the SMAnet messages coming out of the SI5048 into Modbus TCP held on the Webbox under the ID number assigned to the SI5048. If there was a Webbox going cheap I would give it a try but its looks like part of the SI data is held under ID1 which is the Webbox itself. I have my suspicions that its more difficult than normal straight Modbus TCP where the expectation is the data is held under one ID per server.
If you want to interrogate the Webbox Modbus TCP server these this tool is excellent.
https://github.com/SciFiDryer/ModbusMechanic
Runs on Windows as long as you have Java Runtime installed.
If you want to interrogate the Webbox Modbus TCP server these this tool is excellent.
https://github.com/SciFiDryer/ModbusMechanic
Runs on Windows as long as you have Java Runtime installed.
Re: Pylon US3000C, SMA and Eltek Can Bus
Going to have to think again about the 49.5 Htz. While the battery is still charging and the inverter is producing, to compensate for clocks that use the frequency to keep in time the SI reduces the Htz to get the clocks back in line after a spell of plus 50htz. So loads are turned off prematurely and the on/off cycles are too frequent. So I need a different trigger to stop using the loads which is likely to be based on battery discharge amps above a set level and/or battery voltage.
Last edited by Kommando on Tue Oct 17, 2023 1:36 pm, edited 1 time in total.
Re: Pylon US3000C, SMA and Eltek Can Bus
I turned that off as we only have one clock that it seems to effect and that's on the oven. It does catch me out every now and then though.
85no 58mm solar thermal tubes, 28.5Kw PV, 3x Sunny Island 5048, 2795 Ah (135kWh) (c20) Rolls batteries 48v, 8kWh Growatt storage, 22 x US3000C Pylontech, Sofar ME3000's, Brosley wood burner and 250lt DHW