hottis modbus relay 3
This commit is contained in:
@@ -404,6 +404,76 @@ def _transform_relay_hottis_modbus_to_abstract(payload: str) -> dict[str, Any]:
|
|||||||
"""
|
"""
|
||||||
return {"power": payload.strip()}
|
return {"power": payload.strip()}
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# HANDLER FUNCTIONS: three_phase_powermeter - hottis_modbus technology
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
def _transform_three_phase_powermeter_hottis_modbus_to_vendor(payload: dict[str, Any]) -> dict[str, Any]:
|
||||||
|
"""Transform abstract three_phase_powermeter payload to hottis_modbus format.
|
||||||
|
|
||||||
|
energy: float = Field(..., description="Total energy in kWh")
|
||||||
|
total_power: float = Field(..., description="Total power in W")
|
||||||
|
phase1_power: float = Field(..., description="Power for phase 1 in W")
|
||||||
|
phase2_power: float = Field(..., description="Power for phase 2 in W")
|
||||||
|
phase3_power: float = Field(..., description="Power for phase 3 in W")
|
||||||
|
phase1_voltage: float = Field(..., description="Voltage for phase 1 in V")
|
||||||
|
phase2_voltage: float = Field(..., description="Voltage for phase 2 in V")
|
||||||
|
phase3_voltage: float = Field(..., description="Voltage for phase 3 in V")
|
||||||
|
phase1_current: float = Field(..., description="Current for phase 1 in A")
|
||||||
|
phase2_current: float = Field(..., description="Current for phase 2 in A")
|
||||||
|
phase3_current: float = Field(..., description="Current for phase 3 in A")
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
vendor_payload = {
|
||||||
|
"energy": payload.get("energy", 0.0),
|
||||||
|
"total_power": payload.get("total_power", 0.0),
|
||||||
|
"phase1_power": payload.get("phase1_power", 0.0),
|
||||||
|
"phase2_power": payload.get("phase2_power", 0.0),
|
||||||
|
"phase3_power": payload.get("phase3_power", 0.0),
|
||||||
|
"phase1_voltage": payload.get("phase1_voltage", 0.0),
|
||||||
|
"phase2_voltage": payload.get("phase2_voltage", 0.0),
|
||||||
|
"phase3_voltage": payload.get("phase3_voltage", 0.0),
|
||||||
|
"phase1_current": payload.get("phase1_current", 0.0),
|
||||||
|
"phase2_current": payload.get("phase2_current", 0.0),
|
||||||
|
"phase3_current": payload.get("phase3_current", 0.0),
|
||||||
|
}
|
||||||
|
|
||||||
|
return vendor_payload
|
||||||
|
|
||||||
|
|
||||||
|
def _transform_three_phase_powermeter_hottis_modbus_to_abstract(payload: str) -> dict[str, Any]:
|
||||||
|
"""Transform hottis_modbus three_phase_powermeter payload to abstract format.
|
||||||
|
|
||||||
|
Transformations:
|
||||||
|
- current_heating_setpoint -> target (as float)
|
||||||
|
- local_temperature -> current (as float)
|
||||||
|
- system_mode -> mode
|
||||||
|
|
||||||
|
Example:
|
||||||
|
- zigbee2mqtt: {'current_heating_setpoint': 15, 'local_temperature': 23, 'system_mode': 'heat'}
|
||||||
|
- Abstract: {'target': 15.0, 'current': 23.0, 'mode': 'heat'}
|
||||||
|
"""
|
||||||
|
payload = json.loads(payload)
|
||||||
|
abstract_payload = {
|
||||||
|
"energy": payload.get("energy", 0.0),
|
||||||
|
"total_power": payload.get("total_power", 0.0),
|
||||||
|
"phase1_power": payload.get("phase1_power", 0.0),
|
||||||
|
"phase2_power": payload.get("phase2_power", 0.0),
|
||||||
|
"phase3_power": payload.get("phase3_power", 0.0),
|
||||||
|
"phase1_voltage": payload.get("phase1_voltage", 0.0),
|
||||||
|
"phase2_voltage": payload.get("phase2_voltage", 0.0),
|
||||||
|
"phase3_voltage": payload.get("phase3_voltage", 0.0),
|
||||||
|
"phase1_current": payload.get("phase1_current", 0.0),
|
||||||
|
"phase2_current": payload.get("phase2_current", 0.0),
|
||||||
|
"phase3_current": payload.get("phase3_current", 0.0),
|
||||||
|
}
|
||||||
|
|
||||||
|
return abstract_payload
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# HANDLER FUNCTIONS: max technology (Homegear MAX!)
|
# HANDLER FUNCTIONS: max technology (Homegear MAX!)
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -513,6 +583,10 @@ TRANSFORM_HANDLERS: dict[tuple[str, str, str], TransformHandler] = {
|
|||||||
("relay", "shelly", "to_abstract"): _transform_relay_shelly_to_abstract,
|
("relay", "shelly", "to_abstract"): _transform_relay_shelly_to_abstract,
|
||||||
("relay", "hottis_modbus", "to_vendor"): _transform_relay_hottis_modbus_to_vendor,
|
("relay", "hottis_modbus", "to_vendor"): _transform_relay_hottis_modbus_to_vendor,
|
||||||
("relay", "hottis_modbus", "to_abstract"): _transform_relay_hottis_modbus_to_abstract,
|
("relay", "hottis_modbus", "to_abstract"): _transform_relay_hottis_modbus_to_abstract,
|
||||||
|
|
||||||
|
# Three-Phase Powermeter transformations
|
||||||
|
("three_phase_powermeter", "hottis_modbus", "to_vendor"): _transform_three_phase_powermeter_hottis_modbus_to_vendor,
|
||||||
|
("three_phase_powermeter", "hottis_modbus", "to_abstract"): _transform_three_phase_powermeter_hottis_modbus_to_abstract,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -796,8 +796,8 @@ devices:
|
|||||||
|
|
||||||
- device_id: powermeter_caroutlet
|
- device_id: powermeter_caroutlet
|
||||||
name: Car Outlet
|
name: Car Outlet
|
||||||
type: threephase_powermeter
|
type: three_phase_powermeter
|
||||||
cap_version: "threephase_powermeter@1.0.0"
|
cap_version: "three_phase_powermeter@1.0.0"
|
||||||
technology: hottis_modbus
|
technology: hottis_modbus
|
||||||
topics:
|
topics:
|
||||||
state: "caroutlet/powermeter"
|
state: "caroutlet/powermeter"
|
||||||
|
|||||||
Reference in New Issue
Block a user