手持 土壤氮磷钾检测仪,接入HA
esphome:
name: "soil-npk-sensor"
friendly_name: "NPK8266"
esp8266:
board: nodemcuv2
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
use_address: 192.168.88.57
ap:
ssid: "Npk8266"
password: "12345678"
captive_portal:
web_server:
button:
- platform: restart
name: "Restart"
i2c:
sda: D3
scl: D4
uart:
tx_pin: D6
rx_pin: D7
baud_rate: 4800
stop_bits: 1
modbus:
send_wait_time: 200ms
id: mod_bus
modbus_controller:
- id: modbus_bus
address: 0x01
modbus_id: mod_bus
command_throttle: 0ms
setup_priority: -10
update_interval: 5s
font:
- file: 'JDSTJ.ttf'
id: font1
size: 17
glyphs: 氮磷钾传感器含量-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
#SSD1306 OLED显示屏配置
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C #SSD1306常见I2C地址
id: oled_display
lambda: |-
// 显示设备名称
//it.print(0, 0, id(font1), TextAlign::TOP_CENTER, "氮磷钾传感器");
// 显示氮含量
it.printf(0, 0, id(font1), TextAlign::TOP_LEFT, "氮含量: %d mg", (int)id(nitrogen_sensor).state);
// 显示磷含量
it.printf(0, 20, id(font1), TextAlign::TOP_LEFT, "磷含量: %d mg", (int)id(phosphorus_sensor).state);
// 显示钾含量
it.printf(0, 40, id(font1), TextAlign::TOP_LEFT, "钾含量: %d mg", (int)id(potassium_sensor).state);
# 传感器定义
sensor:
- platform: modbus_controller
modbus_controller_id: modbus_bus
id: nitrogen_sensor
name: "1.N氮含量"
address: 0x1E
unit_of_measurement: "mg/kg"
accuracy_decimals: 0
register_type: holding
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: modbus_bus
id: phosphorus_sensor
name: "2.P磷含量"
address: 0x1F
unit_of_measurement: "mg/kg"
accuracy_decimals: 0
register_type: holding
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: modbus_bus
id: potassium_sensor
name: "3.K钾含量"
address: 0x20
unit_of_measurement: "mg/kg"
accuracy_decimals: 0
register_type: holding
value_type: S_WORD
|