Wifi is monitored in ESPHome devices by including this sensor in the ESP device configuration yaml file:
sensor:
- platform: wifi_signal
name: "Dining Room DHT WiFi Signal"
update_interval: 15s
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 15
send_first_at: 15
For sonoff devices include this type of sensor in HA:
- platform: mqtt
state_topic: "tele/sonoff_xmas_lights/STATE"
name: "Xmas Lights Switch Wifi Signal"
unit_of_measurement: "%"
value_template: "{{value_json['Wifi'].RSSI }}"
availability_topic: "tele/sonoff_xmas_lights/LWT"
payload_available: "Online"
payload_not_available: "Offline"
It’s annoying that this cant be reported in raw dBm values.
The Lovelace WiFi card config:
cards:
- cards:
- entity: sensor.acrc_switch_wifi_signal
max: 100
min: 0
name: ACRC
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
- entity: sensor.bathroom_dht_wifi_signal
max: -30
min: -100
name: Bathroom
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.comms_cupboard_dht_wifi_signal
max: -30
min: -100
name: Comms
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.dining_heater_north_wifi_signal
max: -30
min: -100
name: Dining Heater (N)
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: '%'
- entity: sensor.dining_heater_west_wifi_signal
max: -30
min: -100
name: Dining Heater (W)
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: '%'
- entity: sensor.dining_room_dht_wifi_signal
max: -30
min: -100
name: Dining DHT
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.dishwasher_wifi_signal
max: 100
min: 0
name: Dishwasher
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
- entity: sensor.doorbell_downstairs_wifi_signal
max: -30
min: -100
name: Doorbell (Dn)
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.doorbell_upstairs_wifi_signal
max: -30
min: -100
name: Doorbell (Up)
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.ensuite_dht_wifi_signal
max: -30
min: -100
name: Ensuite
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.lounge_dehumidifier_wifi_signal
max: 100
min: 0
name: Lounge Dehumid
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
- entity: sensor.lounge_room_dht_wifi_signal
max: -30
min: -100
name: Lounge DHT
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.master_bed_sensor_wifi_signal
max: -30
min: -100
name: Master Bed
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.outside_light_level_wifi_signal
max: -30
min: -100
name: Lux
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.roof_space_dht_wifi_signal
max: -30
min: -100
name: Roof
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.rumpus_dehumidifier_wifi_signal
max: 100
min: 0
name: Rumpus Dehumid
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
- entity: sensor.rumpus_room_dht_wifi_signal
max: -30
min: -100
name: Rumpus DHT
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
- entity: sensor.spare_bedroom_dht_wifi_signal
max: -30
min: -100
name: SP Bed DHT
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: dB
type: horizontal-stack
- cards:
- entity: sensor.spare_bedroom_heater_wifi_signal
max: -30
min: -100
name: Dining Heater (W)
severity:
green: -55
red: -100
yellow: -70
type: gauge
unit: '%'
- entity: sensor.washing_machine_wifi_signal
max: 100
min: 0
name: Washing
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
- entity: sensor.xmas_lights_switch_wifi_signal
max: 100
min: 0
name: Xmas Lights
severity:
green: 70
red: 0
yellow: 50
type: gauge
unit: '%'
type: horizontal-stack
title: Wifi Levels
type: 'custom:vertical-stack-in-card' # <---- awesome custom card!
The Kodi remote set up is here (commands in this post, Lovelace card config in post below this one): Kodi Remote - #19 by tom_l Kodi Remote - #19 by tom_l
Here’s the TV and Projector card configs:
type: 'custom:tiles-card'
card_settings:
title: TV
title_align: left
columns: 4
column_width: calc(97%/4)
row_height: 75px
background: var(--paper-card-background-color)
global_settings:
label_sec:
color:
value: white
icon:
color:
value: white
shadow: 'elevation: 6dp'
border:
size: 3px
radius: 5px
color:
value: black
entities:
- column: 1
entity: script.lounge_tv_on
icon:
value: 'mdi:power-cycle'
label_sec:
value: 'On'
row: 1
- column: 2
entity: script.lounge_tv_off
icon:
value: 'mdi:power-off'
label_sec:
value: 'Off'
row: 1
- column: 1
entity: script.lounge_tv_input_tv
icon:
value: 'mdi:television-classic'
label_sec:
value: TV
row: 2
- column: 2
entity: script.lounge_tv_input_pc
icon:
value: 'mdi:desktop-classic'
label_sec:
value: PC
row: 2
- column: 3
entity: script.lounge_tv_input_kodi
icon:
value: 'mdi:kodi'
label_sec:
value: Kodi
row: 2
- column: 1
entity: script.lounge_tv_play
icon:
value: 'mdi:play'
row: 3
- column: 2
entity: script.lounge_tv_pause
icon:
value: 'mdi:pause'
row: 3
- column: 3
entity: script.lounge_tv_stop
icon:
value: 'mdi:stop'
row: 3
- column: 4
entity: script.lounge_tv_rec
icon:
value: 'mdi:record'
color:
value: '#ff0000'
row: 3
- column: 1
entity: script.lounge_tv_menu
icon:
value: 'mdi:menu'
label_sec:
value: Menu
row: 4
- column: 2
entity: script.lounge_tv_rew
icon:
value: 'mdi:rewind'
row: 4
- column: 3
entity: script.lounge_tv_ffwd
icon:
value: 'mdi:fast-forward'
row: 4
- column: 4
entity: script.lounge_tv_ch_up
icon:
value: 'mdi:arrow-up-bold-box-outline'
row: 4
- column: 1
entity: script.lounge_tv_option
icon:
value: 'mdi:playlist-edit'
label_sec:
value: Options
row: 5
- column: 2
entity: script.lounge_tv_skip_back
icon:
value: 'mdi:skip-previous'
row: 5
- column: 3
entity: script.lounge_tv_skip_fwd
icon:
value: 'mdi:skip-next'
row: 5
- column: 4
entity: script.lounge_tv_last_ch
icon:
value: 'mdi:arrow-left-bold-box-outline'
label_sec: Last CH
row: 5
- column: 1
entity: script.lounge_tv_guide
icon:
value: 'mdi:television-guide'
label_sec:
value: Guide
row: 6
- column: 2
entity: script.lounge_tv_info
icon:
value: 'mdi:information-outline'
label_sec:
value: Info
row: 6
- column: 3
entity: script.lounge_tv_up
icon:
value: 'mdi:arrow-up-bold-circle'
background:
value: '#2576da'
row: 6
- column: 4
entity: script.lounge_tv_ch_dn
icon:
value: 'mdi:arrow-down-bold-box-outline'
row: 6
- column: 1
entity: script.lounge_tv_media
icon:
value: 'mdi:folder-multiple-image'
label_sec:
value: Media
row: 7
- column: 2
entity: script.lounge_tv_left
icon:
value: 'mdi:arrow-left-bold-circle'
background:
value: '#2576da'
row: 7
- column: 3
entity: script.lounge_tv_ok
icon:
value: 'mdi:check-circle-outline'
row: 7
- column: 4
entity: script.lounge_tv_right
icon:
value: 'mdi:arrow-right-bold-circle'
background:
value: '#2576da'
row: 7
- column: 1
entity: script.lounge_tv_www
icon:
value: 'mdi:play-network'
label_sec: Internet
row: 8
- column: 2
entity: script.lounge_tv_return
icon:
value: 'mdi:backburger'
label_sec:
value: Return
row: 8
- column: 3
entity: script.lounge_tv_down
icon:
value: 'mdi:arrow-down-bold-circle'
background:
value: '#2576da'
row: 8
- column: 4
entity: script.lounge_tv_exit
icon:
value: 'mdi:backspace'
label_sec: Exit
row: 8
- column: 1
entity: script.lounge_tv_red
icon:
value: 'mdi:square'
color: '#ff0000'
row: 9
- column: 2
entity: script.lounge_tv_green
icon:
value: 'mdi:square'
color: '#00ff00'
row: 9
- column: 3
entity: script.lounge_tv_yellow
icon:
value: 'mdi:square'
color: '#ffff00'
row: 9
- column: 4
entity: script.lounge_tv_blue
icon:
value: 'mdi:square'
color: '#0000ff'
row: 9
type: 'custom:tiles-card'
card_settings:
title: Projector
title_align: left
columns: 4
column_width: calc(97%/4)
row_height: 75px
background: var(--paper-card-background-color)
global_settings:
label_sec:
color:
value: white
icon:
color:
value: white
shadow: 'elevation: 6dp'
border:
size: 3px
radius: 5px
color:
value: black
entities:
- column: 1
column_span: 2
entity: script.projector_on
icon:
value: 'mdi:power-cycle'
label_sec:
value: 'On'
row: 1
- column: 3
column_span: 2
entity: script.projector_off
icon:
value: 'mdi:power-off'
label_sec:
value: 'Off'
row: 1
- column: 1
column_span: 2
entity: script.projector_menu
icon:
value: 'mdi:menu'
label_sec:
value: Menu
row: 2
- column: 4
entity: script.projector_pattern
icon:
value: 'mdi:video-stabilization'
label_sec:
value: Pattern
row: 2
- column: 3
entity: script.projector_up
icon:
value: 'mdi:arrow-up-bold-circle'
background:
value: '#2576da'
row: 2
- column: 1
entity: script.projector_colour
icon:
value: 'mdi:palette'
label_sec:
value: Colour
row: 3
- column: 2
entity: script.projector_left
icon:
value: 'mdi:arrow-left-bold-circle'
background:
value: '#2576da'
row: 3
- column: 3
entity: script.projector_ok
icon:
value: 'mdi:check-circle-outline'
row: 3
- column: 4
entity: script.projector_right
icon:
value: 'mdi:arrow-right-bold-circle'
row: 3
background:
value: '#2576da'
- column: 1
entity: script.projector_iris
icon:
value: 'mdi:camera-iris'
label_sec:
value: Iris
row: 4
- column: 2
entity: script.projector_frame_int
icon:
value: 'mdi:blur-linear'
label_sec:
value: Iterlace
row: 4
- column: 3
entity: script.projector_down
icon:
value: 'mdi:arrow-down-bold-circle'
row: 4
background:
value: '#2576da'
- column: 4
entity: script.projector_esc
icon:
value: 'mdi:backspace'
label_sec:
value: Esc
row: 4
We have yet to see how the new Areas functionality works. I’m not opposed to changing the way I have my interface set up if there is a benefit (ease of use and authorisation). I’ve already assigned my integrated devices to areas.
The way I have my panels currently set up the upstairs floorplan is the default view and is the most intuitive control method for guests. The room specific panels I and guests use frequently. The device and other panels I use occasionally though I recently added the ‘Insights’ panel and am using that more frequently than these now.
A little bit every day or so adds up over a year. Read the forums for inspiration. You’ll get there. And by the time you do I imagine HA will be even better.
Set a naming scheme from the start. domain.location_device (e.g. switch.lounge_dehumidifier) has worked well for me. If you use this for automations and put them in alphabetical order this sorts things by area and is easy to search. Having said that my next project is to break up my files as per Frenk’s recent live stream (files based on areas and domain types).
MariaDB addon works considerably better on the pi than the SQL default db. It uses more resources (memory) but it is far more responsive and stable. I use excludes extensively in the recorder, logbook and history components. I only record and show what I’m interested in. I keep 7 days of data.
Equipment: HA on a Raspi 3B, another pi3B as a GPIO-MQTT gateway for a lot of wired sensors (PIRs, smoke, doorbell, etc…) more on that here:. Lifx lights. Sonoff POW2s and S2x for power switching and monitoring. ESPhome on Wemos D1 minis or NodeMCU ESP- 32S boards with various sensors, DHT22 (temp and humidity), BH1750 (lux) , limit switches and strain gauges. I also have two Global Cache IP2IR devices for infra-red remote control of older equipment. I would recommend the Broadlink options instead - as they are cheaper and appear to work just as well.