add sources to custom_components
This commit is contained in:
1 parent
b2e49e9960
commit
e6f2662a6c
27 files changed
+2129
-1283
No files matched your search
@@ -0,0 +1,149 @@
|
||||
# Constants for koolnova Modbus RTU BMS
|
||||
# d'après la documentation officielle A52102 - Registre contrôle Modbus
|
||||
|
||||
from enum import Enum
|
||||
|
||||
# La couche physique est Modbus RTU sur RS485 à 9600, avec 8 bits de données, sans parité
|
||||
# ou même parité et un bit d'arrêt. Par défaut: 9600 8E1
|
||||
# L'adresse Modbus par défaut est 49
|
||||
DEFAULT_ADDR = 49
|
||||
DEFAULT_BAUDRATE = 9600
|
||||
DEFAULT_PARITY = 'E'
|
||||
DEFAULT_STOPBITS = 1
|
||||
DEFAULT_BYTESIZE = 8
|
||||
|
||||
# Nombre de machines (AC1, AC2, AC3 et AC4)
|
||||
NUM_OF_ENGINES = 4
|
||||
# Nombre de registres par zone
|
||||
NUM_REG_PER_ZONE = 4
|
||||
# Nombre max de zone pour un systeme
|
||||
NB_ZONE_MAX = 16
|
||||
|
||||
# Chaque zone climatique est définie par 4 registres et il y a 16 zones possibles,
|
||||
# donc le climat est défini par 64 registres
|
||||
REG_START_ZONE = 0
|
||||
|
||||
# Commandes Modbus prises en charge sont le Read Holding Register (0x03)
|
||||
# et le Write Single Register (0x06)
|
||||
|
||||
REG_LOCK_ZONE = 0 # 40001, 40005, 40009, etc ...
|
||||
REG_STATE_AND_FLOW = 1 # 40002, 40006, 40010, etc ...
|
||||
|
||||
class ZoneState(Enum):
|
||||
STATE_OFF = 0
|
||||
STATE_ON = 1
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
class ZoneRegister(Enum):
|
||||
REGISTER_OFF = 0
|
||||
REGISTER_ON = 1
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
class ZoneFanMode(Enum):
|
||||
FAN_OFF = 0
|
||||
FAN_LOW = 1
|
||||
FAN_MEDIUM = 2
|
||||
FAN_HIGH = 3
|
||||
FAN_AUTO = 4
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
class ZoneClimMode(Enum):
|
||||
OFF = 0
|
||||
COOL = 1
|
||||
HEAT = 2
|
||||
HEATING_FLOOR = 4
|
||||
REFRESHING_FLOOR = 5
|
||||
HEATING_FLOOR_2 = 6
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
# Température de consigne = (data / 2) => delta: 15°C -> 35°C
|
||||
REG_TEMP_ORDER = 2 # 40003, 40007, 40011, etc ...
|
||||
# Température réelle = (data / 2) => delta: 0°C -> 50°C
|
||||
REG_TEMP_REAL = 3 # 40004, 40008, 40012, etc ...
|
||||
|
||||
# Temperature maximale de consigne : 35°C
|
||||
MAX_TEMP_ORDER = 35.0
|
||||
# Temperature minimale de consigne : 15°C
|
||||
MIN_TEMP_ORDER = 15.0
|
||||
# Pas de la temperature de consigne : 0.5°C
|
||||
STEP_TEMP_ORDER = 0.5
|
||||
|
||||
# Temperature maximale : 50°C
|
||||
MAX_TEMP = 50.0
|
||||
# Temperature minimale : 0°C
|
||||
MIN_TEMP = 0.0
|
||||
# Pas de la temperature : 0.5°C
|
||||
STEP_TEMP = 0.5
|
||||
|
||||
# (4 registres: 64 -> 67) Debit des machines (0: arret -> 15: debit maximum)
|
||||
REG_START_FLOW_ENGINE = 64
|
||||
NUM_REG_FLOG_ENGINE = 4
|
||||
FLOW_ENGINE_VAL_MAX = 15
|
||||
FLOW_ENGINE_VAL_MIN = 0
|
||||
|
||||
# (4 registres : 68 -> 71) Température de consigne de la machine.
|
||||
# Valeur décimale de 30 à 60 = double de la temp de consigne des consignes AC1, AC2, AC3 et AC4
|
||||
REG_START_ORDER_TEMP = 68
|
||||
NUM_REG_ORDER_TEMP = 4
|
||||
|
||||
# (4 registres : 72 -> 75) Programmation des débit des machines du système
|
||||
REG_START_FLOW_STATE_ENGINE = 72
|
||||
NUM_REG_FLOW_STATE_ENGINE = 4
|
||||
|
||||
class FlowEngine(Enum):
|
||||
MANUAL_MIN = 1
|
||||
MANUAL_MED = 2
|
||||
MANUAL_HIGH = 3
|
||||
AUTO = 4
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
# Communication Modbus
|
||||
REG_COMM = 76
|
||||
|
||||
REG_ADDR_MODBUS = 77 # dispo (1 - 127)
|
||||
REG_EFFICIENCY = 78
|
||||
|
||||
# Point d'equilibre entre efficience/vitesse du système de zone
|
||||
# chiffre élevé = meilleur efficience
|
||||
# chiffre bas = temp réglée atteinte au plus tot
|
||||
class Efficiency(Enum):
|
||||
LOWER_EFF = 1
|
||||
LOW_EFF = 2
|
||||
MED_EFF = 3
|
||||
HIGH_EFF = 4
|
||||
HIGHER_EFF = 5
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
REG_CLIM_ID = 79
|
||||
REG_SYS_STATE = 80
|
||||
|
||||
class SysState(Enum):
|
||||
SYS_STATE_OFF = 0
|
||||
SYS_STATE_ON = 1
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
REG_GLOBAL_MODE = 81
|
||||
|
||||
class GlobalMode(Enum):
|
||||
COLD = 1
|
||||
HEAT = 2
|
||||
HEATING_FLOOR = 4
|
||||
REFRESHING_FLOOR = 5
|
||||
HEATING_FLOOR_2 = 6
|
||||
|
||||
def __int__(self):
|
||||
return self.value
|
||||
Reference in new issue
Block a user