Hi Thomas,
I’ve not been able to compile this in ESPHome. My YAML is:
# Define OLED Settings
i2c:
sda: D2
scl: D1
scan: True
time:
- platform: sntp
id: my_time
# DHT22 Sensor
sensor:
- platform: dht
model: DHT22
pin: D4
temperature:
id: "temp"
name: "Master Bedroom Temperature"
humidity:
id: "hum"
name: "Master Bedroom Humidity"
update_interval: 30s
# SSD1306 OLED Display
display:
- platform: ssd1306_i2c
model: "SSD1306 128x32"
reset_pin: D0
address: 0x3C
lambda: |-
it.strftime("%H:%M le %d.%m.%Y", id(my_time).now());
it.printf(0, 1,"Temp : %.1fc", id(temp).state);
it.printf(0, 2,"Hum : %.1f ", id(hum).state);
It starts to compile OK, and the spews this:
src/main.cpp: In lambda function:
src/main.cpp:205:54: error: no matching function for call to 'esphome::display::DisplayBuffer::strftime(const char [18], esphome::time::ESPTime)'
it.strftime("%H:%M le %d.%m.%Y", my_time->now());
^
src/main.cpp:205:54: note: candidates are:
In file included from src/esphome.h:15:0,
from src/main.cpp:3:
src/esphome/components/display/display_buffer.h:223:8: note: void esphome::display::DisplayBuffer::strftime(int, int, esphome::display::Font*, int, esphome::display::TextAlign, const char*, esphome::time::ESPTime)
void strftime(int x, int y, Font *font, int color, TextAlign align, const char *format, time::ESPTime time)
^
src/esphome/components/display/display_buffer.h:223:8: note: candidate expects 7 arguments, 2 provided
src/esphome/components/display/display_buffer.h:235:8: note: void esphome::display::DisplayBuffer::strftime(int, int, esphome::display::Font*, int, const char*, esphome::time::ESPTime)
void strftime(int x, int y, Font *font, int color, const char *format, time::ESPTime time)
^
src/esphome/components/display/display_buffer.h:235:8: note: candidate expects 6 arguments, 2 provided
src/esphome/components/display/display_buffer.h:247:8: note: void esphome::display::DisplayBuffer::strftime(int, int, esphome::display::Font*, esphome::display::TextAlign, const char*, esphome::time::ESPTime)
void strftime(int x, int y, Font *font, TextAlign align, const char *format, time::ESPTime time)
^
src/esphome/components/display/display_buffer.h:247:8: note: candidate expects 6 arguments, 2 provided
src/esphome/components/display/display_buffer.h:258:8: note: void esphome::display::DisplayBuffer::strftime(int, int, esphome::display::Font*, const char*, esphome::time::ESPTime)
void strftime(int x, int y, Font *font, const char *format, time::ESPTime time)
^
src/esphome/components/display/display_buffer.h:258:8: note: candidate expects 5 arguments, 2 provided
src/main.cpp:206:49: error: no matching function for call to 'esphome::display::DisplayBuffer::printf(int, int, const char [13], float&)'
it.printf(0, 1,"Temp : %.1fc", temp->state);
^
src/main.cpp:206:49: note: candidates are:
In file included from src/esphome.h:15:0,
from src/main.cpp:3:
src/esphome/components/display/display_buffer.h:177:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, int, esphome::display::TextAlign, const char*, ...)
void printf(int x, int y, Font *font, int color, TextAlign align, const char *format, ...)
^
src/esphome/components/display/display_buffer.h:177:8: note: candidate expects 6 arguments, 4 provided
src/esphome/components/display/display_buffer.h:189:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, int, const char*, ...)
void printf(int x, int y, Font *font, int color, const char *format, ...) __attribute__((format(printf, 6, 7)));
^
src/esphome/components/display/display_buffer.h:189:8: note: candidate expects 5 arguments, 4 provided
src/esphome/components/display/display_buffer.h:200:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, esphome::display::TextAlign, const char*, ...)
void printf(int x, int y, Font *font, TextAlign align, const char *format, ...) __attribute__((format(printf, 6, 7)));
^
src/esphome/components/display/display_buffer.h:200:8: note: candidate expects 5 arguments, 4 provided
src/esphome/components/display/display_buffer.h:210:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, const char*, ...)
void printf(int x, int y, Font *font, const char *format, ...) __attribute__((format(printf, 5, 6)));
^
src/esphome/components/display/display_buffer.h:210:8: note: no known conversion for argument 3 from 'const char [13]' to 'esphome::display::Font*'
src/main.cpp:207:49: error: no matching function for call to 'esphome::display::DisplayBuffer::printf(int, int, const char [14], float&)'
it.printf(0, 2,"Hum : %.1f ", hum->state);
^
src/main.cpp:207:49: note: candidates are:
In file included from src/esphome.h:15:0,
from src/main.cpp:3:
src/esphome/components/display/display_buffer.h:177:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, int, esphome::display::TextAlign, const char*, ...)
void printf(int x, int y, Font *font, int color, TextAlign align, const char *format, ...)
^
src/esphome/components/display/display_buffer.h:177:8: note: candidate expects 6 arguments, 4 provided
src/esphome/components/display/display_buffer.h:189:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, int, const char*, ...)
void printf(int x, int y, Font *font, int color, const char *format, ...) __attribute__((format(printf, 6, 7)));
^
src/esphome/components/display/display_buffer.h:189:8: note: candidate expects 5 arguments, 4 provided
src/esphome/components/display/display_buffer.h:200:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, esphome::display::TextAlign, const char*, ...)
void printf(int x, int y, Font *font, TextAlign align, const char *format, ...) __attribute__((format(printf, 6, 7)));
^
src/esphome/components/display/display_buffer.h:200:8: note: candidate expects 5 arguments, 4 provided
src/esphome/components/display/display_buffer.h:210:8: note: void esphome::display::DisplayBuffer::printf(int, int, esphome::display::Font*, const char*, ...)
void printf(int x, int y, Font *font, const char *format, ...) __attribute__((format(printf, 5, 6)));
^
src/esphome/components/display/display_buffer.h:210:8: note: no known conversion for argument 3 from 'const char [14]' to 'esphome::display::Font*'
*** [/data/dht22_test_oled/.pioenvs/dht22_test_oled/src/main.cpp.o] Error 1
========================= [FAILED] Took 17.35 seconds =========================
Any ideas? I’ve tried changing a number of different things. I’m guessing there are some defines missing, how does HA know how to deal with the OLED, as the Arduino code defines the screen resolution etc.
Many thanks,
Bret