Carte Fil Pilote / ESP8266 V1.2

Bonjour à tous !

Je suis sur le point de réaliser une carte de commande Chauffage / Fil pilote que je souhaite installer dans mon tableau elec.

j’ai 8 radiateurs électriques dont tout les fils pilotes arrivent au TGBT.

l’idée est de contrôler la chauffe des radiateurs en mode confort/hors-gel, via un ESP8266 wemo D1 Mini programmé via ESPHome et intégration à Home Assistant.

Dans un premier temps jouer avec les programmations horaires, puis dans un second les asservirs à des sondes de temperature type Xiaomi LYWSD03MMC.

Je sais qu’il y a déjà pas mal de schémas diffusé à ce sujet mais il y avait toujours un petit truc qui ne me convenait pas alors je me suis lancé

Update 11/02/20 V0.3 :
// Mon alim est en 5V
// l’esp wemo fonctionne en 3V3 via un petit régulateur LDO ME6211 pouvant fournir jusqu’a 500mA
// sachant qu’en peak sur une transmission wifi l’esp peux tirer jusqu’a 450mA il reste pas grand chose pour alimenter le MCP23017 et les optotriacs
le risque etant de provoquer un reset de l’esp
// 2 options :
// soit j’alimente tout le monde en 3V3 en ajoutant un régulateur 5V → 3V3 type LM317 fournissant suffisament de courant
// soit je reste en 5V mais dans ce cas je doit adapter la liaison i2C entre l’esp et le MCP23017 à base de mosfet 2N7000
// car l’état logique haut de l’esp sera à 3V3 et celui du mcp23017 est de 5v-0,7v=4,3v min

je trouve dommage de recreer une regulation à 3V3 juste pour adapter les tension i2c je part donc sur l’option 2:

Update 13/02/20 V0.8 :
modif du schéma en integrant l’adapteur de niveaux i2C 3V3 to 5V
je viens de tester sur une petite plaque de test nickel !!!
le codage sous esphome est vraiment facile (voir ci-dessous)

esphome:
  name: espilote
  platform: ESP8266
  board: d1_mini
### init sequence####
  on_boot:
        priority: -100
        then:
          - switch.turn_on: fp1
          - delay: 0.5s
          - switch.turn_off: fp1
          - switch.turn_on: fp2
          - delay: 0.5s
          - switch.turn_off: fp2
          - switch.turn_on: fp3
          - delay: 0.5s
          - switch.turn_off: fp3
          - switch.turn_on: fp4
          - delay: 0.5s
          - switch.turn_off: fp4
          - switch.turn_on: fp5
          - delay: 0.5s
          - switch.turn_off: fp5
          - switch.turn_on: fp6
          - delay: 0.5s
          - switch.turn_off: fp6
          - switch.turn_on: fp7
          - delay: 0.5s
          - switch.turn_off: fp7
          - switch.turn_on: fp8
          - delay: 0.5s
          - switch.turn_off: fp8
          
          - switch.turn_on: fp1
          - switch.turn_on: fp2
          - switch.turn_on: fp3
          - switch.turn_on: fp4
          - switch.turn_on: fp5
          - switch.turn_on: fp6
          - switch.turn_on: fp7
          - switch.turn_on: fp8
          - delay: 0.2s
          - switch.turn_off: fp1
          - switch.turn_off: fp2
          - switch.turn_off: fp3
          - switch.turn_off: fp4
          - switch.turn_off: fp5
          - switch.turn_off: fp6
          - switch.turn_off: fp7
          - switch.turn_off: fp8
          - delay: 0.2s
          - switch.turn_on: fp1
          - switch.turn_on: fp2
          - switch.turn_on: fp3
          - switch.turn_on: fp4
          - switch.turn_on: fp5
          - switch.turn_on: fp6
          - switch.turn_on: fp7
          - switch.turn_on: fp8
          - delay: 0.2s
          - switch.turn_off: fp1
          - switch.turn_off: fp2
          - switch.turn_off: fp3
          - switch.turn_off: fp4
          - switch.turn_off: fp5
          - switch.turn_off: fp6
          - switch.turn_off: fp7
          - switch.turn_off: fp8
          - delay: 0.2s
## MAJ SSID ALT 
wifi:
  networks:
  - ssid: "xxxxxxxxx"
    password: "xxxxxxxxx"
  - ssid: "xxxxxxxxx"
    password: "xxxxxxxxx"
  manual_ip:
    static_ip: 192.168.1.211
    gateway: 192.169.1.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Espilote Fallback Hotspot"
    password: "xxxxxxxxx"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "xxxxxxxxx"

ota:
  password: "xxxxxxxxx"


#######################
web_server:
  port: 80


#i2c Pin setup

i2c:
   - id: bus_a
     sda: D2
     scl: D1
     scan: True

# Config MCP address

mcp23017:
  - id: 'mcp23017_hub'
    address: 0x20

# MAJ ////////// WIFI STATUT

sensor:
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 60s


switch:
  - platform: gpio
    name: "FP1"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 0
      number: 0
      mode: OUTPUT
      inverted: False
    id: fp1
    on_turn_on:
    - output.turn_off: ledfp1
    on_turn_off:
    - output.turn_on: ledfp1
      
  - platform: gpio
    name: "FP2"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 1
      number: 1
      mode: OUTPUT
      inverted: False
    id: fp2
    on_turn_on:
    - output.turn_off: ledfp2
    on_turn_off:
    - output.turn_on: ledfp2
    
  - platform: gpio
    name: "FP3"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 2
      number: 2
      mode: OUTPUT
      inverted: False
    id: fp3
    on_turn_on:
    - output.turn_off: ledfp3
    on_turn_off:
    - output.turn_on: ledfp3
    
  - platform: gpio
    name: "FP4"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 3
      number: 3
      mode: OUTPUT
      inverted: False
    id: fp4
    on_turn_on:
    - output.turn_off: ledfp4
    on_turn_off:
    - output.turn_on: ledfp4
    
  - platform: gpio
    name: "FP5"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 4
      number: 4
      mode: OUTPUT
      inverted: False
    id: fp5
    on_turn_on:
    - output.turn_off: ledfp5
    on_turn_off:
    - output.turn_on: ledfp5
    
  - platform: gpio
    name: "FP6"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 5
      number: 5
      mode: OUTPUT
      inverted: False 
    id: fp6
    on_turn_on:
    - output.turn_off: ledfp6
    on_turn_off:
    - output.turn_on: ledfp6
    
  - platform: gpio
    name: "FP7"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 6
      number: 6
      mode: OUTPUT
      inverted: False 
    id: fp7
    on_turn_on:
    - output.turn_off: ledfp7
    on_turn_off:
    - output.turn_on: ledfp7
    
  - platform: gpio
    name: "FP8"
    pin:
      mcp23017: mcp23017_hub
      # Use pin number 7
      number: 7
      mode: OUTPUT
      inverted: False 
    id: fp8
    on_turn_on:
    - output.turn_off: ledfp8
    on_turn_off:
    - output.turn_on: ledfp8
      
      
################################# 
      
output :
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 8
    id: ledfp1
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 9
    id: ledfp2
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 10
    id: ledfp3

  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 11
    id: ledfp4
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 12
    id: ledfp5
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 13
    id: ledfp6
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 14
    id: ledfp7
    
  - platform: gpio
    pin:
      mcp23017: mcp23017_hub
      number: 15
    id: ledfp8
    
   
  
   

Voici donc mon schema en V1.2 :

J’ai fait une petit carte LED pour afficher en face avant l’etat des different circuit
Ces leds sont connecter aux GPOut 9-16 du MCP23017


je dispose d’une petite alim de chez meanwell 5V-3A sur rail din

https://www.meanwell-web.com/fr-fr/ac-dc-ultra-slim-din-rail-power-supply-input-range-hdr–30–5

j’aimerai intégrer cette carte dans un boitier rail din aussi genre ca :


https://secure.reichelt.com/fr/fr/module-aprarail-db4-ventil-ferm–apra-db4-gbk-p209186.html?&nbc=1

voici la carte que j’ai commander chez JLPCB

integration dans le Boitier avec le soft fusion 360 qui intègre maintenant les fonctions de eagle CAO

Update 23/03/2020 :

voici les cartes reçus début mars et montées
fusion 360 c’est vraiment cool what you see is what you get !
si vous êtes intéressé par les fichiers fusion cad 3d c’est par là:
https://drive.google.com/drive/folders/1QqcysZMWLQzIWShHSq1c7B4GyTyHWJvU?usp=sharing

je lance les tests




Update 05/04/20 :

Tout est oppérationel !!

Le boitier est en place dans mon tableau électrique et tout les circuits sont asservies à une sonde de temperature Xiaomi LYWSD03MMC modifié (cf : custom firmware ), le tout integtré dans Home Assistant avec un thermostat et un programmateur par zones



à propos des sondes xiaomi LYWSD03MMC :
j’ai commandé 8 sondes sur aliexpress
le top c’est leur prix 1,7€ par unités (port compris)
par là :

elles fonctionnement en Bluetooth Low Energy BLE
le problème c’est que par défaut il faut une passerelle de chez xiaomi pour exploiter les infos
et le tout passe par le cloud (bof)

il y a donc deux trois geek qui ce sont amusé à reprogrammé leur firmware et qui propose donc une version modifié permettant de désactiver la clef d’appairage (bindkey) et ajouter le message de pourcentage de battery , de re-calibrer la temperature et l’hydrométrie et quelques autre petites fonctions tunning :wink: et le tout other the air OTA !!
ci-dessous le liens sur git hub :

Ensuite j’utilise le module Bluetooth de mon Raspberry Pi 3b+ pour récupérer les messages BLE des 8 sondes a l’aide du module Passive BLE Monitor :

dispo via HACS (Home Assistant Community Store)

Pour ceux dont la couverture Bluetooth est limité il existe 2 solutions que je n’ai pas exploré mais qui peuvent dans certains cas solutionner les soucis de couverture.

et enfin voici le systeme en place dan s mon TGBT :

5 « J'aime »

Hello,
Il existe (ou existait) un projet similaire nommé « Remora » réalisé il y a maintenant plusieurs années, mais qui, je pense, répond à ton besoin. Ce projet était constitué d’une partie matérielle avec gestion des fils pilotes de 6 zone + relais chauffe-eau, et une partie logicielle pour gérer tout ça.
Et le mieux, c’est qu’il existe un addon dans HA pour gérer tout ça à merveille ( j’ai ça et cela fonctionne comme je le souhaite )

Malheureusement je peux pas mettre de lien, mais regarde sur internet remora soft - remora hard - remora home assistant

Dispo si besoin.

merci weado !

oui j’avais bien vu le projet remora effectivement c’est très similaire !

j’ai effectivement pensé à faire un projet qui gère tout d’un coup comme remora mais mes attentes ne sont pas tout a fait les meme et souhaite segmenter les différentes fonction dans le but de sécuriser

si un plantage sur un module ne pas impacter les autres fonction

je pense donc faire un carte relay chauffe eau et telinfo à coté

Pas de soucis. En tout cas bon projet et hésites pas à partager, car on est nombreux avec des fils pilotes ;-), mais pas beaucoup avec autant de connaissance électronique.

1 « J'aime »

Alors, ce projet avance ? Hâte de voir la suite :wink:

hello waedo

je fait une report prochainement
je suis en train de tout tester pour êtres sûre de ne pas faire de grosse cnnries mais pour le moment ca à l’air de le faire …

Hello Voici la V1.2 de mon systeme de de gestion Fil pilote
integration dan Home Assistant et asservissement aux temperature mesuré par les sondes Xiaomi LYWSD03MMC
tout fonctionne parfaitement !!!

Salut, franchement beau travail, j’ai prevu de faire pareil pour la maison a ma mere, je voulais savoir les sortie fil pilote de ta carte gère combien d’etat ?

hello Duncan-Valleix

La carte ne gère que 2 Etats par zones ON/OFF ou ON/HORS GEL selon le sens de la diode de redressement ou même ON / ECO (confort -3°) si pas de diodes (ON=CONFORT).

par contre en modifiant un peux le code et en linkant deux circuits tu peux controler 4 zones en fil pilote 6 ordres

l’autre solution c’est de modifier le schéma et d’utiliser les sorties GPIO 9 à 16 pour ajouter d’autres circuits et avoir 8 zones en FP 6 ordres

au fait si ca intéresse du monde j’ai 4 carte pcb sur les bras (du rabe de la commande de chez jlpcb)

1 « J'aime »

Bonjour,
super boulot !
Je pense que tu vas avoir du succès, car aujourd’hui il n’existe pas trop de solution de ce type-là
Penses-tu qu’il serait possible de partager tout cela, car j’aimerai essayer de faire la même chose avec un état supplémentaire (ON/ECO/OFF ou HG) ?

Bonjour Weado

Oui pas de soucis pour partager c’est le but de ce post
Dit moi ce qu’il te faut
Regarde dans le premier post je viens d’ajouter un liens Google drive dans lequel il y a le schéma au format eagle

Sinon pour faire du 4 ordre c’est ce qu j’expliquait précédemment il faut relier deux sortie et dans ESP home déclarer une switch qui active en bascule les deux sorties

Bonjour @neodyms , super projet ! :+1:t2:
Pourrait-tu partager le gerber du pcb et le BOM file (liste de composant), j’aimerai pouvoir adapter a mon cas : commande des 6 ordres sur câblage triphasé.
Encore merci ! :grinning:

Bonjour @neodyms , beau projet en effet! S’il vous reste un PCB je suis très intéressé!

Bonjour @neodyms ,

Super projet qui est très interessant!

Te reste t’il des PCB?
Est-il possible d’avoir la liste des composants utilisés?

Niveau utilisation au quotidien ça fonctionne comment?
Tu mets tes radiateurs à fond et ils se déclenchent lors que la T° de la pièce passe sous la T° cible et une fois la T° cible atteinte, ça passe en mode eco ou hors gel?

Merci d’avance!

hello je viens de mettre à jour pas mal de documents sur le drive :

notamment l’ajout du gerber et de la nomenclature

https://drive.google.com/drive/folders/1QqcysZMWLQzIWShHSq1c7B4GyTyHWJvU?usp=sharing

pour info j’ai encore 3 pcb que je peux envoyer pour le prix du port

1 « J'aime »

Hello, je vois que les choses évoluent. C’est top ! Pour comprendre concernant l’histoire des 2 autres ordres, je dois utiliser 2 sorties pour 1 chauffage si je comprends bien ? Pourrais-tu expliquer les choses pour bien comprendre ? Sinon quand tu ferras le relais pour le chauffe-eau, n’hésites pas :wink:

pour expliquer un peux mieux le fonctionnement :

la carte ne gère que 2 ordres par circuits

Mais selon le montage de la diode de sortie on peut avoir different mode

  • « Confort » ou « ECO » si on ne met pas de DIODE
  • « Confort » ou « ARRET » si on met la DIODE dans le sens inverse de la sérigraphie de la carte
  • « Confort » ou « HORS GEL » si on met la DIODE dans le sens comme indiqué sur le schema et la sérigraphie)

si vous voulez faire du fil pilote 4 ordres il faut modifier le schema et le code

à l’usage au quotidien :
je règle le thermostat interne de mes radiateurs à une température légèrement supérieur à la temperature de confort que je souhaite dans home assistant
ceci afin d’éviter que si le système plante je me retrouve avec le radiateur qui se mette à chauffer à donf

le reste c’est les thermostat « generic climate » de home assistant qui font le taf

Bonsoir @neodyms, merci pour ce projet qui répond à un besoin important sans beaucoup de solution aussi aboutie !

Je souhaiterais faire une commande 4 ordres, en reliant 2 sorties entre elles avec les diodes tête bêches. J’ai besoin de 6 zones. Je suis donc intéressé par 2 PCB, avec une participation au coup de fabrication en plus du port. Cela me semble un minimum pour ce partage.

Hello defre

Pour le 6 ou 4 ordre il faut effectivement relier deux sorties entre elles et inverser une des 2 diodes de redressement.

Au niveau code il faut faire un truc du genre :

Pour le mode **CONFORT **
GPIO 1&2 =off

Pour le mode ** ECO**
GPIO 1 == ON
GPIO 2 == ON

Pour le mode ** HORS GEL**
GPIO 1 == OFF
GPIO 2 == ON

Pour le mode ** ARRET**
GPIO 1 == ON
GPIO 2 == OFF

Pour le mode ** Confort -1**
GPIO 1 == OFF
GPIO 2 == OFF
Temporisation = 4’57"
GPIO 1 ==ON
GPIO 2 == ON
Temporisation =3"

Pour le mode ** Confort -2**
GPIO 1 == OFF
GPIO 2 == OFF
Temporisation = 4’53"
GPIO 1 ==ON
GPIO 2 == ON
Temporisation =7"

Niveau YAML , je ne sais pas encore comment faire un bouton à 4 position si quelqu’un à des infos…

1 « J'aime »

Bonjour,
Je suis intéressé par ta manip, car je me sers pour le coup de 3 ordres à minima : Eco, confort et off.

Tiens nous au courant