Bonjour,
Dans le but de permettre le pilotage de mon chauffage sur un ESP32 + écran ili9341 j’ai créé l’interface mais j’ai un souci pour le changement de couleur de l’icon.
Mon text_sensor:
text_sensor:
- platform: homeassistant
id: preset_mode_sejour
entity_id: climate.sejour
attribute: preset_mode
Le touchscreen:
- platform: touchscreen
id: touch_key3d
name: Zone 3d
x_min: 162
x_max: 239
y_min: 0
y_max: 69
page_id: page4
on_press:
- logger.log: "Bruno"
- logger.log:
format: "Situation chauffage %s and consigne %.1f"
args: [ 'id(preset_mode_sejour).state.c_str()', 'id(target_temperature_sejour).state' ]
on_state:
if:
condition:
binary_sensor.is_on: touch_key3d
then:
- homeassistant.service:
service: climate.set_preset_mode
data:
entity_id: climate.sejour
preset_mode: eco
Résultat du logger lors de l’appui sur la zone « Eco » alors que je suis sur le preset « home »:
[20:22:40][I][calib:707]: x=200, y=41, x_raw=3205, y_raw=3406
[20:22:40][D][binary_sensor:036]: 'Zone 3d': Sending state ON
[20:22:40][D][main:1348]: Bruno
[20:22:40][D][main:1351]: Situation chauffage home and consigne 18.0
[20:22:40][D][homeassistant.sensor:022]: 'climate.sejour::temperature': Got attribute state 17.00
[20:22:40][D][sensor:094]: 'target_temperature_sejour': Sending state 17.00000 with 1 decimals of accuracy
[20:22:40][D][homeassistant.text_sensor:015]: 'climate.sejour::preset_mode': Got attribute state 'eco'
[20:22:41][D][text_sensor:064]: 'preset_mode_sejour': Sending state 'eco'
[20:22:41][D][binary_sensor:036]: 'Zone 3d': Sending state OFF
Le display:
- id: page4
lambda: |-
auto red = Color(255, 0, 0);
auto green = Color(0, 255, 0);
auto blue = Color(0, 0, 255);
auto yellow = Color(255, 255, 0);
auto white = Color(255, 255, 255);
it.rectangle(0, 0, it.get_width(), it.get_height());
it.rectangle(164, 4, 72, 72, yellow);
it.print(172, 5, id(my_font12), my_white, "Eco");
if (id(preset_mode_sejour).state.c_str() == "eco") {
it.print(170, 14, id(material30), my_orange, "\U000F032A");
} else{
it.print(170, 14, id(material30), my_white, "\U000F032A");
}
Le problème c’est que cette ligne " if (id(preset_mode_sejour).state.c_str() == « eco ») {" ne fonctionne pas, je n’ai pas d’erreur mais pas de changement de couleur de l’icon alors que pour un interrupteur ça fonctionne bien:
it.rectangle(84, 4, 72, 72, yellow);
it.print(102, 5, id(my_font12), my_white, "INT");
if (id(intchauffage).state) {
it.print(90, 14, id(material30), my_orange, "\U000F0521");
} else{
it.print(90, 14, id(material30), my_blue, "\U000F0A19");
}
Une petite idée ?
Problème de synchro des informations ?
Conf : HAOS à jour
Merci d’avance
Bob