[RESOLU] ESPHOME ecran oled affichage différent en fonction d'une condition

Changer l’affichage en fonction de la valeur d’un capteur

*Bonjour à tous
J’ai un petit écran oled « SSD1306 128x64 » sur un ESP 8266 qui fonctionne bien.
J’arrive à faire afficher la valeur de mon capteur sans souci.
L’écran est bicolore, j’ai une bande sur le haut qui affiche en orange et le reste en bleu.

Je souhaite afficher la bande orange uniquement si la valeur de mon capteur est inférieure ou supérieure à une valeur déterminée.

Voici le code

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64" 
    address: 0x3C
    lambda: |-

      if (id(outside_temperature).has_state()) {
        if (id(outside_temperature) < 0 {
        it.filled_rectangle(0, 0, 128, 16);  
        it.printf(0, 17, id(font2), "%.1f°", id(outside_temperature).state);
        }
      else {
        it.printf(0, 17, id(font2), "%.1f°", id(outside_temperature).state);
        }
      }

Si la valeur du deuxième if est égale à zéro, la compilation se fait mais si cette valeur est différente, j’ai l’erreur de compilation suivante :

/config/esphome/8266-oled.yaml: In lambda function:
/config/esphome/8266-oled.yaml:80:33: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   80 |         if (id(outside_temperature) < 3) {
      |             ~~~~~~~~~~~~~~~~~~~~^~~
*** [/data/8266-oled/.pioenvs/8266-oled/src/main.cpp.o] Error 1

Si une âme charitable à la solution.
Merci d’avance
*

Ma configuration

ESPHome
Current version: 2022.12.3

[center]## System Information

version core-2023.1.2
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.80
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4955
Installed Version 1.29.0
Stage running
Available Repositories 1269
Downloaded Repositories 6
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 9.4
update_channel stable
supervisor_version supervisor-2022.12.1
agent_version 1.4.1
docker_version 20.10.19
disk_total 30.8 GB
disk_used 7.7 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Studio Code Server (5.5.1), Duck DNS (1.15.0), ESPHome (2022.12.3), Terminal & SSH (9.6.1)
Dashboards
dashboards 3
resources 3
views 5
mode storage
Recorder
oldest_recorder_run 3 janvier 2023 à 05:55
current_recorder_run 10 janvier 2023 à 18:01
estimated_db_size 93.23 MiB
database_engine sqlite
database_version 3.38.5
[/center]

Ne manquerait il pas .state a la fin de id(…)?
En tout cas, ce n’est pas logique/cohérent avec les variables qui tu passes à l’affichage.

Merci beaucoup @golfvert !

Voici le code corrigé, ça fonctionne bien mieux.

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    lambda: |-

      if (id(outside_temperature).has_state()) {
        if (id(outside_temperature).state<3) {
        it.filled_rectangle(0, 0, 128, 16);  
        it.printf(0, 17, id(font2), "%.1f°", id(outside_temperature).state);
        }
      else {
        it.printf(0, 17, id(font2), "%.1f°", id(outside_temperature).state);
        }

      }

par curiosité visuellement cela rend quoi ?

Bonjour,
Voici à quoi ça ressemble :


2 « J'aime »