Pilotage Chaudière Frisquet ECO Radio System Visio

Bonjour Aymeric,

Merci encore pour ton retour.

Tu parles de quel thermostat d’ambiance a laisser dans la pièce de vie pour maximiser le chauffage ? Celui de TADO ou Frisquet ?

Quand tu parles des têtes Tado dans chaque de piece de vie indépendant de la chaudière cela signifie qu il ne sont pas lié à la chaudière via le thermostat Tado et permettrai seulement de baisser la température. Donc pas de contact sec a mettre en place

Je ne sais si tu as vu mon précédent message. Si je passe en Tado avec le thermostat TADO . Comment le connecter tout en gardant la sonde extérieur frisquet et son thermostat Frisquet d’ambiance réglé a 0 ? Cela est peut être pas possible ? J’ ai juste sur la chaudière « modifier un circuit » donc si je passe en contact externe il ne gardera plus la configuration thermostat Frisquet et sonde extérieur…

Merci encore

Bonjour

Je laisserai le thermostat d’ambiance frisquet dans une pièce de vie chauffé et j’ajouterai des tête de thermostat piloté dans les pièces que l’on souhaite moins chauffer.

Ça permet de conserver la régulation frisquet et maximiser la condensation.

Le système tado n’a pas besoin de piloter la chaudière.

Le contact sec supprimerai la régulation frisquet.

Bonjour,

Je comprends mieux merci . Donc il y a 2 écoles : ceux qui garderaient la régulation frisquet et d’autres qui passeraient en contact sec tout en laissant la sonde extérieur pour tenter de garder la régulation frisquet

Concernant la 1 er, autant laisse chauffer les chambres tout le temps vu que le thermostat d’ambiance sera en bas dans la pièce de vie ? Si je laisse ouvert les robinets thermostatiques des chambres, je vais plus consommer ou pas ?

Cordialement,

Bonjour,
@Burn si l’ont connait l’identifiant de sa chaudière et qu’on le met dans le fichier conf.h quelle est la procédure pour finir l’association? A priori j’ai bien les infos de température qui remonte dans HA mais les changement de mode ne semble pas pris en compte.
Es-ce qu’il est prévu de gérer plusieurs zones, j’ai chez moi deux zones et je n’en vois qu’une remonter dans HA.
Merci d’avance pour les retours.

Bonjour,
je me répond à moi même j’ai trouvé le menu sur la chaudière, après relecture des différents post du forum et de la doc technique.
Sur la chaudière:
1- Maintenir simultanément le bouton « Menu » et « i » 5 secondes
2- Descendre jusqu’au menu « Partenaires »
3- Ajouter
4- Descendre jusqu’a « Frisquet Connect »
Sur HA:
Basculer le Switch ass. connect sur « ON »
Cependant l’association ne semble pas fonctionner.
Concernant les Zones peut être vont elle remonter une fois l’association réuni?

Salut unknown, L’association est encore un peu capricieuse, J’ai dû faire trois ou quatre fois on Off Sur le Bouton de Home, assistant pendant la période D’association jusqu’à voir le message, frisquet connect associés sur la chaudière.

Concernant la zone deux, il y a un paramètre dans le fichier de configuration pour l’activer, cela va créer automatiquement les topic MQTT et Home assistant, mais je me souviens plus si j’ai fini de coder la partie pour la remontée d’information.

Par contre, c’est sûr que le changement de mode n’est pas codé pour la zone deux car je n’ai pas trouvé d’exemple de trame Qui montre comment Changer la programmation d’une zone spécifique.

Salut Burn,
merci pour ton retour.
Malgré les différentes tentatives je n’ai pas réussi l’association.
J’ai activé la zone2 mais les infos ne semble pas remonter. Quand tu dit que tu n’a pas de trame j’imagine qu’il te faut des trames de connect sur une chaudière deux zones et pas uniquement des trames de satellites?

Bonjour et merci pour cet énorme travail sur nos chaudieres frisquet :slight_smile
:
De mon coté j’ai bien réussi à associer le connect fictif avec la chaudiere et les informations de la chaudiere remontent bien dans home assistant , en revanche impossible de changer le mode de chauffage , ça n’est jamais pris en compte par la chaudiere …
J’ai rapproché l’esp a 50cm de la chaudiere mais ça ne change rien …
Une idée du soucis ?

Autre petit soucis la conso de gaz qui baisse parfois … du coup j’ai parfois des conso négatives dans home assistant … Ce compteur gaz fonctionne comment concrètement ?

Merci par avance pour vos réponses
Et une bonne année 2025 à tous :slight_smile:

Salut @jujuschw,

je pense que cela vient du faite que la trame qui est envoyé actuellement correspond a la programmation de mon satellite, lorsque le satellite change de mode, il envoi une trame qui ressemble a cela :
80 08 ** ** 7E 17 A1 54 ** ** ** ** ** ...
il faut recopier cette array dans le code au niveau de byte TxByteArrConMod[63] = { a partir de 17 A1 jusqu’a la fin.
Je dois mettre en place un moyen d’automatiser ce changement et de bloquer le changement de mode tant qu’elle n’a pas été reçu mais je n’ai pas encore eu le temps de m’y attarder.

Concernant la consommation de gaz il récupere normalement la consommation de la veille, mais si comme moi tu as inclus ce sensor dans le tableau énergie cela te remonte parfois des valeur négative car homeassistant attend un sensor avec des valeurs incrémenté, il y a une configuration en plus a faire dans HA pour gerer cela, idem faut que je la mette en place et que je la documente mais pas encore eu le temps avec les fêtes tout ça tout ça…
Je m’y remet dès que j’aurai fini de digérer le passage en 2025 :smiley:

Comme discuté en privé je pense que cela viens de l’identifiant du connect codé en dure ligne 89 et 94. le troisième octets est à 39 il faut le remplacer par l’identifiant du connect.
ça à fonctionné pour moi.

Ohhh ! Tu as réussi !!! Trop fort :muscle:
Tu remontes la conso gaz ECS + chauffage ou bien la totale ?
Je regarde comment c’est fait pour backporter sur le code rust :slight_smile:

En regardant les trames, on dirait que tu ne remontes que la partie chauffage, si tu as l’eau chaude sanitaire, tu peux lire les 2 octets avant:

        int chauffage = byteArr[27] << 8 | byteArr[28];
        int ecs = byteArr[25] << 8 | byteArr[26];
        char consoGaz[10];
        snprintf(consoGaz, sizeof(consoGaz), "%d", chauffage);
        publishMessage("homeassistant/sensor/frisquet/consogaz/state", consoGaz);

Chez moi, en additionnant les deux, ça correspond à 10% près à la consommation en m3

Merci @mgre,

Ma frisquet fait que chauffage, donc j’avais pas moyen de l’identifier. Je vais l’ajouter pour les autres que ça pourrait intéresser.

Par contre tu es sûr pour l’unité? D’après tous les croisements que j’ai pu faire, les valeurs remonte en Kwh.

Cool !

Pour l’unité, je suis d’accord avec toi pour des kWh, ça correspond à mon compteur de gaz (en multipliant par les coefficients énergétique du gaz pour passer de m3 à kWh)

Je suis pas certain de la précision ni de ce que ça mesure vraiment. Est ce le gaz consommé ou la quantité d’énergie envoyée dans les circuits de chauffe (sur la base de la différence de température entre le départ et le retour * débit du circulateur) ?
J’ai un petit penchant pour le deuxième car j’ai un écart d’environ 10-15% en moins, et je ne cuisine pas tant que ça :sweat_smile: ça voudrait dire qu’on a une estimation du rendement de la chaudière (et c’est pas incompatible avec les chaudières à condensation)

Je suis un peu déçu que ce ne soit que une fois par jour par contre :frowning:

Merci pour ta réponse @Burn , je vais tester ça quand je serais rentré :slight_smile:

Idem, j’espérais au moins une valeur incrémenté et des update toutes les 20 minutes mais j’ai rien trouvé qui correspond. Pourtant l’infos incrémenté est visible sur le Connect d’origine donc elle doit bien transiter quelque part… à moins que le Connect gère cela en interne…

1 « J'aime »

Vu tout ce qu’on a déjà fait, c’est quasi sur que ça vient de la chaudière…
Ca doit être dans le message 79 fc 00 1c, c’est le seul à varier chez moi, les autres ne bougent quasiment pas…

1 « J'aime »

Bonjour,

J’ai avancé de mon côté sur mon installation de 2013 sans connect.
Pour rappel, j’ai 2 zones + un module hydraulique pour la régulation de la zone 2.
Je cherche à conserver mon installation d’origine pour conserver le fonctionnement des satellites en cas de panne de ma domotique.

J’ai fait quelques tests de principe:

  1. J’ai débranché ma chaudière pour voir le comportement du satellite.
    Le satellite envoie 3 trams consécutive en incrémentant le byte 4 de 1.
    Exemple:
    Le satellite 1 (byte2 = 08) s’incrémente de 74 à 76 toutes les 4 secondes sans réponse de la chaudière.
19:05:57.315 -> RECEIVED [23] : 80 08 06 74 01 17 A0 29 00 15 A0 2F 00 04 08 00 CD 00 CD 00 05 00 00 
19:06:01.213 -> RECEIVED [23] : 80 08 06 75 01 17 A0 29 00 15 A0 2F 00 04 08 00 CD 00 CD 00 05 00 00 
19:06:05.094 -> RECEIVED [23] : 80 08 06 76 01 17 A0 29 00 15 A0 2F 00 04 08 00 CD 00 CD 00 05 00 00 

Le satellite 2 (byte2 = 09) s’incrémente de 3C à 3E toutes les 4 secondes sans réponse de la chaudière.

19:06:21.615 -> RECEIVED [23] : 80 09 2C 3C 01 17 A0 29 00 15 A0 34 00 04 08 00 CA 00 C3 80 05 00 00 
19:06:25.521 -> RECEIVED [23] : 80 09 2C 3D 01 17 A0 29 00 15 A0 34 00 04 08 00 CA 00 C3 80 05 00 00 
19:06:29.389 -> RECEIVED [23] : 80 09 2C 3E 01 17 A0 29 00 15 A0 34 00 04 08 00 CA 00 C3 80 05 00 00

Lorsque ma chaudière ne renvoie pas de réponse, le satellite réessaye 2 fois de plus puis attend 10min pour réessayer en incrémentant de 1 de plus d’où l’incrément de 4 toutes les 10min quand la chaudière répond normalement.

J’ai donc essayé d’envoyer la tram du satellite modifié de la zone 2 avec une consigne de 5°C en mode hors gel juste après avoir reçu la réponse de la chaudière en incrémentant le byte 4 de 1 par rapport à la tram reçu juste avant du satellite.
- RECEIVED ==> Réception tram par heltech
- SEND ==> Envoie de la tram modifié par l’heltec)

22:30:54.593 -> RECEIVED [23] : 80 09 2C B8 01 17 A0 29 00 15 A0 34 00 04 08 00 C2 00 B9 80 00 00 00 
22:30:54.670 -> RECEIVED [49] : 09 80 2C B8 81 17 2A 00 6B 00 00 25 01 05 22 30 36 08 00 00 C6 00 BE 00 00 00 00 00 00 00 C2 00 B9 80 00 00 00 00 00 04 F6 00 00 00 00 00 00 00 00 
22:30:54.702 -> SEND____ [23] : 80 09 2C B9 01 17 A0 29 00 15 A0 34 00 04 08 00 C2 00 32 80 10 00 00 
22:30:55.438 -> RECEIVED [49] : 09 80 2C B9 81 17 2A 00 6B 00 00 25 01 05 22 30 37 08 00 00 C6 00 BE 00 00 00 00 00 00 00 C2 00 32 80 10 00 00 00 00 04 F6 00 00 00 00 00 00 00 01 

La chaudière répond deux fois.
Une première fois avec la consigne du satellite (00 B9 80 00) puis une deuxième fois avec la consigne modifié (00 32 80 10).
La première réponse n’est pas considéré par la chaudière. Je peux observer les trams envoyés quelques secondes plus tard au module hydraulique par la chaudière. La consigne de température de chauffage est modifié par rapport à la 2ème tram reçu par la chaudière.

Je vous partage mon fichier d’analyse sur le drive avec les trams que j’ai identifiés pour les satellites et le module hydraulique ainsi que quelques onglet pour décrypter les trams reçu.

@Burn , Il serait intéressant de les ajouter sur ton wiki. Peux-tu me donner accès en écriture ou peux-tu les ajouter ?

Je vous partage aussi mon code de test fait sur arduino pour renvoyer une tram modifié.
Je vais travailler sur un code d’intégration avec HomeAssist à partir du code de Burn. Je vais passer sur IO Platform pour rester cohérant.

Dans code ci-dessous, j’ai implémenté une interruption pour la réception radio afin d’éviter de bloquer le code pendant 12s suite à la réception. Je vous conseille d’utiliser cette méthode pour un code temps réel.

#include <Arduino.h>
#include <RadioLib.h>

SX1262 radio = new Module(SS, DIO0, RST_LoRa, BUSY_LoRa); 

byte TramSat[RADIOLIB_SX126X_MAX_PACKET_LENGTH];
byte TramChaud[RADIOLIB_SX126X_MAX_PACKET_LENGTH];
byte TxByteArr[RADIOLIB_SX126X_MAX_PACKET_LENGTH];
byte byteArr[RADIOLIB_SX126X_MAX_PACKET_LENGTH];
bool StatusSat   = false;
bool StatusChaud = false;
int LastLen;

// flag to indicate that a packet was received
volatile bool receivedFlag = false;

void setup() {
    Serial.begin(115200);
    int state = radio.beginFSK();
    state = radio.setFrequency(868.96);
    state = radio.setBitRate(25.0);
    state = radio.setFrequencyDeviation(50.0);
    state = radio.setRxBandwidth(250.0);
    state = radio.setPreambleLength(4);
    // Set your own adress
    uint8_t network_id[] = {0x12, 0x34, 0x45, 0x67};
    state = radio.setSyncWord(network_id, sizeof(network_id));

    Serial.println("Prog Starting");

  // set the function that will be called
  // when new packet is received
  radio.setPacketReceivedAction(setFlag);

  // start listening for LoRa packets
  Serial.print(F("[SX1262] Starting to listen ... "));
  state = radio.startReceive();
  if (state == RADIOLIB_ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    while (true);
  }
}

// this function is called when a complete packet
// is received by the module
// IMPORTANT: this function MUST be 'void' type
//            and MUST NOT have any arguments!
#if defined(ESP8266) || defined(ESP32)
  ICACHE_RAM_ATTR
#endif
void setFlag(void) {
  // we got a packet, set the flag
  receivedFlag = true;
}

void loop() {

  if(receivedFlag) {
    // reset flag
    receivedFlag = false;

    int len = radio.getPacketLength();
    LastLen = len;
    //byte byteArr[len];
    int state = radio.readData(byteArr, len);
    radio.clearPacketReceivedAction();
    //int state = radio.receive(byteArr, 0);
    if (state == RADIOLIB_ERR_NONE || state == RADIOLIB_ERR_CRC_MISMATCH) {
        
        Serial.printf("RECEIVED [%2d] : ", len);
        for (int i = 0; i < len; i++) 
            Serial.printf("%02X ", byteArr[i]);
        Serial.println("");

      // Check Sat
      if ( len == 23 && (byteArr[0] == 0x80) && (byteArr[1] == 0x09) && (byteArr[4] == 0x01)){
        //Serial.println("Envoie tram satellite modifié");
        StatusSat = true;
        // Record last satellite tram
        for (int i = 0; i < len; i++){
            TramSat[i] = byteArr[i]; 
            TxByteArr[i] = byteArr[i];
        }
      }

      // CRC error
      if (state == RADIOLIB_ERR_CRC_MISMATCH){
        Serial.println("Radio CRC error");
      }
    
    } else {
      Serial.print("Radio State: ");Serial.println(state);
    }
  }

      if (StatusSat == true && LastLen == 49 && (byteArr[0] == 0x09) && (byteArr[1] == 0x80) && (byteArr[4] == 0x81))
      { 
        StatusSat = false;
        
        // Change setpoint
        TxByteArr[3] += 1;
        TxByteArr[17] = 0x00;
        TxByteArr[18] = 0x32;// 0xE6: 23°C 0x32: 5°C
        TxByteArr[20] = 0x10;// 0x10: Dérogation Hors Gel

        // Transmit new data
        int state = radio.transmit(TxByteArr, 23);
        if (state == RADIOLIB_ERR_NONE) 
        {
          //Serial.println("Transmission réussie");
          Serial.printf("SEND____ [%2d] : ", 23);
          for (int i = 0; i < 23; i++)
              Serial.printf("%02X ", TxByteArr[i]);
          Serial.println();

          // start listening for LoRa packets
          //Serial.print(F("[SX1262] Starting to listen ... "));
          receivedFlag = false;
          state = radio.startReceive();
          if (state != RADIOLIB_ERR_NONE) {
            Serial.print(F("startReceive failed, code "));
            Serial.println(state);
          }
        }
        else
        {
          Serial.println("Erreur lors de la transmission");
        }
      }
}

@mgre , J’ai aussi des problèmes de réception des trams de la chaudière. En creusant, le checksum est en erreur mais la tram est bien reçu. Dans mon code ci-dessus, je reçois les tram avec checksum invalide. J’observe très peu d’écart dans les tram identifié avec erreur (Dernier onglet de mon fichier Excel).
As-tu trouvé une solution au problème ?
J’ai testé différentes configurations radio sans succès.
Dans mon concept, le problème est gênant !!!

Au plaisir de vous lire.

j’ai poussé une PR dans ce sens sur la branche dev de @Burn

Burnallover/frisquet-mqtt/pull/3