Re: Zásuvka s ovládáním přes WIFI
Marek Sembol
hwm.land na gmail.com
Čtvrtek Březen 18 07:27:36 CET 2021
(konfigurak dam nakonec. Je to z dvouploskoveho touch na zigbee. Jedno tl.
ovlada lampicku ve smart zasuvce na opacnem konci mistnosti, druhe lustr -
tady je podpora click (zapni/vypni) dlouheho click (zapni plny jas),
dvojclik (cyklovani jasu po 25%) a trojclick (teplota v 3 krocich). V
autonomnim pouze zapni/vypni a prechod autonomni/HA. Co se deje v HA rezimu
definuje HA na zaklade toho co dostane (clicke, .....)
Ohladne stability HA: jel jsem vzdy na hassio, stability vzdy 100%, puvodne
RPi3b na USB flash. Jak postupne zacala flash odchazet, tak se cely system
silene zacal spomalovat (reboot dlouhe minuty, instalace udelala system na
chvili neovladatelny). Tak jsem presel na asi 120G SSD disk a u
te prilezitosti na RPi4B 4GB RAM (zkousim si tam ruzne blbosti v dockeru,
tak se trocha vykonu a pameti navic hodi). Pokud mate jeste nejake dotazy -
sem s nima.
BR,
Marek
#
# Living room wall switch (2 buttons)
# Right button: no action
# Left button: main light
# - very long click (5s+): toggle normal/emergency mode. Button works
like normal switch in emergency mode and without hassio
# - short click, long click, double click, triple click - call HASSIO,
processing there
# Light is pulsing in emergency mode. It shows hassio connection status in
normal mode
#
globals:
- id: xlastStatus
# Last status reported to statusLight
# -1 => unknown
# 0 => disconnected
# 1 => conneced
type: int
restore_value: no
initial_value: '-1'
esphome:
name: s_lr_001_2g
platform: ESP8266
board: esp01_1m
on_boot:
- priority: 300 # start in emergency mode
then:
- binary_sensor.template.publish:
id: emergencyBin
state: ON
on_loop:
then:
# Status led handling
- lambda: |-
static int lastStatus = -1;
if(id(emergencyBin).state){
lastStatus = -1;
}else{
int newStatus = id(apiStatus).state ? 1 : 0;
if(newStatus != lastStatus){
// always turn off first (otherwise it remembers effect)
auto call = id(statusLight).turn_off();
call.set_transition_length(0);
call.perform();
lastStatus = newStatus;
if(lastStatus){
//ESP_LOGD("MS","===>ON");
auto call = id(statusLight).turn_on();
call.set_brightness(1.0);
call.set_transition_length(0);
call.perform();
}else{
//ESP_LOGD("MS","===>OFF");
}
}
}
wifi:
ssid: "semar-HA"
password: "**to si necham pro sebe**"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "s_lr_001_2g"
password: "**to si necham pro sebe**"
# use_address: esphome_ota.local
captive_portal:
# Enable logging
logger:
# level: VERBOSE
# Enable Home Assistant API
api:
ota:
# GPIO4 => Relay 2
# GPIO5 =>?
# GPIO12 => Button 1
# GPIO13 => Relay 1
# GPIO14 => Button 2
# GPIO16 => Led link
binary_sensor:
- platform: gpio # Button 1 (right)
# internal: true
pin:
number: GPIO14
mode: INPUT_PULLUP
inverted: True
name: device_btn1
on_multi_click:
- timing: # click
- ON for 50ms to 650ms
- OFF for at least 350ms
then:
- logger.log: { tag: '@MS', format: "Button 1 click" }
- homeassistant.service:
service: light.toggle
data:
entity_id: light.living_room_socket
- timing: # very long click - emergency
- ON for at least 3s
- OFF for at least 350ms
then:
- logger.log: Request device_btn1 emergency change
- lambda: '
id(emergencyBin).publish_state(!id(emergencyBin).state); '
- platform: gpio # Button 2 (left)
# internal: true
pin:
number: GPIO12
mode: INPUT_PULLUP
inverted: True
name: device_btn2
on_multi_click:
- timing: # click
- ON for 50ms to 650ms
- OFF for at least 350ms
then:
- logger.log: { tag: '@MS', format: "Button 2 click" }
- if:
condition:
binary_sensor.is_on: emergencyBin
then: # emergency mode => direct relay usage
- switch.toggle: device_rel2
else: # normal mode
- if:
condition:
switch.is_off: device_rel2
then: # normal, but relay was of we can anyway only
switch it on, no communication possible for some time
- switch.turn_on: device_rel2
# - switch.turn_on: device_rel1 # I just want both
lights on on switch. 2nd button will anyway only be 'remote'
else:
- homeassistant.event:
event: esphome.s_lr_001_action
data:
title: Button was clicked
source: Button 2
action: click
- timing: # long click
- ON for 750ms to 2500ms
- OFF for at least 350ms
then:
- logger.log: { tag: '@MS', format: "Button 2 clickLong" }
- if:
condition:
binary_sensor.is_on: emergencyBin
then: # emergency mode => direct relay usage
- switch.toggle: device_rel2
else: # normal mode
- if:
condition:
switch.is_off: device_rel2
then: # normal, but relay was of we can anyway only
switch it on, no communication possible for some time
- switch.turn_on: device_rel2
else:
- homeassistant.event:
event: esphome.s_lr_001_action
data:
title: Button was clicked (long)
source: Button 2
action: clickLong
- timing: # very long click - emergency
- ON for at least 3s
- OFF for at least 350ms
then:
- logger.log: Request device_btn2 emergency change
- lambda: '
id(emergencyBin).publish_state(!id(emergencyBin).state); '
- timing: # double click
- ON for 50ms to 650ms
- OFF for 30ms to 300ms
- ON for 50ms to 650ms
- OFF for at least 350ms
then:
- logger.log: { tag: '@MS', format: "Button 2 clickDouble" }
- if:
condition:
binary_sensor.is_off: emergencyBin
then:
- homeassistant.event:
event: esphome.s_lr_001_action
data:
title: Button was clicked double
source: Button 2
action: clickDouble
- timing: # triple click
- ON for 50ms to 650ms
- OFF for 30ms to 300ms
- ON for 50ms to 650ms
- OFF for 30ms to 300ms
- ON for 50ms to 650ms
- OFF for at least 350ms
then:
- logger.log: { tag: '@MS', format: "Button 2 clickDouble" }
- if:
condition:
binary_sensor.is_off: emergencyBin
then:
- homeassistant.event:
event: esphome.s_lr_001_action
data:
title: Button was clicked triple
source: Button 2
action: clickTriple
- platform: status # status
internal: true
id: apiStatus
- platform: template # emergencyBin
internal: true
id: emergencyBin
on_press:
then:
- logger.log: Emergency mode ON
- light.turn_on:
id: statusLight
effect: emergency mode
switch:
- platform: gpio # Relay 1
# internal: true
id: device_rel1
name: s_lr_001_2g Relay 1
pin: GPIO13
- platform: gpio # Relay 2
# internal: true
id: device_rel2
name: s_lr_001_2g Relay 2
pin: GPIO4
# helper
- platform: restart
name: s_lr_001_2g restart
output:
# Register the blue LED as a dimmable output ....
- platform: esp8266_pwm
id: blue_led
pin: GPIO16
inverted: true
light:
# ... and then make a light out of it.
- platform: monochromatic
id: statusLight
internal: true
output: blue_led
name: device_led
effects:
- lambda: # emergency mode
name: emergency mode
update_interval: 2s
lambda: |-
static bool state = false;
auto call = id(statusLight).turn_on();
// Transtion
call.set_transition_length(2000);
call.set_brightness(state ? 0.1 : 1.0);
call.perform();
state = !state;
sensor:
- platform: wifi_signal
name: "s_lr_001_2g_wifi"
update_interval: 60s
On Wed, Mar 17, 2021 at 10:51 PM Pavel Kratochvíl <kratochvil na seznam.cz>
wrote:
> Ten trik s rozdílnou funkcionalitou podle dostupnosti HA je fakt dobrý.
> Mohl bych poprosit o nějaký konfigurák, kde je to použité?
> Zkušenosti se zdecháváním HA máte jaké? Dřív jsem měl HA nainstalovaný
> v Raspbianu a to zrovna stabilitou nevynikalo. Teď co to mám jako HassOS si
> nepamatuju, že by byly nějaké problémy. Já teda jedu na RPi3B+, možná to
> bylo tím, nebo nějakou zpackanou instalací. Sd kartu nepoužívám, mám SSD
> připojené na USB.
> Pavel
>
> ---------- Původní e-mail ----------
> Od: Marek Sembol <hwm.land na gmail.com>
> Komu: HW-news <hw-list na list.hw.cz>
> Datum: 17. 3. 2021 18:01:10
> Předmět: Re: Zásuvka s ovládáním přes WIFI
>
> Dalsi vyrazny rozdil tasmota/esphome je, ze tasmota je 'napervno dany
> firmware' (ano, jsou zdrojaky, muzete ohybat), ktery nakonfigurujete v
> ramci jeho moznosti. Jsou tam (TUSIM i nejake moznosti automatizace, ale
> rozhodne omezene).
> Naproti tomu pro esphome napisete 'konfigurak', na zaklade toho se
> vygeneruje myslim c(++? tusim) zdrojak a ten se prelozi na firmware. Takze
> mate mnohem vetsi nabidku obsluhovanych veci (do tasmoty by se nevlezdy z
> duvodu velikosti) a mnohem sirsi mozsnosti 'programovat' si tam
> nejakou autonomii. At uz prostredky toho yaml konfiguraku, nebo v pripade
> nutnosti az na uroven C kodu.
> Ja jsem taky zacinal s tasmotou (taky mam homeasistant, ja na RPi4), ale
> postupne jsem presel na esphome. Prave proto, ze jsem pak treba do vypinace
> velmi jednoduse naimplementil:
> -pokud neni HA dostupny, jedes v autonomnim rezimu a umis pouze
> zapnout/vypnout rele ovladajici zarovku
> -pokud je HA dostupny, tak je (wifi pripadne zigbee - jak kde) pod
> proudem, vypinac (taky wifi nebo zigbee) posila prikazy do HA a ten zarovku
> ridi komplexneji (teplota svetla, intenzita svetla, zavislosti na dalsich
> okolnostech. Samozrejme - vzhledem k HA - nemusi byt vypinac na stejnem
> systemu (wifi/zigbee) jako zarovka.
>
> Proste neni-li HA, jedu v zjednosenem autonomnim rezimu (protoze jak znam
> zivot, tak HA zdechne jakmile odjedu z domu), pokud HA zije, tak mohu
> vymyslet fajnovosti
> BR,
> Marek
>
> On Wed, Mar 17, 2021 at 12:44 PM Pavel Kratochvíl <kratochvil na seznam.cz>
> wrote:
>
> S Tasmota nemám žádnou zkušenost. Začal jsem s ESPHome kvůli přímé
> integraci do HA - jen se přidá ESPHome addon, není potřeba MQTT
> prostředníka a ESPHome položka je přímo v menu HA.
> Přehled ESPHome zařízení je pak v té položce, zařízení se dají přidávat,
> odebírat, konfigurovat, vygenerovat firmware + nahrání přes OTA atd. Jen
> první nahrání firmware je potřeba udělat přes utilitu výrobce (pokud to
> umožňuje), nebo přes UART.
> Ale Tasmota se taky vyvíjí, možná má dneska jiné možnosti.
>
> Pavel
>
> ---------- Původní e-mail ----------
> Od: Martin Hanek <martin na hanek.net>
> Komu: hw-list na list.hw.cz
> Datum: 17. 3. 2021 11:33:24
> Předmět: Re: Zásuvka s ovládáním přes WIFI
>
> Díky za jednoduchý a jasný popis. Zkoušel jste i firmware Tasmota? Nebo
> ESPHome vyžaduje také fw od ESPHome?
>
> Martin Hanek
>
> Dne 17.03.2021 v 11:20 Pavel Kratochvíl napsal(a):
>
> Zdravím,
> jak na tom jsou zařízení připojené kamsi do cloudu nevím. Já používám Home
> Assistant (HA) a všechna zařízení jsou připojená k němu, žádný cloud.
> "WiFi" zařízení mám různé zásuvky, spínače Sonoff, snímače, žárovky atd.
> (prostě všechno co je založené na ESP8266/ESP32) s firmware ESPHome. Tato
> zařízení, pokud to chcete, umí fungovat i autonomně - všechno co je
> součástí konfigurace ESPHome funguje i kdyby byl HA mimo provoz.
> Takže třeba větrák v koupelně zapojený přes Sonoff TH se dá
> zapnout/vypnout tlačítkem, vypne se sám po nějaké době po zapnutí
> tlačítkem, zapne/vypne se sám podle teploty/vlhkosti a nepotřebuje k tomu
> HA, protože veškerou automatizaci nastavuji v konfiguraci ESPHome toho
> zařízení. Ale stav všech čidel a větráku v HA vidím a mohl bych větrák
> ovládat i z HA ručně, nebo na základě stavů něčeho.
> Ale pokud chcete, můžete stejné zařízení udělat i zcela závislé na HA. V
> ESPHome nakonfigurujete jen vstupy a výstupy a automatizaci uděláte v HA.
> Pavel
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz <http://www.hw.cz>
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz <http://www.hw.cz>
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210318/0ba1ab74/attachment.html>
Další informace o konferenci Hw-list