diff --git a/cash.yaml b/cash.yaml new file mode 100644 index 0000000..fe06632 --- /dev/null +++ b/cash.yaml @@ -0,0 +1,84 @@ +# Hardware: https://docs.thingpulse.com/guides/espaper-plus-kit/ +# +# Programming via serial requires a serial converter. To program, the device has to be put in a +# programming mode. This is done by pressing the RESET (the rightmost) button while holding the +# middle button. But after setting up esphome and the WiFi credentials you can just keep flashing +# via OTA. After flashing via any method, you must do a manual reset. + +# Epaper display that displays the amount of cash tracked by RevBank. + +esphome: + name: espaper + friendly_name: Cash + +esp8266: + board: nodemcu + + +logger: + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +ota: + platform: esphome + password: !secret ota_password + +mqtt: + broker: !secret mqtt_server + +sensor: + - platform: wifi_signal + name: "WiFi Signal dB" + update_interval: 10s + state_topic: bitlair/esphome/spacestate-bitlair/wifi_signal + retain: false + - platform: mqtt_subscribe + id: cash + topic: bitlair/pos/cash + on_value: + then: + - component.update: epaper + +text_sensor: + - platform: version + name: "ESPHome Version" + hide_timestamp: true + state_topic: bitlair/esphome/cash/version + +font: + - file: "gfonts://Roboto" + id: font_label + size: 32 + - file: "gfonts://Roboto" + id: font_cash + size: 56 + +spi: + clk_pin: 14 + mosi_pin: 13 + +display: + - platform: waveshare_epaper + id: epaper + model: 2.90in + cs_pin: 15 + dc_pin: 5 + busy_pin: 4 + reset_pin: 2 + update_interval: 60s + rotation: 270 + lambda: |- + char label[32]; + snprintf(label, sizeof(label), "geld in kas"); + int label_w, label_h, _; + const int label_y = 10; + id(font_label).measure(label, &label_w, &_, &_, &label_h); + it.printf(it.get_width()/2 - label_w/2, label_y, id(font_label), "%s", label); + + char cash_str[16]; + snprintf(cash_str, sizeof(cash_str), "€ %.02f", id(cash).state); + int cash_w; + id(font_cash).measure(cash_str, &cash_w, &_, &_, &_); + it.printf(it.get_width()/2 - cash_w/2, label_y+label_h+2, id(font_cash), "%s", cash_str);