Skip to content

Commit

Permalink
👌 IMPROVE: Heater now show Temperature
Browse files Browse the repository at this point in the history
  • Loading branch information
unl0ck committed Jul 15, 2024
1 parent b0e71c1 commit 2cbff85
Show file tree
Hide file tree
Showing 9 changed files with 104 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .bumpversion-edge.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tool.bumpversion]
current_version = "2.7.7"
current_version = "2.8.0"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
serialize = ["{major}.{minor}.{patch}"]
search = "{current_version}"
Expand Down
10 changes: 10 additions & 0 deletions GridboxConnectorAddon-edge/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
<!-- https://developers.home-assistant.io/docs/add-ons/presentation#keeping-a-changelog -->

## 2.8.0

### 🚀 Added

- Heaters with Temperature and power

### 🔨 Fixed

- does not show anymore credentials in log

## 2.7.6

### 🔨 Fixed
Expand Down
1 change: 0 additions & 1 deletion GridboxConnectorAddon-edge/GridboxConnector/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ def load_gridbox_config():


if __name__ == '__main__':

gridbox_config = load_gridbox_config()
options_file = ''
WAIT = int(os.getenv('WAITTIME', "60"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from ha_mqtt_discoverable.sensors import Sensor, SensorInfo
from ha_viessmann_battery import HAViessmannBattery
from ha_viessmann_ev_charging_station import HAViessmannEVChargingStation
from ha_viessmann_heater import HAViessmannHeater


class HAViessmannGridboxConnector:
Expand All @@ -22,6 +23,7 @@ class HAViessmannGridboxConnector:
self_consumtion_rate_sensor: Sensor
self_sufficiency_rate_sensor: Sensor
battery_sum: HAViessmannBattery
heater_sensor: HAViessmannHeater

def __init__(self, mqtt_settings):
self.battery_sensor_dict = {}
Expand Down Expand Up @@ -57,9 +59,6 @@ def __init__(self, mqtt_settings):
direct_consumption_ev_sensor_info = SensorInfo(name="DirectConsumptionEV", device_class="power", unique_id="gridbox_direct_consumption_ev", device=self.device_info, unit_of_measurement="W")
direct_consumption_ev_settings = Settings(mqtt=mqtt_settings, entity=direct_consumption_ev_sensor_info)

direct_consumption_heater_sensor_info = SensorInfo(name="DirectConsumptionHeater", device_class="power", unique_id="gridbox_direct_consumption_heater", device=self.device_info, unit_of_measurement="W")
direct_consumption_heater_settings = Settings(mqtt=mqtt_settings, entity=direct_consumption_heater_sensor_info)

direct_consumption_rate_sensor_info = SensorInfo(name="DirectConsumptionRate", device_class="power_factor", unique_id="gridbox_direct_consumption_rate", device=self.device_info, unit_of_measurement="%")
direct_consumption_rate_settings = Settings(mqtt=mqtt_settings, entity=direct_consumption_rate_sensor_info)

Expand Down Expand Up @@ -94,7 +93,6 @@ def __init__(self, mqtt_settings):
self.direct_consumption_household_sensor = Sensor(direct_consumption_household_settings)
self.direct_consumption_heatpump_sensor = Sensor(direct_consumption_heatpump_settings)
self.direct_consumption_ev_sensor = Sensor(direct_consumption_ev_settings)
self.direct_consumption_heaters_sensor = Sensor(direct_consumption_heater_settings)
self.direct_consumption_rate_sensor = Sensor(direct_consumption_rate_settings)

self.self_supply_sensor = Sensor(self_supply_settings)
Expand All @@ -116,8 +114,6 @@ def update_sensors(self, measurement: dict):
self.direct_consumption_household_sensor.set_state(float(measurement.get("directConsumptionHousehold", "0")))
if "directConsumptionHeatPump" in measurement:
self.direct_consumption_heatpump_sensor.set_state(float(measurement.get("directConsumptionHeatPump", "0")))
if "directConsumptionHeater" in measurement:
self.direct_consumption_heaters_sensor.set_state(float(measurement.get("directConsumptionHeater", "0")))
if "directConsumptionEV" in measurement:
self.direct_consumption_ev_sensor.set_state(float(measurement.get("directConsumptionEV", "0")))
if "directConsumptionRate" in measurement:
Expand Down Expand Up @@ -151,6 +147,18 @@ def update_sensors(self, measurement: dict):
remaining_charge = float(battery.get("remainingCharge", "0"))
battery_sensor.set_states(state_of_charge, capacity, power, remaining_charge)

if "heaters" in measurement:
heaters: list = measurement.get("heaters", [])
for heater in heaters:
appliance_id = heater.get("applianceID", "")
if self.heater_sensor is None:
self.heater_sensor = HAViessmannHeater(self.mqtt_settings, self.device_info, "", appliance_id)

power = round(float(heater.get("power", "0")),0)
temperature = round(float(heater.get("temperature", "0")),1)
self.heater_sensor.set_states(power, temperature)


if "evChargingStation" in measurement:
ev_charging_station: dict = measurement.get("evChargingStation", {})
power = float(ev_charging_station.get("power", "0"))
Expand Down
31 changes: 31 additions & 0 deletions GridboxConnectorAddon-edge/GridboxConnector/ha_viessmann_heater.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from ha_mqtt_discoverable.sensors import Sensor, SensorInfo
from ha_mqtt_discoverable import Settings, DeviceInfo


class HAViessmannHeater:
def __init__(self, mqtt_settings, device_info, name, id):
self.id: str = id
self.name: str = name
self.device_info: DeviceInfo = device_info
self.mqtt_settings: Settings.MQTT = mqtt_settings

self.heater_sensor_power = SensorInfo(
name=f"Heater {name} Power", device_class="energy", unique_id=f"gridbox_heater_power_{name}", device=device_info, unit_of_measurement="W")
self.heater_power_settings = Settings(
mqtt=mqtt_settings, entity=self.heater_sensor_power)
self.heater_power = Sensor(self.heater_power_settings)

self.heater_sensor_temperature = SensorInfo(
name=f"Heater {name} Temperature", device_class="temperature", unique_id=f"gridbox_heater_temperature_{name}", device=device_info, unit_of_measurement="C")
self.heater_temperature_settings = Settings(
mqtt=mqtt_settings, entity=self.heater_sensor_temperature)
self.heater_temperature = Sensor(self.heater_temperature_settings)


def get_name(self):
return self.name

def set_states(self, power, temperature):
self.heater_power.set_state(power)
self.heater_temperature.set_state(temperature)

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"batteries": [
{
"applianceID": "a1731af4-0399-495b-92c2-523fd61ab681",
"capacity": 10000,
"nominalCapacity": 10000,
"power": -102,
"remainingCharge": 10000,
"stateOfCharge": 1
}
],
"battery": {
"capacity": 10000,
"nominalCapacity": 10000,
"power": -102,
"remainingCharge": 10000,
"stateOfCharge": 1
},
"consumption": 847,
"directConsumption": 4523,
"directConsumptionEV": 0,
"directConsumptionHeatPump": 0,
"directConsumptionHeater": 3676,
"directConsumptionHousehold": 847,
"directConsumptionRate": 0.5465200579990334,
"grid": -3651,
"gridMeterReadingNegative": 5630400000,
"gridMeterReadingPositive": 5344920000,
"heaters": [
{
"applianceID": "12bdd8ec-9b1e-465e-8f26-feae00e5af0f",
"power": 3676,
"temperature": 70.9
}
],
"heating": 3676,
"measuredAt": "2024-07-12T12:52:47Z",
"photovoltaic": 8276,
"production": 8276,
"selfConsumption": 4625,
"selfConsumptionRate": 0.5588448525857902,
"selfSufficiencyRate": 1,
"selfSupply": 4523,
"totalConsumption": 4523
}
2 changes: 1 addition & 1 deletion GridboxConnectorAddon-edge/cloudSettings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "2.7.7",
"version": "2.8.0",
"urls": {
"login": "https://gridx.eu.auth0.com/oauth/token",
"gateways": "https://api.gridx.de/gateways",
Expand Down
2 changes: 1 addition & 1 deletion GridboxConnectorAddon-edge/config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config
---
name: Viessmann Gridbox Connector (edge)
version: "2.7.7"
version: "2.8.0"
slug: "gridbox_connector_edge"
description: "Viessmann Gridbox Connector (edge)"
url: "https://github.com/unl0ck/homeassistant-addon-viessmann-gridbox/tree/main/GridboxConnectorAddon-edge"
Expand Down
2 changes: 1 addition & 1 deletion GridboxConnectorAddon-edge/rootfs/share/cloudSettings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "2.7.7",
"version": "2.8.0",
"urls": {
"login": "https://gridx.eu.auth0.com/oauth/token",
"gateways": "https://api.gridx.de/gateways",
Expand Down

0 comments on commit 2cbff85

Please sign in to comment.