Exemple #1
0
    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"])
Exemple #2
0
    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"])
Exemple #3
0
    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'
        }])