145 lines
3.4 KiB
YAML
145 lines
3.4 KiB
YAML
substitutions:
|
|
devicename: og-wz-us-tag
|
|
|
|
esphome:
|
|
name: ${devicename}
|
|
platform: ESP8266
|
|
board: nodemcuv2
|
|
|
|
# Enable logging
|
|
logger:
|
|
|
|
# Enable Home Assistant API
|
|
api:
|
|
services:
|
|
- service: write_tag_random
|
|
then:
|
|
- lambda: |-
|
|
static const char alphanum[] = "0123456789abcdef";
|
|
std::string uri = "//www.home-assistant.io/tag/";
|
|
for (int i = 0; i < 8; i++)
|
|
uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)];
|
|
uri += "-";
|
|
for (int j = 0; j < 3; j++) {
|
|
for (int i = 0; i < 4; i++)
|
|
uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)];
|
|
uri += "-";
|
|
}
|
|
for (int i = 0; i < 12; i++)
|
|
uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)];
|
|
auto message = new nfc::NdefMessage();
|
|
message->add_uri_record(uri);
|
|
ESP_LOGD("tagreader", "Writing payload: %s", uri.c_str());
|
|
id(pn532_board).write_mode(message);
|
|
- service: write_tag_id
|
|
variables:
|
|
tag_id: string
|
|
then:
|
|
- lambda: |-
|
|
auto message = new nfc::NdefMessage();
|
|
std::string uri = "//www.home-assistant.io/tag/";
|
|
uri += tag_id;
|
|
message->add_uri_record(uri);
|
|
id(pn532_board).write_mode(message);
|
|
- service: clean_tag
|
|
then:
|
|
- lambda: 'id(pn532_board).clean_mode();'
|
|
|
|
- service: cancel_writing
|
|
then:
|
|
- lambda: 'id(pn532_board).read_mode();'
|
|
|
|
ota:
|
|
password: "f0e515a756b864724c599f2d077461a8"
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
manual_ip:
|
|
static_ip: 192.168.1.97
|
|
gateway: 192.168.1.1
|
|
subnet: 255.255.255.0
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "${devicename}"
|
|
password: "1GVz2hcMlG2o"
|
|
|
|
captive_portal:
|
|
|
|
switch:
|
|
- platform: restart
|
|
name: "${devicename} Neustart"
|
|
|
|
sensor:
|
|
- platform: wifi_signal
|
|
name: "${devicename} Wi-Fi Signal"
|
|
update_interval: 60s
|
|
|
|
- platform: uptime
|
|
name: "${devicename} Uptime"
|
|
update_interval: 60s
|
|
|
|
# Reader
|
|
# GPIO ⇄ SDA: D1
|
|
# GPIO → SCL: D2
|
|
# Reset PIN D5
|
|
# PN 532
|
|
# 0x3C (60) Display
|
|
# 0x3C (61) Reader ???
|
|
# schau mal beim sensor esp05 og-az-us-room
|
|
i2c:
|
|
sda: D1
|
|
scl: D2
|
|
scan: true
|
|
id: bus_a
|
|
|
|
pn532_i2c:
|
|
update_interval: 1s
|
|
id: pn532_board
|
|
on_tag:
|
|
then:
|
|
- homeassistant.tag_scanned: !lambda |
|
|
if (!tag.has_ndef_message()) {
|
|
ESP_LOGD("tagreader", "No NDEF");
|
|
return x;
|
|
}
|
|
auto message = tag.get_ndef_message();
|
|
auto records = message->get_records();
|
|
for (auto &record : records) {
|
|
std::string payload = record->get_payload();
|
|
size_t pos = payload.find("//www.home-assistant.io/tag/");
|
|
if (pos != std::string::npos) {
|
|
return payload.substr(pos + 34);
|
|
}
|
|
}
|
|
ESP_LOGD("tagreader", "Bad NDEF, fallback to uid");
|
|
return x;
|
|
|
|
binary_sensor:
|
|
- platform: pn532
|
|
uid: 74-10-37-94
|
|
name: "${devicename} NFC Tag"
|
|
|
|
text_sensor:
|
|
- platform: homeassistant
|
|
entity_id: "sensor.og_wz_us_tag_display_text"
|
|
name: "${devicename} Display Text"
|
|
id: info_state
|
|
|
|
display:
|
|
- platform: ssd1306_i2c
|
|
model: "SSD1306 128x64"
|
|
#reset_pin: D0
|
|
address: 0x3C
|
|
rotation: 180
|
|
lambda: |-
|
|
//Printf "Alarm State: <state>" in top center
|
|
it.printf(64, 0, id(my_font), TextAlign::TOP_RIGHT, "Info: %s", id(info_state).state.c_str());
|
|
|
|
font:
|
|
- file: "fonts/Comic Sans MS.ttf"
|
|
id: my_font
|
|
size: 20
|