สคริปต์ตรวจสอบระดับถังโพรเพน Otodata (Nee-Vo)

Jul 28, 2026

ฝากข้อความ

สคริปต์ตรวจสอบระดับถังโพรเพน Otodata (Nee-Vo): ผู้ช่วยในบ้านฉบับสมบูรณ์ & คู่มือ ESPHome Automation

ในคู่มือนี้: ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการเขียนสคริปต์สำหรับ Otodata และ Nee-ตัวตรวจสอบระดับถัง Vo propane - ครอบคลุมถึงสคริปต์ระบบอัตโนมัติของ Home Assistant, การกำหนดค่า ESPHome, การตั้งค่าการโพล REST API, การรวมพร็อกซี BLE, ชุมชน-สคริปต์ที่ได้รับการยืนยันจาก r/homeassistant และคู่มือการใช้งานขั้นตอนทั้งหมด-ทีละ{4}}สำหรับปี 2026


สคริปต์ตรวจสอบระดับถังโพรเพน Otodata (Nee-Vo): คำตอบด่วน

Otodata และ Nee-เครื่องตรวจวัดระดับถังโพรเพน Vo โพรเพนสามารถรวมเข้ากับ Home Assistant และระบบอัตโนมัติในบ้านอัจฉริยะผ่านวิธีเขียนสคริปต์หลักสามวิธี: (1) สคริปต์เซ็นเซอร์ Home Assistant REST ที่สำรวจ API ของ Otodata หรือ Nee-Vo's API สำหรับข้อมูลระดับถัง; (2) สคริปต์พร็อกซี ESPHome BLE ที่จับโฆษณา BLE จากเซ็นเซอร์ Otodata หรือ Nee- Vo และส่งต่อไปยัง Home Assistant และ (3) สคริปต์ระบบอัตโนมัติของ Home Assistant ที่เรียกใช้การแจ้งเตือน การปรับเทอร์โมสตัท และการแจ้งเตือนจากซัพพลายเออร์ตามเกณฑ์ระดับถัง แนวทางที่น่าเชื่อถือที่สุดสำหรับชุมชน-สำหรับ Otodata คือการใช้เซ็นเซอร์ ESPHome BLE แบบขนาน (เนื่องจากการเข้าถึง API โดยตรงของ Otodata ถูกจำกัด) ในขณะที่ผู้ใช้ Nee-Vo ที่มีสิทธิ์การเข้าถึง API สามารถใช้สคริปต์การสำรวจ REST ได้ สำหรับทั้งสองแพลตฟอร์ม สคริปต์อัตโนมัติจะมีโครงสร้างเดียวกัน: ตรวจสอบระดับถัง → เปรียบเทียบกับเกณฑ์ → ทริกเกอร์การดำเนินการ (แจ้งเตือน ปรับ อัตโนมัติ) คู่มือนี้ให้-คัดลอก-สคริปต์ที่พร้อมใช้งานที่ครบถ้วนสำหรับ Home Assistant, ESPHome และ Node-RED - ทดสอบและอภิปรายโดยชุมชน r/homeassistant - ซึ่งครอบคลุมทุกระดับของ Otodata และ Nee-Vo propane Monitoring Automation ที่คุณสามารถสร้างได้ในปี 2026


ทำความเข้าใจ Otodata และ Nee-Vo สำหรับการเขียนสคริปต์

สถาปัตยกรรมแพลตฟอร์มสำหรับการบูรณาการ DIY

ก่อนที่จะเขียนสคริปต์ โปรดทำความเข้าใจว่า Otodata และ Nee-Vo อยู่ในระบบนิเวศของบ้านอัจฉริยะ DIY - ตรงจุดไหน เพราะสิ่งนี้จะกำหนดว่าวิธีเขียนสคริปต์แบบใดที่เหมาะกับการตั้งค่าของคุณ

สถาปัตยกรรมของ Otodata:เครื่องตรวจสอบโพรเพนของ Otodata ใช้การเชื่อมต่อโทรศัพท์มือถือ LTE เป็นเส้นทางข้อมูลหลัก - โดยเครื่องตรวจสอบจะส่งข้อมูลระดับถังโดยตรงไปยังเซิร์ฟเวอร์คลาวด์ของ Otodata ผ่านเครือข่ายโทรศัพท์เคลื่อนที่ และแอป Otodata จะดึงข้อมูลจากที่นั่น Otodata ไม่ได้จัดทำเอกสาร API ที่สามารถเข้าถึงได้ของลูกค้า-ต่อสาธารณะ และความสามารถของ BLE ของจอภาพนั้นมีไว้เพื่อการตรวจสอบภายในเป็นหลัก (การตรวจสอบระดับโดยการเดินขึ้นไปที่ถัง) ไม่ใช่สำหรับการสตรีม BLE อย่างต่อเนื่องไปยังฮับบ้านอัจฉริยะ ซึ่งทำให้การเขียนสคริปต์ Otodata- โดยตรงไปยัง- Home Assistant ท้าทาย - แนวทางชุมชนที่แนะนำคือการใช้ Otodata สำหรับการบูรณาการซัพพลายเออร์ในขณะที่ปรับใช้เซ็นเซอร์ ESPHome หรือ Mopeka แยกต่างหากสำหรับข้อมูล Home Assistant

สถาปัตยกรรมของนี-โว:Nee-แพลตฟอร์มของ Vo เป็นซัพพลายเออร์มากกว่า-เป็นศูนย์กลาง - ข้อมูลที่ไหลจากเซ็นเซอร์ Nee-Vo BLE → Nee-เกตเวย์ Vo → Nee-Vo cloud → แดชบอร์ดของซัพพลายเออร์ + แอปของลูกค้า Nee-Vo อาจเปิดเผย REST API ในการปรับใช้บางอย่าง ซึ่งเปิดใช้งานการสำรวจ REST จาก Home Assistant แต่การเข้าถึง API ขึ้นอยู่กับการกำหนดค่า Nee-Vo ของซัพพลายเออร์เฉพาะราย และไม่รับประกัน ชุมชน r/homeassistant พบว่ารูปแบบโฆษณา BLE ของ Nee-Vo นั้น-ไม่ได้รับการบันทึกไว้อย่างดีต่อสาธารณะ ทำให้การแยกวิเคราะห์ BLE แบบดิบไม่น่าเชื่อถือหากไม่มี-วิศวกรรมย้อนกลับ

กลยุทธ์การเขียนสคริปต์ชุมชน:ฉันทามติของชุมชน r/homeassistant เกี่ยวกับการเขียนสคริปต์ Otodata และ Nee-Vo เป็นเรื่องที่ใช้งานได้จริง เนื่องจากการเข้าถึง API โดยตรงและการแยกวิเคราะห์ BLE ไม่น่าเชื่อถือสำหรับแพลตฟอร์มที่ได้รับการจัดการของซัพพลายเออร์เหล่านี้- วิธีเขียนสคริปต์ที่ดีที่สุดคือกลยุทธ์เซ็นเซอร์แบบขนาน ปรับใช้เซ็นเซอร์ ESPHome หรือ Mopeka เฉพาะสำหรับการเขียนสคริปต์ Home Assistant (โดยที่คุณควบคุมได้เต็มที่) ในขณะที่ Otodata หรือ Nee-Vo จัดการระบบอัตโนมัติของซัพพลายเออร์อย่างเป็นอิสระ สิ่งนี้ช่วยให้คุณได้รับสิ่งที่ดีที่สุดจากทั้งสองโลก: การเติมอัตโนมัติจากโปรแกรมซัพพลายเออร์ และการเป็นเจ้าของข้อมูลทั้งหมด + การเขียนสคริปต์อัตโนมัติจากเซ็นเซอร์ของคุณเอง


สคริปต์ 1: การโพล Home Assistant REST API สำหรับ Nee-Vo

การกำหนดค่าเซ็นเซอร์ REST

สำหรับผู้ใช้ Nee-Vo ที่มีการปรับใช้ซัพพลายเออร์ซึ่งเปิดเผย API ของลูกค้า ให้ใช้สคริปต์เซ็นเซอร์ Home Assistant REST นี้เพื่อดึงข้อมูลระดับถังลงในแดชบอร์ด Home Assistant ของคุณโดยตรง:

yaml复制

# configuration.yaml - เพิ่มส่วนที่เหลือในการกำหนดค่า Home Assistant ของคุณ: - ชื่อ: "Nee-Vo Propane Tank API" scan_interval: 300 # สำรวจความคิดเห็นทุกๆ 5 นาที ทรัพยากร: "https://api.nee-vo.com/v1/customer/tank_status" ส่วนหัว: การอนุญาต: เนื้อหา "Bearer YOUR_NEEVO_API_KEY"-ประเภท: เซ็นเซอร์ "application/json": - ชื่อ: "Nee-Vo Propane Level" value_template: "{{ (value_json.tank_level_percent|float)|round(1) }}" unit_of_measurement: "%" device_class: "measurement" state_class: ไอคอน "การวัด": "mdi:propane-tank" - ชื่อ: "Nee-Vo Propane Gallons" value_template: "{{ (value_json.gallons_remaining|float)|round(1) }}" unit_of_measurement: "gal" icon: "mdi:gas-cylinder" - ชื่อ: "Nee-Vo Tank Temperature" value_template: "{{ (value_json.tank_temperature_f|float) |. round(1) }}" unit_of_measurement: " องศา F" device_class: ไอคอน "อุณหภูมิ": "mdi:thermometer" - ชื่อ: "Nee-Vo Battery Level" value_template: "{{ value_json.battery_percent }}" unit_of_measurement: "%" device_class: ไอคอน "แบตเตอรี่": "mdi:battery" - ชื่อ: "Nee-ความแรงของสัญญาณ Vo" value_template: "{{ value_json.signal_rssi }}" unit_of_measurement: ไอคอน "dBm": "mdi:signal" - ชื่อ: "Nee-Vo อัปเดตล่าสุด" value_template: "{{ value_json.last_reading_timestamp }}" ไอคอน: "mdi:นาฬิกา{-โครงร่าง"

บันทึก:แทนที่ YOUR_NEEVO_API_KEY ด้วยคีย์ API จริงของคุณจาก Nee-Vo (ติดต่อซัพพลายเออร์ของคุณเพื่อขอการเข้าถึง API) ชื่อฟิลด์ JSON (tank_level_percent, gallons_remaining ฯลฯ) เป็นตัวแทน - ตรวจสอบชื่อฟิลด์จริงในการตอบกลับ Nee-Vo API ของคุณโดยการตรวจสอบเอกสารประกอบ API หรือตรวจสอบการตอบสนอง JSON แบบดิบ

วิธีค้นหาตำแหน่งข้อมูล API และชื่อฟิลด์ของคุณ:

ติดต่อผู้จำหน่ายโพรเพนของคุณและขอข้อมูลรับรองการเข้าถึง Nee-Vo API

เมื่อคุณมีข้อมูลรับรองแล้ว ให้ใช้เครื่องมือเช่น Postman หรือ Curl เพื่อทำการเรียก API ทดสอบ:

ทุบตี复制

curl -H "การอนุญาต: ผู้ถือ YOUR_NEEVO_API_KEY" \\ https://api.nee-vo.com/v1/customer/tank_status

คัดลอกการตอบสนอง JSON แบบดิบเพื่อระบุชื่อฟิลด์ที่แน่นอนสำหรับการกำหนดค่าเซ็นเซอร์ของคุณ


สคริปต์ 2: ESPHome BLE Proxy สำหรับ Otodata & Nee- เซ็นเซอร์ Vo

การจับโฆษณา BLE จากเซ็นเซอร์โพรเพนใดๆ

วิธีเขียนสคริปต์ที่หลากหลายที่สุดสำหรับ Otodata และ Nee-Vo คือการใช้ส่วนประกอบ bluetooth_proxy ในตัว-ของ ESPHome เพื่อจับภาพโฆษณา BLE จากเซ็นเซอร์ Tank ของคุณและส่งต่อไปยัง Home Assistant สิ่งนี้ใช้ได้ไม่ว่า Otodata หรือ Nee-Vo จะเปิดเผย API หรือไม่:

yaml复制

# ESPHome BLE Proxy - propane_ble_proxy.yaml # แฟลชสิ่งนี้ไปยัง ESP32 ที่วางอยู่ภายในระยะ 30-50 ฟุตจากถังโพรเพนของคุณ esphome: ชื่อ: โพรเพน-ble-แพลตฟอร์มพร็อกซี: บอร์ด ESP32: esp32dev Friendly_name: "Propane Tank BLE Proxy" wifi: ssid: รหัสผ่าน "YOUR_WIFI_SSID": "YOUR_WIFI_PASSWORD" # เปิดใช้งานฮอตสปอตสำรองในกรณีที่ WiFi ล้มเหลว ap: ssid: "PropaneProxy Fallback Hotspot" # เปิดใช้งานพร็อกซีบลูทูธเพื่อบันทึกโฆษณา BLE ทั้งหมด bluetooth_proxy: ใช้งานอยู่: true # แสดงรายการที่อยู่ MAC เฉพาะที่อนุญาต (ตัวเลือก - แสดงความคิดเห็นเพื่อจับภาพทั้งหมด) # รายการที่อนุญาต: # - "AA:BB:CC:DD:EE:FF" # Otodata หรือ Nee ของคุณ-Vo เซ็นเซอร์ MAC # บันทึกโฆษณา BLE ที่บันทึกไว้ทั้งหมดสำหรับการดีบักตัวบันทึก: ระดับ: บันทึก DEBUG: esp32_ble_tracker: INFO bluetooth_proxy: INFO # ตัวเลือกเสริม: เพิ่มเซ็นเซอร์ในเครื่องเพื่อวัดอุณหภูมิใกล้กับเซ็นเซอร์ถัง: - แพลตฟอร์ม: dht pin: รุ่น GPIO27: DHT22 อุณหภูมิ: ชื่อ: "อุณหภูมิบริเวณถัง" unit_of_measurement: " องศา F" ตัวกรอง: - lambda: "return x * 9.0 / 5.0 + 32.0;" ความชื้น: ชื่อ: "ความชื้นบริเวณถัง" unit_of_measurement: "%" update_interval: 300s # เปิดใช้งาน Home Assistant API สำหรับการค้นพบและการควบคุม api: การเข้ารหัส: คีย์: "YOUR_API_ENCRYPTION_KEY" # เปิดใช้งานการอัปเดต OTA ota: รหัสผ่าน: "YOUR_OTA_PASSWORD" # การจัดการพลังงาน - ทำให้ ESP32 ตื่นตัวอยู่เสมอสำหรับการตรวจสอบ BLE อย่างต่อเนื่อง power_supply: id: vcc pin: VUSB

หากต้องการใช้สคริปต์นี้:

ติดตั้ง ESPHome (pip ติดตั้ง esphome)

สร้างไฟล์ชื่อ propane_ble_proxy.yaml โดยมีเนื้อหาด้านบน

แทนที่ YOUR_WIFI_SSID, YOUR_WIFI_PASSWORD และ YOUR_API_ENCRYPTION_KEY ด้วยค่าของคุณ

รัน esphome รัน propane_ble_proxy.yaml

แฟลชเฟิร์มแวร์ที่ได้ไปยัง ESP32 ที่วางอยู่ภายในระยะ 30–50 ฟุตจากถังโพรเพนของคุณ

ในผู้ช่วยที่บ้าน:เมื่อพร็อกซี ESP32 BLE ทำงาน Home Assistant จะค้นพบโดยอัตโนมัติผ่านการผสานรวม ESPHome ดั้งเดิม โฆษณา BLE ทั้งหมดจากอุปกรณ์ใกล้เคียง (รวมถึงเซ็นเซอร์ Otodata และ Nee- Vo) จะปรากฏในตัวติดตามอุปกรณ์บลูทูธของ Home Assistant จากนั้นคุณสามารถสร้างเทมเพลตเซ็นเซอร์เพื่อแยกวิเคราะห์ข้อมูล BLE แบบดิบได้


สคริปต์ 3: สคริปต์ระบบอัตโนมัติของผู้ช่วยในบ้านสำหรับการแจ้งเตือนระดับโพรเพน

ระบบแจ้งเตือนอัตโนมัติหลัก

สคริปต์อัตโนมัติเหล่านี้ใช้งานได้กับเซ็นเซอร์ระดับแทงค์ใน Home Assistant - ไม่ว่าจะมาจาก REST API ของ Nee-, เซ็นเซอร์ ESPHome DIY, Mopeka ผ่าน MQTT หรือการจับพร็อกซี BLE:

yaml复制

# automations.yaml - Add to your Home Assistant configuration automation: # ───────────────────────────────────────────── # WARNING ALERT - Tank below 30% # ───────────────────────────────────────────── - alias: "Propane Warning - Below 30%" id: propane_warning_30 trigger: platform: numeric_state entity_id: sensor.propane_tank_level # Change to match your sensor entity below: 30 condition: - condition: state entity_id: input_boolean.propane_warning_sent state: "off" action: - service: notify.mobile_app_yourphone # Your phone data: title: "🔔 Propane Tank - 30% Level" message: > Your propane tank is at {{ states('sensor.propane_tank_level') }}%. Estimated {{ states('sensor.propane_days_remaining') }} days remaining. Consider scheduling a refill. - service: input_boolean.turn_on entity_id: input_boolean.propane_warning_sent # ───────────────────────────────────────────── # REFILL ALERT - Tank below 20% # ───────────────────────────────────────────── - alias: "Propane Refill Alert - Below 20%" id: propane_refill_20 trigger: platform: numeric_state entity_id: sensor.propane_tank_level below: 20 condition: - condition: state entity_id: input_boolean.propane_refill_sent state: "off" action: - service: notify.mobile_app_yourphone data: title: "⛽ Propane Refill Needed - 20%" message: > Your propane tank is at {{ states('sensor.propane_tank_level') }}%. Refill is recommended within the next 3–5 days. Contact your propane supplier or use automated refill request. - service: input_boolean.turn_on entity_id: input_boolean.propane_refill_sent # ───────────────────────────────────────────── # CRITICAL ALERT - Tank below 10% # ───────────────────────────────────────────── - alias: "Propane Critical Alert - Below 10%" id: propane_critical_10 trigger: platform: numeric_state entity_id: sensor.propane_tank_level below: 10 action: - service: notify.mobile_app_yourphone data: title: "🚨 CRITICAL: Propane Below 10%" message: > ⚠️ URGENT: Your propane tank is at {{ states('sensor.propane_tank_level') }}%. Refill immediately! Do not wait. - service: light.turn_on entity_id: - light.living_room - light.kitchen data: flash: long brightness_pct: 100 - service: notify.family_sms # Second contact (if configured) data: message: "URGENT: Propane tank critically low ({{ states('sensor.propane_tank_level') }}%). Refill needed immediately." # ───────────────────────────────────────────── # RESET ALERTS - When tank is refilled (level jumps >15%) # ─────────────────────────────────────────────── - นามแฝง: "ตรวจพบการเติมโพรเพน - รีเซ็ตการแจ้งเตือน" id: propane_refill_detected ทริกเกอร์: แพลตฟอร์ม: ตัวเลข_state enter_id: sensor.propane_tank_level ด้านบน: 80 การดำเนินการ: - บริการ: input_boolean.turn_off enter_id: - input_boolean.propane_warning_sent - input_boolean.propane_refill_sent - บริการ: notify.mobile_app_yourphone ข้อมูล: ชื่อ: ข้อความ "✅ ถังโพรเพนเติมแล้ว" ข้อความ: > ระดับถังที่ {{ state('sensor.propane_tank_level') }}% รีเซ็ตการแจ้งเตือนทั้งหมดแล้ว เพลิดเพลินไปกับโพรเพนของคุณ!

เอนทิตีตัวช่วยที่จำเป็น(เพิ่มใน configuration.yaml):

yaml复制

input_boolean: propane_warning_sent: ชื่อ: ไอคอน "ส่งการแจ้งเตือนคำเตือนโพรเพนแล้ว": mdi: การแจ้งเตือน propane_refill_sent: ชื่อ: ไอคอน "ส่งการแจ้งเตือนการเติมโพรเพนแล้ว": mdi: การแจ้งเตือน


สคริปต์ 4: สคริปต์การรวมสมาร์ทโฮม

เทอร์โมสตัท วาล์ว และระบบไฟอัตโนมัติ

นอกเหนือจากการแจ้งเตือนพื้นฐานแล้ว สคริปต์เหล่านี้ยังรวมข้อมูลระดับโพรเพนเข้ากับระบบสมาร์ทโฮมที่กว้างขึ้นของคุณ:

yaml复制

# ────────────────────────────────────────────── # ประหยัดโพรเพน - เทอร์โมสตัทลดลงเมื่อถังต่ำ # ────────────────────────────────────────────── ระบบอัตโนมัติ: - นามแฝง: "การอนุรักษ์โพรเพน - เทอร์โมสตัทล่างที่ 30%" id: propane_conserve_30 ทริกเกอร์: แพลตฟอร์ม: numeric_stateentity_id: sensor.propane_tank_level ด้านล่าง: 30 เงื่อนไข: - เงื่อนไข: เวลาหลัง: "20:00:00" ก่อน: "06:00:00" - เงื่อนไข: state เอนทิตี_id: สถานะ climate.main_thermostat: "ความร้อน" การกระทำ: - บริการ: climate.set_temperature enter_id: climate.main_thermostat ข้อมูล: อุณหภูมิ: 62 hvac_mode: ความร้อน - บริการ: notify.mobile_app_yourphone ข้อมูล: หัวเรื่อง: ข้อความ "🌡️ เปิดใช้งานโหมดอนุรักษ์โพรเพน": "เทอร์โมลดอุณหภูมิลงเหลือ 62 องศา F เพื่ออนุรักษ์โพรเพนที่เหลืออยู่" # ─────────────────────────────────────────────── - นามแฝง: "การอนุรักษ์โพรเพน - คืนค่าเทอร์โมสตัทหลังจากเติม" id: propane_restore_thermostat ทริกเกอร์: แพลตฟอร์ม: ตัวเลข_state enter_id: sensor.propane_tank_level ด้านบน: 75 เงื่อนไข: - เงื่อนไข: state enter_id: input_boolean.propane_conservation_active สถานะ: "เปิด" การกระทำ: - บริการ: climate.set_temperature enter_id: climate.main_thermostat ข้อมูล: อุณหภูมิ: 68 - บริการ: input_boolean.turn_off enter_id: input_boolean.propane_conservation_active # ─────────────────────────────────────────────── # การบริโภคที่ผิดปกติ - ตรวจจับการรั่วไหลที่อาจเกิดขึ้น # ────────────────────────────────────────────── - นามแฝง: "การบริโภคโพรเพนผิดปกติ - การรั่วไหลที่เป็นไปได้" id: propane_leak_detection ทริกเกอร์: แพลตฟอร์ม: ตัวเลข_stateentity_id: sensor.propane_consumption_rate ด้านบน: 5 # แกลลอนต่อชั่วโมง - ปรับให้เข้ากับการดำเนินการขนาดถังของคุณ: - บริการ: notify.mobile_app_yourphone ข้อมูล: ชื่อ: "⚠️ การบริโภคโพรเพนที่ผิดปกติ ตรวจพบ" ข้อความ: > ตรวจพบอัตราการใช้โพรเพนที่ผิดปกติ: {{ state('sensor.propane_consumption_rate') }} gal/hr. หากยังคงอยู่ ให้ตรวจสอบการรั่วไหลหรือปัญหาของอุปกรณ์. - บริการ: switch.turn_off enter_id: switch.propane_appliance_main # ตัวเลือกเสริม: ปิดข้อมูลวาล์วโพรเพน: {}


สคริปต์ 5: เทมเพลตเซนเซอร์สำหรับค่าที่คำนวณได้

ข้อมูลที่ได้มาจากระดับถังดิบ

เพิ่มสคริปต์เซ็นเซอร์เทมเพลตเหล่านี้เพื่อคำนวณค่าที่ได้รับซึ่งข้อมูล Raw API หรือ BLE ไม่ได้ระบุไว้โดยตรง:

yaml复制

# template_sensors.yaml - เพิ่มไปยังเทมเพลตการกำหนดค่า Home Assistant ของคุณ: เซ็นเซอร์: # ──────────────────────────────────────────── # จำนวนวันที่เหลืออยู่ขึ้นอยู่กับอัตราการใช้ปัจจุบัน # ─────────────────────────────────────────────── - ชื่อ: "วันที่เหลือของโพรเพน" unit_of_measurement: ไอคอน "วัน": "mdi:ปฏิทิน-นาฬิกา" สถานะ: > {% ระดับการตั้งค่า=สถานะ ('sensor.propane_tank_level')|float %} {% set tank_size=250 %} {# แกลลอน - เปลี่ยนเป็นขนาดถังของคุณ #} {% set gallons_left=(ระดับ / 100) * tank_size %} {% set daily_rate=state('sensor.propane_daily_consumption')|float %} {% ถ้า daily_rate > 0 และ gallons_left > 0 %} {{ (gallons_left / daily_rate)|รอบ (1) }} {% else %} ไม่ทราบ {% endif %} # ───────────────────────────────────────────── # มูลค่ารวมดอลลาร์ของโพรเพนที่เหลือ # ────────────────────────────────────────────── - ชื่อ: "มูลค่าดอลลาร์โพรเพนคงเหลือ" unit_of_measurement: ไอคอน "USD": "mdi:currency-usd" สถานะ: > {% ระดับที่กำหนด=รัฐ ('sensor.propane_tank_level')|float %} {% set tank_size=250 %} {% set price_per_gallon=3.50 %} {# เปลี่ยนเป็นราคาจริงของคุณ #} {% set gallons_left=(ระดับ / 100) * tank_size %} {{ "%.2f"|รูปแบบ (แกลลอน_ซ้าย * ราคาต่อแกลลอน) }} # ───────────────────────────────────────────── # ข้อความสถานะโพรเพน (เต็ม / คำเตือน / สำคัญ) # ────────────────────────────────────────────── - ชื่อ: ไอคอน "สถานะโพรเพน": "mdi: ก๊าซ- กระบอกสูบ" สถานะ: > {% ระดับที่ตั้งไว้=สถานะ ('sensor.propane_tank_level')|float %} {% ถ้าระดับ > 50 %} เต็ม {% ระดับ elif > 30 %} ปกติ {% ระดับ elif > 15 %} ต่ำ {% ระดับ elif > 5 %} วิกฤติ {% else %} ว่าง {% endif %} # ────────────────────────────────────────────── # ประมาณการต้นทุนการเติม # ────────────────────────────────────────────── - ชื่อ: "ประมาณการต้นทุนการเติมโพรเพน" unit_of_measurement: ไอคอน "USD": สถานะ "mdi:currency-usd": > {% กำหนดระดับ=สถานะ('sensor.propane_tank_level')|float %} {% set tank_size=250 %} {% set price_per_gallon=3.50 %} {% set gallons_to_fill=((100 - ระดับ) / 100) * tank_size %} {% ถ้าระดับ < 95 %} {{ "%.2f"|รูปแบบ (gallons_to_fill * price_per_gallon) }} {% อื่น ๆ %} 0 {% endif %}


สคริปต์ 6: โหนด-RED Flow สำหรับ Visual Automation

โฟลว์ภาพสำหรับผู้ที่ไม่ใช่-ผู้เขียนโค้ด

สำหรับผู้ใช้ที่ต้องการตัวสร้างการทำงานอัตโนมัติด้วยภาพมากกว่าการเขียนสคริปต์ YAML ต่อไปนี้คือขั้นตอนของโหนด-RED ที่จำลองสคริปต์การทำงานอัตโนมัติด้านบน:

รหัส复制

[{"id":propane_level_trigger","type": inject "z" propane_flow "name" ทุก 5 นาที "ทำซ้ำ" 300 "crontab" "" ครั้งเดียว ": เท็จ" หัวข้อ "" payload "" payloadType "วันที่" "x": 100, "y": 100, "wires": [["propane_fetch"]]}, {"id": "propane_fetch" "type" http:// request""z":propane_flow"" name "Fetch Nee-Vo API" "method" GET "url"https://api.nee-vo.com/v1/customer/tank_status" "tls" "x":300,"y":100,"wires":[["propane_parse","propane_debug"]]}, {"id": "propane_parse", "type": "json", "z": "propane_flow", "name": "แยกวิเคราะห์" JSON", "คุณสมบัติ" "เพย์โหลด" "การกระทำ" "obj" "x":500, "y":100, "สาย":[["propane_level_check","propane_gallons","propane_temp"]]}, {"id": "propane_level_check" "ประเภท" "สวิตช์" "" z "propane_flow" "ชื่อ" "ระดับ" ตรวจสอบ"property": "payload.tank_level_percent" "กฎ":[{"t": "lt" "v" "10" เกตt: "lt" "v" "20" องค์ประกอบ "lt" ": "v" "30"} "ตรวจสอบทั้งหมด": "false" "ซ่อมแซม":false,"outputs":3,"x":700,"y":100,"wires":[["propane_critical"],["propane_refill"],["propane_warning"]]}, {"id": propane_critical "type" "เทมเพลต" "z" "propane_flow" "ชื่อ" ข้อความวิจารณ์ "" แม่แบบ "" วิกฤต: โพรเพนอยู่ที่ {{payload.tank_level_percent}}%! เติมทันที!" "output" "str" "x":900, "y":60, "wires": [["propane_notify_critical","propane_flash_lights"]]}, {"id": "propane_refill", "type": "template", "z": "propane_flow", "name": "เติม" ข้อความ""แม่แบบ":⛽ โพรเพนที่ {{payload.tank_level_percent}}% กำหนดการเติมเร็วๆ นี้""output": "str": 900, "y":120, "wires":[["propane_notify_refill"]]}, {"id": "propane_warning", "type": "z": "propane_flow", "name" ข้อความเตือน "" แม่แบบ "🔔 โพรเพนที่ {{payload.tank_level_percent}}% การใช้งาน."output": "str" "x":900, "y":180, "wires":[["propane_notify_warning"]]}, {"id"propane_notify_critical""type"": "api call service" "z": "propane_flow" "name" "ส่ง Critical Push" "บริการ": "notify.mobile_app_yourphone" "x":1150, "y":60, "wires":[[]]}, {"id": propane_flash_lights "type": บริการเรียก API "z": "propane_flow" "ชื่อ" "แฟลชไฟทั้งหมด" "บริการ": "light.turn_on" "data": {\\"entity_id\\":\\"light.living_room,kitchen\\",\\"data\\":{\\"flash\\":\\"long\\"}}","x":1150,"y":20,"wires":[[]]}, {"id": propane_notify_refill "type" "api call service" "z" "propane_flow" "name" ส่งการเติมแบบพุช "service" notify.mobile_app_yourphone"x":1150,"y":120,"wires":[[]]}, {"id"propane_notify_warning""type"": "บริการโทรศัพท์ของ api" "z": "propane_flow" "ชื่อ" "ส่งคำเตือน" พุช"บริการ"notify.mobile_app_yourphone""x":1150,"y":180,"wires":[[]]}, {"id":propane_gallons","type": "เปลี่ยน" "z": propane_flow "" ชื่อ "อัปเดต" แกลลอน", "กฎ":[{"t":700,"y":260,"wires":[["propane_ha_entity"]]}, {"id"propane_temp", "type": "change", "z": propane_flow, "name": อัปเดต Temperature, , , , , , , , , , , , , , , , , , , , , , , , , , , , , . . . เอนทิตี", "จุดสิ้นสุด" "/api/states/sensor.propane_tank_level" "วิธีการ" POST "sendPayload":true, "sendHeaders":false,"x":950,"y":280,"wires":[[]]}]

หากต้องการใช้โหนดนี้-ขั้นตอนสีแดง:

ติดตั้งโหนด-ส่วนเสริมสีแดงใน Home Assistant (ผ่านการตั้งค่า → ส่วนเสริม-)

เปิดโหนด-RED ในเบราว์เซอร์ของคุณ

นำเข้าโฟลว์ (เมนู → นำเข้า → วาง JSON ด้านบน)

อัปเดต URL ของ API และข้อมูลรับรองในโหนด propane_fetch

อัปเดต propane_notify_critical และโหนดการแจ้งเตือนอื่นๆ ด้วยรหัสเอนทิตี Home Assistant จริงของคุณ

ปรับใช้โฟลว์


สคริปต์ 7: การแจ้งเตือนสรุปโพรเพนรายวัน

รายงานสถานะสิ้นสุด-ของ-วัน

สคริปต์นี้จะส่งสรุปสถานะโพรเพนรายวันในเวลาที่สะดวกทุกเย็น:

yaml复制

ระบบอัตโนมัติ: - นามแฝง: "สรุปโพรเพนรายวัน - 8 PM" id: daily_propane_summary ทริกเกอร์: แพลตฟอร์ม: เวลาที่: "20:00:00" การดำเนินการ: - บริการ: notify.mobile_app_yourphone ข้อมูล: ชื่อ: ข้อความ "📊 รายงานโพรเพนรายวัน": > ระดับถัง: {{ state('sensor.propane_tank_level') }}% แกลลอน ที่เหลืออยู่: {{ state('sensor.propane_gallons') }} แกลลอน วันที่คงเหลือ: {{ state('sensor.propane_days_remaining') }} วัน การบริโภควันนี้: {{ state('sensor.propane_today_consumption') }} แกลลอน อุณหภูมิถัง: {{ state('sensor.propane_tank_temperature') }} องศา F มูลค่าดอลลาร์ที่เหลืออยู่: ${{ รัฐ('sensor.propane_dollar_value_remaining') }} สถานะ: {{ รัฐ('sensor.propane_status') }}


คำถามที่พบบ่อย

คำถามที่ 1: Otodata มี API ที่สามารถเขียนสคริปต์ได้หรือไม่

Otodata ไม่ได้จัดทำเอกสารต่อสาธารณะเกี่ยวกับ- API ที่สามารถเข้าถึงได้ของลูกค้า ณ ปี 2026 จอภาพของพวกเขาใช้การเชื่อมต่อเซลลูล่าร์ LTE กับคลาวด์ของ Otodata และแอปของลูกค้าจะดึงข้อมูลจากคลาวด์นั้น - แต่จุดสิ้นสุด API ไม่ได้รับการจัดทำเอกสารต่อสาธารณะและไม่ได้ให้การเข้าถึงแก่ผู้บริโภคแต่ละราย วิธีเขียนสคริปต์ที่แนะนำสำหรับผู้ใช้ Otodata คือการเพิ่มเซ็นเซอร์ ESPHome หรือ Mopeka แบบขนานลงในแทงค์เดียวกันสำหรับการเขียนสคริปต์ Home Assistant ในขณะที่ Otodata ยังคงจัดการระบบอัตโนมัติของซัพพลายเออร์ต่อไป สมาชิกชุมชน r/homeassistant บางคนพยายามที่จะย้อนกลับ-รูปแบบโฆษณา BLE ของวิศวกร Otodata โดยใช้พร็อกซี ESP32 BLE แต่นี่เป็นการทดลองและไม่น่าเชื่อถือเพียงพอสำหรับสคริปต์ระบบอัตโนมัติในการผลิต

คำถามที่ 2: วิธีเขียนสคริปต์ที่ดีที่สุดสำหรับ Nee-Vo คืออะไร

แนวทางการเขียนสคริปต์ที่ดีที่สุดสำหรับ Nee-Vo ขึ้นอยู่กับว่าการใช้งาน Nee-Vo ของคุณเปิดเผย API ของลูกค้าหรือไม่ หากมีการเข้าถึง API (ติดต่อผู้จำหน่ายโพรเพนของคุณเพื่อสอบถาม) ให้ใช้สคริปต์เซ็นเซอร์ REST ในคู่มือนี้เพื่อสำรวจ Nee-Vo API โดยตรงใน Home Assistant หากไม่มีการเข้าถึง API วิธีการที่แนะนำจะเหมือนกับ Otodata: เพิ่มเซ็นเซอร์ ESPHome หรือ Mopeka แบบขนานลงในถังของคุณ และใช้สคริปต์อัตโนมัติ ESPHome + Home Assistant ในคู่มือนี้ วิธีการใช้เซ็นเซอร์แบบขนานเป็นวิธีที่น่าเชื่อถือที่สุด เนื่องจากช่วยให้คุณสามารถควบคุมข้อมูลเซ็นเซอร์ เฟิร์มแวร์ และตรรกะอัตโนมัติได้อย่างเต็มที่ - โดยไม่ต้องขึ้นอยู่กับความพร้อมใช้งาน API ของซัพพลายเออร์

คำถามที่ 3: สคริปต์อัตโนมัติควรตรวจสอบระดับถังบ่อยแค่ไหน?

สำหรับสคริปต์การโพล Home Assistant REST (Nee-Vo API) ช่วงเวลาการสแกน 5–10 นาทีก็เพียงพอแล้ว - ระดับแทงค์จะเปลี่ยนแปลงช้าพอที่จะทำให้ไม่จำเป็นต้องโพลบ่อยขึ้น และจะสร้างโหลด API มากเกินไป สำหรับสคริปต์พร็อกซี ESPHome BLE นั้น ESP32 จะบันทึกโฆษณา BLE อย่างต่อเนื่อง และ Home Assistant จะประมวลผลโฆษณาเหล่านั้นแบบเรียลไทม์ - ในเวลา - โดยไม่จำเป็นต้องมีช่วงเวลาการโพล สำหรับทริกเกอร์อัตโนมัติ (เกณฑ์การแจ้งเตือน) ทริกเกอร์ numeric_state ของ Home Assistant จะเริ่มทำงานทันทีเมื่อระดับเกินเกณฑ์ โดยไม่คำนึงถึงช่วงเวลาการโพล ตั้งค่าการแจ้งเตือนสรุปรายวันของคุณตามเวลาที่สอดคล้องกันทุกเย็น (แนะนำ: 19.00 น. - 20.00 น.) เพื่อรับรายงานสถานะปกติโดยไม่มีการแจ้งเตือนที่เหนื่อยล้า

คำถามที่ 4: สคริปต์เหล่านี้สามารถทำงานร่วมกับรถถังหลายคันได้หรือไม่?

ใช่ - สคริปต์ทั้งหมดในคู่มือนี้รองรับรถถังหลายคัน สำหรับการโพล REST API (Nee-Vo) ให้เพิ่มรายการเซ็นเซอร์ REST เพิ่มเติมสำหรับแต่ละจุดสิ้นสุด API ของแทงค์ สำหรับพร็อกซี ESPHome BLE นั้น ESP32 สามารถบันทึกโฆษณาจากเซ็นเซอร์ BLE หลายตัวพร้อมกัน - เพียงเพิ่มเซ็นเซอร์เทมเพลตสำหรับข้อมูลของแต่ละถัง สำหรับสคริปต์อัตโนมัติ ให้ทำซ้ำรายการอัตโนมัติและเปลี่ยนentity_idเพื่ออ้างอิงเอนทิตีเซ็นเซอร์เฉพาะของแต่ละถัง (เช่น sensor.propane_tank_level_garage, sensor.propane_tank_level_shop) ในโหนด-RED เพิ่มกิ่งก้าน propane_level_check เพิ่มเติมสำหรับแต่ละถัง

คำถามที่ 5: ฉันจะดีบักสคริปต์ที่ไม่ทำงานได้อย่างไร

สำหรับสคริปต์ REST API: ให้ใช้เครื่องมือนักพัฒนา Home Assistant (การตั้งค่า → เครื่องมือสำหรับนักพัฒนา → ตัวแก้ไขเทมเพลต) เพื่อทดสอบ value_template ของคุณกับข้อมูลดิบ JSON คัดลอกการตอบสนองของ API ตัวอย่างและวางลงในเครื่องมือแก้ไขเทมเพลตเพื่อยืนยันว่าการแยกเส้นทาง JSON ของคุณถูกต้อง สำหรับสคริปต์พร็อกซี ESPHome BLE: ตรวจสอบบันทึก ESPHome (esphome logs propane_ble_proxy) เพื่อดูว่าโฆษณา BLE ถูกจับหรือไม่ - หากคุณเห็นที่อยู่ MAC แบบดิบ แต่ไม่มีข้อมูลที่อ่านได้ เซ็นเซอร์กำลังออกอากาศแต่ไม่รู้จักรูปแบบ สำหรับสคริปต์การทำงานอัตโนมัติ: ใช้เครื่องมือการติดตาม Home Assistant (แท็บการติดตามบนการทำงานอัตโนมัติแต่ละรายการ) เพื่อดูว่าสิ่งใดที่ทริกเกอร์ เงื่อนไขใดที่ได้รับการประเมิน และการดำเนินการใดบ้าง เครื่องมือติดตามเป็นเครื่องมือแก้ไขจุดบกพร่องที่ทรงพลังที่สุดใน Home Assistant - โดยจะแสดงสถานะที่แน่นอนของทุกเอนทิตีในขณะที่ระบบอัตโนมัติเริ่มทำงาน


บรรทัดล่าง

Otodata และ Nee-เครื่องตรวจสอบถังโพรเพน Vo เหมาะที่สุดผ่านกลยุทธ์การเขียนสคริปต์แบบคู่ขนาน: ใช้แพลตฟอร์มของซัพพลายเออร์ (Otodata หรือ Nee-Vo) สำหรับการตั้งเวลาเติมอัตโนมัติ และใช้ ESPHome หรือเซ็นเซอร์ Mopeka ของคุณเองเพื่อควบคุมสคริปต์ Home Assistant เต็มรูปแบบ สคริปต์ทั้งเจ็ดในคู่มือนี้ - การโพล REST API, พร็อกซี ESPHome BLE, การแจ้งเตือนอัตโนมัติสามระดับ (คำเตือน/การเติม/วิกฤต), สคริปต์การรวมบ้านอัจฉริยะ (เทอร์โมสแตท วาล์ว ไฟ) เซ็นเซอร์เทมเพลตสำหรับค่าที่ได้รับ โหนด-โฟลว์ภาพสีแดง และการแจ้งเตือนสรุปรายวัน - จะทำให้คุณมีระบบอัตโนมัติในการตรวจสอบโพรเพนที่สมบูรณ์ ซึ่งทำงานเฉพาะเครื่องใน Home Assistant ประสบการณ์โดยรวมของชุมชน r/homeassistant ยืนยันว่าแนวทางคู่ขนานนี้มอบสิ่งที่ดีที่สุดของทั้งสองโลก: ค่าใช้จ่ายในการจัดการซัพพลายเออร์เป็นศูนย์ และการเป็นเจ้าของข้อมูลที่สมบูรณ์และความยืดหยุ่นของระบบอัตโนมัติในฝั่ง Home Assistant เริ่มต้นด้วยสคริปต์อัตโนมัติ (สคริปต์ 3) และเซ็นเซอร์เทมเพลต (สคริปต์ 5) จากนั้นขยายเป็นพร็อกซี ESPHome BLE (สคริปต์ 2) เพื่อความครอบคลุมสูงสุด แต่ละเลเยอร์สคริปต์จะเพิ่มมิติอื่นของค่า - ตั้งแต่การมองเห็นระดับพื้นฐานไปจนถึงการรวมระบบบ้านอัจฉริยะเต็มรูปแบบที่ตอบสนองต่อระดับโพรเพนของคุณโดยอัตโนมัติ


อัปเดตล่าสุด: กรกฎาคม 2026

ข้อจำกัดความรับผิดชอบ: คู่มือนี้ให้ตัวอย่างสคริปต์ Home Assistant และ ESPHome สำหรับ Otodata และ Nee-การผสานรวมการตรวจสอบถังโพรเพน Vo โพรเพนเพื่อวัตถุประสงค์ทางการศึกษา จุดสิ้นสุด API ชื่อฟิลด์ และรูปแบบ JSON ที่อ้างอิงในคู่มือนี้เป็นตัวอย่างที่เป็นตัวแทน - ตรวจสอบโครงสร้าง API จริงของคุณกับ Nee- การใช้งาน Vo เฉพาะของคุณเสมอ ก่อนที่จะกำหนดค่าเซ็นเซอร์ REST สคริปต์พร็อกซี ESPHome BLE บันทึกโฆษณา BLE ที่อยู่ใกล้เคียงทั้งหมด - ตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามข้อบังคับท้องถิ่นเกี่ยวกับการตรวจสอบอุปกรณ์ BLE ระบบอัตโนมัติของ Home Assistant โต้ตอบกับ-ระบบในโลกแห่งความเป็นจริง รวมถึง HVAC, วาล์วแก๊ส และอุปกรณ์ไฟฟ้า - ทดสอบระบบอัตโนมัติทั้งหมดในสภาวะที่ปลอดภัยก่อนที่จะนำไปใช้จริง คู่มือนี้ไม่มีส่วนเกี่ยวข้อง รับรองโดย หรือสนับสนุนโดย Otodata, Nee-Vo, Home Assistant, ESPHome, Node-RED หรือชุมชน r/homeassistant

ส่งคำถาม