Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
unl0ck committed Jul 22, 2024
2 parents 5bd010e + 3e12f38 commit db1cef2
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 49 deletions.
6 changes: 4 additions & 2 deletions .devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"containerEnv": {
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
},
"extensions": ["timonwong.shellcheck", "esbenp.prettier-vscode"],
"extensions": ["timonwong.shellcheck", "esbenp.prettier-vscode","ahmadawais.emoji-log-vscode","GitHub.copilot","ms-python.python","ms-python.debugpy","ms-python.vscode-pylance","donjayamanne.githistory"],
"mounts": ["type=volume,target=/var/lib/docker"],
"settings": {
"terminal.integrated.profiles.linux": {
Expand All @@ -21,5 +21,7 @@
"editor.formatOnSave": true,
"editor.formatOnType": true,
"files.trimTrailingWhitespace": true
}
},
// Führt Befehle innerhalb des Containers aus, nachdem er erstellt wurde, aber bevor er gestartet wird
"postCreateCommand": "apt-get install python3 python3-pip python3-venv -y"
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ def __init__(self, mqtt_settings):
# Battery sum
self.battery_sum = HAViessmannBattery(mqtt_settings, self.device_info, "sum", "")

# Heater
self.heater_sensor = HAViessmannHeater(mqtt_settings, self.device_info, "", "")

# EV
self.ev_sum = HAViessmannEVChargingStation(mqtt_settings, self.device_info, "sum", "")

Expand Down
60 changes: 38 additions & 22 deletions GridboxConnectorAddon-dev/GridboxConnector/main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
from paho.mqtt.client import MQTT_ERR_SUCCESS
from ha_mqtt_discoverable.sensors import Sensor

mock_data = "{'batteries': [{'applianceID': '97af25d0-3791-48cc-857c-14aaac749267', 'capacity': 10000, 'nominalCapacity': 10000, 'power': -853, 'remainingCharge': 7700, 'stateOfCharge': 0.77}], 'battery': {'capacity': 10000, 'nominalCapacity': 10000, 'power': -853, 'remainingCharge': 7700, 'stateOfCharge': 0.77}, 'consumption': 600, 'directConsumption': 600, 'directConsumptionEV': 0, 'directConsumptionHeatPump': 0, 'directConsumptionHeater': 0, 'directConsumptionHousehold': 600, 'directConsumptionRate': 0.3968253968253968, 'grid': -59, 'gridMeterReadingNegative': 14081760000, 'gridMeterReadingPositive': 7393320000, 'measuredAt': '2024-05-08T09:42:18Z', 'photovoltaic': 1512, 'production': 1512, 'selfConsumption': 1453, 'selfConsumptionRate': 0.9609788359788359, 'selfSufficiencyRate': 1, 'selfSupply': 600, 'totalConsumption': 600}"


class TestGridboxConnectorMethods(unittest.TestCase):

@patch('paho.mqtt.client.Client')
Expand All @@ -19,7 +16,7 @@ class TestGridboxConnectorMethods(unittest.TestCase):
def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_batteries.json') as f:
mock_data = json.load(f)
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
Expand Down Expand Up @@ -50,11 +47,11 @@ def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth
patch.object(viessmann_gridbox_connector.self_sufficiency_rate_sensor, 'set_state') as mock_self_sufficiency_rate_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_self_supply_sensor.assert_called_once_with(600.0)
mock_self_consumtion_rate_sensor.assert_called_once_with(96.09788359788359)
mock_self_consumtion_rate_sensor.assert_called_once_with(96.1)
mock_consumption_household_sensor.assert_called_once_with(600)
mock_direct_consumption_household_sensor.assert_called_once_with(600.0)
mock_direct_consumption_heatpump_sensor.assert_called_once_with(0.0)
mock_direct_consumption_rate_sensor.assert_called_once_with(39.682539682539684)
mock_direct_consumption_rate_sensor.assert_called_once_with(39.68)
mock_self_sufficiency_rate_sensor.assert_called_once_with(100.0)

@patch('paho.mqtt.client.Client')
Expand All @@ -64,7 +61,7 @@ def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth
def test_main_ev(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_ev.json') as f:
mock_data = json.load(f)
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
Expand All @@ -86,23 +83,42 @@ def test_main_ev(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_m
viessmann_gridbox_connector = HAViessmannGridboxConnector(
mqtt_settings)

with patch.object(viessmann_gridbox_connector.self_supply_sensor, 'set_state') as mock_self_supply_sensor, \
patch.object(viessmann_gridbox_connector.self_consumtion_rate_sensor, 'set_state') as mock_self_consumption_rate_sensor, \
patch.object(viessmann_gridbox_connector.consumption_household_sensor, 'set_state') as mock_consumption_household_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_household_sensor, 'set_state') as mock_direct_consumption_household_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_heatpump_sensor, 'set_state') as mock_direct_consumption_heatpump_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_rate_sensor, 'set_state') as mock_direct_consumption_rate_sensor, \
patch.object(viessmann_gridbox_connector.self_sufficiency_rate_sensor, 'set_state') as mock_self_sufficiency_rate_sensor, \
patch.object(viessmann_gridbox_connector.ev_sum_sensor, 'set_state') as mock_ev_sum_sensor:
with patch.object(viessmann_gridbox_connector.ev_sum, 'set_states') as mock_ev_sum_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_self_supply_sensor.assert_called_once_with(8854)
mock_self_consumption_rate_sensor.assert_called_once_with(96.09788359788359)
mock_consumption_household_sensor.assert_called_once_with(600)
mock_direct_consumption_household_sensor.assert_called_once_with(600.0)
mock_direct_consumption_heatpump_sensor.assert_called_once_with(0.0)
mock_direct_consumption_rate_sensor.assert_called_once_with(0.8414867048626414)
mock_self_sufficiency_rate_sensor.assert_called_once_with(100.0)
mock_ev_sum_sensor.assert_called_once_with(7930.4,0,0,0,0,0)

@patch('paho.mqtt.client.Client')
@patch.object(GridboxConnector, 'init_auth', return_value=None)
@patch.object(GridboxConnector, '__init__', return_value=None)
@patch.object(GridboxConnector, 'retrieve_live_data')
def test_main_heater(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_heater.json') as f:
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
gridbox_connector = GridboxConnector(None)

# Call the function
result = gridbox_connector.retrieve_live_data()

# Assert the function was called once
mock_retrieve_live_data.assert_called_once()

# Assert the function returned the mock value
self.assertEqual(result, mock_data)
mqtt_server = "mqtt_server"
mqtt_user = "mqtt_user"
mqtt_pw = "mqtt_pw"
mqtt_settings = Settings.MQTT(
host=mqtt_server, username=mqtt_user, password=mqtt_pw)
viessmann_gridbox_connector = HAViessmannGridboxConnector(
mqtt_settings)

with patch.object(viessmann_gridbox_connector.heater_sensor, 'set_states') as mock_heater_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_heater_sensor.assert_called_once_with(3676,70.9)

if __name__ == '__main__':
unittest.main()
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ def __init__(self, mqtt_settings):
# Battery sum
self.battery_sum = HAViessmannBattery(mqtt_settings, self.device_info, "sum", "")

# Heater
self.heater_sensor = HAViessmannHeater(mqtt_settings, self.device_info, "", "")

# EV
self.ev_sum = HAViessmannEVChargingStation(mqtt_settings, self.device_info, "sum", "")

Expand Down
60 changes: 38 additions & 22 deletions GridboxConnectorAddon-edge/GridboxConnector/main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
from paho.mqtt.client import MQTT_ERR_SUCCESS
from ha_mqtt_discoverable.sensors import Sensor

mock_data = "{'batteries': [{'applianceID': '97af25d0-3791-48cc-857c-14aaac749267', 'capacity': 10000, 'nominalCapacity': 10000, 'power': -853, 'remainingCharge': 7700, 'stateOfCharge': 0.77}], 'battery': {'capacity': 10000, 'nominalCapacity': 10000, 'power': -853, 'remainingCharge': 7700, 'stateOfCharge': 0.77}, 'consumption': 600, 'directConsumption': 600, 'directConsumptionEV': 0, 'directConsumptionHeatPump': 0, 'directConsumptionHeater': 0, 'directConsumptionHousehold': 600, 'directConsumptionRate': 0.3968253968253968, 'grid': -59, 'gridMeterReadingNegative': 14081760000, 'gridMeterReadingPositive': 7393320000, 'measuredAt': '2024-05-08T09:42:18Z', 'photovoltaic': 1512, 'production': 1512, 'selfConsumption': 1453, 'selfConsumptionRate': 0.9609788359788359, 'selfSufficiencyRate': 1, 'selfSupply': 600, 'totalConsumption': 600}"


class TestGridboxConnectorMethods(unittest.TestCase):

@patch('paho.mqtt.client.Client')
Expand All @@ -19,7 +16,7 @@ class TestGridboxConnectorMethods(unittest.TestCase):
def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_batteries.json') as f:
mock_data = json.load(f)
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
Expand Down Expand Up @@ -50,11 +47,11 @@ def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth
patch.object(viessmann_gridbox_connector.self_sufficiency_rate_sensor, 'set_state') as mock_self_sufficiency_rate_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_self_supply_sensor.assert_called_once_with(600.0)
mock_self_consumtion_rate_sensor.assert_called_once_with(96.09788359788359)
mock_self_consumtion_rate_sensor.assert_called_once_with(96.1)
mock_consumption_household_sensor.assert_called_once_with(600)
mock_direct_consumption_household_sensor.assert_called_once_with(600.0)
mock_direct_consumption_heatpump_sensor.assert_called_once_with(0.0)
mock_direct_consumption_rate_sensor.assert_called_once_with(39.682539682539684)
mock_direct_consumption_rate_sensor.assert_called_once_with(39.68)
mock_self_sufficiency_rate_sensor.assert_called_once_with(100.0)

@patch('paho.mqtt.client.Client')
Expand All @@ -64,7 +61,7 @@ def test_main_batteries(self, mock_retrieve_live_data, mock_init, mock_init_auth
def test_main_ev(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_ev.json') as f:
mock_data = json.load(f)
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
Expand All @@ -86,23 +83,42 @@ def test_main_ev(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_m
viessmann_gridbox_connector = HAViessmannGridboxConnector(
mqtt_settings)

with patch.object(viessmann_gridbox_connector.self_supply_sensor, 'set_state') as mock_self_supply_sensor, \
patch.object(viessmann_gridbox_connector.self_consumtion_rate_sensor, 'set_state') as mock_self_consumption_rate_sensor, \
patch.object(viessmann_gridbox_connector.consumption_household_sensor, 'set_state') as mock_consumption_household_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_household_sensor, 'set_state') as mock_direct_consumption_household_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_heatpump_sensor, 'set_state') as mock_direct_consumption_heatpump_sensor, \
patch.object(viessmann_gridbox_connector.direct_consumption_rate_sensor, 'set_state') as mock_direct_consumption_rate_sensor, \
patch.object(viessmann_gridbox_connector.self_sufficiency_rate_sensor, 'set_state') as mock_self_sufficiency_rate_sensor, \
patch.object(viessmann_gridbox_connector.ev_sum_sensor, 'set_state') as mock_ev_sum_sensor:
with patch.object(viessmann_gridbox_connector.ev_sum_sensor, 'set_state') as mock_ev_sum_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_self_supply_sensor.assert_called_once_with(8854)
mock_self_consumption_rate_sensor.assert_called_once_with(96.09788359788359)
mock_consumption_household_sensor.assert_called_once_with(600)
mock_direct_consumption_household_sensor.assert_called_once_with(600.0)
mock_direct_consumption_heatpump_sensor.assert_called_once_with(0.0)
mock_direct_consumption_rate_sensor.assert_called_once_with(0.8414867048626414)
mock_self_sufficiency_rate_sensor.assert_called_once_with(100.0)
mock_ev_sum_sensor.assert_called_once_with(7930.4,0,0,0,0,0)

@patch('paho.mqtt.client.Client')
@patch.object(GridboxConnector, 'init_auth', return_value=None)
@patch.object(GridboxConnector, '__init__', return_value=None)
@patch.object(GridboxConnector, 'retrieve_live_data')
def test_main_heater(self, mock_retrieve_live_data, mock_init, mock_init_auth,mock_mqtt_client):
# Load mock data from JSON file
with open('tests/mock_data/mock_data_with_heater.json') as f:
mock_data = [json.load(f)]
mock_mqtt_client.return_value.connect.return_value = MQTT_ERR_SUCCESS
mock_retrieve_live_data.return_value = mock_data
# Create an instance of the class
gridbox_connector = GridboxConnector(None)

# Call the function
result = gridbox_connector.retrieve_live_data()

# Assert the function was called once
mock_retrieve_live_data.assert_called_once()

# Assert the function returned the mock value
self.assertEqual(result, mock_data)
mqtt_server = "mqtt_server"
mqtt_user = "mqtt_user"
mqtt_pw = "mqtt_pw"
mqtt_settings = Settings.MQTT(
host=mqtt_server, username=mqtt_user, password=mqtt_pw)
viessmann_gridbox_connector = HAViessmannGridboxConnector(
mqtt_settings)

with patch.object(viessmann_gridbox_connector.heater_sensor, 'set_state') as mock_heater_sensor:
viessmann_gridbox_connector.update_sensors(result[0])
mock_heater_sensor.assert_called_once_with(3676,70.9)

if __name__ == '__main__':
unittest.main()
5 changes: 2 additions & 3 deletions copy_to_release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,5 @@ echo "New version: $new_version"

# Update the version in the config.yaml file

# sed -i "s/version: \"$current_version\"/version: \"$new_version\"/g" $yaml_datei
# sed -i "" "s/version: \"$current_version\"/version: \"$new_version\"/g" $yaml_datei
sed -i "s/version: \"$current_version\"/version: \"$new_version\"/g" $yaml_datei
sed -i "s/version: \"$current_version\"/version: \"$new_version\"/g" $yaml_datei
#sed -i "" "s/version: \"$current_version\"/version: \"$new_version\"/g" $yaml_datei

0 comments on commit db1cef2

Please sign in to comment.