J’ai deux capteurs de temp sur le meme bus et je ne trouve pas la solution pour recuperer la valeur de ces deux capteurs pour les afficher sur un LCD
# Capteurs Temperature Air et Eau
dallas:
- pin: 23
sensor:
- platform: dallas
address: 0x8a3c01d607d30e28
name: "Temperature Air"
- platform: dallas
address: 0x713c01d607410428
name: "Temperature Eau"
# Example configuration entry
i2c:
sda: GPIO21
scl: GPIO22
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.print(0,0,"Temp Eau :");
it.print(0,1,"Temp Air :");
Sur mon dashboard , les temperatures sont bien affichées , c’est sur mon afficheur LCD que je n’y parviens pas.
Avez vous une piste ?
Ma configuration
[center]## System Information
version |
core-2023.5.3 |
installation_type |
Home Assistant OS |
dev |
false |
hassio |
true |
docker |
true |
user |
root |
virtualenv |
false |
python_version |
3.10.11 |
os_name |
Linux |
os_version |
6.1.21-v8 |
arch |
aarch64 |
timezone |
Europe/London |
config_dir |
/config |
Home Assistant Cloud
logged_in |
false |
can_reach_cert_server |
ok |
can_reach_cloud_auth |
ok |
can_reach_cloud |
ok |
Home Assistant Supervisor
host_os |
Home Assistant OS 10.1 |
update_channel |
stable |
supervisor_version |
supervisor-2023.04.1 |
agent_version |
1.5.1 |
docker_version |
23.0.3 |
disk_total |
57.8 GB |
disk_used |
4.9 GB |
healthy |
true |
supported |
true |
board |
rpi3-64 |
supervisor_api |
ok |
version_api |
ok |
installed_addons |
ESPHome (2023.5.3), File editor (5.6.0) |
Dashboards
dashboards |
1 |
resources |
0 |
mode |
auto-gen |
Recorder
oldest_recorder_run |
23 mai 2023 à 20:35 |
current_recorder_run |
24 mai 2023 à 16:50 |
estimated_db_size |
0.51 MiB |
database_engine |
sqlite |
database_version |
3.40.1 |
[/center]
Avec une recherche, tu tombes sur un sujet, par exe Ecran OLED et Polices ttf - #6 par vincen
Donc (avec la correction de la syntaxe yaml)
# Capteurs Temperature Air et Eau
dallas:
- pin: 23
sensor:
- platform: dallas
address: 0x8a3c01d607d30e28
name: "Temperature Air"
id: t_air
- platform: dallas
address: 0x713c01d607410428
name: "Temperature Eau"
id: t_eau
# Example configuration entry
i2c:
sda: GPIO21
scl: GPIO22
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.print(0,0,"Temp Eau : %.2f", id(t_air).state);
it.print(0,1,"Temp Air : %.2f", id(t_eau).state);
Super merci , j’essaie ca tout de suite
Bon ben y a un probleme
src/esphome/components/lcd_base/lcd_display.h:39:8: note: candidate expects 1 argument, 4 provided
src/esphome/components/lcd_base/lcd_display.h:41:8: note: candidate: 'void esphome::lcd_base::LCDDisplay::print(const string&)'
void print(const std::string &str);
^~~~~
src/esphome/components/lcd_base/lcd_display.h:41:8: note: candidate expects 1 argument, 4 provided
/config/esphome/esp-aquaponie.yaml:105:52: error: no matching function for call to 'esphome::lcd_pcf8574::PCF8574LCDDisplay::print(int, int, const char [17], float&)'
it.print(0,1,"Temp Air : %2.0f", id(t_eau).state);
^
In file included from src/esphome.h:33,
from src/main.cpp:3:
src/esphome/components/lcd_base/lcd_display.h:35:8: note: candidate: 'void esphome::lcd_base::LCDDisplay::print(uint8_t, uint8_t, const char*)'
void print(uint8_t column, uint8_t row, const char *str);
^~~~~
src/esphome/components/lcd_base/lcd_display.h:35:8: note: candidate expects 3 arguments, 4 provided
src/esphome/components/lcd_base/lcd_display.h:37:8: note: candidate: 'void esphome::lcd_base::LCDDisplay::print(uint8_t, uint8_t, const string&)'
void print(uint8_t column, uint8_t row, const std::string &str);
^~~~~
src/esphome/components/lcd_base/lcd_display.h:37:8: note: candidate expects 3 arguments, 4 provided
src/esphome/components/lcd_base/lcd_display.h:39:8: note: candidate: 'void esphome::lcd_base::LCDDisplay::print(const char*)'
void print(const char *str);
^~~~~
src/esphome/components/lcd_base/lcd_display.h:39:8: note: candidate expects 1 argument, 4 provided
src/esphome/components/lcd_base/lcd_display.h:41:8: note: candidate: 'void esphome::lcd_base::LCDDisplay::print(const string&)'
void print(const std::string &str);
^~~~~
src/esphome/components/lcd_base/lcd_display.h:41:8: note: candidate expects 1 argument, 4 provided
*** [/data/esp-aquaponie/.pioenvs/esp-aquaponie/src/main.cpp.o] Error 1
========================= [FAILED] Took 35.14 seconds =========================
voila le fichier log
Merci ça marche , j’ai regardé la doc , bien regardé la doc , recommencé et recommencé 
et puis trouvé
voici le code ,
i2c:
sda: GPIO21
scl: GPIO22
display:
platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.print(0,0,« Temp Eau : »);
it.print(0,1,« Temp Air : »);
it.printf(12,0,« %.1f », id(t_eau).state);
it.printf(12,1,« %.1f », id(t_air).state);
1 « J'aime »
Tu peux combiner les 2 (tout dans un printf, j’avais juste oublié de corriger la syntaxe
lambda: |-
it.printf(0,0,"Temp Eau : %.2f", id(t_air).state);
it.printf(0,1,"Temp Air : %.2f", id(t_eau).state);
Dans ton cas, par contre ça utile tout l’espace du LCD (puisque tu mets les valeurs en position 12), à toi de voir ce que tu préfères
Oui j’ai bien compris cette façon d’ecrie
lambda: |-
it.printf(0,0,"Temp Eau : %.2f", id(t_air).state);
it.printf(0,1,"Temp Air : %.2f", id(t_eau).state);
mais je reste comme j’ai ecris pour la claretée et bien comprendre la difference entre print et printf, si j’ai besoin d’y revenir dans 6 mois.
Merci encore