Extract values from Senec JSON with string-hex-floats and push them to InfluxDB
SENEC_URL=http://senec.local/lala.cgi INFLUX_URL=https://influx.yourserver.net/ INFLUX_ORG=your_org INFLUX_TOKEN=your_token ./senec-to-influx.py
{ | |
"PV1": { | |
"POWER_RATIO": "fl_42C80000", | |
"POWER_RATIO_L1": "fl_42C80000", | |
"POWER_RATIO_L2": "fl_42C80000", | |
"POWER_RATIO_L3": "fl_42C80000", | |
"MPP_VOL": [ | |
"fl_435A5AE2", | |
"fl_433BB99A", | |
"fl_43AFABC7" | |
], | |
"MPP_CUR": [ | |
"fl_3F951EB9", | |
"fl_3F93D70B", | |
"fl_3F88F5C3" | |
], | |
"MPP_POWER": [ | |
"fl_437CA7AF", | |
"fl_4356EE98", | |
"fl_43BA820D" | |
], | |
"MPP_AVAIL": "u8_03", | |
"INTERNAL_MD_AVAIL": [ | |
"u8_01", | |
"u8_01" | |
], | |
"INTERNAL_MD_MODEL": [ | |
"st_V3 LV", | |
"st_V3 HV" | |
], | |
"INTERNAL_MD_VERSION": [ | |
"st_HMI: 3.16.20 PU: 4.3.10 BDC: 5.4.6", | |
"st_HMI: 3.16.20 PU: 4.3.10" | |
] | |
}, | |
"WIZARD": { | |
"MAC_ADDRESS_BYTES": [ | |
"u8_14", | |
"u8_1F", | |
"u8_BA", | |
"u8_21", | |
"u8_08", | |
"u8_EB" | |
] | |
}, | |
"BAT1OBJ1": { | |
"TEMP1": "u1_0013", | |
"TEMP2": "u1_0013", | |
"TEMP3": "u1_0000", | |
"TEMP4": "u1_0000", | |
"TEMP5": "u1_0000", | |
"S": "i1_0000", | |
"P": "i1_0000", | |
"Q": "i1_0000", | |
"SW_VERSION": "u3_03100014", | |
"SW_VERSION2": "u3_0403000A", | |
"SW_VERSION3": "u3_05040006", | |
"I_DC": "fl_80000000" | |
}, | |
"PWR_UNIT": { | |
"POWER_L1": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"POWER_L2": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"POWER_L3": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
] | |
}, | |
"BAT1": { | |
"CEI_LIMIT": "u1_0000", | |
"SPARE_CAPACITY": "u8_00" | |
}, | |
"BMS": { | |
"NR_INSTALLED": "u8_00" | |
}, | |
"WALLBOX": { | |
"ADDITIONAL_ERROR": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"ALLOW_INTERCHARGE": "u8_00", | |
"APPARENT_CHARGING_POWER": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"BUS_ADR": [ | |
"u8_01", | |
"u8_02", | |
"u8_03", | |
"u8_04" | |
], | |
"CS_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"DETECTION_MODE": "u3_00000000", | |
"EV_CONNECTED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"HW_TYPE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L1_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L1_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L2_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L2_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L3_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L3_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"LOAD_IMBALANCE_DETECTED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"LOAD_IMBALANCE_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MAJOR_REV": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MAX_CHARGING_CURRENT_DEFAULT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_IC": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_ICMAX": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_RATED": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_PHASE_CURRENT_BY_GRID": "fl_00000000", | |
"MAX_TOTAL_CURRENT_BY_GRID": "fl_00000000", | |
"METER_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"METHOD_EN1": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MINOR_REV": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MIN_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"PHASES_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"PROHIBIT_USAGE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"SAP_NUMBER": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SERIAL_NUMBER": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SERIAL_NUMBER_INTERNAL": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SET_ICMAX": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"SET_IDEFAULT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"SMART_CHARGE_ACTIVE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"SOCKET_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"STATE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"UID": [ | |
"u6_0000000000000000", | |
"u6_0000000000000000", | |
"u6_0000000000000000", | |
"u6_0000000000000000" | |
], | |
"UTMP": [ | |
"u1_0000", | |
"u1_0000", | |
"u1_0000", | |
"u1_0000" | |
] | |
}, | |
"GRIDCONFIG": { | |
"AU2020_ACTIVE_REGISTER": "u8_00", | |
"AU2020_COSPHIMODE": "u8_00", | |
"AU2020_FIXEDFACTOR": "fl_3F800000", | |
"AU2020_FLLCO": "fl_42470000", | |
"AU2020_FLLCO_MAX": "fl_4247999A", | |
"AU2020_FLLCO_MIN": "fl_42460000", | |
"AU2020_FPMAX": "fl_42400000", | |
"AU2020_FPMAX_MAX": "fl_42440000", | |
"AU2020_FPMAX_MIN": "fl_423C0000", | |
"AU2020_FPMIN": "fl_42500000", | |
"AU2020_FPMIN_MAX": "fl_42540000", | |
"AU2020_FPMIN_MIN": "fl_424C0000", | |
"AU2020_FSTOPCH": "fl_42440000", | |
"AU2020_FSTOPCH_MAX": "fl_42460000", | |
"AU2020_FSTOPCH_MIN": "fl_42400000", | |
"AU2020_FTRANSITION": "fl_424B0000", | |
"AU2020_FTRANSITION_MAX": "fl_42500000", | |
"AU2020_FTRANSITION_MIN": "fl_424A0000", | |
"AU2020_FULCO": "fl_42490000", | |
"AU2020_FULCO_MAX": "fl_424A0000", | |
"AU2020_FULCO_MIN": "fl_42486666", | |
"AU2020_HEXPORT": "u3_00000000", | |
"AU2020_HEXPORT_ENABLED": "u8_00", | |
"AU2020_NOT_DEFAULT": "u8_00", | |
"AU2020_REACTIVEPOWER": "fl_00000000", | |
"AU2020_REACTIVEPOWER_MAX": "fl_42700000", | |
"AU2020_REACTIVEPOWER_MIN": "fl_C2700000", | |
"AU2020_RESPONSE_MODES": "u1_0013", | |
"AU2020_SELECTED_REGION": "u8_00", | |
"AU2020_VNOMMAX_MAX": "u1_0102", | |
"AU2020_VNOMMAX_MIN": "u1_00F4", | |
"AU2020_VNOMMAX_RANGE": "u1_0102", | |
"AU2020_VVAR_PERCENT": [ | |
"i8_2C", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU2020_VVAR_PMAX": [ | |
"i8_3C", | |
"i8_00", | |
"i8_00", | |
"i8_E2" | |
], | |
"AU2020_VVAR_PMIN": [ | |
"i8_1E", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU2020_VVAR_VMAX": [ | |
"u1_00E6", | |
"u1_00E6", | |
"u1_0109", | |
"u1_0109" | |
], | |
"AU2020_VVAR_VMIN": [ | |
"u1_00B4", | |
"u1_00B4", | |
"u1_00E6", | |
"u1_00E6" | |
], | |
"AU2020_VVAR_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00F0", | |
"u1_0102" | |
], | |
"AU2020_VWC_PERCENT": [ | |
"u8_14", | |
"u8_64" | |
], | |
"AU2020_VWC_PMAX": [ | |
"u8_14", | |
"u8_64" | |
], | |
"AU2020_VWC_PMIN": [ | |
"u8_00", | |
"u8_64" | |
], | |
"AU2020_VWC_VMAX": [ | |
"u1_00E6", | |
"u1_00E6" | |
], | |
"AU2020_VWC_VMIN": [ | |
"u1_00B4", | |
"u1_00B4" | |
], | |
"AU2020_VWC_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00D7" | |
], | |
"AU2020_VWD_PERCENT": [ | |
"u8_64", | |
"u8_14" | |
], | |
"AU2020_VWD_PMAX": [ | |
"u8_64", | |
"u8_14" | |
], | |
"AU2020_VWD_PMIN": [ | |
"u8_64", | |
"u8_00" | |
], | |
"AU2020_VWD_VMAX": [ | |
"u1_00FF", | |
"u1_0109" | |
], | |
"AU2020_VWD_VMIN": [ | |
"u1_00EB", | |
"u1_00F0" | |
], | |
"AU2020_VWD_VOLTAGE": [ | |
"u1_00FD", | |
"u1_0104" | |
], | |
"AU2020_WGRA": "fl_4185999A", | |
"AU2020_WGRA_MAX": "fl_42C80000", | |
"AU2020_WGRA_MIN": "fl_40A00000", | |
"AU_FIXED_FAC": "fl_3F800000", | |
"AU_GRID_CODE": "u1_0004", | |
"AU_P_RAMP_CH": "fl_418547AE", | |
"AU_P_RAMP_DI": "fl_418547AE", | |
"AU_RESP_MODE": "u1_000F", | |
"AU_SOFT_RAMP_EN": "u8_01", | |
"AU_TARGET_TY": "u1_0000", | |
"AU_VRR_MAX": [ | |
"u1_00CF", | |
"u1_00E6", | |
"u1_00FF", | |
"u1_0109" | |
], | |
"AU_VRR_MIN": [ | |
"u1_00CF", | |
"u1_00D8", | |
"u1_00EB", | |
"u1_00F4" | |
], | |
"AU_VVAR_PERCENTAGE": [ | |
"i8_1E", | |
"i8_00", | |
"i8_00", | |
"i8_E2" | |
], | |
"AU_VVAR_P_MAX": [ | |
"i8_3C", | |
"i8_00", | |
"i8_00", | |
"i8_00" | |
], | |
"AU_VVAR_P_MIN": [ | |
"i8_00", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU_VVAR_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"AU_VWC_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"AU_VWD_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"CEI_COS_PHI": "fl_3F800000", | |
"CEI_COS_PHI_ENABLE": "u1_0000", | |
"CEI_CPHI_LOIN": "u1_0069", | |
"CEI_CPHI_LOUT": "u1_0064", | |
"CEI_FREQ_MAX": "u1_C3B4", | |
"CEI_FREQ_MIN": "u1_C2EC", | |
"CEI_REC_TIME": "u1_012C", | |
"CEI_RED_DROP": "u1_0018", | |
"CEI_SEGNALE_ESTERNO": "u8_00", | |
"CEI_STAB_AC_DE": "u1_0000", | |
"CEI_STAB_LO_CO": "u1_B98C", | |
"CEI_STAB_LO_TH": "u1_C288", | |
"CEI_STAB_UP_CO": "u1_C92C", | |
"CEI_STAB_UP_TH": "u1_C418", | |
"CEI_STAB_VOL_TH": "u1_006E", | |
"PWRCFG_COS_POINT1": "fl_3F800000", | |
"PWRCFG_COS_POINT3": "fl_3F733333", | |
"PWRCFG_COS_POINT_2A": "fl_3F800000", | |
"PWRCFG_COS_POINT_2B": "fl_42480000", | |
"PWRCFG_USE_MAX_PWR_SKEW": "u8_01", | |
"VDECOSPHITIME": "u1_000A", | |
"VDEFIXEDFAC": "fl_BF733333", | |
"VDEOVERFREQDROOP": "u1_0005", | |
"VDEOVERFREQLIMIT": "fl_4248CCCC", | |
"VDERECOVERTIME": "u1_000A", | |
"VDETARGETTY": "u1_0001", | |
"VDEUNDERFREQDROOP": "u1_0002", | |
"VDE_FREQDROPPROT": "fl_423E0000", | |
"VDE_FREQDROPPROTDELAY": "fl_3DCCCCCD", | |
"VDE_FREQRISEPROT": "fl_424E0000", | |
"VDE_FREQRISEPROTDELAY": "fl_3DCCCCCD", | |
"VDE_UNDERFREQLIMIT": "fl_42473333", | |
"VDE_VOLTDROPPROT": "fl_42340000", | |
"VDE_VOLTDROPPROTAVG": "fl_42A00000", | |
"VDE_VOLTDROPPROTAVGDELAY": "fl_40400000", | |
"VDE_VOLTDROPPROTDELAY": "fl_3E99999A", | |
"VDE_VOLTRISEPROT": "fl_42FA0000", | |
"VDE_VOLTRISEPROTAVG": "fl_42DC0000", | |
"VDE_VOLTRISEPROTAVGDELAY": "fl_3DCCCCCD", | |
"VDE_VOLTRISEPROTDELAY": "fl_3DCCCCCD" | |
} | |
} |
{ | |
"PV1": { | |
"POWER_RATIO": "fl_42C80000", | |
"POWER_RATIO_L1": "fl_42C80000", | |
"POWER_RATIO_L2": "fl_42C80000", | |
"POWER_RATIO_L3": "fl_42C80000", | |
"MPP_VOL": [ | |
"fl_4357EE15", | |
"fl_433E3CAD", | |
"fl_43B13EFA" | |
], | |
"MPP_CUR": [ | |
"fl_3FA6E979", | |
"fl_3FA3F7CF", | |
"fl_3F9C6A7F" | |
], | |
"MPP_POWER": [ | |
"fl_438B4938", | |
"fl_437231AB", | |
"fl_43D7251F" | |
], | |
"MPP_AVAIL": "u8_03", | |
"INTERNAL_MD_AVAIL": [ | |
"u8_01", | |
"u8_01" | |
], | |
"INTERNAL_MD_MODEL": [ | |
"st_V3 LV", | |
"st_V3 HV" | |
], | |
"INTERNAL_MD_VERSION": [ | |
"st_HMI: 3.16.20 PU: 4.3.10 BDC: 5.4.6", | |
"st_HMI: 3.16.20 PU: 4.3.10" | |
] | |
}, | |
"WIZARD": { | |
"MAC_ADDRESS_BYTES": [ | |
"u8_14", | |
"u8_1F", | |
"u8_BA", | |
"u8_21", | |
"u8_08", | |
"u8_EB" | |
] | |
}, | |
"BAT1OBJ1": { | |
"TEMP1": "u1_0012", | |
"TEMP2": "u1_0012", | |
"TEMP3": "u1_0000", | |
"TEMP4": "u1_0000", | |
"TEMP5": "u1_0000", | |
"S": "i1_0000", | |
"P": "i1_0000", | |
"Q": "i1_0000", | |
"SW_VERSION": "u3_03100014", | |
"SW_VERSION2": "u3_0403000A", | |
"SW_VERSION3": "u3_05040006", | |
"I_DC": "fl_80000000" | |
}, | |
"PWR_UNIT": { | |
"POWER_L1": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"POWER_L2": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"POWER_L3": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
] | |
}, | |
"BAT1": { | |
"CEI_LIMIT": "u1_0000", | |
"SPARE_CAPACITY": "u8_00" | |
}, | |
"BMS": { | |
"NR_INSTALLED": "u8_00" | |
}, | |
"WALLBOX": { | |
"ADDITIONAL_ERROR": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"ALLOW_INTERCHARGE": "u8_00", | |
"APPARENT_CHARGING_POWER": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"BUS_ADR": [ | |
"u8_01", | |
"u8_02", | |
"u8_03", | |
"u8_04" | |
], | |
"CS_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"DETECTION_MODE": "u3_00000000", | |
"EV_CONNECTED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"HW_TYPE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L1_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L1_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L2_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L2_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"L3_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"L3_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"LOAD_IMBALANCE_DETECTED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"LOAD_IMBALANCE_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MAJOR_REV": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MAX_CHARGING_CURRENT_DEFAULT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_IC": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_ICMAX": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_CHARGING_CURRENT_RATED": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"MAX_PHASE_CURRENT_BY_GRID": "fl_00000000", | |
"MAX_TOTAL_CURRENT_BY_GRID": "fl_00000000", | |
"METER_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"METHOD_EN1": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MINOR_REV": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"MIN_CHARGING_CURRENT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"PHASES_USED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"PROHIBIT_USAGE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"SAP_NUMBER": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SERIAL_NUMBER": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SERIAL_NUMBER_INTERNAL": [ | |
"st_", | |
"st_", | |
"st_", | |
"st_" | |
], | |
"SET_ICMAX": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"SET_IDEFAULT": [ | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000", | |
"fl_00000000" | |
], | |
"SMART_CHARGE_ACTIVE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"SOCKET_ENABLED": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"STATE": [ | |
"u8_00", | |
"u8_00", | |
"u8_00", | |
"u8_00" | |
], | |
"UID": [ | |
"u6_0000000000000000", | |
"u6_0000000000000000", | |
"u6_0000000000000000", | |
"u6_0000000000000000" | |
], | |
"UTMP": [ | |
"u1_0000", | |
"u1_0000", | |
"u1_0000", | |
"u1_0000" | |
] | |
}, | |
"GRIDCONFIG": { | |
"AU2020_ACTIVE_REGISTER": "u8_00", | |
"AU2020_COSPHIMODE": "u8_00", | |
"AU2020_FIXEDFACTOR": "fl_3F800000", | |
"AU2020_FLLCO": "fl_42470000", | |
"AU2020_FLLCO_MAX": "fl_4247999A", | |
"AU2020_FLLCO_MIN": "fl_42460000", | |
"AU2020_FPMAX": "fl_42400000", | |
"AU2020_FPMAX_MAX": "fl_42440000", | |
"AU2020_FPMAX_MIN": "fl_423C0000", | |
"AU2020_FPMIN": "fl_42500000", | |
"AU2020_FPMIN_MAX": "fl_42540000", | |
"AU2020_FPMIN_MIN": "fl_424C0000", | |
"AU2020_FSTOPCH": "fl_42440000", | |
"AU2020_FSTOPCH_MAX": "fl_42460000", | |
"AU2020_FSTOPCH_MIN": "fl_42400000", | |
"AU2020_FTRANSITION": "fl_424B0000", | |
"AU2020_FTRANSITION_MAX": "fl_42500000", | |
"AU2020_FTRANSITION_MIN": "fl_424A0000", | |
"AU2020_FULCO": "fl_42490000", | |
"AU2020_FULCO_MAX": "fl_424A0000", | |
"AU2020_FULCO_MIN": "fl_42486666", | |
"AU2020_HEXPORT": "u3_00000000", | |
"AU2020_HEXPORT_ENABLED": "u8_00", | |
"AU2020_NOT_DEFAULT": "u8_00", | |
"AU2020_REACTIVEPOWER": "fl_00000000", | |
"AU2020_REACTIVEPOWER_MAX": "fl_42700000", | |
"AU2020_REACTIVEPOWER_MIN": "fl_C2700000", | |
"AU2020_RESPONSE_MODES": "u1_0013", | |
"AU2020_SELECTED_REGION": "u8_00", | |
"AU2020_VNOMMAX_MAX": "u1_0102", | |
"AU2020_VNOMMAX_MIN": "u1_00F4", | |
"AU2020_VNOMMAX_RANGE": "u1_0102", | |
"AU2020_VVAR_PERCENT": [ | |
"i8_2C", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU2020_VVAR_PMAX": [ | |
"i8_3C", | |
"i8_00", | |
"i8_00", | |
"i8_E2" | |
], | |
"AU2020_VVAR_PMIN": [ | |
"i8_1E", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU2020_VVAR_VMAX": [ | |
"u1_00E6", | |
"u1_00E6", | |
"u1_0109", | |
"u1_0109" | |
], | |
"AU2020_VVAR_VMIN": [ | |
"u1_00B4", | |
"u1_00B4", | |
"u1_00E6", | |
"u1_00E6" | |
], | |
"AU2020_VVAR_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00F0", | |
"u1_0102" | |
], | |
"AU2020_VWC_PERCENT": [ | |
"u8_14", | |
"u8_64" | |
], | |
"AU2020_VWC_PMAX": [ | |
"u8_14", | |
"u8_64" | |
], | |
"AU2020_VWC_PMIN": [ | |
"u8_00", | |
"u8_64" | |
], | |
"AU2020_VWC_VMAX": [ | |
"u1_00E6", | |
"u1_00E6" | |
], | |
"AU2020_VWC_VMIN": [ | |
"u1_00B4", | |
"u1_00B4" | |
], | |
"AU2020_VWC_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00D7" | |
], | |
"AU2020_VWD_PERCENT": [ | |
"u8_64", | |
"u8_14" | |
], | |
"AU2020_VWD_PMAX": [ | |
"u8_64", | |
"u8_14" | |
], | |
"AU2020_VWD_PMIN": [ | |
"u8_64", | |
"u8_00" | |
], | |
"AU2020_VWD_VMAX": [ | |
"u1_00FF", | |
"u1_0109" | |
], | |
"AU2020_VWD_VMIN": [ | |
"u1_00EB", | |
"u1_00F0" | |
], | |
"AU2020_VWD_VOLTAGE": [ | |
"u1_00FD", | |
"u1_0104" | |
], | |
"AU2020_WGRA": "fl_4185999A", | |
"AU2020_WGRA_MAX": "fl_42C80000", | |
"AU2020_WGRA_MIN": "fl_40A00000", | |
"AU_FIXED_FAC": "fl_3F800000", | |
"AU_GRID_CODE": "u1_0004", | |
"AU_P_RAMP_CH": "fl_418547AE", | |
"AU_P_RAMP_DI": "fl_418547AE", | |
"AU_RESP_MODE": "u1_000F", | |
"AU_SOFT_RAMP_EN": "u8_01", | |
"AU_TARGET_TY": "u1_0000", | |
"AU_VRR_MAX": [ | |
"u1_00CF", | |
"u1_00E6", | |
"u1_00FF", | |
"u1_0109" | |
], | |
"AU_VRR_MIN": [ | |
"u1_00CF", | |
"u1_00D8", | |
"u1_00EB", | |
"u1_00F4" | |
], | |
"AU_VVAR_PERCENTAGE": [ | |
"i8_1E", | |
"i8_00", | |
"i8_00", | |
"i8_E2" | |
], | |
"AU_VVAR_P_MAX": [ | |
"i8_3C", | |
"i8_00", | |
"i8_00", | |
"i8_00" | |
], | |
"AU_VVAR_P_MIN": [ | |
"i8_00", | |
"i8_00", | |
"i8_00", | |
"i8_C4" | |
], | |
"AU_VVAR_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"AU_VWC_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"AU_VWD_VOLTAGE": [ | |
"u1_00CF", | |
"u1_00DC", | |
"u1_00FA", | |
"u1_0109" | |
], | |
"CEI_COS_PHI": "fl_3F800000", | |
"CEI_COS_PHI_ENABLE": "u1_0000", | |
"CEI_CPHI_LOIN": "u1_0069", | |
"CEI_CPHI_LOUT": "u1_0064", | |
"CEI_FREQ_MAX": "u1_C3B4", | |
"CEI_FREQ_MIN": "u1_C2EC", | |
"CEI_REC_TIME": "u1_012C", | |
"CEI_RED_DROP": "u1_0018", | |
"CEI_SEGNALE_ESTERNO": "u8_00", | |
"CEI_STAB_AC_DE": "u1_0000", | |
"CEI_STAB_LO_CO": "u1_B98C", | |
"CEI_STAB_LO_TH": "u1_C288", | |
"CEI_STAB_UP_CO": "u1_C92C", | |
"CEI_STAB_UP_TH": "u1_C418", | |
"CEI_STAB_VOL_TH": "u1_006E", | |
"PWRCFG_COS_POINT1": "fl_3F800000", | |
"PWRCFG_COS_POINT3": "fl_3F733333", | |
"PWRCFG_COS_POINT_2A": "fl_3F800000", | |
"PWRCFG_COS_POINT_2B": "fl_42480000", | |
"PWRCFG_USE_MAX_PWR_SKEW": "u8_01", | |
"VDECOSPHITIME": "u1_000A", | |
"VDEFIXEDFAC": "fl_BF733333", | |
"VDEOVERFREQDROOP": "u1_0005", | |
"VDEOVERFREQLIMIT": "fl_4248CCCC", | |
"VDERECOVERTIME": "u1_000A", | |
"VDETARGETTY": "u1_0001", | |
"VDEUNDERFREQDROOP": "u1_0002", | |
"VDE_FREQDROPPROT": "fl_423E0000", | |
"VDE_FREQDROPPROTDELAY": "fl_3DCCCCCD", | |
"VDE_FREQRISEPROT": "fl_424E0000", | |
"VDE_FREQRISEPROTDELAY": "fl_3DCCCCCD", | |
"VDE_UNDERFREQLIMIT": "fl_42473333", | |
"VDE_VOLTDROPPROT": "fl_42340000", | |
"VDE_VOLTDROPPROTAVG": "fl_42A00000", | |
"VDE_VOLTDROPPROTAVGDELAY": "fl_40400000", | |
"VDE_VOLTDROPPROTDELAY": "fl_3E99999A", | |
"VDE_VOLTRISEPROT": "fl_42FA0000", | |
"VDE_VOLTRISEPROTAVG": "fl_42DC0000", | |
"VDE_VOLTRISEPROTAVGDELAY": "fl_3DCCCCCD", | |
"VDE_VOLTRISEPROTDELAY": "fl_3DCCCCCD" | |
} | |
} |
{ | |
"PV1": { | |
"POWER_RATIO": "fl_42C80000", | |
"POWER_RATIO_L1": "fl_42C80000", | |
"POWER_RATIO_L2": "fl_42C80000", | |
"POWER_RATIO_L3": "fl_42C80000", | |
"MPP_VOL": [ | |
"fl_4357EE15", | |
"fl_433E3CAD", | |
"fl_43B13EFA" | |
], | |
"MPP_CUR": [ | |
"fl_3FA6E979", | |
"fl_3FA3F7CF", | |
"fl_3F9C6A7F" | |
], | |
"MPP_POWER": [ | |
"fl_438B4938", | |
"fl_437231AB", | |
"fl_43D7251F" | |
], | |
"MPP_AVAIL": "u8_03", | |
"INTERNAL_MD_AVAIL": [ | |
"u8_01", | |
"u8_01" | |
], | |
"INTERNAL_MD_MODEL": [ | |
"st_V3 LV", | |
"st_V3 HV" | |
], | |
"INTERNAL_MD_VERSION": [ | |
"st_HMI: 3.16.20 PU: 4.3.10 BDC: 5.4.6", | |
"st_HMI: 3.16.20 PU: 4.3.10" | |
] | |
}, | |
"PM1OBJ1": { | |
"U_AC": [ | |
"fl_4357EE15", | |
"fl_433E3CAD", | |
"fl_43B13EFA" | |
], | |
"I_AC": [ | |
"fl_3FA6E979", | |
"fl_3FA3F7CF", | |
"fl_3F9C6A7F" | |
], | |
"P_AC": [ | |
"fl_438B4938", | |
"fl_437231AB", | |
"fl_43D7251F" | |
], | |
"FREQ": "fl_424810D7", | |
"P_TOTAL": "fl_43D957E7" | |
} | |
} |
{ | |
"PV1": { | |
"POWER_RATIO": "", | |
"POWER_RATIO_L1": "", | |
"POWER_RATIO_L2": "", | |
"POWER_RATIO_L3": "", | |
"MPP_VOL": "", | |
"MPP_CUR": "", | |
"MPP_POWER": "", | |
"MPP_AVAIL": "", | |
"INTERNAL_MD_AVAIL": "", | |
"INTERNAL_MD_MODEL": "", | |
"INTERNAL_MD_VERSION": "" | |
}, | |
"WIZARD": { | |
"MAC_ADDRESS_BYTES": "" | |
}, | |
"BAT1OBJ1": { | |
"TEMP1": "", | |
"TEMP2": "", | |
"TEMP3": "", | |
"TEMP4": "", | |
"TEMP5": "", | |
"S": "", | |
"P": "", | |
"Q": "", | |
"SW_VERSION": "", | |
"SW_VERSION2": "", | |
"SW_VERSION3": "", | |
"I_DC": "" | |
}, | |
"PWR_UNIT": { | |
"POWER_L1": "", | |
"POWER_L2": "", | |
"POWER_L3": "" | |
}, | |
"BAT1": { | |
"CEI_LIMIT": "", | |
"SPARE_CAPACITY": "" | |
}, | |
"BMS": { | |
"NR_INSTALLED": "" | |
}, | |
"WALLBOX": {}, | |
"GRIDCONFIG": {} | |
} |
#!/usr/bin/env python3 | |
import os | |
import datetime | |
import struct | |
import urllib.request | |
import json | |
senecUrl = os.getenv('SENEC_URL') | |
influxUrl = os.getenv('INFLUX_URL') | |
influxOrg = os.getenv('INFLUX_ORG') | |
influxToken = os.getenv('INFLUX_TOKEN') | |
def fetchJson() -> str: | |
queryMap = { | |
'PV1': { | |
'MPP_VOL': '', | |
'MPP_CUR': '', | |
'MPP_POWER': '', | |
}, | |
'PM1OBJ1': { | |
'FREQ': '', | |
'U_AC': '', | |
'I_AC': '', | |
'P_AC': '', | |
'P_TOTAL': '', | |
}, | |
'ENERGY': { | |
'GUI_BAT_DATA_FUEL_CHARGE': '', # Remaining battery (percent) | |
'GUI_BAT_DATA_POWER': '', # Battery charge power: negative if discharging, positive if charging (W) | |
'GUI_INVERTER_POWER': '', # PV production (W) | |
'GUI_HOUSE_POW': '', # House power consumption (W) | |
'GUI_GRID_POW': '', # Grid power: negative if exporting, positiv if importing (W) | |
}, | |
} | |
requestContent = json.dumps(queryMap).encode('utf-8') | |
request = urllib.request.Request(senecUrl, requestContent) | |
response = urllib.request.urlopen(request) | |
map = json.load(response) | |
return map | |
def convertHexFloat(hex: str) -> float: | |
return struct.unpack('>f', bytearray.fromhex(hex))[0] | |
def convertHexJson(hexJsonValue: str): | |
type, value = hexJsonValue.split('_') | |
if type == 'fl': | |
fl = convertHexFloat(value) | |
return fl | |
return value | |
def createInfluxLine(sensorAndTags: str, valuesDict, timestamp: int) -> str: | |
keyValues = [entry[0] + '=' + str(convertHexJson(entry[1])) for entry in valuesDict.items()] | |
return ' '.join([ | |
sensorAndTags, | |
','.join(keyValues), | |
str(timestamp), | |
]) | |
def convertToOutputLines(map: map): | |
now = int(datetime.datetime.now().timestamp()) | |
pv1 = map['PV1'] | |
mppVoltages = pv1['MPP_VOL'] | |
mppCurrents = pv1['MPP_CUR'] | |
mppPowers = pv1['MPP_POWER'] | |
pm1 = map['PM1OBJ1'] | |
voltages = pm1['U_AC'] | |
currents = pm1['I_AC'] | |
powers = pm1['P_AC'] | |
powerTotal = pm1['P_TOTAL'] | |
frequency = pm1['FREQ'] | |
energy = map['ENERGY'] | |
batteryPercentage = energy['GUI_BAT_DATA_FUEL_CHARGE'] | |
batteryChargePower = energy['GUI_BAT_DATA_POWER'] | |
pvPower = energy['GUI_INVERTER_POWER'] | |
housePower = energy['GUI_HOUSE_POW'] | |
gridPower = energy['GUI_GRID_POW'] | |
return [ | |
createInfluxLine('pv,string=süd1', { 'voltage': mppVoltages[0], 'current': mppCurrents[0], 'power': mppPowers[0] }, now), | |
createInfluxLine('pv,string=süd2', { 'voltage': mppVoltages[1], 'current': mppCurrents[1], 'power': mppPowers[1] }, now), | |
createInfluxLine('pv,string=nord', { 'voltage': mppVoltages[2], 'current': mppCurrents[2], 'power': mppPowers[2] }, now), | |
createInfluxLine('house,phase=l1', { 'voltage': voltages[0], 'current': currents[0], 'power': powers[0] }, now), | |
createInfluxLine('house,phase=l2', { 'voltage': voltages[1], 'current': currents[1], 'power': powers[1] }, now), | |
createInfluxLine('house,phase=l3', { 'voltage': voltages[2], 'current': currents[2], 'power': powers[2] }, now), | |
createInfluxLine('battery', { 'level': batteryPercentage, 'chargePower': batteryChargePower }, now), | |
createInfluxLine('total', { 'frequency': frequency, 'power': powerTotal, 'pvPower': pvPower, 'housePower': housePower, 'gridPower': gridPower}, now), | |
] | |
def uploadToInflux(output: str): | |
url = influxUrl + 'api/v2/write?org=' + influxOrg + '&bucket=lubu&precision=s' | |
headers = { | |
'authorization': 'Token ' + influxToken, | |
'content-type': 'text/plain; charset=utf-8', | |
'accept': 'application/json', | |
} | |
request = urllib.request.Request(url, output, headers) | |
urllib.request.urlopen(request) | |
map = fetchJson() | |
output = convertToOutputLines(map) | |
#print('\n'.join(output)) | |
uploadToInflux('\n'.join(output).encode('utf-8')) |