Hi,
I’ve acquired the Inkplate 10, and I’m trying to get it working in greyscale mode. So far I’ve managed to get it working in binary mode, but greyscale eludes me.
Here is an black and white example:
esphome:
name: inkplate-10-1
friendly_name: inkplate_10-1
esp32:
board: esp-wrover-kit
psram:
mode: quad
speed: 80MHz
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: REDACTED
ota:
- platform: esphome
password: REDACTED
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
i2c:
time:
- platform: pcf85063
id: esptime
# repeated synchronization is not necessary unless the external RTC
# is much more accurate than the internal clock
update_interval: never
- platform: homeassistant
# instead try to synchronize via network repeatedly ...
on_time_sync:
then:
# ... and update the RTC when the synchronization was successful
pcf85063.write_time:
pca6416a:
- id: pca6416a_hub
address: 0x20
# Primary expander for display control and additional I/O
- id: pca6416a_hub2
address: 0x21
# Secondary expander for additional I/O
switch:
- platform: gpio
id: battery_read_mosfet
pin:
pca6416a: pca6416a_hub
number: 9
sensor:
- platform: adc
id: battery_voltage
update_interval: never
attenuation: 12db
pin: 35
- platform: template
name: "Inkplate Battery Voltage"
unit_of_measurement: "V"
accuracy_decimals: 3
lambda: |-
// Enable MOSFET to connect battery voltage divider
id(battery_read_mosfet).turn_on();
// Wait for voltage to stabilize
delay(5);
// Sample ADC value
float adc = id(battery_voltage).sample();
// Disable MOSFET to save power
id(battery_read_mosfet).turn_off();
return adc;
filters:
- multiply: 2 # Compensate for voltage divider (1:2 ratio)
http_request:
id: fetch_image_request
verify_ssl: false
useragent: esphome/seeed-studio-display-1
timeout: 60s
watchdog_timeout: 3min
online_image:
- id: dashboard_image
format: PNG
type: BINARY
url: http://REDACTED/dashboard-displays/inkplate10_1?viewport=1200x825&eink=2
update_interval: 20min
on_download_finished:
- delay: 0ms
- component.update: main_display
display:
- platform: inkplate6
id: main_display
greyscale: false
partial_updating: false
update_interval: never
model: inkplate_10
lambda: |-
it.image(0, 0, id(dashboard_image));
ckv_pin: 32
sph_pin: 33
gmod_pin:
pca6416a: pca6416a_hub
number: 1
gpio0_enable_pin:
pca6416a: pca6416a_hub
number: 8
oe_pin:
pca6416a: pca6416a_hub
number: 0
spv_pin:
pca6416a: pca6416a_hub
number: 2
powerup_pin:
pca6416a: pca6416a_hub
number: 4
wakeup_pin:
pca6416a: pca6416a_hub
number: 3
vcom_pin:
pca6416a: pca6416a_hub
number: 5
What I have found on the WEB is that when setting “greyscale: true” I need to use full RGB online_image - which is true, using online_image as a grayscale makes it fail to load to the screen.
Maybe somebody have some nice trick to convert online_image from 24bit RGB to 3 bit grayscale (ie, 8 shades of gray from white to black) ?