def test_shared_topic(self): mqtt = MockMqtt(self) state = MqttSharedTopic(mqtt, "/my/topic") sensor = Swi(mqtt=mqtt, state_topic=state, availability_topic=True) with sensor: sensor.available_set(True) state.publish() mqtt.assert_messages('homeassistant/switch/test_name/config', [{'availability_topic': 'homeassistant/switch/test_name/available', 'command_topic': 'homeassistant/switch/test_name/cmd', 'name': 'Test Name', 'payload_available': 'online', 'payload_not_available': 'offline', 'payload_off': 'off', 'payload_on': 'on', 'state_off': 'off', 'state_on': 'on', 'state_topic': '/my/topic', 'value_template': '{{ value_json.test_name }}', 'unique_id': 'test_name'}, None]) mqtt.assert_messages('/my/topic', [{"test_name": "off"}]) mqtt.assert_messages('homeassistant/switch/test_name/available', ["online"])
def test_shared_topic(self): mqtt = MockMqtt(self) state = MqttSharedTopic(mqtt, "/my/topic") sensor = SetSen(mqtt=mqtt, state_topic=state, availability_topic=True) with sensor: sensor.available_set(True) state.publish() mqtt.publish('homeassistant/sensor/test_name/cmd', '3.68') state.publish() mqtt.assert_messages( 'homeassistant/sensor/test_name/config', [{ 'availability_topic': 'homeassistant/sensor/test_name/available', 'name': 'Test Name', 'payload_available': 'online', 'payload_not_available': 'offline', 'state_topic': '/my/topic', 'unit_of_measurement': '°C', 'value_template': '{{ value_json.test_name }}', 'unique_id': 'test_name' }, None]) mqtt.assert_messages('/my/topic', [{ "test_name": "7.50" }, { "test_name": "3.68" }]) mqtt.assert_messages('homeassistant/sensor/test_name/available', ["online"])
def test_shared_topic(self): mqtt = MockMqtt(self) state = MqttSharedTopic(mqtt, "/my/topic") climate = Cli(mqtt=mqtt, thermometer=fake_temp2, state_topic=state, availability_topic=True) with climate: climate.available_set(True) self.assertEqual(climate.is_on(), False) state.publish() mqtt.publish('homeassistant/climate/test_name/cmdMode', 'heat') self.assertEqual(climate.is_on(), True) mqtt.publish('homeassistant/climate/test_name/cmdTargetTemp', '80') state.publish() mqtt.assert_messages( 'homeassistant/climate/test_name/config', [{ 'availability_topic': 'homeassistant/climate/test_name/available', 'current_temperature_template': '{{ value_json.test_name_curr_temp }}', 'current_temperature_topic': '/my/topic', 'max_temp': '100', 'min_temp': '0', 'mode_command_topic': 'homeassistant/climate/test_name/cmdMode', 'mode_state_template': '{{ value_json.test_name_mode }}', 'mode_state_topic': '/my/topic', 'modes': ['off', 'heat'], 'name': 'Test Name', 'payload_available': 'online', 'payload_not_available': 'offline', 'temp_step': '1', 'temperature_command_topic': 'homeassistant/climate/test_name/cmdTargetTemp', 'temperature_state_template': '{{ value_json.test_name_target_temp }}', 'temperature_state_topic': '/my/topic', 'unique_id': 'test_name' }, None]) mqtt.assert_messages('homeassistant/climate/test_name/available', ['online']) mqtt.assert_messages('homeassistant/climate/test_name/cmdMode', ["heat"]) mqtt.assert_messages('homeassistant/climate/test_name/cmdTargetTemp', ["80"]) mqtt.assert_messages('/my/topic', [{ 'test_name_curr_temp': '7.50', 'test_name_mode': 'off', 'test_name_target_temp': '6.50' }, { 'test_name_curr_temp': '10.50', 'test_name_mode': 'heat', 'test_name_target_temp': '80.00' }])