Arlec Powerboard esphome
-
Comments:
- here.
I bought one of the Grid Connect powerboards from Bunnings last week, and flashed it with a custom firmware.
The model I bought was the PB89HA, which is the one with 5 sockets (one of which is not switchable).
The button is on GPIO3, and the LED is an inverted GPIO1.
The four relays are on GPIO5, GPIO4, GPIO13 and GPIO12, starting with the one closest to the button.
Since there is only one button, and four switchable outlets, I had to come up with a mechanism for controlling all of them. I ended up (after playing around with single-through-quadruple click) with a single click for toggling the first relay (nearest the button). Then, a medium (between 1 and 2 second) press turns all relays off, and a long (greater than 2 second) press turns them all on.
This is not really ideal, as there is no way to toggle just relay 2-4 without using some sort of external control - which goes against my ethos with respect to smart home.
Having said that, I’m not actually sure how I’m going to use this board…I don’t really have a bunch of things that are potentially close together that need individual control. I guess I could have it turn off everything in the entertainment unit except the PVR - that might be a way to save power overnight. I’d want the button more accessible than the powerboard that currently controls them though.
Anyway, the base YAML file follows - be aware that this does not include wifi, and would need to be included in an actual config file (with a device name defined).
esphome:
name: $device_name
platform: ESP8266
board: esp01_1m
on_boot:
- light.turn_on:
id: led
brightness: 20%
binary_sensor:
- platform: status
name: "Status"
- platform: gpio
pin:
number: GPIO3
inverted: true
mode: INPUT_PULLUP
name: button
on_multi_click:
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- switch.turn_off: relay_0
- switch.turn_off: relay_1
- switch.turn_off: relay_2
- switch.turn_off: relay_3
- timing:
- ON for at least 2s
- OFF for at least 0.2s
then:
- switch.turn_on: relay_0
- switch.turn_on: relay_1
- switch.turn_on: relay_2
- switch.turn_on: relay_3
- timing:
- ON for at most 0.5s
- OFF for at least 0.2s
then:
- switch.toggle: relay_0
switch:
- platform: gpio
id: relay_0
pin: GPIO5
on_turn_on:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/0/On
retain: ON
payload: 1
on_turn_off:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/0/On
retain: ON
payload: 0
- platform: gpio
id: relay_1
pin: GPIO4
on_turn_on:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/1/On
retain: ON
payload: 1
on_turn_off:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/1/On
retain: ON
payload: 0
- platform: gpio
id: relay_2
pin: GPIO13
on_turn_on:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/2/On
retain: ON
payload: 1
on_turn_off:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/2/On
retain: ON
payload: 0
- platform: gpio
id: relay_3
pin: GPIO12
on_turn_on:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/3/On
retain: ON
payload: 1
on_turn_off:
- mqtt.publish:
topic: HomeKit/${device_name}/Outlet/3/On
retain: ON
payload: 0
light:
- platform: monochromatic
output: led1
id: led
restore_mode: ALWAYS_ON
output:
- platform: esp8266_pwm
pin:
number: GPIO1
id: led1
inverted: True
sensor:
- platform: wifi_signal
name: "WiFi signal sensor"
update_interval: 5min
ota:
logger:
mqtt:
broker: "mqtt.lan"
discovery: false
topic_prefix: esphome/${device_name}
on_message:
- topic: HomeKit/${device_name}/Outlet/0/On
payload: "1"
then:
- switch.turn_on:
id: relay_0
- topic: HomeKit/${device_name}/Outlet/0/On
payload: "0"
then:
- switch.turn_off:
id: relay_0
- topic: HomeKit/${device_name}/Outlet/1/On
payload: "1"
then:
- switch.turn_on:
id: relay_1
- topic: HomeKit/${device_name}/Outlet/1/On
payload: "0"
then:
- switch.turn_off:
id: relay_1
- topic: HomeKit/${device_name}/Outlet/2/On
payload: "1"
then:
- switch.turn_on:
id: relay_2
- topic: HomeKit/${device_name}/Outlet/2/On
payload: "0"
then:
- switch.turn_off:
id: relay_2
- topic: HomeKit/${device_name}/Outlet/3/On
payload: "1"
then:
- switch.turn_on:
id: relay_3
- topic: HomeKit/${device_name}/Outlet/3/On
payload: "0"
then:
- switch.turn_off:
id: relay_3