Différences entre les versions de « Domotique, atelier du jj/mm (à préciser) »

De Wiki de Mémoire Vive
Aller à la navigation Aller à la recherche
Ligne 218 : Ligne 218 :
      
      
</pre>
</pre>
Pour aller plus loin,
https://www.youtube.com/watch?v=AbRFvk2iZs8&ab_channel=HorizonDomotique

Version du 26 mars 2024 à 23:34

L'atelier du 27 mars en préparation...

Objectif général : se familiariser avec un ESP32 sur HA, via ESPHome

Fournitures, un ESP32 standard, un ESP32 SIM800 (SMS et appels)

- installation de ESPHome sur HA

- connexion d'un ESP32

- installation de programmes de test : serveur web, allumage d'une LED, envoi et réception de SMS, etc.

- création d'automatisations utilisant les ESP 32


Antisèche pour ESP32 SIM800

esphome:
  name: esp32-800
  friendly_name: ESP32 800

esp32:
  board: esp-wrover-kit #remplace esp32dev
  framework:
    type: arduino

# Enable logging
logger:

ota:
  password: "b22ec83a50a16926e258c8cb99ce9a43"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-800 Fallback Hotspot"
    password: "AEQtghaRTjG5"

captive_portal:

# Home Assistant API
# Enable Home Assistant API
api:
  encryption:
    key: "yyhOhxam5Y7grXxgq0DfyDD36+E7aU1juuYXuMCgOnM="
  services:
  - service: send_sms
    variables:
      recipient: string
      message: string
    then:
    - sim800l.send_sms:
        recipient: !lambda 'return recipient;'
        message: !lambda 'return message;'
    - lambda: id(esp_sim800_sms_message).publish_state(message);

  - service: dial
    variables:
      recipient: string
    then:
    - sim800l.dial:
        recipient: !lambda 'return recipient;'
  # Retourne le dernier message reçus au dernier expéditeut en y ajoutant OK
  - service: reply_sms_ok
    then:
    - text_sensor.template.publish:
        id: esp_sim800_sms_message
        state: !lambda |-
          return id(esp_sim800_sms_message).state + " OK";
    - sim800l.send_sms:
        recipient: !lambda "return id(esp_sim800_sms_expediteur).state;"
        message: !lambda "return id(esp_sim800_sms_message).state;"
        
uart:
  baud_rate: 9600
  tx_pin: 27
  rx_pin: 26

switch:
  - platform: gpio
    id: "key_pin"
    pin: 4
    restore_mode: ALWAYS_OFF
  - platform: gpio
    id: "reset_pin"
    pin: 5
    restore_mode: ALWAYS_ON
  - platform: gpio
    id: "power_pin"
    pin: 23
    restore_mode: ALWAYS_ON
  - platform: gpio
    id: "Blue_Led800"
    pin: 13
    restore_mode: ALWAYS_ON

# Bouton de redémarrage
button:
  - platform: restart
    id: esp_sim800_restart
    name: "ESP-SIM800 Redémarrage"

sim800l:
  on_sms_received:
    - lambda: |-
        id(esp_sim800_sms_expediteur).publish_state(sender);
        id(esp_sim800_sms_message).publish_state(message);        
    - logger.log:
        format: "Received '%s' from %s"
        args: [ 'message.c_str()', 'sender.c_str()' ]

text_sensor:
  - platform: template
    id: esp_sim800_sms_expediteur
    name: "Sms Expediteur"
  - platform: template
    id: esp_sim800_sms_message
    name: "Sms Message"

sensor:
  - platform: sim800l
    rssi:
      name: "ESP sim800 signal"


binary_sensor:
  - platform: sim800l
    registered:
      name: "ESP sim800 status"

# Example configuration entry
web_server:
  port: 80
  version: 1

Antisèche pour ESP32

esphome:
  name: esp32-wroom
  friendly_name: ESP32 Wroom

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "pAUYEiM6r/qULEiwGBqwDCx+R7hun6ee6SYUmTtaMHI="

ota:
  password: "47a5f828dcfa7ccb984e418bfeee4d06"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Wroom Fallback Hotspot"
    password: "wsYS22L7axfh"

  # Example configuration entry
web_server:
  port: 80
  version: 1

# ajouté depuis cette page, https://www.hacf.fr/esphome-introduction/
binary_sensor:
    # statut
      - platform: status
        name: "Statut"
sensor:
    # Qualité du signal
      - platform: wifi_signal
        name: "Signal Wifi"
        update_interval: 60s
    # Temps de fonctionnement
      - platform: uptime
        name: "Allumé depuis (s)"
        id: uptime_sec
       
switch:
    # Bouton de redémarrage
      - platform: restart
        name: "Redémarrage"
    # LED bleue
      - platform: gpio
        name: "LedBleu2"
        pin: 2

    # Transformation des secondes en jours
text_sensor:
      - platform: template
        name: "Allumé depuis (j)"
        lambda: |-
          int seconds = (id(uptime_sec).state);
          int days = seconds / (24 * 3600);
          seconds = seconds % (24 * 3600); 
          int hours = seconds / 3600;
          seconds = seconds % 3600;
          int minutes = seconds /  60;
          seconds = seconds % 60;
          return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };          
        icon: mdi:clock-start
        update_interval: 60s
    

Pour aller plus loin,

https://www.youtube.com/watch?v=AbRFvk2iZs8&ab_channel=HorizonDomotique