c est mon cas je ne connais pas grand chose ![]()
par contre j avour que je recupererais bien trois de mes ancien modules pour les remettres dans le schambres .
si tu a des liens ou de la doc pour le flashage je suis preneur
c est mon cas je ne connais pas grand chose ![]()
par contre j avour que je recupererais bien trois de mes ancien modules pour les remettres dans le schambres .
si tu a des liens ou de la doc pour le flashage je suis preneur
flashage pas si compliqué, il faut juste un tournevis. Le flashage fonctionne débranché du secteur 220V donc pas de risque électrique. Une fois flashé il suffit de rebrancher le boitier au radiateur. J’envoie une documentation complète avec photos d’ici 10 jours.
Au final, je pense que le boitier marchera mieux qu’avant car les valeurs de températures, humidité et conso elec ne passeront plus par le cloud.
Pour le flashage, il faut dépenser un peu plus de 10€ :
et
les cables qui vont bien (mâles femeles)
top j attend ton retex complet alors .
cable dupont j ai , le uart je vais acheter sa sera pas perdu .
une question car chez moi le veritable probleme que j ai rencontrer avec les modules etait de ne pas pouvoir regler l hysterisie et je me retrouvais avec une temperature de 17° pour une consigne a 20° .
maintenant avec le generic thermostat natif de HA je peut regler sa et la temperature ne redessend jamais sous les 19.8° pour une consigne a 20° .
Transformez votre boîtier Tiko en un thermostat ESPHome entièrement intégré à Home Assistant : pilotage fil pilote, mesure de consommation, LED RGB, capteurs de température et humidité.
AVERTISSEMENT — LISEZ ATTENTIVEMENT AVANT DE CONTINUER
Ce document est fourni à titre purement expérimental et éducatif. Les manipulations décrites impliquent l’ouverture et la modification d’un appareil électrique raccordé au secteur 230 V, le remplacement du firmware d’origine par un firmware tiers, ainsi que des branchements sur des composants électroniques.
En suivant ce guide, vous acceptez que :
- L’auteur décline toute responsabilité en cas d’incident, d’accident, de blessure, de dommage matériel, d’incendie, d’électrocution ou de tout autre préjudice résultant directement ou indirectement de l’application de ces instructions.
- Ces modifications annulent la garantie constructeur de votre appareil et peuvent ne pas être conformes aux normes électriques en vigueur.
- Vous agissez à vos propres risques et sous votre entière responsabilité.
- Toute intervention sur un appareil raccordé au secteur doit être réalisée hors tension et idéalement par une personne possédant les compétences électriques requises.
Ce projet n’est affilié à aucun fabricant. Les marques citées appartiennent à leurs propriétaires respectifs.
Le cavalier de l’adaptateur USB UART-TTL doit être positionné sur 5 V.
Sur le serveur Home Assistant :
Sur votre Mac/PC :
Photo au final (attention photo prise à un autre moment, les couleurs ne sont pas les mêmes que sur les précédentes photos)
Connectez le boîtier Tiko à l’adaptateur USB UART-TTL selon le tableau suivant :
| Boîtier Tiko | Adaptateur USB UART-TTL | Remarque |
|---|---|---|
IO |
— | Fil libre (utilisé plus tard) |
GND |
GND |
|
5V |
5V |
|
RX |
TX |
Croisé |
TX |
RX |
Croisé |
EN |
— | Fil libre (utilisé plus tard) |
Une fois le branchement effectué, branchez l’adaptateur USB sur votre Mac/PC.
Dans le terminal :
Étape 1 — Lister les périphériques série :
ls /dev/tty.usb*
Exemple de retour : /dev/tty.usbserial-10
Étape 2 — Ouvrir une session série :
screen /dev/tty.usbserial-10 115200
usbserial-10 par le périphérique obtenu à l’étape 1115200 est le débit en bauds
Pour quitter
screen:Ctrl+ApuisKpuisY.
Si rien ne s’affiche, redémarrez le Tiko en faisant un cavalier bref entre EN et GND (utilisez le fil libre branché sur EN et faites-le toucher la patte GND). Recommencez une ou deux fois si nécessaire.
Vous devriez voir un log de démarrage ressemblant à ceci :
I (526) spiram: PSRAM initialized, cache is in normal (1-core) mode.
I (533) cpu_start: Pro cpu up.
I (537) cpu_start: Starting app cpu, entry point is 0x40375a80
I (0) cpu_start: App cpu up.
I (963) spiram: SPI SRAM memory test OK
I (1024) cpu_start: Pro cpu start user code
I (1024) cpu_start: cpu freq: 240000000
I (1024) cpu_start: Application information:
I (1027) cpu_start: Project name: firmware
I (1032) cpu_start: App version: 1.6.3
I (1037) cpu_start: Compile time: Aug 19 2025 12:39:46
I (1043) cpu_start: ELF file SHA256: ec2684c9f09d653a...
I (1049) cpu_start: ESP-IDF: v4.4.8-7-gb9b0b4d5e9-dirty
I (1056) cpu_start: Min chip rev: v0.0
I (1061) cpu_start: Max chip rev: v0.99
I (1066) cpu_start: Chip rev: v0.1
I (1071) heap_init: Initializing. RAM available for dynamic allocation:
...
I (00:00:00.145) main: This is esp32s3 chip with 2 CPU core(s), WiFi/BLE,
I (00:00:00.153) main: silicon revision 0,
I (00:00:00.158) main: 8MB external flash
I (00:00:00.162) main: Minimum free heap size: 8556859 bytes
I (00:00:00.416) hw: Terminal output will be disabled now.
Étape 3 — Quitter screen pour libérer la connexion :
Ctrl+A puis K puis Y
Nous savons maintenant que la puce ESP32 du Tiko est maintenant visible par votre Mac/PC. ![]()
Débranchez puis rebranchez l’adaptateur USB
Dans Chrome, ouvrez votre instance HA puis accédez à ESPHome Device Builder
Cliquez sur « New Device » (en bas à droite), renseignez le nom de votre Wi-Fi et son mot de passe.
Donnez un nom à votre appareil (exemple « tiko-chambre ») puis cliquez « Next »
Séquence de connexion (mode flash) :
L’installation prend environ 2 minutes (maintenez IO <->GND pendant toute la durée)
À la fin du flashage, ESPHome a remplacé le firmware d’origine
Important : Le Wi-Fi du Tiko ne fonctionne qu’en alimentation 220 V. En USB (5 V), le module Wi-Fi ne s’active pas tant qu’il est branché en 5V sur le Mac/PC.
| Situation | Solution |
|---|---|
| Erreur affichée mais le device est Online | Pas de souci, continuez |
| Erreur affichée et le device reste Offline | Débranchez/rebranchez l’USB |
| Le Tiko ne s’affiche pas Online | Essayez de reflasher via web.esphome.io |
Tant que le Tiko est branché en USB, il doit apparaître Online dans HA pour que vous puissiez pousser la configuration Wi-Fi et le débrancher définitivement du Mac/PC pour le rebrancher en 220V et qu’il se connecte tout seul en Wifi. Une fois connecté en Wi-Fi et sur 220V, les mises à jour suivantes se feront sans fil Over-the-air (OTA).
Dans ESPHome Builder → votre Tiko → Edit, vous trouverez la configuration minimale générée automatiquement :
esphome:
name: tiko-chambre
friendly_name: "Tiko Chambre"
api:
encryption:
key: "xxx"
ota:
- platform: esphome
password: "yyy"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Tiko-Chambre"
password: "zzz"
on_bootDans le bloc esphome:, ajoutez :
esphome:
name: tiko-chambre
friendly_name: "Tiko Chambre"
on_boot:
- priority: 600
then:
- light.turn_on:
id: led
brightness: 100%
effect: "Rainbow"
- priority: -100
then:
- delay: 500ms
- lambda: |-
uint8_t f[5] = {0x6A, 0x80|0x32, 0x00, 0xA6, 0};
uint8_t s=0; for(int i=0;i<4;i++) s+=f[i]; f[4]=~s;
id(ht7017_uart).write_array(f, 5);
- delay: 150ms
- lambda: |-
uint8_t f[5] = {0x6A, 0x80|0x59, 0x00, 0x7E, 0};
uint8_t s=0; for(int i=0;i<4;i++) s+=f[i]; f[4]=~s;
id(ht7017_uart).write_array(f, 5);
- switch.turn_on: fp_arret
- switch.turn_off: fp_confort
Dans le bloc wifi:, ajoutez les callbacks de connexion/déconnexion (LED verte pulsée à la connexion, rouge fixe en cas de déconnexion) :
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Tiko-Chambre"
password: "zzz"
on_connect:
- delay: 5s
- light.turn_on:
id: led
red: 0%
green: 100%
blue: 0%
effect: "Pulse"
- delay: 3s
- light.turn_off:
id: led
transition_length: 0s
on_disconnect:
- light.turn_on:
id: led
red: 100%
green: 0%
blue: 0%
effect: "None"
À ce stade, faites Save puis Install pour vérifier que tout fonctionne et que votre Tiko est connecté.
En cas d’erreur, copiez l’intégralité de votre code YAML et faites-le vérifier par une IA (Mistral) — les erreurs d’indentation sont fréquentes en YAML.
A nouveau, retournez dans Edit et ajoutez à la fin le code commun qui fait fonctionner tous les composants du Tiko :
# ╔══════════════════════════════════════════════════════════════╗
# ║ CODE COMMUN — Module Tiko (ESPHome thermostat natif) ║
# ║ ║
# ║ Hardware : ESP32-S3-WROOM-1 (module Tiko) ║
# ║ GPIO6 → MOC A : signal Arrêt (ON = délestage) ║
# ║ GPIO47 → MOC B : signal Confort (ON = montée en T°) ║
# ║ GPIO3 → LED WS2812 ║
# ║ GPIO5/4 → I2C SDA/SCL (SHT3xD @0x44 + @0x45) ║
# ║ GPIO17/18 → UART TX/RX (HT7017 mesure conso) ║
# ╚══════════════════════════════════════════════════════════════╝
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
logger:
level: INFO
web_server:
port: 80
i2c:
sda: GPIO5
scl: GPIO4
scan: true
id: bus_i2c
# ============================================================
# GLOBALS
# ============================================================
globals:
- id: last_cmd
type: uint8_t
initial_value: '0'
- id: prev_energy_raw
type: uint32_t
initial_value: '0'
- id: first_read
type: bool
initial_value: 'true'
- id: last_raw_power
type: float
initial_value: '0.0'
- id: watt_multiplier
type: float
restore_value: true
initial_value: '1.0'
- id: boost_active
type: bool
initial_value: 'false'
# ============================================================
# 1. THERMOSTAT
# ============================================================
# Popups HA :
# Mode → Chauffage (HEAT) / Éteint (OFF)
# Préréglage → Confort / Éco / Hors-Gel
#
# Humidité affichée en haut de la carte grâce à humidity_sensor.
#
# Quand on change le preset, la consigne est appliquée depuis
# les number via preset_change.
# Quand on touche manuellement la consigne, le preset est
# automatiquement effacé par le composant thermostat natif.
# ============================================================
climate:
- platform: thermostat
name: "Radiateur"
id: tiko_climate
sensor: temp_ambiante
humidity_sensor: humidity_ambiante
visual:
min_temperature: 5 °C
max_temperature: 30 °C
temperature_step: 0.5 °C
min_heating_off_time: 30s
min_heating_run_time: 30s
min_idle_time: 30s
heat_deadband: 0.3 °C
heat_overrun: 0.3 °C
default_preset: Confort
on_boot_restore_from: memory
# --- Custom presets français ---
preset:
- name: Confort
default_target_temperature_low: 20.0 °C
- name: Éco
default_target_temperature_low: 16.5 °C
- name: Hors-Gel
default_target_temperature_low: 7.0 °C
# Quand le preset change, appliquer la consigne du number correspondant
preset_change:
- lambda: |-
if (id(tiko_climate).has_custom_preset()) {
auto preset = id(tiko_climate).get_custom_preset();
float target = 20.0f;
if (preset == "Confort") {
target = id(temp_confort).state;
} else if (preset == "Éco") {
target = id(temp_eco).state;
} else if (preset == "Hors-Gel") {
target = id(temp_horsgel).state;
}
auto call = id(tiko_climate).make_call();
call.set_target_temperature(target);
call.perform();
ESP_LOGI("TIKO", "Preset → %.1f°C", target);
}
# --- Action de chauffe → fil pilote Confort ---
heat_action:
- switch.turn_off: fp_arret
- switch.turn_on: fp_confort
- logger.log: "Thermostat → Chauffe ON"
- if:
condition:
and:
- switch.is_on: led_heating_enabled
- lambda: 'return !id(boost_active);'
then:
- light.turn_on:
id: led
red: 100%
green: 35%
blue: 0%
effect: "Pulse"
# --- Action repos → fil pilote Arrêt ---
idle_action:
- switch.turn_on: fp_arret
- switch.turn_off: fp_confort
- logger.log: "Thermostat → Chauffe OFF"
- if:
condition:
and:
- switch.is_on: led_heating_enabled
- lambda: 'return !id(boost_active);'
then:
- light.turn_off:
id: led
transition_length: 0s
# --- Mode OFF → tout couper ---
off_mode:
- switch.turn_on: fp_arret
- switch.turn_off: fp_confort
- light.turn_off:
id: led
transition_length: 0s
- logger.log: "Thermostat → Mode OFF"
# ============================================================
# 2. GPIO fil pilote (internal)
# ============================================================
switch:
- platform: gpio
pin: GPIO6
id: fp_arret
restore_mode: ALWAYS_OFF
internal: true
- platform: gpio
pin:
number: GPIO47
id: fp_confort
restore_mode: ALWAYS_OFF
internal: true
- platform: template
name: "LED chauffage actif"
id: led_heating_enabled
icon: "mdi:led-on"
optimistic: true
restore_mode: RESTORE_DEFAULT_OFF
entity_category: config
- platform: template
name: "Boost 30 min"
icon: "mdi:fire"
id: boost_switch
optimistic: true
restore_mode: ALWAYS_OFF
turn_on_action:
- script.execute: boost_script
turn_off_action:
- script.stop: boost_script
- globals.set:
id: boost_active
value: 'false'
- light.turn_off:
id: led
transition_length: 0s
- climate.control:
id: tiko_climate
custom_preset: Confort
- logger.log: "Boost arrêté → retour preset Confort"
# ============================================================
# 3. RÉGLAGES — Consignes par mode + Hystérésis + Calibration
# ============================================================
number:
- platform: template
name: "Température Confort"
id: temp_confort
icon: "mdi:home-thermometer"
unit_of_measurement: "°C"
min_value: 15
max_value: 28
step: 0.5
initial_value: 20.0
optimistic: true
restore_value: true
entity_category: config
mode: box
on_value:
- lambda: |-
// Si le preset actif est Confort, appliquer immédiatement
if (id(tiko_climate).has_custom_preset()) {
auto preset = id(tiko_climate).get_custom_preset();
if (preset == "Confort") {
auto call = id(tiko_climate).make_call();
call.set_target_temperature(x);
call.perform();
ESP_LOGI("TIKO", "Confort → %.1f°C (live)", x);
}
}
- platform: template
name: "Température Éco"
id: temp_eco
icon: "mdi:leaf"
unit_of_measurement: "°C"
min_value: 10
max_value: 25
step: 0.5
initial_value: 16.5
optimistic: true
restore_value: true
entity_category: config
mode: box
on_value:
- lambda: |-
if (id(tiko_climate).has_custom_preset()) {
auto preset = id(tiko_climate).get_custom_preset();
if (preset == "Éco") {
auto call = id(tiko_climate).make_call();
call.set_target_temperature(x);
call.perform();
ESP_LOGI("TIKO", "Éco → %.1f°C (live)", x);
}
}
- platform: template
name: "Température Hors-Gel"
id: temp_horsgel
icon: "mdi:snowflake-thermometer"
unit_of_measurement: "°C"
min_value: 5
max_value: 15
step: 0.5
initial_value: 7.0
optimistic: true
restore_value: true
entity_category: config
mode: box
on_value:
- lambda: |-
if (id(tiko_climate).has_custom_preset()) {
auto preset = id(tiko_climate).get_custom_preset();
if (preset == "Hors-Gel") {
auto call = id(tiko_climate).make_call();
call.set_target_temperature(x);
call.perform();
ESP_LOGI("TIKO", "Hors-Gel → %.1f°C (live)", x);
}
}
- platform: template
name: "Hystérésis"
id: hysteresis_val
icon: "mdi:thermometer-lines"
unit_of_measurement: "°C"
min_value: 0.1
max_value: 2.0
step: 0.1
initial_value: 0.3
optimistic: true
restore_value: true
entity_category: config
mode: box
on_value:
- lambda: |-
id(tiko_climate).set_heat_deadband(x);
id(tiko_climate).set_heat_overrun(x);
ESP_LOGI("TIKO", "Hystérésis → %.1f°C", x);
- platform: template
name: "Puissance de référence (W)"
id: ref_power
unit_of_measurement: "W"
min_value: 100
max_value: 5000
step: 50
initial_value: 750
optimistic: true
restore_value: true
entity_category: config
mode: box
# ============================================================
# 4. LED WS2812
# ============================================================
light:
- platform: esp32_rmt_led_strip
id: led
name: "LED"
pin: GPIO3
num_leds: 1
rgb_order: GRB
chipset: WS2812
effects:
- addressable_rainbow:
name: "Rainbow"
speed: 10
width: 50
- pulse:
name: "Pulse"
min_brightness: 20%
max_brightness: 100%
# ============================================================
# CAPTEURS
# ============================================================
sensor:
- platform: sht3xd
address: 0x44
temperature:
name: "Température ambiante"
id: temp_ambiante
humidity:
name: "Humidité ambiante"
id: humidity_ambiante
update_interval: 30s
- platform: sht3xd
address: 0x45
temperature:
name: "Température carte"
entity_category: diagnostic
humidity:
name: "Humidité carte"
entity_category: diagnostic
update_interval: 60s
- platform: template
name: "Puissance instantanée"
id: power_sensor
unit_of_measurement: "W"
accuracy_decimals: 0
state_class: measurement
device_class: power
update_interval: never
- platform: template
name: "Énergie totale"
id: energy_sensor
unit_of_measurement: "kWh"
accuracy_decimals: 4
state_class: total_increasing
device_class: energy
update_interval: never
# ============================================================
# POLLING UART HT7017 (toutes les 10s)
# ============================================================
interval:
- interval: 10s
then:
- lambda: |-
id(last_cmd) = 0x0D;
uint8_t f[2] = {0x6A, 0x0D};
id(ht7017_uart).write_array(f, 2);
# ============================================================
# SCRIPTS
# ============================================================
script:
- id: boost_script
mode: restart
then:
- logger.log: "Boost activé pour 30 minutes"
- globals.set:
id: boost_active
value: 'true'
- lambda: |-
float target = id(tiko_climate).target_temperature + 3.0f;
if (target > 30.0f) target = 30.0f;
auto call = id(tiko_climate).make_call();
call.set_target_temperature(target);
call.perform();
ESP_LOGI("TIKO", "Boost → consigne %.1f°C", target);
- light.turn_on:
id: led
red: 100%
green: 30%
blue: 0%
effect: "Pulse"
- delay: 30min
- globals.set:
id: boost_active
value: 'false'
- switch.turn_off: boost_switch
- light.turn_off:
id: led
transition_length: 0s
- climate.control:
id: tiko_climate
custom_preset: Confort
- logger.log: "Boost terminé → retour preset Confort"
# ============================================================
# UART — HT7017 (mesure consommation)
# ============================================================
uart:
id: ht7017_uart
tx_pin: 17
rx_pin: 18
baud_rate: 4800
data_bits: 8
parity: EVEN
stop_bits: 1
rx_buffer_size: 256
debug:
direction: RX
dummy_receiver: true
after:
timeout: 40ms
sequence:
- lambda: |-
if(bytes.size() != 4) return;
uint32_t raw = ((uint32_t)bytes[0]<<16)
| ((uint32_t)bytes[1]<<8)
| (uint32_t)bytes[2];
ESP_LOGD("HT7017_RAW", "cmd=0x%02X raw=0x%06X (%u) bytes=%s",
id(last_cmd), raw, raw,
format_hex_pretty(bytes).c_str());
if(id(last_cmd) == 0x0D) {
if(!id(first_read)) {
uint32_t delta = 0;
if(raw >= id(prev_energy_raw))
delta = raw - id(prev_energy_raw);
else
delta = (0xFFFFFF - id(prev_energy_raw)) + raw + 1;
id(last_raw_power) = (float)delta * 112.5f;
float p = id(last_raw_power) * id(watt_multiplier);
id(power_sensor).publish_state(p);
float e = (float)raw * id(watt_multiplier) / 3200.0f;
id(energy_sensor).publish_state(e);
} else {
id(first_read) = false;
}
id(prev_energy_raw) = raw;
}
# ============================================================
# BOUTONS DIAGNOSTIC HT7017
# ============================================================
button:
- platform: template
name: "Calibrer maintenant"
entity_category: config
on_press:
- lambda: |-
if(id(last_raw_power) > 0.0f) {
id(watt_multiplier) = id(ref_power).state / id(last_raw_power);
ESP_LOGI("HT7017", "Calibration OK: ref=%.0fW brut=%.1f mult=%.6f",
id(ref_power).state, id(last_raw_power), id(watt_multiplier));
} else {
ESP_LOGW("HT7017", "Pas encore de mesure brute");
}
- platform: template
name: "HT7017 Reset Software"
entity_category: diagnostic
on_press:
- lambda: |-
uint8_t wp[5] = {0x6A, 0x80|0x32, 0x00, 0xBC, 0};
uint8_t s=0; for(int i=0;i<4;i++) s+=wp[i]; wp[4]=~s;
id(ht7017_uart).write_array(wp, 5);
delay(100);
uint8_t rst[5] = {0x6A, 0x80|0x33, 0x00, 0x55, 0};
s=0; for(int i=0;i<4;i++) s+=rst[i]; rst[4]=~s;
id(ht7017_uart).write_array(rst, 5);
id(first_read) = true;
id(prev_energy_raw) = 0;
ESP_LOGI("HT7017", "Reset logiciel envoyé");
- platform: template
name: "HT7017 Probe ChipID"
entity_category: diagnostic
on_press:
- lambda: |-
id(last_cmd) = 0x1B;
uint8_t f[2] = {0x6A, 0x1B};
id(ht7017_uart).write_array(f, 2);
- platform: template
name: "HT7017 Probe URms"
entity_category: diagnostic
on_press:
- lambda: |-
id(last_cmd) = 0x08;
uint8_t f[2] = {0x6A, 0x08};
id(ht7017_uart).write_array(f, 2);
- platform: template
name: "HT7017 Probe PowerP1"
entity_category: diagnostic
on_press:
- lambda: |-
id(last_cmd) = 0x0A;
uint8_t f[2] = {0x6A, 0x0A};
id(ht7017_uart).write_array(f, 2);
# ============================================================
# DIVERS
# ============================================================
text_sensor:
- platform: wifi_info
ip_address:
name: "IP Address"
on_value:
- if:
condition:
lambda: 'return x == "192.168.4.1";'
then:
- light.turn_on:
id: led
effect: "None"
red: 100%
green: 50%
blue: 0%
La configuration HA utilise le thermostat natif de HA. Tout en conservant la logique retenue du constructeur avec des modes prédéfinis : on définit des températures cibles par mode (Confort, Éco, Hors-Gel), puis on sélectionne un mode. Le radiateur chauffe jusqu’à atteindre la consigne.
L’hystérésis (tolérance de déclenchement) est réglable dans la section Configuration. Par défaut : 0,3 °C.
Attention : un réglage trop proche de 0°C risque de provoquer des cycles marche/arrêt très rapides au voisinage de la consigne, ce qui peut endommager le radiateur.
Le capteur de consommation doit être calibré à partir de la puissance nominale de votre radiateur (500 W, 750 W, 1000 W, 1500 W…).
Le coefficient de calibration (watt_multiplier) est sauvegardé en flash et survit aux redémarrages.
Ces boutons permettent de débuguer le capteur de consommation. Les résultats s’affichent dans les logs (ESPHome Builder → Composant → Logs). Le bouton Reset permet de réinitialiser le HT7017 s’il ne répond plus.
Vous avez deux options :
Active une consigne temporaire de Confort + 3 °C pendant 30 minutes. À l’issue du boost, le radiateur revient automatiquement au mode en cours. Le boost peut être interrompu à tout moment en désactivant le switch.
Utilisez le planificateur intégré à HA (ou tout autre outil de planification de votre choix) pour créer des scènes qui changent le mode en fonction des heures et des jours.
Permet de contrôler la LED RGB du boîtier et de régler ses couleurs. Dans la section Configuration, il est possible d’activer un indicateur visuel orange pulsé lorsque le radiateur est en chauffe.
Le Tiko embarque deux capteurs SHT3xD situés aux extrémités du boîtier :
0x44) — plus éloigné du module ESP, il reflète mieux la température de la pièce (vérifié par comparaison avec un thermomètre à alcool)0x45) — proche du module ESP, considéré comme capteur interne (visible dans Diagnostic)Une fois calibrés, ces capteurs indiquent la consommation électrique en temps réel et l’énergie totale consommée.
N’hésitez pas à faire vos retours. Bonne chauffe !
Bravo ça donne envie de se lancer un post si bien détaillé mais on vient me retirer les modules Tiko dans 1 mois ![]()
bonjour
tu fait comme moi j ai appeler pour leur dire que j avais tout enlever , la dame au telephone m a clairement dit que sa valais pas le coup de faire deplacer quelqu un si le materiel etait deja enlever et que je devais le mettre a la dechetterie .
resultat j ai mes 7 boitiers a la maison et mon contrat est officielement arreter donc les boitiers m appartiennent maintenant .
super tuto bien detailler et imager merci , des que je recois mon adaptateur je me lance pour faire un test .
question a la con les cables dupont tiennent tout seul en force dans le pcb ?
Ça marche vraiment ça ? Surtout que j’en ai déjà enlevé une partie pour mettre des Nodon !
ba j ai fait comme toi j ai tout enlever pour tout remplacer par du nodon avant de me retrouver bloquer , et quand j ai appeler pour prendre rendez vous pour le retrait la dame a pas voulu faire deplacer quelqu un seulement pour recuperer le matos , elle ma donc envoyer un mail avec la resiliation de contrat a c est tout .
du coup je vais essayer le tuto gentiment proposer pour reabiliter au moins dans les chambres les modules tiko car je n est mis des nodon que dans ma piece a vivre .
Oui les câbles tiennent seuls dans les trous; le contact est suffisant.
Salut ah ben voilà c’est fait pour moi aussi ! J’ai 7 ou 8 modules à flasher maintenant ![]()
Doc et code mis à jour avec composant thermostat dans le post initial
Plusieurs jours que j’utilise le boitier flashé et ça semble marcher à merveille.
Salut ! Est ce que tu aurais la méthode pour réinitialiser le module ? J’ai du m’emmêler les pinceaux et je voudrais le réinitialiser complètement. Merci d’avance !
J’ai des erreurs quand je tente de compiler pour l’installer manuellement via HA :
Et quand je tente une installation directement dans esphome web, ça flashe bien mais après quand il tente de se reconnecter, il m’indique une erreur « Improv wifi serial not detected »
J’ai tenté sur 2 modules différents et j’obtiens la même chose (avec la même méthode).
J’ai l’impression que c’est en lien avec l’histoire du wifi qui s’active pas en 5V mais il apparaît pas plus en ligne dans HA.
Comment je peux mettre mes infos de wifi car je les ai jamais renseignées ?
Si j’interroge une IA, elle me dit qu’il peut y avoir des soucis avec les ESPHome Builder de HA au niveau compilation avec les dernières versions. Comme ça flashe bien avec le web, mais qu’il n’y a pas de yaml implanté, je vais essayer de pousser un yaml simple pour voir
EDIT : bon j’ai compilé un yaml en local, je l’ai importé dans le module, mais il ne se montre pas plus dans HA ni en point d’accès wifi, il ne démarre pas je pense.
Il n’y a que ça dans les logs :
[21:04:32]ESP-ROM:esp32s3-20210327
[21:04:32]Build:Mar 27 2021
[21:04:32]rst:0x1 (POWERON),boot:0x23 (DOWNLOAD(USB/UART0))
[21:04:32]waiting for download
[21:04:36]ESP-ROM:esp32s3-20210327
[21:04:36]Build:Mar 27 2021
[21:04:36]rst:0x1 (POWERON),boot:0x23 (DOWNLOAD(USB/UART0))
[21:04:36]waiting for download
Salut,
Oui la connexion série a été quelque fois capricieuse mais je suis finalement arrivé au bout avec qq branchements/débranchements. Par contre effectivement le WIFI ne marchera jamais tant que le boitier n’est pas alimenté par le 220V.
Concernant les identifiants wifi, je me suis posé la même question. En fait, ESP Builder ne te les demande que pour le premier appareil que tu flashes et ensuite il les stocke dans un fichier HA /homeassistant/esphome/secrets.yaml pour ne pas avoir à les mettre en clair dans le yaml de chaque appareil.
Pour reflasher à nouveau, j’ai simplement refais la procédure
Séquence de connexion (mode flash) :
- Connectez le fil libre de IO à GND (maintenez)
- Avec le fil libre de EN, touchez GND brièvement puis relâchez
- Tout en maintenant IO → GND, cliquez sur « Connect »
- Si cela ne fonctionne pas, relâchez tout et recommencez la séquence
Ensuite si la procédure depuis HA ESP Home Builder va au bout, il aura forcément mis la partie
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Tiko-Chambre"
password: "zzz"
et se connectera à ton wifi dès branchement au 220V. Je dirais qu’il faut arriver à faire la procédure depuis HA ESPHomeBuilder .
Hello,
Je n’y arrive pas du coup avec cette erreur de compilation (qui n’apparaît pas si je build en local)…
Tu pourrais me donner la version de HA ESPHomeBuilder ? Que je regarde si j’ai la même ou non. Peut-être qu’avec un downgrade du module, je pourrais compiler dans HA.
Merci !
ESPHome Device Builder
Version actuelle : 2026.2.2
Merci, je viens de faire la MAJ mais j’ai toujours l’erreur de compilation. Je viens de refaire la manip via ESPHome web, la prochaine étape est de rebranché le Tiko et on verra bien si ça boote ![]()
As tu essayé de Désinstaller puis réinstaller l’add-on ESPHome. Il semble que ton erreur de compilation vienne du cache de HA Esphomebuilder il y a du avoir un bug lors du téléchargement de l’addon.
Supprime ausssi le dossier de cache
/data/cache/platformio
Ta capture montre que le bug vient de là. rien à voir avec le boitier ou la flashage, c’est pe l’installation de espbuilder qui a ete mal mise à jour ou interrompue ( elle peut prendre un’peu de temps)
Salut !
Alors en effet, en le connectant, j’ai pu le découvrir sur HA ! Waouh !
Maintenant, quand je tente de mettre les différentes yaml, ça me dit :
Et ça veut pas l’envoyer sur le module…
Si je commente pour avancer, pareil il trouve pas les « switch.turn_on » et là c’est plus sensible que la led vu que c’est le fil pilote…
EDIT : je comprends qu’il faut tout le fichier pour qu’il trouve les « variables » du bloc tout en bas. Je poursuis
PS : la réinstallation de l’app ESPHomeBuilder permet de corriger les erreurs, merci pour l’astuce !
Ça a l’air de fonctionner ! Maintenant faut que je voie si je peux faire fonctionner la soufflerie ou non mais c’est un plus