mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 05:24:53 +01:00
Extend MQTT tests (#6648)
This commit is contained in:
parent
c299dff124
commit
c69cdec052
8 changed files with 446 additions and 78 deletions
|
@ -54,7 +54,12 @@ from esphome.components.esp32 import add_idf_sdkconfig_option
|
|||
|
||||
DEPENDENCIES = ["network"]
|
||||
|
||||
AUTO_LOAD = ["json"]
|
||||
|
||||
def AUTO_LOAD():
|
||||
if CORE.is_esp8266 or CORE.is_libretiny:
|
||||
return ["async_tcp", "json"]
|
||||
return ["json"]
|
||||
|
||||
|
||||
CONF_IDF_SEND_ASYNC = "idf_send_async"
|
||||
CONF_SKIP_CERT_CN_CHECK = "skip_cert_cn_check"
|
||||
|
|
428
tests/components/mqtt/common.yaml
Normal file
428
tests/components/mqtt/common.yaml
Normal file
|
@ -0,0 +1,428 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
time:
|
||||
- platform: sntp
|
||||
|
||||
mqtt:
|
||||
broker: "192.168.178.84"
|
||||
port: 1883
|
||||
username: debug
|
||||
password: debug
|
||||
client_id: someclient
|
||||
use_abbreviations: false
|
||||
discovery: true
|
||||
discovery_retain: false
|
||||
discovery_prefix: discovery
|
||||
discovery_unique_id_generator: legacy
|
||||
topic_prefix: helloworld
|
||||
log_topic:
|
||||
topic: helloworld/hi
|
||||
level: INFO
|
||||
birth_message:
|
||||
will_message:
|
||||
shutdown_message:
|
||||
topic: topic/to/send/to
|
||||
payload: hi
|
||||
qos: 2
|
||||
retain: true
|
||||
keepalive: 60s
|
||||
reboot_timeout: 60s
|
||||
on_message:
|
||||
- topic: my/custom/topic
|
||||
qos: 0
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Got message %s", x.c_str());
|
||||
- topic: bedroom/ota_mode
|
||||
then:
|
||||
- logger.log: Got bedroom/ota_mode
|
||||
- topic: livingroom/ota_mode
|
||||
then:
|
||||
- logger.log: Got livingroom/ota_mode
|
||||
on_json_message:
|
||||
topic: the/topic
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
- wifi.connected:
|
||||
- mqtt.connected:
|
||||
then:
|
||||
- logger.log: on_json_message
|
||||
on_connect:
|
||||
- mqtt.publish:
|
||||
topic: some/topic
|
||||
payload: Hello
|
||||
on_disconnect:
|
||||
- mqtt.publish:
|
||||
topic: some/topic
|
||||
payload: Good-bye
|
||||
|
||||
binary_sensor:
|
||||
- platform: template
|
||||
id: some_binary_sensor
|
||||
name: Garage Door Open
|
||||
state_topic: some/topic/binary_sensor
|
||||
qos: 2
|
||||
lambda: |-
|
||||
if (id(template_sens).state > 30) {
|
||||
// Garage Door is open.
|
||||
return true;
|
||||
} else {
|
||||
// Garage Door is closed.
|
||||
return false;
|
||||
}
|
||||
on_state:
|
||||
- mqtt.publish:
|
||||
topic: some/topic/binary_sensor
|
||||
payload: Hello
|
||||
qos: 2
|
||||
retain: true
|
||||
|
||||
button:
|
||||
- platform: template
|
||||
name: "Template Button"
|
||||
state_topic: some/topic/button
|
||||
qos: 2
|
||||
on_press:
|
||||
- mqtt.publish:
|
||||
topic: some/topic/button
|
||||
payload: Hello
|
||||
qos: 2
|
||||
retain: true
|
||||
|
||||
climate:
|
||||
- platform: thermostat
|
||||
name: Test Thermostat
|
||||
sensor: template_sens
|
||||
humidity_sensor: template_sens
|
||||
action_state_topic: some/topicaction_state
|
||||
current_temperature_state_topic: some/topiccurrent_temperature_state
|
||||
current_humidity_state_topic: some/topiccurrent_humidity_state
|
||||
fan_mode_state_topic: some/topicfan_mode_state
|
||||
fan_mode_command_topic: some/topicfan_mode_command
|
||||
mode_state_topic: some/topicmode_state
|
||||
mode_command_topic: some/topicmode_command
|
||||
preset_state_topic: some/topicpreset_state
|
||||
preset_command_topic: some/topicpreset_command
|
||||
swing_mode_state_topic: some/topicswing_mode_state
|
||||
swing_mode_command_topic: some/topicswing_mode_command
|
||||
target_temperature_state_topic: some/topictarget_temperature_state
|
||||
target_temperature_command_topic: some/topictarget_temperature_command
|
||||
target_temperature_high_state_topic: some/topictarget_temperature_high_state
|
||||
target_temperature_high_command_topic: some/topictarget_temperature_high_command
|
||||
target_temperature_low_state_topic: some/topictarget_temperature_low_state
|
||||
target_temperature_low_command_topic: some/topictarget_temperature_low_command
|
||||
target_humidity_state_topic: some/topictarget_humidity_state
|
||||
target_humidity_command_topic: some/topictarget_humidity_command
|
||||
preset:
|
||||
- name: Default Preset
|
||||
default_target_temperature_low: 18°C
|
||||
default_target_temperature_high: 24°C
|
||||
- name: Away
|
||||
default_target_temperature_low: 16°C
|
||||
default_target_temperature_high: 20°C
|
||||
idle_action:
|
||||
- logger.log: idle_action
|
||||
cool_action:
|
||||
- logger.log: cool_action
|
||||
supplemental_cooling_action:
|
||||
- logger.log: supplemental_cooling_action
|
||||
heat_action:
|
||||
- logger.log: heat_action
|
||||
supplemental_heating_action:
|
||||
- logger.log: supplemental_heating_action
|
||||
dry_action:
|
||||
- logger.log: dry_action
|
||||
fan_only_action:
|
||||
- logger.log: fan_only_action
|
||||
auto_mode:
|
||||
- logger.log: auto_mode
|
||||
off_mode:
|
||||
- logger.log: off_mode
|
||||
heat_mode:
|
||||
- logger.log: heat_mode
|
||||
cool_mode:
|
||||
- logger.log: cool_mode
|
||||
dry_mode:
|
||||
- logger.log: dry_mode
|
||||
fan_only_mode:
|
||||
- logger.log: fan_only_mode
|
||||
fan_mode_auto_action:
|
||||
- logger.log: fan_mode_auto_action
|
||||
fan_mode_on_action:
|
||||
- logger.log: fan_mode_on_action
|
||||
fan_mode_off_action:
|
||||
- logger.log: fan_mode_off_action
|
||||
fan_mode_low_action:
|
||||
- logger.log: fan_mode_low_action
|
||||
fan_mode_medium_action:
|
||||
- logger.log: fan_mode_medium_action
|
||||
fan_mode_high_action:
|
||||
- logger.log: fan_mode_high_action
|
||||
fan_mode_middle_action:
|
||||
- logger.log: fan_mode_middle_action
|
||||
fan_mode_focus_action:
|
||||
- logger.log: fan_mode_focus_action
|
||||
fan_mode_diffuse_action:
|
||||
- logger.log: fan_mode_diffuse_action
|
||||
fan_mode_quiet_action:
|
||||
- logger.log: fan_mode_quiet_action
|
||||
swing_off_action:
|
||||
- logger.log: swing_off_action
|
||||
swing_horizontal_action:
|
||||
- logger.log: swing_horizontal_action
|
||||
swing_vertical_action:
|
||||
- logger.log: swing_vertical_action
|
||||
swing_both_action:
|
||||
- logger.log: swing_both_action
|
||||
startup_delay: true
|
||||
supplemental_cooling_delta: 2.0
|
||||
cool_deadband: 0.5
|
||||
cool_overrun: 0.5
|
||||
min_cooling_off_time: 300s
|
||||
min_cooling_run_time: 300s
|
||||
max_cooling_run_time: 600s
|
||||
supplemental_heating_delta: 2.0
|
||||
heat_deadband: 0.5
|
||||
heat_overrun: 0.5
|
||||
min_heating_off_time: 300s
|
||||
min_heating_run_time: 300s
|
||||
max_heating_run_time: 600s
|
||||
min_fanning_off_time: 30s
|
||||
min_fanning_run_time: 30s
|
||||
min_fan_mode_switching_time: 15s
|
||||
min_idle_time: 30s
|
||||
set_point_minimum_differential: 0.5
|
||||
fan_only_action_uses_fan_mode_timer: true
|
||||
fan_only_cooling: true
|
||||
fan_with_cooling: true
|
||||
fan_with_heating: true
|
||||
|
||||
cover:
|
||||
- platform: template
|
||||
name: Template Cover
|
||||
state_topic: some/topic/cover
|
||||
qos: 2
|
||||
lambda: |-
|
||||
if (id(some_binary_sensor).state) {
|
||||
return COVER_OPEN;
|
||||
} else {
|
||||
return COVER_CLOSED;
|
||||
}
|
||||
open_action:
|
||||
- logger.log: open_action
|
||||
close_action:
|
||||
- logger.log: close_action
|
||||
stop_action:
|
||||
- logger.log: stop_action
|
||||
optimistic: true
|
||||
|
||||
datetime:
|
||||
- platform: template
|
||||
name: Date
|
||||
id: test_date
|
||||
type: date
|
||||
state_topic: some/topic/date
|
||||
qos: 2
|
||||
set_action:
|
||||
- logger.log: "set_value"
|
||||
on_value:
|
||||
- logger.log:
|
||||
format: "Date: %04d-%02d-%02d"
|
||||
args:
|
||||
- x.year
|
||||
- x.month
|
||||
- x.day_of_month
|
||||
- platform: template
|
||||
name: Time
|
||||
id: test_time
|
||||
type: time
|
||||
state_topic: some/topic/time
|
||||
qos: 2
|
||||
set_action:
|
||||
- logger.log: "set_value"
|
||||
on_value:
|
||||
- logger.log:
|
||||
format: "Time: %02d:%02d:%02d"
|
||||
args:
|
||||
- x.hour
|
||||
- x.minute
|
||||
- x.second
|
||||
- platform: template
|
||||
name: DateTime
|
||||
id: test_datetime
|
||||
type: datetime
|
||||
state_topic: some/topic/datetime
|
||||
qos: 2
|
||||
set_action:
|
||||
- logger.log: set_value
|
||||
on_value:
|
||||
- logger.log:
|
||||
format: "DateTime: %04d-%02d-%02d %02d:%02d:%02d"
|
||||
args:
|
||||
- x.year
|
||||
- x.month
|
||||
- x.day_of_month
|
||||
- x.hour
|
||||
- x.minute
|
||||
- x.second
|
||||
|
||||
event:
|
||||
- platform: template
|
||||
name: Template Event
|
||||
state_topic: some/topic/event
|
||||
qos: 2
|
||||
event_types:
|
||||
- "custom_event_1"
|
||||
- "custom_event_2"
|
||||
|
||||
fan:
|
||||
- platform: template
|
||||
name: Template Fan
|
||||
state_topic: some/topic/fan
|
||||
qos: 2
|
||||
on_state:
|
||||
- logger.log: on_state
|
||||
on_speed_set:
|
||||
- logger.log: on_speed_set
|
||||
|
||||
light:
|
||||
- platform: binary
|
||||
name: Desk Lamp
|
||||
output: light_output
|
||||
state_topic: some/topic/light
|
||||
qos: 2
|
||||
|
||||
output:
|
||||
- id: light_output
|
||||
platform: gpio
|
||||
pin: 0
|
||||
|
||||
lock:
|
||||
- platform: template
|
||||
name: "Template Lock"
|
||||
state_topic: some/topic/lock
|
||||
qos: 2
|
||||
lambda: |-
|
||||
if (id(some_binary_sensor).state) {
|
||||
return LOCK_STATE_LOCKED;
|
||||
} else {
|
||||
return LOCK_STATE_UNLOCKED;
|
||||
}
|
||||
lock_action:
|
||||
- logger.log: lock_action
|
||||
unlock_action:
|
||||
- logger.log: unlock_action
|
||||
open_action:
|
||||
- logger.log: open_action
|
||||
|
||||
number:
|
||||
- platform: template
|
||||
name: "Template number"
|
||||
state_topic: some/topic/number
|
||||
qos: 2
|
||||
optimistic: true
|
||||
min_value: 0
|
||||
max_value: 100
|
||||
step: 1
|
||||
|
||||
select:
|
||||
- platform: template
|
||||
name: "Template select"
|
||||
state_topic: some/topic/select
|
||||
qos: 2
|
||||
optimistic: true
|
||||
options:
|
||||
- one
|
||||
- two
|
||||
- three
|
||||
initial_option: two
|
||||
|
||||
sensor:
|
||||
- platform: template
|
||||
name: Template Sensor
|
||||
id: template_sens
|
||||
lambda: |-
|
||||
if (id(some_binary_sensor).state) {
|
||||
return 42.0;
|
||||
} else {
|
||||
return 0.0;
|
||||
}
|
||||
update_interval: 60s
|
||||
on_value:
|
||||
- mqtt.publish:
|
||||
topic: some/topic/sensor
|
||||
payload: Hello
|
||||
qos: 2
|
||||
retain: true
|
||||
- platform: mqtt_subscribe
|
||||
name: MQTT Subscribe Sensor
|
||||
topic: mqtt/topic
|
||||
id: the_sensor
|
||||
qos: 2
|
||||
on_value:
|
||||
- mqtt.publish_json:
|
||||
topic: the/topic
|
||||
payload: |-
|
||||
root["key"] = id(template_sens).state;
|
||||
root["greeting"] = "Hello World";
|
||||
|
||||
switch:
|
||||
- platform: template
|
||||
name: Template Switch
|
||||
state_topic: some/topic/switch
|
||||
qos: 2
|
||||
lambda: |-
|
||||
if (id(some_binary_sensor).state) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
turn_on_action:
|
||||
- logger.log: turn_on_action
|
||||
turn_off_action:
|
||||
- logger.log: turn_off_action
|
||||
|
||||
text_sensor:
|
||||
- platform: template
|
||||
name: Template Text Sensor
|
||||
id: tts_text
|
||||
state_topic: some/topic/text_sensor
|
||||
qos: 2
|
||||
- platform: mqtt_subscribe
|
||||
name: MQTT Subscribe Text
|
||||
topic: some/topic/text_sensor
|
||||
qos: 2
|
||||
on_value:
|
||||
- text_sensor.template.publish:
|
||||
id: tts_text
|
||||
state: Hello World
|
||||
- text_sensor.template.publish:
|
||||
id: tts_text
|
||||
state: |-
|
||||
return "Hello World2";
|
||||
|
||||
text:
|
||||
- platform: template
|
||||
name: Template Text
|
||||
optimistic: true
|
||||
min_length: 0
|
||||
max_length: 100
|
||||
mode: text
|
||||
state_topic: some/topic/text
|
||||
qos: 2
|
||||
|
||||
valve:
|
||||
- platform: template
|
||||
name: Template Valve
|
||||
state_topic: some/topic/valve
|
||||
qos: 2
|
||||
optimistic: true
|
||||
lambda: |-
|
||||
if (id(some_binary_sensor).state) {
|
||||
return VALVE_OPEN;
|
||||
} else {
|
||||
return VALVE_CLOSED;
|
||||
}
|
2
tests/components/mqtt/test.bk72xx.yaml
Normal file
2
tests/components/mqtt/test.bk72xx.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
packages:
|
||||
common: !include common.yaml
|
|
@ -1,16 +1,2 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
mqtt:
|
||||
broker: test.mosquitto.org
|
||||
port: 1883
|
||||
discovery: true
|
||||
discovery_prefix: homeassistant
|
||||
idf_send_async: false
|
||||
log_topic:
|
||||
on_message:
|
||||
topic: testing/sensor/testing_sensor/state
|
||||
qos: 0
|
||||
then:
|
||||
- logger.log: Mqtt Test
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
|
|
@ -1,15 +1,2 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
mqtt:
|
||||
broker: test.mosquitto.org
|
||||
port: 1883
|
||||
discovery: true
|
||||
discovery_prefix: homeassistant
|
||||
log_topic:
|
||||
on_message:
|
||||
topic: testing/sensor/testing_sensor/state
|
||||
qos: 0
|
||||
then:
|
||||
- logger.log: Mqtt Test
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
|
|
@ -1,16 +1,2 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
mqtt:
|
||||
broker: test.mosquitto.org
|
||||
port: 1883
|
||||
discovery: true
|
||||
discovery_prefix: homeassistant
|
||||
idf_send_async: false
|
||||
log_topic:
|
||||
on_message:
|
||||
topic: testing/sensor/testing_sensor/state
|
||||
qos: 0
|
||||
then:
|
||||
- logger.log: Mqtt Test
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
|
|
@ -1,15 +1,2 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
mqtt:
|
||||
broker: test.mosquitto.org
|
||||
port: 1883
|
||||
discovery: true
|
||||
discovery_prefix: homeassistant
|
||||
log_topic:
|
||||
on_message:
|
||||
topic: testing/sensor/testing_sensor/state
|
||||
qos: 0
|
||||
then:
|
||||
- logger.log: Mqtt Test
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
|
|
@ -1,15 +1,2 @@
|
|||
wifi:
|
||||
ssid: MySSID
|
||||
password: password1
|
||||
|
||||
mqtt:
|
||||
broker: test.mosquitto.org
|
||||
port: 1883
|
||||
discovery: true
|
||||
discovery_prefix: homeassistant
|
||||
log_topic:
|
||||
on_message:
|
||||
topic: testing/sensor/testing_sensor/state
|
||||
qos: 0
|
||||
then:
|
||||
- logger.log: Mqtt Test
|
||||
packages:
|
||||
common: !include common.yaml
|
||||
|
|
Loading…
Reference in a new issue