-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Latest firmware broke integration #15
Comments
Hi, |
Hi, |
I confirm that 16/15 shows generation power. Without shifting that was grid power previously, not sure where it is now |
Hello,
here is a Node-Red export, the addresses are not fully checked. But for my purposes (iobroker) it is enough.
Hope you can do something with it.
Greetings hartmut
{
"type": "int16be",
"name": "GridPower",
"offset": 15,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "GenerationPower",
"offset": 17,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "LoadsPower",
"offset": 19,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
},
{
"type": "int16be",
"name": "GridCurrent_R",
"offset": 23,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "GridFrequency_R",
"offset": 25,
"length": 1,
"offsetbit": 0,
"scale": "0.01",
"mask": ""
},
{
"type": "int16be",
"name": "GridPower_R",
"offset": 27,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "GridVoltage_S",
"offset": 29,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "int16be",
"name": "GridCurrent_S",
"offset": 31,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "GridFrequency_S",
"offset": 33,
"length": 1,
"offsetbit": 0,
"scale": "0.01",
"mask": ""
},
{
"type": "int16be",
"name": "GridPower_S",
"offset": 35,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "GridVoltage_T",
"offset": 37,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "int16be",
"name": "GridCurrent_T",
"offset": 39,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "GridFrequency_T",
"offset": 41,
"length": 1,
"offsetbit": 0,
"scale": "0.01",
"mask": ""
},
{
"type": "int16be",
"name": "GridPower_T",
"offset": 43,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV1Voltage",
"offset": 45,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV1Current",
"offset": 47,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV1Power",
"offset": 49,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV2Voltage",
"offset": 51,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV2Current",
"offset": 53,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV2Power",
"offset": 55,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "BoostTemperatur",
"offset": 69,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "InverterTemperatur",
"offset": 71,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "AmbientTemperatur",
"offset": 73,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "TodayYield",
"offset": 75,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "GenerationTotal",
"offset": 77,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "FromGridYieldGeneration",
"offset": 81,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "FeedInGeneration1",
"offset": 85,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "FeedInGeneration2",
"offset": 89,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "ConsumptionGeneration1",
"offset": 93,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "ConsumptionGeneration2",
"offset": 97,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "uint32be",
"name": "LoadsGeneration",
"offset": 101,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "int16be",
"name": "EpsVoltageR",
"offset": 105,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "int16be",
"name": "EpsCurrentR",
"offset": 107,
"length": 1,
"offsetbit": 0,
"scale": "0.1",
"mask": ""
},
{
"type": "int16be",
"name": "EpsPowerR",
"offset": 109,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_1",
"offset": 111,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_2",
"offset": 113,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_3",
"offset": 115,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_4",
"offset": 117,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_5",
"offset": 119,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_6",
"offset": 121,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_7",
"offset": 123,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_8",
"offset": 125,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_9",
"offset": 127,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "int16be",
"name": "Rev_10",
"offset": 129,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD1",
"offset": 131,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD2",
"offset": 135,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD3",
"offset": 139,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD4",
"offset": 143,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD5",
"offset": 147,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD6",
"offset": 151,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD7",
"offset": 155,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint32be",
"name": "FaultMessage_DWORD8",
"offset": 159,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "Master State",
"offset": 163,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
},
{
"type": "uint16be",
"name": "PV Input Number",
"offset": 165,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
}
…________________________________
Von: Giedrius Kilčauskas ***@***.***>
Gesendet: Sonntag, 6. August 2023 17:30
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
Hi, i'm working on adding support for the new firmware (new protocol). Link to HA Forum<https://community.home-assistant.io/t/foxess-inverter-modbus/459313/164?u=assembly> I'm allmost there, just waiting for the confirmation on the generation power.
I confirm that 16/15 shows generation power. Without shifting that was grid power previously, not sure where it is now
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YUZLWABRJGUPTNWBOITXT62B3ANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
Hello,
just tested -
15/16 generation power
175/176 grid power
Greetings Hartmut
…________________________________
Von: Giedrius Kilčauskas ***@***.***>
Gesendet: Sonntag, 6. August 2023 17:30
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
Hi, i'm working on adding support for the new firmware (new protocol). Link to HA Forum<https://community.home-assistant.io/t/foxess-inverter-modbus/459313/164?u=assembly> I'm allmost there, just waiting for the confirmation on the generation power.
I confirm that 16/15 shows generation power. Without shifting that was grid power previously, not sure where it is now
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YUZLWABRJGUPTNWBOITXT62B3ANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
Here is the effect of my tests: |
[cid:7c305820-fbfb-4b01-b92a-da9eb3c649e4]
Hello,
I think so it is ok, please test.
…________________________________
Von: Tanil2008 ***@***.***>
Gesendet: Dienstag, 8. August 2023 20:08
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
Here is the effect of my tests:
foxess_t_series.zip<https://github.com/assembly12/Foxess-T-series-ESPHome-Home-Assistant/files/12294568/foxess_t_series.zip>
To determine the bits T-Series Grid Current R, T-Series Grid Current S, T-Series Grid Current T - because they show bad data.
My inverter: Foxess T5 G3, manager 1.20.
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YU5DRF6KDZCAEBUDHW3XUJ6BNANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
#include "esphome.h"
unsigned long millis_lastmessage = 0;
const long inverter_timeout = 300000;
int inverter_mode = 99; //0=Offline, 1=Online, 2=Error, 99=Waiting for response...
class foxesscomponent : public PollingComponent, public Sensor, public UARTDevice {
public:
foxesscomponent(UARTComponent *parent) : PollingComponent(600), UARTDevice(parent) {}
Sensor *frame_header = new Sensor;
Sensor *function_code = new Sensor;
Sensor *time_stamp = new Sensor;
Sensor *data_length = new Sensor;
Sensor *grid_power = new Sensor;
Sensor *generation_power = new Sensor;
Sensor *loads_power = new Sensor;
Sensor *grid_voltage_r = new Sensor;
Sensor *grid_current_r = new Sensor;
Sensor *grid_frequency_r = new Sensor;
Sensor *grid_power_r = new Sensor;
Sensor *grid_voltage_s = new Sensor;
Sensor *grid_current_s = new Sensor;
Sensor *grid_frequency_s = new Sensor;
Sensor *grid_power_s = new Sensor;
Sensor *grid_voltage_T = new Sensor;
Sensor *grid_current_T = new Sensor;
Sensor *grid_frequency_T = new Sensor;
Sensor *grid_power_T = new Sensor;
Sensor *pv1_voltage = new Sensor;
Sensor *pv1_current = new Sensor;
Sensor *pv1_power = new Sensor;
Sensor *pv2_voltage = new Sensor;
Sensor *pv2_current = new Sensor;
Sensor *pv2_power = new Sensor;
Sensor *pv3_voltage = new Sensor;
Sensor *pv3_current = new Sensor;
Sensor *pv3_power = new Sensor;
Sensor *pv4_voltage = new Sensor;
Sensor *pv4_current = new Sensor;
Sensor *pv4_power = new Sensor;
Sensor *boost_temperature = new Sensor;
Sensor *inverter_temperature = new Sensor;
Sensor *ambient_temperature = new Sensor;
Sensor *today_yield = new Sensor;
Sensor *generation_total = new Sensor;
Sensor *from_grid_yield_generation = new Sensor;
Sensor *inverter_state = new Sensor;
void setup() override {
id(inverter_state).publish_state(inverter_mode);
millis_lastmessage = millis();
}
std::vector<int> bytes;
//void loop() override {
void update() {
if(millis_lastmessage + inverter_timeout < millis()) {
if(inverter_mode != 0){
inverter_mode = 0; //offline
id(inverter_state).publish_state(inverter_mode);
id(generation_power).publish_state(0);
id(grid_current_r).publish_state(0);
id(grid_power_r).publish_state(0);
id(grid_current_T).publish_state(0);
id(grid_power_T).publish_state(0);
id(grid_current_s).publish_state(0);
id(grid_power_s).publish_state(0);
id(pv1_current).publish_state(0);
id(pv1_power).publish_state(0);
id(pv2_current).publish_state(0);
id(pv2_power).publish_state(0);
id(pv3_current).publish_state(0);
id(pv3_power).publish_state(0);
id(pv4_current).publish_state(0);
id(pv4_power).publish_state(0);
}
}
while(available() > 0) {
bytes.push_back(read());
//ESP_LOGD("custom", "reading bytes");
//make sure at least 9 header bytes are available to check
if(bytes.size() < 9){
continue;
}
if(bytes[0] != 0x7E || bytes[1] != 0x7E || bytes[2] != 0x02) {
bytes.erase(bytes.begin()); //remove first byte from buffer
//buffer will never get above 9 until the header is correct
continue;
}
else {
}
//if(bytes.size() == 9) { //>=
TwoByte message_length;
message_length.Byte[0] = bytes[8];
message_length.Byte[1] = bytes[7];
uint16_t total_message_length = message_length.UInt16 + 13;
//}
if(bytes.size() == total_message_length) { //>=
//if(bytes.size() == 165) { //>=
if(bytes[total_message_length-1] != 0xE7 || bytes[total_message_length-2] != 0xE7) {
//if(bytes[164] != 0xE7 || bytes[163] != 0xE7) {
bytes.clear();
ESP_LOGD("custom", "error in reading message");
continue;
}
ESP_LOGD("custom", "succesfully read realtime data");
ESP_LOGI("custom", "User data length: %i", message_length.UInt16);
ESP_LOGI("custom", "Total message length: %i", total_message_length);
millis_lastmessage = millis();
inverter_mode = 1;
TwoByte grid_power_value;
grid_power_value.Byte[0] = bytes[176];
grid_power_value.Byte[1] = bytes[175];
id(grid_power).publish_state(grid_power_value.UInt16);
delay(50);
TwoByte generation_power_value;
generation_power_value.Byte[0] = bytes[16];
generation_power_value.Byte[1] = bytes[15];
id(generation_power).publish_state(generation_power_value.Int16);
delay(50);
TwoByte loads_power_value;
loads_power_value.Byte[0] = bytes[20];
loads_power_value.Byte[1] = bytes[19];
id(loads_power).publish_state(loads_power_value.Int16);
delay(50);
TwoByte grid_voltage_r_value;
grid_voltage_r_value.Byte[0] = bytes[22];
grid_voltage_r_value.Byte[1] = bytes[21];
id(grid_voltage_r).publish_state(grid_voltage_r_value.UInt16);
delay(50);
TwoByte grid_current_r_value;
grid_current_r_value.Byte[0] = bytes[24];
grid_current_r_value.Byte[1] = bytes[23];
id(grid_current_r).publish_state(grid_current_r_value.Int16);
delay(50);
TwoByte grid_frequency_r_value;
grid_frequency_r_value.Byte[0] = bytes[26];
grid_frequency_r_value.Byte[1] = bytes[25];
id(grid_frequency_r).publish_state(grid_frequency_r_value.UInt16);
delay(50);
TwoByte grid_power_r_value;
grid_power_r_value.Byte[0] = bytes[28];
grid_power_r_value.Byte[1] = bytes[27];
id(grid_power_r).publish_state(grid_power_r_value.Int16);
delay(50);
TwoByte grid_voltage_s_value;
grid_voltage_s_value.Byte[0] = bytes[30];
grid_voltage_s_value.Byte[1] = bytes[29];
id(grid_voltage_s).publish_state(grid_voltage_s_value.UInt16);
delay(50);
TwoByte grid_current_s_value;
grid_current_s_value.Byte[0] = bytes[32];
grid_current_s_value.Byte[1] = bytes[31];
id(grid_current_s).publish_state(grid_current_s_value.Int16);
delay(50);
TwoByte grid_frequency_s_value;
grid_frequency_s_value.Byte[0] = bytes[34];
grid_frequency_s_value.Byte[1] = bytes[33];
id(grid_frequency_s).publish_state(grid_frequency_s_value.UInt16);
delay(50);
TwoByte grid_power_s_value;
grid_power_s_value.Byte[0] = bytes[36];
grid_power_s_value.Byte[1] = bytes[35];
id(grid_power_s).publish_state(grid_power_s_value.UInt16);
delay(50);
TwoByte grid_voltage_T_value;
grid_voltage_T_value.Byte[0] = bytes[38];
grid_voltage_T_value.Byte[1] = bytes[37];
id(grid_voltage_T).publish_state(grid_voltage_T_value.UInt16);
delay(50);
TwoByte grid_current_T_value;
grid_current_T_value.Byte[0] = bytes[40];
grid_current_T_value.Byte[1] = bytes[39];
id(grid_current_T).publish_state(grid_current_T_value.UInt16);
delay(50);
TwoByte grid_frequency_T_value;
grid_frequency_T_value.Byte[0] = bytes[42];
grid_frequency_T_value.Byte[1] = bytes[41];
id(grid_frequency_T).publish_state(grid_frequency_T_value.UInt16);
delay(50);
TwoByte grid_power_T_value;
grid_power_T_value.Byte[0] = bytes[44];
grid_power_T_value.Byte[1] = bytes[43];
id(grid_power_T).publish_state(grid_power_T_value.UInt16);
delay(50);
TwoByte pv1_voltage_value;
pv1_voltage_value.Byte[0] = bytes[46];
pv1_voltage_value.Byte[1] = bytes[45];
id(pv1_voltage).publish_state(pv1_voltage_value.UInt16);
delay(50);
TwoByte pv1_current_value;
pv1_current_value.Byte[0] = bytes[48];
pv1_current_value.Byte[1] = bytes[47];
id(pv1_current).publish_state(pv1_current_value.UInt16);
delay(50);
TwoByte pv2_voltage_value;
pv2_voltage_value.Byte[0] = bytes[52];
pv2_voltage_value.Byte[1] = bytes[51];
id(pv2_voltage).publish_state(pv2_voltage_value.UInt16);
delay(50);
TwoByte pv2_current_value;
pv2_current_value.Byte[0] = bytes[54];
pv2_current_value.Byte[1] = bytes[53];
id(pv2_current).publish_state(pv2_current_value.UInt16);
delay(50);
TwoByte pv3_voltage_value;
pv3_voltage_value.Byte[0] = bytes[58];
pv3_voltage_value.Byte[1] = bytes[57];
id(pv3_voltage).publish_state(pv3_voltage_value.UInt16);
delay(50);
TwoByte pv3_current_value;
pv3_current_value.Byte[0] = bytes[60];
pv3_current_value.Byte[1] = bytes[59];
id(pv3_current).publish_state(pv3_current_value.UInt16);
delay(50);
TwoByte pv4_voltage_value;
pv4_voltage_value.Byte[0] = bytes[64];
pv4_voltage_value.Byte[1] = bytes[63];
id(pv4_voltage).publish_state(pv4_voltage_value.UInt16);
delay(50);
TwoByte pv4_current_value;
pv4_current_value.Byte[0] = bytes[66];
pv4_current_value.Byte[1] = bytes[65];
id(pv4_current).publish_state(pv4_current_value.UInt16);
delay(50);
TwoByte boost_temperature_value;
boost_temperature_value.Byte[0] = bytes[70];
boost_temperature_value.Byte[1] = bytes[69];
id(boost_temperature).publish_state(boost_temperature_value.UInt16);
delay(50);
TwoByte inverter_temperature_value;
inverter_temperature_value.Byte[0] = bytes[72];
inverter_temperature_value.Byte[1] = bytes[71];
id(inverter_temperature).publish_state(inverter_temperature_value.UInt16);
delay(50);
TwoByte ambient_temperature_value;
ambient_temperature_value.Byte[0] = bytes[74];
ambient_temperature_value.Byte[1] = bytes[73];
id(ambient_temperature).publish_state(ambient_temperature_value.UInt16);
delay(50);
TwoByte today_yield_value;
today_yield_value.Byte[0] = bytes[76];
today_yield_value.Byte[1] = bytes[75];
id(today_yield).publish_state(today_yield_value.UInt16);
delay(50);
uint32_t generation_total_value = int(
(unsigned char)(bytes[77]) << 24 |
(unsigned char)(bytes[78]) << 16 |
(unsigned char)(bytes[79]) << 8 |
(unsigned char)(bytes[80]));
id(generation_total).publish_state(generation_total_value);
delay(50);
uint32_t FaultMessage1_value = int(
(unsigned char)(bytes[131]) << 24 |
(unsigned char)(bytes[132]) << 16 |
(unsigned char)(bytes[133]) << 8 |
(unsigned char)(bytes[134]));
delay(50);
uint32_t FaultMessage2_value = int(
(unsigned char)(bytes[135]) << 24 |
(unsigned char)(bytes[136]) << 16 |
(unsigned char)(bytes[137]) << 8 |
(unsigned char)(bytes[138]));
delay(50);
uint32_t FaultMessage3_value = int(
(unsigned char)(bytes[139]) << 24 |
(unsigned char)(bytes[140]) << 16 |
(unsigned char)(bytes[141]) << 8 |
(unsigned char)(bytes[142]));
delay(50);
uint32_t FaultMessage4_value = int(
(unsigned char)(bytes[143]) << 24 |
(unsigned char)(bytes[144]) << 16 |
(unsigned char)(bytes[145]) << 8 |
(unsigned char)(bytes[146]));
delay(50);
uint32_t FaultMessage5_value = int(
(unsigned char)(bytes[147]) << 24 |
(unsigned char)(bytes[148]) << 16 |
(unsigned char)(bytes[149]) << 8 |
(unsigned char)(bytes[150]));
delay(50);
uint32_t FaultMessage6_value = int(
(unsigned char)(bytes[151]) << 24 |
(unsigned char)(bytes[152]) << 16 |
(unsigned char)(bytes[153]) << 8 |
(unsigned char)(bytes[154]));
delay(50);
uint32_t FaultMessage7_value = int(
(unsigned char)(bytes[155]) << 24 |
(unsigned char)(bytes[156]) << 16 |
(unsigned char)(bytes[157]) << 8 |
(unsigned char)(bytes[158]));
delay(50);
uint32_t FaultMessage8_value = int(
(unsigned char)(bytes[159]) << 24 |
(unsigned char)(bytes[160]) << 16 |
(unsigned char)(bytes[161]) << 8 |
(unsigned char)(bytes[162]));
delay(50);
if(FaultMessage1_value != 0 || FaultMessage2_value != 0 || FaultMessage3_value != 0 || FaultMessage4_value != 0 || FaultMessage5_value != 0 || FaultMessage6_value != 0 || FaultMessage7_value != 0 || FaultMessage8_value != 0) {
ESP_LOGI("custom", "Fault message 1: %i", FaultMessage1_value);
ESP_LOGI("custom", "Fault message 2: %i", FaultMessage2_value);
ESP_LOGI("custom", "Fault message 3: %i", FaultMessage3_value);
ESP_LOGI("custom", "Fault message 4: %i", FaultMessage4_value);
ESP_LOGI("custom", "Fault message 5: %i", FaultMessage5_value);
ESP_LOGI("custom", "Fault message 6: %i", FaultMessage6_value);
ESP_LOGI("custom", "Fault message 7: %i", FaultMessage7_value);
ESP_LOGI("custom", "Fault message 8: %i", FaultMessage8_value);
inverter_mode = 2; //error
}
else {
inverter_mode = 1; //online
}
//calculate PV power from pv current and pv voltage:
uint32_t pv1_power_value = pv1_current_value.UInt16 * pv1_voltage_value.UInt16 * 0.01;
id(pv1_power).publish_state(pv1_power_value);
delay(50);
uint32_t pv2_power_value = pv2_current_value.UInt16 * pv2_voltage_value.UInt16 * 0.01;
id(pv2_power).publish_state(pv2_power_value);
delay(50);
uint32_t pv3_power_value = pv3_current_value.UInt16 * pv3_voltage_value.UInt16 * 0.01;
id(pv3_power).publish_state(pv3_power_value);
delay(50);
uint32_t pv4_power_value = pv4_current_value.UInt16 * pv4_voltage_value.UInt16 * 0.01;
id(pv4_power).publish_state(pv4_power_value);
delay(50);
id(inverter_state).publish_state(inverter_mode);
bytes.clear();
}
else {
}
}
}
typedef union
{
unsigned char Byte[2];
int16_t Int16;
uint16_t UInt16;
unsigned char UChar;
char Char;
}TwoByte;};
|
Did someone test the latest Manager Version 1.22? |
With Manager Firmware 1.22 the RS485 port is dead, just like with version 1.21. |
ok, thanks for that information. Is a downgrade possible?
Von meinem iPhone gesendet
… Am 12.08.2023 um 17:28 schrieb hartmut58 ***@***.***>:
With Manager Firmware 1.22 the RS485 port is dead, just like with version 1.21.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Downgrade is possible via USB, rename ...1.20 to ...1.22 (no guarantee, can of course go wrong)
________________________________
Von: Danielxyz123 ***@***.***>
Gesendet: Samstag, 12. August 2023 21:57
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
ok, thanks for that information. Is a downgrade possible?
Von meinem iPhone gesendet
Am 12.08.2023 um 17:28 schrieb hartmut58 ***@***.***>:
With Manager Firmware 1.22 the RS485 port is dead, just like with version 1.21.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YU7ISNFDZE7MD7FTSM3XU7N3ZANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
Ok, where do i get the File? Only from Support?
Von meinem iPhone gesendet
… Am 13.08.2023 um 09:43 schrieb hartmut58 ***@***.***>:
Downgrade is possible via USB, rename ...1.20 to ...1.22 (no guarantee, can of course go wrong)
________________________________
Von: Danielxyz123 ***@***.***>
Gesendet: Samstag, 12. August 2023 21:57
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
ok, thanks for that information. Is a downgrade possible?
Von meinem iPhone gesendet
> Am 12.08.2023 um 17:28 schrieb hartmut58 ***@***.***>:
>
>
> With Manager Firmware 1.22 the RS485 port is dead, just like with version 1.21.
>
> —
> Reply to this email directly, view it on GitHub, or unsubscribe.
> You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YU7ISNFDZE7MD7FTSM3XU7N3ZANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Yes, open a ticket with support, otherwise Foxess will not notice the bug.
________________________________
Von: Danielxyz123 ***@***.***>
Gesendet: Sonntag, 13. August 2023 10:01
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
Ok, where do i get the File? Only from Support?
Von meinem iPhone gesendet
Am 13.08.2023 um 09:43 schrieb hartmut58 ***@***.***>:
Downgrade is possible via USB, rename ...1.20 to ...1.22 (no guarantee, can of course go wrong)
________________________________
Von: Danielxyz123 ***@***.***>
Gesendet: Samstag, 12. August 2023 21:57
An: assembly12/Foxess-T-series-ESPHome-Home-Assistant ***@***.***>
Cc: hartmut58 ***@***.***>; Comment ***@***.***>
Betreff: Re: [assembly12/Foxess-T-series-ESPHome-Home-Assistant] Latest firmware broke integration (Issue #15)
ok, thanks for that information. Is a downgrade possible?
Von meinem iPhone gesendet
> Am 12.08.2023 um 17:28 schrieb hartmut58 ***@***.***>:
>
>
> With Manager Firmware 1.22 the RS485 port is dead, just like with version 1.21.
>
> —
> Reply to this email directly, view it on GitHub, or unsubscribe.
> You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YU7ISNFDZE7MD7FTSM3XU7N3ZANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub<#15 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ATO6YUZE7WFKUDCWLTH26KLXVCCXLANCNFSM6AAAAAA3COMLXA>.
You are receiving this because you commented.Message ID: ***@***.***>
|
Does somebody not this project? https://github.com/peper0/foxess-t-modbus-ha Seems that Modbus is recently possible ? |
This approach promises almost real time data and if I understood correctly it does it because it is connected to the meter RS485 side not the data RS485 that assembly12-s version uses. My T10 G3 shows almost real time data on its display so the inverter must have it available somehow. I just got my system running today and I installed a smart meter but I have not been able to get my ESP and home assistant working as intended. Possibly because of the firmware issue? I am on manager 1.21. Anyways I had a thought about connecting the ESP to the Meter connections alongside the meter itself. Would it work or does the RS485 not work like that? If someone here has a smart meter and has this integration working - maybe you could try it out and let us know. I am already sick of seeing the 5 minute old data from FoxEss Cloud :( Edit: Does anyone have a working version that would possibly work with Manager 1.21 or when could we expect it? Thank You! |
No, unfortunately it doesn’t work with a G3 model. He’s using an older model.
He also usen Pin 1 and 2 like assambly12.
But with assembly12‘s solution you get the data every 90 seconds. Better than 5min…
I also read the smartmeter parallel to the G3. There you can listen and get (only) the current „combinedPower“ every 100ms if the inverter is on.
I also tried to read the other data from the (chint) smartmeter when the inverter is off. It‘s easy by modbus when the master is offline..
It work also parallel (second master, normaly not allowed)… if you „fire“ between the messages of the inverter to the chint.. Not nice but it works. I you try this only every 2 seconds the inverter does not go into a fault. But intakes a lot of shots to get the data successfull…
Best wishes
Daniel
Von meinem iPhone gesendet
… Am 18.08.2023 um 15:54 schrieb mekket ***@***.***>:
Does somebody not this project?
https://github.com/peper0/foxess-t-modbus-ha
Seems that Modbus is recently possible ?
This approach promises almost real time data and if I understood correctly it does it because it is connected to the meter RS485 side not the data RS485 that assembly12-s version uses. My T10 G3 shows almost real time data on its display so the inverter must have it available somehow. I just got my system running today and I installed a smart meter but I have not been able to get my ESP and home assistant working as intended. Possibly because of the firmware issue? I am on manager 1.21. Anyways I had a thought about connecting the ESP to the Meter connections alongside the meter itself. Would it work or does the RS485 not work like that? If someone here has a smart meter and has this integration working - maybe you could try it out and let us know. I am already sick of seeing the 5 minute old data from FoxEss Cloud :(
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Do You also have a T10 G3? Is assemblys version or some modified version of it working for you? Did you downgrade your firmware? |
Yes, i have s T10 G3. Which Firmware do you use? It worked until i used manager 1.22 🙈. I‘m working on an downgrade. But currently no success. The support sends me some Files but it dont‘t work yet..
Von meinem iPhone gesendet
… Am 18.08.2023 um 19:21 schrieb mekket ***@***.***>:
Do You also have a T10 G3? Is assemblys version or some modified version of it working for you? Did you downgrade your firmware?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
So I understand right that manager 1.22 kills access to RS485 and it's no longer working. No data coming in at all or it's somewhat garbage? I currently have 1.21 and with above changes to addressing, all works fine. |
Yes, it seems that 1.22 does deactivate that “sending data” on rs485…
I don’t know if it’s a bug. Downgrade didn’t work for me yet…
Von meinem iPhone gesendet
… Am 22.08.2023 um 10:24 schrieb Giedrius Kilčauskas ***@***.***>:
Yes, i have s T10 G3. Which Firmware do you use? It worked until i used manager 1.22 🙈. I‘m working on an downgrade. But currently no success. The support sends me some Files but it dont‘t work yet.. Von meinem iPhone gesendet
…
Am 18.08.2023 um 19:21 schrieb mekket @.***>: Do You also have a T10 G3? Is assemblys version or some modified version of it working for you? Did you downgrade your firmware? — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.
So I understand right that manager 1.22 kills access to RS485 and it's no longer working. No data coming in at all or it's somewhat garbage? I currently have 1.21 and with above changes to addressing, all works fine.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
For me too, it seems that Manager 1.21 and Manager 1.22 disables the sending of data. (Inverter T10-G3) |
Original / 10-300-11040-xx_T30_Manager_V1.20.bin |
Thx, a lot. It works 👌🏻
Von meinem iPhone gesendet
… Am 22.08.2023 um 14:33 schrieb hartmut58 ***@***.***>:
Original / 10-300-11040-xx_T30_Manager_V1.20.bin
New / T30_Manager_V1.22.bin
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Hi guys! Sorry i've been quiet for a while, I had some personal business to attend to. Addressing some of the topics that were discussed in this issue:
|
Hi, in my experience, the firmware manager1.20 is the last one with working RS485 data. |
Should the RS485 converter flash leds or show some sign of communication? Im on Manager 1.21, Master 1.27 and Slave 1.01. T10 G3. My inverter is in my basement so the wifi signal there is not the best but I have tried twice and it seems that both times when I connect my ESP to the inverter it will not even connect to my wifi and I think it brings down the cloud connection as well because the inverter status goes to Offline shortly after I connect the ESP. It will come back to normal when I remove it. The ESP was able to communicate "blank" values to home assistant when it was on my table. I am using the registry numbers from xndz who has it working on 1.21. I don't even know where to start my troubleshooting because I can not be sure that my inverter is even able to communicate over RS485. The RED power indicator LED is on but there seems to be another one next to it and that one is constantly off - should it flash when working normally? |
It doesn‘t work with 1.21..
Last working is 1.20… thats what hartmut also said.
Von meinem iPhone gesendet
… Am 23.08.2023 um 17:36 schrieb mekket ***@***.***>:
Should the RS485 converter flash leds or show some sign of communication? Im on Manager 1.21, Master 1.27 and Slave 1.01. T10 G3. My inverter is in my basement so the wifi signal there is not the best but I have tried twice and it seems that both times when I connect my ESP to the inverter it will not even connect to my wifi and I think it brings down the cloud connection as well because the inverter status goes to Offline shortly after I connect the ESP. It will come back to normal when I remove it. The ESP was able to communicate "blank" values to home assistant when it was on my table. I am using the registry numbers from xndz who has it working on 1.21.
I don't even know where to start my troubleshooting because I can not be sure that my inverter is even able to communicate over RS485. The RED power indicator LED is on but there seems to be another one next to it and that one is constantly off - should it flash when working normally?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Well, 1.21 clearly works fine for me |
Inverter going offline would indicate something like short circuiting wrong pins or so. For me the basic rs485 adapter didn't work, so I've got a bit more advanced one with automatic flow control and I also power ESP via usb (so don't use step-down from 12V) |
The inverter itself stays online and keeps working, the communication seems to go down even for the cloud. I will try again tomorrow and if that is still the case it must be either my connections or the fact that we have 3 different people with 1.21 with 3 different results. |
I re-flashed my ESP and now it is working as intended(On manager 1.21) Is there a way to change the inverter settings with this approach? Like changing the export limit with HA automations? |
Does somebody know, which function has manager, master, slave software for T-Series? Is standalone only manager relevant?
Von meinem iPhone gesendet
… Am 29.08.2023 um 10:10 schrieb mekket ***@***.***>:
I re-flashed my ESP and now it is working as intended(On manager 1.21) Is there a way to change the inverter settings with this approach? Like changing the export limit with HA automations?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Has somebody tested manager 1.24? |
Could you please share V1.20 bin-file? |
10-300-11040-xx_T30_Manager_V1.20.zip Here you are, unzip... .bin files are not supported. |
Has anyone tried setting the export limit from home assistant using rs485? In my area the electricity prices sometimes go to negative values and exporting to grid would actually cost money to the exporter so it would be neat to keep the inverters export limit near the current house consumption which I have from the smart meter. |
Thank You Very Much! 🙂
ke 14. helmik. 2024 klo 21.28 Danielxyz123 ***@***.***)
kirjoitti:
… 10-300-11040-xx_T30_Manager_V1.20.zip
<https://github.com/assembly12/Foxess-T-series-ESPHome-Home-Assistant/files/14285202/10-300-11040-xx_T30_Manager_V1.20.zip>
Here you are, unzip... .bin files are not supported.
—
Reply to this email directly, view it on GitHub
<#15 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AMKL25UBBL6DGIQFFS4EGD3YTUF4DAVCNFSM6AAAAAA3COMLXCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBUGQ2TMOJVGM>
.
You are receiving this because you commented.Message ID:
<assembly12/Foxess-T-series-ESPHome-Home-Assistant/issues/15/1944456953@
github.com>
|
Hi |
Hi |
It seems that latest firmware broke integration. most of the fields seems to be showing weird values:
These are versions currently installed:
@assembly12 ,Would you mind looking into that?
Thanks,
Giedrius
The text was updated successfully, but these errors were encountered: