Files
deye-modbus-regs/definitions.save
2023-12-11 17:40:10 +01:00

301 lines
8.2 KiB
Plaintext

"""Sunsynk hybrid inverter sensor definitions."""
CELSIUS = "°C"
KWH = "kWh"
AMPS = "A"
VOLT = "V"
WATT = "W"
_SENSORS = []
##########
# Battery
##########
_SENSORS += (
(182, "Battery temperature", CELSIUS, 0.1),
(183, "Battery voltage", VOLT, 0.01),
(184, "Battery SOC", "%"),
(190, "Battery power", WATT, -1),
(191, "Battery current", AMPS, -0.01),
)
#################
# Inverter Power
#################
_SENSORS += (
(175, "Inverter power", WATT, -1),
(154, "Inverter voltage", VOLT, 0.1),
(193, "Inverter frequency", "Hz", 0.01),
)
#############
# Grid Power
#############
_SENSORS += (
(609, "Grid frequency", "Hz", 0.01),
(169, "Grid power", WATT, -1), # L1(167) + L2(168)
(167, "Grid LD power", WATT, -1), # L1 seems to be LD
(168, "Grid L2 power", WATT, -1),
(150, "Grid voltage", VOLT, 0.1),
(598, "Grid voltage L1", VOLT, 0.1),
(599, "Grid voltage L2", VOLT, 0.1),
(600, "Grid voltage L3", VOLT, 0.1),
((160, 161), "Grid current", AMPS, (0.01, 0.01)),
(172, "Grid CT power", WATT, -1),
)
#############
# Load Power
#############
_SENSORS += (
(178, "Load power", WATT, -1), # L1(176) + L2(177)
(176, "Load L1 power", WATT, -1),
(177, "Load L2 power", WATT, -1),
)
################
# Solar Power 1
################
_SENSORS += (
(186, "PV1 power", WATT, -1),
(109, "PV1 voltage", VOLT, 0.1),
(110, "PV1 current", AMPS, 0.1),
)
################
# Solar Power 2
################
_SENSORS += (
(187, "PV2 power", WATT, -1),
(111, "PV2 voltage", VOLT, 0.1),
(112, "PV2 current", AMPS, 0.1),
)
###################
# Power on Outputs
###################
_SENSORS += (
(166, "AUX power", WATT, -1),
(175, "Essential power 1", WATT, (1, 1, -1)),
(167, "Essential power 1", WATT, (1, 1, -1)),
(166, "Essential power 1", WATT, (1, 1, -1)),
(172, "Non-Essential power", WATT, (1, -1)),
(167, "Non-Essential power", WATT, (1, -1)),
)
###################
# Energy
###################
_SENSORS += (
(60, "Day Active Energy", KWH, -0.1),
(70, "Day Battery Charge", KWH, 0.1),
(71, "Day Battery discharge", KWH, 0.1),
(77, "Day Grid Export", KWH, 0.1),
(76, "Day Grid Import", KWH, 0.1),
# Sensor (200, "Day Load Power", KWH, 0.01),
(84, "Day Load Energy", KWH, 0.1),
(108, "Day PV Energy", KWH, 0.1),
(61, "Day Reactive Energy", "kVarh", -0.1),
# Sensor ((201, 202), "History Load Power", KWH, 0.1),
(67, "Month Grid Energy", KWH, 0.1),
(66, "Month Load Energy", KWH, 0.1),
(65, "Month PV Energy", KWH, 0.1),
((63, 64), "Total Active Energy", KWH, 0.1), # signed?
((72, 73), "Total Battery Charge", KWH, 0.1),
((74, 75), "Total Battery Discharge", KWH, 0.1),
((81, 82), "Total Grid Export", KWH, 0.1),
((78, 80), "Total Grid Import", KWH, 0.1),
((85, 86), "Total Load Energy", KWH, 0.1),
((96, 97), "Total PV Energy", KWH, 0.1),
((98, 99), "Year Grid Export", KWH, 0.1),
((87, 88), "Year Load Energy", KWH, 0.1),
((68, 69), "Year PV Energy", KWH, 0.1),
)
##########
# General
##########
RATED_POWER = ((16, 17), "Rated power", WATT, 0.1)
_SENSORS.append(RATED_POWER)
_SENSORS += (
(0, "Device Type"),
((103, 104, 105, 106, 107), "Fault"),
(59, "Overall state"),
(92, "SD Status", ""), # type: ignore
((3, 4, 5, 6, 7), "Serial"),
(90, "DC transformer temperature", CELSIUS, 0.1),
(95, "Environment temperature", CELSIUS, 0.1),
(91, "Radiator temperature", CELSIUS, 0.1),
(194, "Grid Connected Status"),
)
###########
# Settings
###########
_SENSORS += (
(200, "Control Mode"),
(230, "Grid Charge Battery current", AMPS, -1),
(232, "Grid Charge enabled", "", -1),
(312, "Battery charging voltage", VOLT, 0.01),
(603, "Bat1 SOC", "%"),
(611, "Bat1 Cycle"),
)
#BATTERY_EQUALIZATION_VOLTAGE = NumberRWSensor (
# 201, "Battery Equalization voltage", VOLT, 0.01, min=MIN_VOLTAGE, max=MAX_VOLTAGE
#)
#BATTERY_ABSORPTION_VOLTAGE = NumberRWSensor (
# 202, "Battery Absorption voltage", VOLT, 0.01, min=MIN_VOLTAGE, max=MAX_VOLTAGE
#)
#BATTERY_FLOAT_VOLTAGE = NumberRWSensor (
# 203, "Battery Float voltage", VOLT, 0.01, min=MIN_VOLTAGE, max=MAX_VOLTAGE
#)
#BATTERY_SHUTDOWN_CAPACITY = NumberRWSensor (217, "Battery Shutdown Capacity", "%")
#BATTERY_RESTART_CAPACITY = NumberRWSensor (218, "Battery Restart Capacity", "%")
#BATTERY_LOW_CAPACITY = NumberRWSensor (
# 219,
# "Battery Low Capacity",
# "%",
# min=BATTERY_SHUTDOWN_CAPACITY,
# max=BATTERY_RESTART_CAPACITY,
#)
#BATTERY_SHUTDOWN_CAPACITY.max = BATTERY_LOW_CAPACITY
#BATTERY_RESTART_CAPACITY.min = BATTERY_LOW_CAPACITY
#BATTERY_SHUTDOWN_VOLTAGE = NumberRWSensor (
# 220, "Battery Shutdown voltage", VOLT, 0.01, min=MIN_VOLTAGE
#)
#BATTERY_RESTART_VOLTAGE = NumberRWSensor (
# 221, "Battery Restart voltage", VOLT, 0.01, max=MAX_VOLTAGE
#)
#BATTERY_LOW_VOLTAGE = NumberRWSensor (
# 222,
# "Battery Low voltage",
# VOLT,
# 0.01,
# min=BATTERY_SHUTDOWN_VOLTAGE,
# max=BATTERY_RESTART_VOLTAGE,
#)
#BATTERY_SHUTDOWN_VOLTAGE.max = BATTERY_LOW_VOLTAGE
#BATTERY_RESTART_VOLTAGE.min = BATTERY_LOW_VOLTAGE
#
#_SENSORS += (
# BATTERY_EQUALIZATION_VOLTAGE,
# BATTERY_ABSORPTION_VOLTAGE,
# BATTERY_FLOAT_VOLTAGE,
# BATTERY_SHUTDOWN_CAPACITY,
# BATTERY_RESTART_CAPACITY,
# BATTERY_LOW_CAPACITY,
# BATTERY_SHUTDOWN_VOLTAGE,
# BATTERY_RESTART_VOLTAGE,
# BATTERY_LOW_VOLTAGE,
#)
#################
# System program
#################
#_SENSORS.append(
# SelectRWSensor (243, "Priority Mode", options={0: "Battery first", 1: "Load first"})
#)
"""
PROG1_TIME = (250, "Prog1 Time")
PROG2_TIME = (251, "Prog2 Time", min=PROG1_TIME)
PROG3_TIME = (252, "Prog3 Time", min=PROG2_TIME)
PROG4_TIME = (253, "Prog4 Time", min=PROG3_TIME)
PROG5_TIME = (254, "Prog5 Time", min=PROG4_TIME)
PROG6_TIME = (255, "Prog6 Time", min=PROG5_TIME)
PROG1_TIME.min = PROG6_TIME
PROG1_TIME.max = PROG2_TIME
PROG2_TIME.max = PROG3_TIME
PROG3_TIME.max = PROG4_TIME
PROG4_TIME.max = PROG5_TIME
PROG5_TIME.max = PROG6_TIME
PROG6_TIME.max = PROG1_TIME
PROG_CHARGE_OPTIONS = {
4: "No Grid or Gen",
5: "Allow Grid",
6: "Allow Gen",
7: "Allow Grid & Gen",
}
PROGRAM = (
PROG1_TIME,
PROG2_TIME,
PROG3_TIME,
PROG4_TIME,
PROG5_TIME,
PROG6_TIME,
(256, "Prog1 power", WATT, max=RATED_POWER),
(257, "Prog2 power", WATT, max=RATED_POWER),
(258, "Prog3 power", WATT, max=RATED_POWER),
(259, "Prog4 power", WATT, max=RATED_POWER),
(260, "Prog5 power", WATT, max=RATED_POWER),
(261, "Prog6 power", WATT, max=RATED_POWER),
(268, "Prog1 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(269, "Prog2 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(270, "Prog3 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(271, "Prog4 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(272, "Prog5 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(273, "Prog6 Capacity", "%", min=BATTERY_LOW_CAPACITY),
(274, "Prog1 Charge", options=PROG_CHARGE_OPTIONS),
(275, "Prog2 Charge", options=PROG_CHARGE_OPTIONS),
(276, "Prog3 Charge", options=PROG_CHARGE_OPTIONS),
(277, "Prog4 Charge", options=PROG_CHARGE_OPTIONS),
(278, "Prog5 Charge", options=PROG_CHARGE_OPTIONS),
SelectRWSensor (279, "Prog6 Charge", options=PROG_CHARGE_OPTIONS),
)
#_SENSORS.extend(PROGRAM)
PROG_VOLT = (
NumberRWSensor (
262,
"Prog1 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
NumberRWSensor (
263,
"Prog2 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
NumberRWSensor (
264,
"Prog3 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
NumberRWSensor (
265,
"Prog4 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
NumberRWSensor (
266,
"Prog5 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
NumberRWSensor (
267,
"Prog6 voltage",
VOLT,
0.01,
min=BATTERY_LOW_VOLTAGE,
max=BATTERY_FLOAT_VOLTAGE,
),
)
#_SENSORS.extend(PROG_VOLT)
"""