Pilotage Chaudière Frisquet ECO Radio System Visio (Suite)

@haribo77 ne t’inquiètes pas, tout est sous contrôle, je pense à tout :slight_smile: . C’est d’ailleurs pour ça que je réécris tout, désolé je met un peu de temps mais ça devrait être utile à tous si tout se passe bien. J’avance mais comme je te l’avais dit, je suis un peu débordé entre mon vrai travail et la vie de famille etc.etc. :stuck_out_tongue:

2 « J'aime »

La surprise du matin : Home assistant interprète mal la temperature extérieure.

Pourtant elle apparaît correctement dans les logs (-0.5degres).
Il doit falloir remanier le topic de config envoyé via MQTT. Mes thermostats incluent un attribut

Device_class : temperature

J’essaierai de l’ajouter ce soir.

Bonjour les Frisquets :slight_smile: .. Je viens passer une tête ici, je dispose d’une chaudière Frisquet avec Frisquet Connect et son thermostat d’ambiance. J’avais regardé la partie radio y’a quelques temps (années) pour ajouter le decodeur dans rtl_433 auquel je suis membre et contributeur. J’avais fait ma propre version et joué avec la version de @mgre , mais mon décoder n’a jamais été publié officiellement, encore un peu bancale, incomplet et bugué.

Ayant l’intention de mettre en oeuvre la sonde extérieure grâce aux avancées de chacun ici (un grand merci et gros boulot en passant :slight_smile: ), je peux contribuer aussi, je vais recevoir prochainement mon module heltec v3, je pourrai donc tester.

Je peux notamment m’y remettre sur rtl_433, intégrer les trouvailles, ça me semble intéressant/pertinent pour la partie écoute, identifié son network id en préparation de la configuration du module heltec par exemple, aussi pour la partie débug, ça vous permettra de chopper les trames pour analyser le trafique sans touché à la partie ESP32.

Petit bémol, je n’ai pas encore HA, donc je suis limité à jouer avec Domoticz/MQTT/node red, à voir si dans mon Domoticz je peux jouer avec MQTT Auto Discovery utilisant le topic homeassistant. Je cru comprendre aussi une volonté d’avoir un fonctionnement universel, avec HA et autres solutions compatible MQTT, Jeedom, Domoticz n’ co. Donc dans ce cas, je pourrais tester la partie Domoticz/MQTT.

Bon, je n’ai pas encore solutionné le problème, mais j’ai identifié que l’erreur vient à priori de la traduction de la trame de 49 octets provenant de la chaudière.

Voici les logs que j’obtiens dans l’objet INFOS_ZONES_TRAME en forçant l’envoi d’une valeur négative depuis HA :

homeassistant/sensor/frisquet/tempExterieure/set
-0.5
[] Envoi température extérieure...
Envoi température: -0.500000
OK
[SX1262] Processing packet from satellite...
[SX1262] Processing packet from boiler...
Température extérieure : 6553.100098

Done

@Freedom je suppose que c’est l’algorithme TEMPERATURE16 qui traduit mal le négatif (je n’ai pas vraiment l’expérience de cette partie de code) :

    float toFloat() const {
        uint16_t intValue = bytes[0] << 8 | bytes[1];
        return intValue / 10.0f;
    }

La valeur sur la chaudière est correcte.

Je me réponds après avoir trouvé un ajustement de code qui semble mieux fonctionner avec un cast d’entier signé :

    TEMPERATURE16(float value) {
        int16_t intValue = static_cast<int16_t>(round(value * 10.0f));
        this->bytes[0] = (intValue >> 8) & 0xFF;
        this->bytes[1] = intValue & 0xFF;
    }

    float toFloat() const {
        int16_t intValue = static_cast<int16_t>((bytes[0] << 8) | bytes[1]);
        return intValue / 10.0f;
    }

J’ai testé avec succès sur une valeur positive (4degrés) et une valeur négative.

Très étrange, je n’ai pas de soucis de mon côté, les valeurs négatives remontent correctement… sans aucun changement.

Edit : Tu as sans aucun doute raison pour le cast. Je vais faire la modification.

Je suis en train de tout réécrire, et effectivement la partie identification du NetworkID m’intéresse, ne serait-ce que pour écouter les satellites en mode passif. J’ai pas mal avancé sur mon nouveau code, j’espère pouvoir le pousser sur le dépôt prochainement. Il permettra d’avoir une utilisation mix, c’est à dire l’utilisation ou non du Connect, de la sonde extérieure, et de pouvoir se faire passer pour un satellite en écrasant les données.

5 « J'aime »

Bravo pour la reprise du topic et du travail autour !

J’ai profité du samedi pour mettre a jour mon Heltec avec FreedomNX/HeltecFrisquetHA

Je suis sur un Frisquet SANS connect. J’utilise le heltec en sonde externe avec un capteur HA (netatmo).

2 petites choses:

La barre jour montre le passage sur le nouveau firmware.
J’ai compris que sans “connect“, je ne peux pas avoir les autres infos. C’est dommage.

Peut-être qu’il ne faudrait pas créer les entités si connect est désactivé ?

  • L’affichage de la température exterieur n’a pas l’air de se mettre à jour dans HA.

J’ai toujours 3.4°c.
On voit sur le graphique, qu’avant ça évoluait.

J’ai raté un truc ou bug ?

Merci !

Bonjour,

en attendant la nouvelle version, je me suis plongé dans HA et le YAML pour faire un joli affichage. Voici le résultat à ce jour :


Et voici le code YAML qui le produit, sentez-vous libre de l’utiliser et/ou de l’améliorer…

# Affichage chaudière Frisquet
#
#
# nécessite d'avoir installé les customs suivants:
#  - custom-gauge-card   ( https://github.com/guiohm79/custom-gauge-card )
#  - button-card         ( https://custom-cards.github.io/button-card/stable/ )
#  - numberbox-card      ( https://github.com/junkfix/numberbox-card )
#  - card-mod            ( https://github.com/thomasloven/lovelace-card-mod/tree/v4.0.0 )
#
# Comme chaque couleur est utilisée plusieur fois, j'ai bien essayé 
# de mettre les couleurs dans des constantes définies en début:
# color_reduit: &color_reduit yellowgreen
# color_hors_gel: &color_hors_gel "#00cccc"
# puis plus loin dans les attributs d'utiliser ces constantes:
#    dynamic_markers:
#      <snip>
#      - entity: number.tdeg_nuit_reduit
#        color: *color_reduit
#        size: 4
#      - entity: number.tdeg_hors_gel
#        color: *color_hors_gel
#        size: 4     
# ça marche presque partout sauf pour les numberbox car là la couleur est définie par 
# du CSS ajouté par card mod... Alors pour l'instant, j'ai laissé les couleurs en dur
# dans le corps de YAML... Si quelqu'un à une idée, il ne faut pas hésiter.
#  
type: vertical-stack
cards:
  - type: custom:custom-gauge-card
    name: Temperature ambiante
    entity: sensor.tdeg_ambiante
    theme: custom
    custom_background: white
    custom_gauge_background: grey
    custom_center_background: white
    custom_text_color: black
    custom_secondary_text_color: black
    transparent_card_background: true
    transparent_gauge_background: false
    transparent_center_background: false
	# hack pour définir la couleur des leds
    severity:
      - color: "#ff8811"
        value: 28
    hide_shadows: true
    hide_inactive_leds: true
    center_size: 152
    unit: °C
    decimals: 1
    min: 12
    max: 28
    leds_count: 200
    led_size: 12
    zones:
      - from: 15.05
        to: 15.2
        color: dodgerblue
      - from: 15.3
        to: 15.5
        color: dodgerblue
      - from: 15.6
        to: 15.9
        color: dodgerblue
      - from: 16
        to: 18
        color: dodgerblue
      - from: 18
        to: 21
        color: orange
      - from: 21
        to: 24
        color: red
      - from: 24.1
        to: 24.4
        color: red
      - from: 24.5
        to: 24.7
        color: red
      - from: 24.8
        to: 24.95
        color: red
    dynamic_markers:
      - entity: number.tdeg_confort
        color: black
        size: 4
      - entity: number.tdeg_nuit_reduit
        color: yellowgreen
        size: 4
      - entity: number.tdeg_hors_gel
        color: "#00cccc"
        size: 4
  - type: horizontal-stack
    cards:
	  # les 4 premières avec laur action, forment un groupe de "boutons radio" commandant le selecteur de mode de frisquet_mqtt...
	  # puis un vide
	  # puis 'tout seul' le bouton Boost
      - type: custom:button-card
        entity: select.frisquet_mqtt_mode_z1
        name: Auto
        icon: mdi:clock-outline
        color_type: card
        color: "#bbbbbb"
        tap_action:
          action: call-service
          service: input_select.select_option
          target:
            entity_id:
              - select.frisquet_mqtt_mode_z1
          data:
            option: Auto
        state:
          - value: Auto
            color: grey
      - type: custom:button-card
        entity: select.frisquet_mqtt_mode_z1
        name: Confort
        icon: bi:sun-fill
        color_type: card
        color: "#bbbbbb"
        tap_action:
          action: call-service
          service: input_select.select_option
          target:
            entity_id:
              - select.frisquet_mqtt_mode_z1
          data:
            option: Confort
        state:
          - value: Confort
            color: lightcoral
      - type: custom:button-card
        entity: select.frisquet_mqtt_mode_z1
        name: Réduit
        icon: mdi:weather-night
        color_type: card
        color: "#bbbbbb"
        tap_action:
          action: call-service
          service: input_select.select_option
          target:
            entity_id:
              - select.frisquet_mqtt_mode_z1
          data:
            option: Réduit
        state:
          - value: Réduit
            color: yellowgreen
      - type: custom:button-card
        entity: select.frisquet_mqtt_mode_z1
        name: Hors gel
        icon: bi:snow
        color_type: card
        color: "#bbbbbb"
        tap_action:
          action: call-service
          service: input_select.select_option
          target:
            entity_id:
              - select.frisquet_mqtt_mode_z1
          data:
            option: Hors gel
        state:
          - value: Hors gel
            color: "#00cccc"
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        entity: switch.boost_z1
        name: Boost
        icon: mdi:thermometer-plus
        color_type: card
        color: blue
        state:
          - value: "on"
            color: red
          - value: "off"
            color: "#bbbbbb"
  - type: custom:numberbox-card
    border: false
    entity: number.tdeg_confort
    min: 10
    max: 25
    step: 0.5
    card_mod:
      style: |
        .grid{color:black}
  - type: custom:numberbox-card
    border: false
    entity: number.tdeg_nuit_reduit
    min: 10
    max: 25
    step: 0.5
    card_mod:
      style: |
        .grid{color:green}
  - type: custom:numberbox-card
    border: false
    entity: number.tdeg_hors_gel
    min: 10
    max: 25
    step: 0.5
    card_mod:
      style: |
        .grid{color:#00cccc}

Hello @PierrickP , en attendant que Freedom finisse la réécriture de son code, tu peux essayer mon fork plus adapté à ta configuration sans connect (ma chaudière ne le supporte pas non plus) : GitHub - titop77/HeltecFrisquetHA at test1

Effectivement j’ai programmé ce système au départ uniquement pour le Connect. Du coup il faut que j’élargisse les possibles. J’arrive bientôt au bout de mon nouveau code qui corrigera ça.

Je manque un peu de temps en ce moment mais j’ai pas mal progressé ce week-end. Avec le froid j’évite de trop trifouillé histoire de pas me mettre en difficulté avec ma femme si la chaudière ne fonctionne plus :rofl: .

3 « J'aime »

Merci, je viens de tester.

J’ai l’impression que ça ne change pas grand-chose.

J’ai bien le contrôle “Z1 Thermostat“ en plus, mais tout est en inconnu comme avant et la valeur de la sonde externe qui ne s’actualise pas sur HA (toujours ok dans les logs du heltec).

Pour info, j’ai fait la maj en OTA. Dispo si tu as besoin de plus d’infos

Les températues se mettent à jour uniquement après avoir reçu une trame de la chaudière, soit toutes les 10 minutes en réponse d’une trame du satellite.

Le thermostat ne fait que restituer oes temperatures des sindes sous une autre forme. Chez moi il remonte bien les températures et le mode (nommé preset) losqu’on affiche le détail sur une carte thermostat. Mais il apparait en “inconnu” dans les listes parce qu’il a un bug sur la prise en compte du mode chauffage “heat”.

J’ai rien de tout ça, même après plusieurs cycles de 10mins (j’ai reset le heltec pour essayer).

Je vais attendre la prochaine version de Freedom.

Vu que jusque là j’étais le seul utilisateur de mon code, il est possible que j’ai introduit un bug pour le paramétrage du networkId.
Peux-tu vérifier

  1. que le networkId affiché dans le portail de l’ESP est bien le tien?
  2. que la capteur payload dans HA se met bien à jour au moins toutes les 10 minutes ?

Je viens de trouver la raison pour laquelle le mode du thermostat HA restait inconnu (il y a avait tout bêtement un espace inattendu au début du topic). Le code est mis à jour sur mon github.

1 « J'aime »

1- Je pense que c’est bon. J’avais récup mon id avant de passer sur ton code et je l’ai mis au cas-où en DEFAULT_NETWORK_ID

2- J’ai bien des payloads régulièrement à jour dans HA

Je viens de mettre à jour, “Z1 Thermostat“ est maintenant en “Chauffage“ :clap:

1 « J'aime »

@PierrickP Tu remarqueras sans doute que les modes (ou presets sur le thermostat) sont parfois bizarre en comparaison du réglage du satellite. J’ai fait des compromis en raison d’interférences entre les numéros de modes utilisés dans le mode connect, et ceux utilisés quand il n’y a pas de connect.

Cela ne porte pas particulièrement à conséquence sur le fonctionnement de la chaudière comme nous ne sommes qu’en lecture.

La seule fonction qui interfère sur la chaudière est le mode boost que j’ai bricolé en mode “non-connect”. Cette fonction augmente la consigne de 2 degrés à l’envoi suivant de trame par le satellite, et ce jusqu’à la trame suivante 10 minutes plus tard ou en cas de forçage de consigne.

Mouais en fait le fait qu’il y ai marqué “Chauffage“ ne m’aide pas vraiment :joy: . Le reste des infos reste inconnu / valeur de l’externe qui s’actualise pas.

Ça serait top de savoir si on est en période de “confort” ou “réduit“ quand c’est programmé en auto sur le satellite.

L’option boost m’intéresse fortement (car pas de connect). De ce que je comprends, c’est un hack et la consigne est re-écrite 10mins après.

Du coup ça fonctionne un peu ? J’imagine mal un vrai ressenti sur seulement 10 mins

Oui, j’ai utilisé ce hack de boost plusieurs fois en repartant d’essais faits par un autre contributeur il y a longtemps.
Bien sûr ça ne suffit pas à monter la température d’une maison de 2 degrés, mais ça suffit chez moi à chauffer les radiateurs et chasser la sensation de froid le matin, par exemple.

C’est bizarre que toutes tes températures restent à inconnu. Au moins la température extérieure devrait remonter temporairement à 16 degrés de mémoire. C’est une consigné que j’ai mis en dur dans l’ESP pour donner autre chose que 0degrés à la chaudière, avant que HA fournisse la température réelle.

Ce qui me fait penser : Freedom utilise par défaut une sonde de température collée à son ESP. Pour récupérer la température depuis HA, il faut dans le conf.h ajuster ceci le #define USE_DS18B20 à false :

// Configuration Sonde extérieure
#define USE_SONDE_EXTERIEURE true   // Activation sonde extérieure (Virtuelle OU DS18B20)
#if USE_SONDE_EXTERIEURE
    #define USE_DS18B20 false            // Option: si true, on lit le DS18B20 local comme source de T° ext.
#endif
#define DS18B20_PIN GPIO_NUM_33     // Broche du bus OneWire (DS18B20)
#define DS18B20_OFFSET 0.0f         // Décalage de calibration si besoin (ex: +0.3°C)

Je te confirme que ma conf est bonne ( USE_SONDE_EXTERIEURE true / USE_DS18B20 false)

J’ai eu un message hier à la création (le 15:37:26 c’est hier), puis plus rien.

Sur le satellite / chaudière / logs, c’est bon (8°c actuellement :hot_face:)

Je ne comprends pas bien la différence entre /state et /set sur les topics MQTT

Avec MQTT explorer, j’ai totalement supprimé les topics (il y avait un config/state/set) + reset le heltec pour les recreer.

Après quelque temps, j’ai un /set (et un config, mais PAS de state) qui correspond à la température extérieur et un retour au inconnu

Il y a des choses que je ne comprends pas dans HA