@haribo77 ne t’inquiètes pas, tout est sous contrôle, je pense à tout
. 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. ![]()
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
.. 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
), 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.
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:
-
Je suis surpris de ne plus avoir la température ambiante (Z1) qui remonte
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
.
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
- que le networkId affiché dans le portail de l’ESP est bien le tien?
- 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- 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“ ![]()
@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
. 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
)
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







