[AVORTÉ] - Remplacement des interrupteurs classique par des interrupteur à écran et bouton poussoirs

Bonjour

Je vais le faire en 2 partie, 1er partie j’explique mes mésaventure et la 2eme sa sera le projet (comprenant 3 module différent)

1er Partie :

Je vais explique pourquoi je me suis lancé sur ce projet, depuis que j’ai fait construire j’ai cherché par plusieurs moyen de domotisé mes éclairage sans pour autant être obligé de passé par des ampoules connecté (chose qui me gêné un peut) après quelque essaie avec un module relais Xiaomi AQARA en zigbee qui se sont révélé concluant, j’en ai commandé 7 (donc la possibilité de piloté 16 circuit d’éclairage au total avec celui que j’avais déjà) !!! « ATTENTION : ne peut pas venir en remplacement d’un télérupteur » !!! donc pour évité de tout mettre dans les boite de dérivation dans les combles je suis partie dans l’optique de ramené les liaison au tableau électrique, j’ai omis de précisé que je suis électricien donc pour sa je sais exactement se que j’ai fait (retour des interrupteur et départ vers les éclairage), j’ai reçu les 7 et j’ai commencé a testé dans le dur (est c’est la que les problème on commencé) quand je piloté par un interrupteur un des module (lui allume bien l’ampoule qui lui est associer) mais a des moment et sans raison apparente, j’ai un autre module qui lui aussi allumé une ampoule alors que je ne l’avais pas sollicité, mais pas que, je me suis aussi retrouvé dans l’impossibilité de piloté un module, donc j’ai essayé de diagnostiqué le soucis, après quelque coup de voltmètre par ci par la, j’ai trouve la cause du problème, en résidentiel le problème est récurrent quand les circuits passe par des pieuvres, tout disjoncteur éteint entre le retour interrupteur et la terre, environ 3V, rien de bien gênant donc je décide de remonté tout les disjoncteurs sauf ceux des éclairage et la c’est la FOIRE entre 50V et 110V sur un circuit non alimenté (les 4 disjoncteur éclairage étant coupé), la il y a de quoi se tiré les cheveux, en cherchant sur internet j’ai trouvé comme quoi le problème est récurent, et il s’appel TENSION RÉSIDUEL (j’ai testé plusieurs solution pour éliminé voir limité cette tension mais rien de concluant j’ai pas réussi a limité le problème, donc pour l’instant j’ai la moitiez de la maison qui a ses éclairage piloté (je tourne avec 4 module relais a la place de 8), donc voila pourquoi j’ai décidé de me lancé dans se projet assez fou.

2eme Partie:
Donc pour le teste, pour voir je suis partie sur ESPhome (pour sont intégration à Home Assistant et MQTT et surtout sa facilité a implémenté des fonctions) un Wemos D1 Mini alimenté en USB avec 2 relais et 2 bouton poussoir sur une breadboard et le résultat est positif avec le code si dessous

########################
#### Config ESPhome ####
########################

esphome:
  name: interrupteur_1x2m_01
  platform: ESP8266
  board: d1_mini
  on_boot:
    if:
      condition:
        mqtt.connected:
      then:
      - logger.log: MQTT is connected!

wifi:
  ssid: !secret ssid_wifi_domotique
  password: !secret pass_wifi_domotique
  use_address: 192.168.2.120 # à mettre si ESPhome ne détecte pas l'ESP sur le réseau

  ap: 
    ssid: "Interrupteur 1x2m 01 - Hotspot"
    password: !secret pass_wifi_hotspot_esphome

captive_portal:

web_server:
  port: 80
  auth:
    username: !secret user_webserver_esphome
    password: !secret pass_webserver_esphome

logger: # Enable logging
ota:
  password: !secret pass_ota_esphome

api:
  port: 6053
  password:  !secret pass_api_esphome

mqtt:
  broker: !secret broker_mqtt
  username: !secret user_mqtt_esphome
  password: !secret pass_mqtt_esphome
  discovery: false
  discovery_retain: false
  topic_prefix: esphome/interrupteur_1x2m_01
  log_topic: esphome/interrupteur_1x2m_01/log

#########################
#### Config Firmware ####
#########################

sensor: 
  - platform: wifi_signal
    name: "Interrupteur 1x2m 01 -  Signal WiFi"
    update_interval: 5s
  - platform: uptime
    name: "Interrupteur 1x2m 01 - uptime"

binary_sensor:
  - platform: gpio # Bouton poussoir 1 (bancher entre le +5V et le GPIO5)
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: True
    name: "Interrupteur 1x2m 01 - BP 1"
    on_press: # information à ne pas négligé pour la commutation du relais 1 via le bouton poussoir 1
      - switch.toggle: relay1 # correspond à l'id du relais 1

  - platform: gpio # Bouton poussoir 2 (bancher entre le +5V et le GPIO4)
    pin:
      number: GPIO4 
      mode: INPUT_PULLUP
      inverted: True
    name: "Interrupteur 1x2m 01 - BP 2"
    on_press: # information à ne pas négligé pour la commutation du relais 2 via le bouton poussoir 2
      - switch.toggle: relay2 # correspond à l'id du relais 2

switch:
  - platform: gpio # Relais 1 (bancher sur le GPIO12)
    name: "Interrupteur 1x2m 01 - Relais 1"
    pin: GPIO12
    id: relay1
    #restore_mode: ALWAYS_OFF # Option qui détermine si le relais doit etre commuté au démarrage de l'ESP
  - platform: gpio # Relais 2 (bancher sur le GPIO15)
    name: "Interrupteur 1x2m 01 - Relais 2"
    pin: GPIO15
    id: relay2
    #restore_mode: ALWAYS_OFF # Option qui détermine si le relais doit etre commuté au démarrage de l'ESP

Avec ce code, voici se que cela me donne sur la page web de l’ESP.

En passe par l’API voici ce que cela me donne sur Home-Assistant.
image

Mais pour que mon projet puisse aboutir il me faut 1 module pour remplacé les simple allumage et 2 module pour remplacé les vas et viens, pour le 2eme module j’ai modifier un petit peut le code pour qu’il n’y est pas de conflit entre les 2, à chaque « name », « use_address », au hotspot et pour la config de MQTT aussi.

########################
#### Config ESPhome ####
########################

esphome:
  name: interrupteur_1x2m_02
  platform: ESP8266
  board: d1_mini
  on_boot:
    if:
      condition:
        mqtt.connected:
      then:
      - logger.log: MQTT is connected!

wifi:
  ssid: !secret ssid_wifi_domotique
  password: !secret pass_wifi_domotique
  use_address: 192.168.2.121 # à mettre si ESPhome ne détecte pas l'ESP sur le réseau

  ap: 
    ssid: "Interrupteur 1x2m 02 - Hotspot"
    password: !secret pass_wifi_hotspot_esphome

captive_portal:

web_server:
  port: 80
  auth:
    username: !secret user_webserver_esphome
    password: !secret pass_webserver_esphome

logger: # Enable logging
ota:
  password: !secret pass_ota_esphome

api:
  port: 6053
  password:  !secret pass_api_esphome

mqtt:
  broker: !secret broker_mqtt
  username: !secret user_mqtt_esphome
  password: !secret pass_mqtt_esphome
  discovery: false
  discovery_retain: false
  topic_prefix: esphome/interrupteur_1x2m_02
  log_topic: esphome/interrupteur_1x2m_02/log

#########################
#### Config Firmware ####
#########################

sensor: 
  - platform: wifi_signal
    name: "Interrupteur 1x2m 02 -  Signal WiFi"
    update_interval: 5s
  - platform: uptime
    name: "Interrupteur 1x2m 02 - uptime"

binary_sensor:
  - platform: gpio # Bouton poussoir 1 (bancher entre le +5V et le GPIO5)
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: True
    name: "Interrupteur 1x2m 02 - BP 1"
    on_press: # information à ne pas négligé pour la commutation du relais 1 via le bouton poussoir 1
      - switch.toggle: relay1 # correspond à l'id du relais 1

  - platform: gpio # Bouton poussoir 2 (bancher entre le +5V et le GPIO4)
    pin:
      number: GPIO4 
      mode: INPUT_PULLUP
      inverted: True
    name: "Interrupteur 1x2m 02 - BP 2"
    on_press: # information à ne pas négligé pour la commutation du relais 2 via le bouton poussoir 2
      - switch.toggle: relay2 # correspond à l'id du relais 2

switch:
  - platform: gpio # Relais 1 (bancher sur le GPIO12)
    name: "Interrupteur 1x2m 02 - Relais 1"
    pin: GPIO12
    id: relay1
    #restore_mode: ALWAYS_OFF # Option qui détermine si le relais doit etre commuté au démarrage de l'ESP
  - platform: gpio # Relais 2 (bancher sur le GPIO15)
    name: "Interrupteur 1x2m 02 - Relais 2"
    pin: GPIO15
    id: relay2
    #restore_mode: ALWAYS_OFF # Option qui détermine si le relais doit etre commuté au démarrage de l'ESP

Donc la maintenant dans Home Assistant je me retrouve avec sa.

Mais le problème c’est que vu que cela remplace un vas et vient si mes 2 relais 1 son OFF, ma lumière sera quand même allumé et quand les 2 relais 1 sont a ON la lumière sera aussi allumé (cela occasionnera un soucis plus tard) mais sa sans une interprétation de Home Assistant, ce’st que l’on ne sais pas si la lumière est allumé ou pas car nous voyons que l’état des relais, donc avec l’aide de plusieurs personne qui on su m’orienté et m’aidé a mettre en place un entity light qui dépend de l’état des relais 1 des 2 ESP, donc dans home assistant dans le dossier de config, dans le fichier YAML qui prend en charge les entity light on y rajoute se code.

 light:
  - platform: template
    lights:
      vv01:
        friendly_name: Vas et vient - test # le nom que vous voulez qui apparaîtra sur Home Assistant
        value_template:  >-
          {{ is_state('switch.interrupteur_1x2m_01_relais_1', 'on')
             and is_state('switch.interrupteur_1x2m_02_relais_1', 'on')
             or is_state('switch.interrupteur_1x2m_01_relais_1', 'off')
             and is_state('switch.interrupteur_1x2m_02_relais_1', 'off') }}
        turn_on: # une option pour allumé la lumière suivant l’état de l'entity
          service: switch.toggle # pourquoi "switch.toggle" et pas "switch.turn_on" car je vais agir sur seulement sur le relais 1 de l'ESP 1 donc si le relais 1 de l'ESP 2 et a "OFF" alors pour allumé la lumière il va mettre le relais 1 de l'ESP 1 a "OFF" pour remplir la condition tout à "OFF" 
          data:
            entity_id: switch.interrupteur_1x2m_01_relais_1
        turn_off: # une option pour éteindre la lumière suivant l’état de l'entity
          service: switch.toggle # pourquoi "switch.toggle" et pas "switch.turn_off" car je vais agir sur seulement sur le relais 1 de l'ESP 1 donc si le relais 1 de l'ESP 2 et a "ON" alors pour allumé la lumière il va mettre le relais 1 de l'ESP 1 a "ON" pour remplir la condition tout à "OFF" 
          data:
            entity_id: switch.interrupteur_1x2m_01_relais_1

#value_template:  >-
#  {{ is_state('switch.interrupteur_1x2m_01_relais_1', 'on') // entity du relais 1 sur l'ESP01 ensuite la condition ON ou OFF
#     and is_state('switch.interrupteur_1x2m_02_relais_1', 'on') // entity du relais 1 sur l'ESP02 ensuite la condition ON ou OFF et le and au debut permet de de faire comprendre a Home Assistant que si les 2 condition sont réuni alors la lumiere est ON 
#     or is_state('switch.interrupteur_1x2m_01_relais_1', 'off') // entity du relais 1 sur l'ESP01 ensuite la condition ON ou OFF et le or au debut permet de de faire comprendre a Home Assistant que pour que la lumiere sois ON c'est les 2 conditions au dessus OU les 2 après le or
#     and is_state('switch.interrupteur_1x2m_02_relais_1', 'off') }} // entity du relais 1 sur l'ESP02 ensuite la condition ON ou OFF

Donc grâce a se code cela me permet de voir sa comme sa dans Home Assistant.

ESP01 Relais 1 OFF / ESP02 Relais 1 OFF = Lumière ON.
image

ESP01 Relais 1 ON / ESP02 Relais 1 OFF = Lumière OFF.
image

ESP01 Relais 1 OFF / ESP02 Relais 1 ON = Lumière OFF.
image

ESP01 Relais 1 ON / ESP02 Relais 1 ON = Lumière ON.
image

Et puis si j’appuie sur le commute du vas et vient, il commute le relais 1 de l’ESP01.
image
image

Donc niveau code pour l’instant je gère la base et voici le rendu 3D (4 Bouton, 1 Ecran 2,4", DHT22 (avorté mais prévu sur le PCB du module) et photorésistance pour mesuré la luminosité de la pièce (dans une prochaine version) avec montage standard sur boite d’encastrement au norme européenne).


Le PCB dans sa V2 (le tout prévu pour rentré dans une boite d’encastrement de 67mm).


image

Apres quelque essais (ou j’y avais déjà réfléchi mais cela confirmé se que je pensé) suivant le câblage et le code plus haut dans Home Assistant si les 2 ESP reboot ou même si il y a une panne de courant les 2 relais vont resté a OFF et la la lumière sera allumé et je ne veux pas (surtout si cela se produit en pleine nuit) je préfère mettre un ESP de surveillance dans le tableau pour voir si cela est du a une panne de courant et restauré l’état des relais plutôt que tout passe a OFF et que la lumière s’allume le temps du Boot des ESP.

Donc avant la modification du code.

ESP01 Relais 1 OFF / ESP02 Relais 1 OFF = Lumière ON.
image

ESP01 Relais 1 ON / ESP02 Relais 1 OFF = Lumière OFF.
image

ESP01 Relais 1 OFF / ESP02 Relais 1 ON = Lumière OFF.
image

ESP01 Relais 1 ON / ESP02 Relais 1 ON = Lumière ON.
image

Et en simulant la panne de courant.

Et après le retour du courant.

Donc voici le code modifier en conséquence.

  - platform: template
    lights:
      vv01:
        friendly_name: Vas et vient - test # le nom que vous voulez qui apparaîtra sur Home Assistant
        value_template:  >-
          {{ is_state('switch.interrupteur_1x2m_01_relais_1', 'on')
             and is_state('switch.interrupteur_1x2m_02_relais_1', 'off')
             or is_state('switch.interrupteur_1x2m_01_relais_1', 'off')
             and is_state('switch.interrupteur_1x2m_02_relais_1', 'on') }}
        turn_on: # une option pour allumé la lumière suivant l’état de l'entity
          service: switch.toggle # pourquoi "switch.toggle" et pas "switch.turn_on" car je vais agir sur seulement sur le relais 1 de l'ESP 1 donc si le relais 1 de l'ESP 2 et a "OFF" alors pour allumé la lumière il va mettre le relais 1 de l'ESP 1 a "OFF" pour remplir la condition tout à "OFF" 
          data:
            entity_id: switch.interrupteur_1x2m_01_relais_1
        turn_off: # une option pour éteindre la lumière suivant l’état de l'entity
          service: switch.toggle # pourquoi "switch.toggle" et pas "switch.turn_off" car je vais agir sur seulement sur le relais 1 de l'ESP 1 donc si le relais 1 de l'ESP 2 et a "ON" alors pour allumé la lumière il va mettre le relais 1 de l'ESP 1 a "ON" pour remplir la condition tout à "OFF" 
          data:
            entity_id: switch.interrupteur_1x2m_01_relais_1

#value_template:  >-
#  {{ is_state('switch.interrupteur_1x2m_01_relais_1', 'on') // entity du relais 1 sur l'ESP01 ensuite la condition ON ou OFF
#     and is_state('switch.interrupteur_1x2m_02_relais_1', 'on') // entity du relais 1 sur l'ESP02 ensuite la condition ON ou OFF et le and au debut permet de de faire comprendre a Home Assistant que si les 2 condition sont réuni alors la lumiere est ON 
#     or is_state('switch.interrupteur_1x2m_01_relais_1', 'off') // entity du relais 1 sur l'ESP01 ensuite la condition ON ou OFF et le or au debut permet de de faire comprendre a Home Assistant que pour que la lumiere sois ON c'est les 2 conditions au dessus OU les 2 après le or
#     and is_state('switch.interrupteur_1x2m_02_relais_1', 'off') }} // entity du relais 1 sur l'ESP02 ensuite la condition ON ou OFF

Et donc ceci donne cela dans Home Assistant.
image
image
image
image
La je vais simulé une panne de courant.


J’avais peur que l’entity de la lumiere reste declaré comme ON mais non, et la au reboot.
image

La suite dans un prochain article

4 « J'aime »

Gros projet bravo
Courage pour la suite

justement trop gros comme projet avec madame on as décidé de partir sur plus soft, en sois le projet et fonctionnel maintenant c’est la partie impression 3D et passage de fil manquant dans les boite d’encastrement, je verrais quand j’aurai mon garage si je continue le projet, après avoir investie dans des interrupteur zigbee (aqara, sans neutre et aussi sans fil) et j’investirais surement aussi dans une imprimante 3D SLA sa sera plus propre

C’est sûre que c’est costaud mais pour avoir quelques nextion par ci par là je trouve ça cool

1 « J'aime »

Merci pour le partage de ce GROS projet.

1 « J'aime »

Bonsoir,
Ta tension résiduelle est ANORMALE et pourrait être dangereuse !
Elle provient d’un défaut d’isolement quelque part, donc à traiter avec sérieux. Commence donc par une étude avec un contrôleur d’isolement de tout ton câblage électrique. Un contrôleur d’isolement N’EST PAS un ohmmètre, ça fonctionne pareil mais avec du 500 ou 1000V au lieu des « au mieux 9V » d’un ohmmètre. Procède circuit par circuit après avoir ouvert le disjoncteur ad-hoc. Ta phase doit toucher un mur quelque part, ou ton chauffe-eau électrique a un problème ou… Si tu es en appartement ou avec mur mitoyen, ça peut venir de chez ton voisin… Mais, je conseille vraiment de chercher l’origine de ce problème pour des questions de sécurité (j’ai un très mauvais souvenir d’un défaut similaire chez mes parents quand j’étais gosse… Et j’ai mis des années, devenu adolescent, pour en trouver la cause).
Une ruse pour diminuer cette tension de mode commun pourrait être de diminuer la résistance de ta prise de terre (mettre d’autres piquets, humidifier régulièrement la zone où il est planté, etc…). Mais cela ne résoud pas le problème, cela ne fait qu’en diminuer les conséquences.

Pour le reste, merci d’avoir partagé ton superbe projet !
Etant donné son ambition, je me permets cette remarque : n’oublie pas que tes ESPxx sont autant de périphériques Wifi que va gérer ton routeur… Un pont zigbee (ou BLE) te prend 1 adresse IP pour en général une trentaine de périphériques. Si pour X raisons te veux les passer en IP fixe, ton DHCP devra accepter beaucoup de réservations (et en général, celui du provider en accepte une vingtaine). Perso, j’ai contourné partiellement en limitant la plage d’occtroi du DHCP et en passant en IP fixe (sans réservation) sur mes périphériques (pas voulu faire un réseau spécifique car je m’y connais pas assez pour changer la NAT selon mes besoins). Mais ça demande une sacrée organisation (bien noter les IP attribuées pour pas avoir de conflit).

1 « J'aime »

Salut, n’étant plus trop présent en se moment, je viens de voir ton message, étant électricien je connais le mégohmmètre mais c’est vrai que cela ne ma pas traverser l’esprit, mais je pense tout de même plus a un soucis d’inductance (je suis pas sur que le therme sois le plus exacte car la maison étant neuve je pense que si cela venais d’un défaut d’isolement j’aurais un des VIGI qui sauterais au bout d’un certain temps, j’ai changé le titre, car vu que je vais vendre et faire reconstruire en sois le projet est avorté.
Pour se qui est du réseau wifi la dessus je suis plutôt bien organisé et mon routeur na pas de limite « a priori » pour les réservation d’adresse IP, a l’heure actuelle je suis a 47 réservation.
mais je reste ouvert a toute info

Prend la tension là où tu l’avais prise, ensuite fait disjoncter un à un t’es circuits, déjà tu verra quel est celui qui est incriminé, moi je parie sur le chauffe-eau, lave linge, lave vaisselle four ou même plaque de cuisson, j’ai eu le cas sur une plaque induction, mais il se trouvais qu’il y avait pas de terre raccordé!!! Le retour se faisant par le neutre ( et dans ce cas là le différentiel ne vois rien ). Autre chose avec une pince ampère métrique tu peux aussi identifier le circuit en défaut en prenant le retour sur la terre, et je doute si y’a maison est ancienne que tu ai du courant induis ( genre gros transfo, ballast de néon ). Tiens moi au jus sur discord.

sa sent la personne qui n’as pas lu l’article :stuck_out_tongue: tout sa j’ai fait et si je dit que c’est une tension induite c’est que j’ai mes raison, je n’ai pas de fuite de courant, tout mes equipement sont bien branché j’ai tout branché moi meme, sauf la PAC mais elle ne viens pas des gaine venant du plafond donc elle n’as rien a voir, le coup de coupé disjoncteur par disjoncteur j’ai testé la tension diminue au fur et a mesure que je les coup et je n’ai plus rien quand toute les PC et les ECL sont coupé normal, j’ai 3 pieuvre chez moi, et j’ai se probleme de tension induite que sur les circuit des pieuvres.