tlačítko na otevírání vrat a kontrola stavu

Lovelace a Dashboady
Odpovědět
Uživatelský avatar
okoun
Dárce - Donátor
Dárce - Donátor
Příspěvky: 510
Registrován: 30. prosinec 2022, 21:19
Dal poděkování: 20 poděkování
Dostal poděkování: 7 poděkování

tlačítko na otevírání vrat a kontrola stavu

Příspěvek od okoun »

ahoj, řeším problém, mám klasické tlačítko na otevírání vrat, zmáčku začnou se vrata otevírat, zmáčknu znovu a začnou se zavírat, potřeboval bych ale však vidět u toho tlačítka i stav jestli jsou vrata zavřená či otevřená (protože pokud je překážka vrata se nezavřou), na to jsem si nainstaloval binární senzor z esphome a teď je otázka jestli se dá nějak propojit graficky tlačítko a ten stav binárního senzoru?

Děkuji

mamonick
Dárce - Donátor
Dárce - Donátor
Příspěvky: 187
Registrován: 20. září 2021, 13:47
Bydliště: Třebechovice p. O.
Dal poděkování: 23 poděkování
Dostal poděkování: 22 poděkování

Re: tlačítko na otevírání vrat a kontrola stavu

Příspěvek od mamonick »

Já mám tlačítko, které funguje po stisku: nahoru-stop-dolu-stop-nahoru... atd.
K tomu tlačítku jsem přidal paralelně desku Sonoff SV s relé, takže jsem pak schopen ovládat vrata i z HA. K té desce jsem ještě napojil dva magnetické senzory, nahoru a dolů, takže jsem schopen monitorovat tři stavy vrat:
  • zavřeno (sepnutý spodní senzor)
  • v pohybu (rozepnuté oba senzory)
  • otevřeno (sepnutý horní senzor)
Na jiné desce mám pak ještě HC-SR14, který indikuje, že je v garáži auto. A pod vypínačem světla v garáži mám Sonoff mini a v HA automatizaci, která, když je tma, rozsvítí světlo s počátkem otevírání vrat (stav "v pohybu") a zhasne, když jsou vrata zavřená.

garaz.png
garaz.png (9.4 KiB) Zobrazeno 405 x


Kód pro ESPhome je ve spoileru
Spoiler

Kód: Vybrat vše

esphome:
  name: vrata
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: !secret wifiIoT_SSID
  password: !secret wifiIoT_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vrata Fallback Hotspot"
    password: !secret wifiIoT_password

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      
# Použít v případě, že magnetický senzor sepnutím detekuje Otevřeno
#     inverted: true 
#
    name: "Garážová vrata zavřeny"
    id: down_endstop 

  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      
# Použít v případě, že magnetický senzor sepnutím detekuje Otevřeno
#     inverted: true 
#
    name: "Garážová vrata otevřeny"
    id: up_endstop  
    
  - platform: status
    name: "Vrata Stav"

  

switch:
  - platform: gpio
    pin: GPIO12
    id: relay
  - platform: template
    icon: "mdi:arrow-up-down-bold-outline"
    name: "Ovládání vrat"
    turn_on_action:
    - switch.turn_on: relay
    - delay: 900ms
    - switch.turn_off: relay
  - platform: restart
    name: "Vrata restart"

sensor:
  - platform: wifi_signal
    name: "Vrata WiFi signál"
    update_interval: 60s    
  - platform: uptime
    name: "Vrata Doba běhu v sec." 
    id: uptime_s
    update_interval: 60s

text_sensor:
  - platform: template
    name: "Gate status"
    lambda: |-
        if((id(up_endstop).state)==(id(down_endstop).state)){
            return {"V pohybu"};
        } else if((!id(up_endstop).state)&&(id(down_endstop).state)){
            return {"Zavřeno"};
        } else {
            return {"Otevřeno"};
        }
    update_interval: 5s 

  - platform: template
    name: "Vrata Doba běhu"
    lambda: |-
      uint32_t dur = id(uptime_s).state;
      int dys = 0;
      int hrs = 0;
      int mnts = 0;
      if (dur > 86399) {
      dys = trunc(dur / 86400);
      dur = dur - (dys * 86400);
      }
      if (dur > 3599) {
      hrs = trunc(dur / 3600);
      dur = dur - (hrs * 3600);
      }
      if (dur > 59) {
      mnts = trunc(dur / 60);
      dur = dur - (mnts * 60);
      }
      char buffer[17];
      sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur);
      return {buffer};
    icon: mdi:clock-start
    update_interval: 60s
  - platform: version
    name: "Vrata Verze FW"
  - platform: wifi_info
    ip_address:
      name: "Vrata IP Address"
    ssid:
      name: "Vrata Connected SSID"
    bssid:
      name: "Vrata Connected BSSID"
    mac_address:
      name: "Vrata Mac Wifi Address"


# by mamo-nick

Uživatelský avatar
Lion®
Administrátor fóra
Administrátor fóra
Příspěvky: 1604
Registrován: 28. září 2020, 14:07
Bydliště: podkrkonoší
Dal poděkování: 144 poděkování
Dostal poděkování: 193 poděkování
Kontaktovat uživatele:

Re: tlačítko na otevírání vrat a kontrola stavu

Příspěvek od Lion® »

Jak senzory poznají při nahoru-stop-dolu-stop-nahoru, že jsou vrata v pohybu?

Myslím že poznají
Otevřeno
Zavřeno
a
NNN = NedootevřenoNeboNedozavřeno
:sorry:
:like:
________________
🍻 Přispěj a získej přístup do obsahu fóra pro dárce. :thx:
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box

Galerie realizací

Uživatelský avatar
okoun
Dárce - Donátor
Dárce - Donátor
Příspěvky: 510
Registrován: 30. prosinec 2022, 21:19
Dal poděkování: 20 poděkování
Dostal poděkování: 7 poděkování

Re: tlačítko na otevírání vrat a kontrola stavu

Příspěvek od okoun »

mamonick píše: 29. květen 2023, 19:20 Já mám tlačítko, které funguje po stisku: nahoru-stop-dolu-stop-nahoru... atd.
K tomu tlačítku jsem přidal paralelně desku Sonoff SV s relé, takže jsem pak schopen ovládat vrata i z HA. K té desce jsem ještě napojil dva magnetické senzory, nahoru a dolů, takže jsem schopen monitorovat tři stavy vrat:
  • zavřeno (sepnutý spodní senzor)
  • v pohybu (rozepnuté oba senzory)
  • otevřeno (sepnutý horní senzor)
Na jiné desce mám pak ještě HC-SR14, který indikuje, že je v garáži auto. A pod vypínačem světla v garáži mám Sonoff mini a v HA automatizaci, která, když je tma, rozsvítí světlo s počátkem otevírání vrat (stav "v pohybu") a zhasne, když jsou vrata zavřená.


garaz.png

Kód pro ESPhome je ve spoileru
Spoiler

Kód: Vybrat vše

esphome:
  name: vrata
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: !secret wifiIoT_SSID
  password: !secret wifiIoT_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vrata Fallback Hotspot"
    password: !secret wifiIoT_password

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      
# Použít v případě, že magnetický senzor sepnutím detekuje Otevřeno
#     inverted: true 
#
    name: "Garážová vrata zavřeny"
    id: down_endstop 

  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      
# Použít v případě, že magnetický senzor sepnutím detekuje Otevřeno
#     inverted: true 
#
    name: "Garážová vrata otevřeny"
    id: up_endstop  
    
  - platform: status
    name: "Vrata Stav"

  

switch:
  - platform: gpio
    pin: GPIO12
    id: relay
  - platform: template
    icon: "mdi:arrow-up-down-bold-outline"
    name: "Ovládání vrat"
    turn_on_action:
    - switch.turn_on: relay
    - delay: 900ms
    - switch.turn_off: relay
  - platform: restart
    name: "Vrata restart"

sensor:
  - platform: wifi_signal
    name: "Vrata WiFi signál"
    update_interval: 60s    
  - platform: uptime
    name: "Vrata Doba běhu v sec." 
    id: uptime_s
    update_interval: 60s

text_sensor:
  - platform: template
    name: "Gate status"
    lambda: |-
        if((id(up_endstop).state)==(id(down_endstop).state)){
            return {"V pohybu"};
        } else if((!id(up_endstop).state)&&(id(down_endstop).state)){
            return {"Zavřeno"};
        } else {
            return {"Otevřeno"};
        }
    update_interval: 5s 

  - platform: template
    name: "Vrata Doba běhu"
    lambda: |-
      uint32_t dur = id(uptime_s).state;
      int dys = 0;
      int hrs = 0;
      int mnts = 0;
      if (dur > 86399) {
      dys = trunc(dur / 86400);
      dur = dur - (dys * 86400);
      }
      if (dur > 3599) {
      hrs = trunc(dur / 3600);
      dur = dur - (hrs * 3600);
      }
      if (dur > 59) {
      mnts = trunc(dur / 60);
      dur = dur - (mnts * 60);
      }
      char buffer[17];
      sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur);
      return {buffer};
    icon: mdi:clock-start
    update_interval: 60s
  - platform: version
    name: "Vrata Verze FW"
  - platform: wifi_info
    ip_address:
      name: "Vrata IP Address"
    ssid:
      name: "Vrata Connected SSID"
    bssid:
      name: "Vrata Connected BSSID"
    mac_address:
      name: "Vrata Mac Wifi Address"


# by mamo-nick
chápu ale já právě potřebuji udělat to jak tam máte tu ikonku těch šipek aby třeba byly šipky zelné když je zavřeno a nebo třeba červené když je otevřeno... prostě spojit dvě entity, jedna entita ovládaní a druhá kontrola stavů

mamonick
Dárce - Donátor
Dárce - Donátor
Příspěvky: 187
Registrován: 20. září 2021, 13:47
Bydliště: Třebechovice p. O.
Dal poděkování: 23 poděkování
Dostal poděkování: 22 poděkování

Re: tlačítko na otevírání vrat a kontrola stavu

Příspěvek od mamonick »

Už tomu rozumím.
Pak se to dá udělat přes customize.
Zkus do configuration.yam dát ten kód níže (samozřejmě upravený). Pokud máš customize includované, tak to dej přímo do customize.yaml.

Kód: Vybrat vše

homeassistant:  # pokud tuto položku už v config máš, tak vynechej a zbytek vlož pod ní
  customize: 
    sensor.entity1: # Nahraď "sensor.entity1" identifikátorem entity, u které chceš měnit barvu ikony, což bude entita ovládání
      templates:
        icon_color: >-
          if (states['sensor.entity2'].state == 'on') return 'green';
          else return 'red';

Odpovědět

Zpět na „Vzhled“