Bài Viết Mới Nhất
Hiển thị các bài đăng có nhãn Home Assistant. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Home Assistant. Hiển thị tất cả bài đăng

Thứ Ba, 31 tháng 1, 2023

Hướng dẫn Flash firmware Tasmota cho công tắc SONOFF

 

Hôm nay em xin chia sẻ với các bác về cách Flash firmware Tasmota cho con công tắc wifi Sonoff basic một cách đơn giản và nhanh chóng nhất.

Nói một chút về Sonoff (em hay đọc là S – On – Off), thì đây là một thương hiệu khá nổi tiếng ở VN cũng như trên thế giới. Đơn giản vì những sản phẩm của Sonoff có mức giá khá “bèo” so với trải nghiệm người dùng mà nó mang lại (Hiện tại trên tiki hay lazada đang rao bán mấy con Sonoff basic với giá dao động từ 100-120k). Và Sonoff cũng thuộc phân khúc nhóm các sản phẩm smarthome như Xiaomi, Yaris, Bkav, SmartZ, Asus, Smartthing (Samsung), v.v.. Tất nhiên thì mỗi hãng lại có một hệ sinh thái smarthome riêng, mỗi hãng đều có điểm mạnh, điểm yếu, đều có những sản phẩm có những chức năng đặc biệt mà hãng khác không có.

Vâng, sẽ chẳng có gì nếu nhu cầu của các bác chỉ đơn giản là dừng lại ở điều khiển một vài thiết bị trong nhà qua wifi, cao hơn một chút thì cài đặt thời gian biểu bật tắt thiết bị, hay là thiết kế thêm một vài ngữ cảnh đơn giản như: nếu có người thì bật đèn; nếu con công tắc A mở thì con B cũng mở theo.

Nhưng dùng càng lâu chúng ta càng có thêm nhiều nhu cầu, mà tất nhiên thì nếu chỉ dùng sản phẩm của một hãng thì chúng ta khó có thể đáp ứng được bài toán nhu cầu đó của bản thân, từ đó sinh ra phải dùng thêm sản phẩm của hãng khác, phải cài thêm nhiều app của riêng mỗi hãng. Chưa kể đến là nhiều anh em trong chúng ta có nhu cầu chuyên sâu hơn về quản lý thiết bị và thiết lập những ngữ cảnh phức tạp hơn theo mục đích riêng thì cuối cùng “Con đường nào cũng phải dẫn về thành Rome” =)). Chính vì vậy mà chúng ta cần hướng đến Home-Assistant (HASS), là bộ não để kết nối toàn bộ các thiết bị của tất cả các hãng lại với nhau và quản lý tập trung ở đó.

Trở lại vấn đề chính, thì trớ trêu thay, hiện tại HASS lại không hỗ trợ add trực tiếp các thiết bị của Sonoff vào hệ thống của mình, cho nên các “chuyên gia” công nghệ có tâm đã tạo ra bản mod Tasmota cho Sonoff để nó có thể kết nối vào hệ thống HASS. Nhờ đó mà ta có thể kết hợp cảm biến nhiệt độ của Xiaomi để ra lệnh cho công tắc Sonoff hay dùng cảm biến chuyển động của Samsung để kích hoạt công tắc Sonoff qua trung tâm HASS nhờ vào MQTT (cách cấu hình MQTT và add Sonoff vào HASS em sẽ viết ở bài sau, riêng bài này em tập trung vào cách flash firmware).

1. Các thiết bị cần chuẩn bị

Công tắc Sonoff basic

Mạch nạp firmware USB to COM TTL FT232RL, giá 88K (Link mua)

Lưu ý: lúc mua thì các bác mua kèm thêm 1 bộ cáp kết nối Jumper 1 đầu đực – 1 đầu cái nha, cái này để kết nối mạch của công tắc và mạch nạp firmware)

Một sợi cáp Micro Usb (để kết nối mạch FT232 vào máy tính)

Firmware và các phần mềm cần thiết

2. Tiến hành

Kết nối mạch nạp với công tắc.

Trên mạch con Sonoff có 4 cổng là TX, RX, 3V, GND.
Trên mạch con nạp FT232 cũng có các cổng kết nối tương tự.

Các bác kết nối theo cặp như sau:

TXRX
RXRX
3V3V
GNDGND

Đọc có vẻ rối như vậy, nhưng thực tế thì khá đơn giản, các bác xem hình em chụp là sẽ hiểu (Trong hình vì em lúc đặt hàng người ta ship nhầm cho con cáp 2 đầu cái nên phải chế thêm mấy chân kim bằng đồng, nhìn hơi củ chuối, các bác thông cảm).

Đưa công tắc vào chế độ upload firmware bằng cách sau:

Nhấn giữ nút chức năng trên con công tắc đồng thời cắm cáp kết nối từ con FT232 vào máy tính sau đó giữ thêm 3-4 giây thì thả ra.
(Nếu là lần đầu thì máy tính sẽ mất khoảng 2-3 phút để update driver.)

Vào phần Computer Management và kiểm tra xem cổng kết nối là cổng COM bao nhiêu.

Chạy file FlashESP8266.exe trong thư mục tải về

Chọn cổng COM phù hợp, và chọn file firmware là Sonoff.bin sau đó nhấn vào nút Flash.

Nếu màn hình chạy như sau thì chứng tỏ flash đã thành công

Sau khi flash xong thì chúng ta dùng điện thoại để kết nối vào wifi của con Sonoff

Khi kết nối thành công, sẽ hiện giao diện để cấu hình wifi cho con Sonoff.

Chúng ta điền tên wifi và password của wifi nhà mình vào sau đó nhấn save.

Sau khi Sonoff kết nối wifi thành công thì chúng ta tắt và bật lại bằng cách rút dây usb.

Chúng ta nên cố định ip của con Sonoff bằng cách vào modem và tìm ip của con công tắc mới flash xong và set ip tĩnh cho nó.

Vậy là đã flash xong cho con Sonoff basic. Cảm ơn các bác đã theo dõi.

Nguồn: Tinhte

Chủ Nhật, 29 tháng 1, 2023

Dùng mạch Pzem-004T v3 làm công tơ điện tử, tích hợp vào Home Assistant

 

GIỚI THIỆU

Chào các bạn, bài viết này hướng dẫn cách sử dụng module pzem-004T tích hợp vào hass để làm 1 công tơ điện tử thông minh.
Những việc bạn có thể làm với nó đó là đo volt nguồn điện, đo dòng điện, công suất tiêu thụ, lượng điện tiêu thụ hôm nay, hôm qua và tổng lượng điện tiêu thụ hàng tháng.



Khi tích hợp vào Home Assistant thì các bạn có thể làm được nhiều điều hơn như lập biểu đồ thống kê lượng điện tiêu thụ hàng giờ, hàng ngày, hàng tháng…

CHUẨN BỊ

Trong bài viết này, mình dùng mạch pzem-004T V3, kết nối với sonoff basic qua giao tiếp TTL
Các bạn có thể mua mạch pzem 004T tại đây
Sonoff basic đã được nạp tasmota 6.5
Home Assistant đã được cài đặt MQTT

Để làm được như trong bài viết này các bạn phải biết một số kiến thức cơ bản về mqtt, sensor, lovelace trong hass.

Các bạn có thể xem hướng dẫn cách tải và nạp tasmota tại đây

KẾT NỐI

 

Các bạn Kết nối như trên hình, Pzem-004T hoạt động ở điện áp 5v, vì vậy để nó hoạt động được ở điện áp 3v3 cùng với esp8266 các bạn phải nối thêm điện trở ở vị trí sau:

Gắn thêm điện trở để pzem 004t hoạt động tốt ở điện áp 3v3

  1. nối GND của Pzem-004T với GND của Sonoff basic, VCC của pzem-004T với 3.3V của Sonoff basic
  2. TX và RX của Pzem-004T nối lần lượt với RX và TX của Sonoff basic
  3. Luồn cuộn dây vào 1 sợ dây điện lưới ngay phía sau cầu dao tổng.
  4. Cấp nguồn cho Pzem-004T và sonoff basic

CÀI ĐẶT TASMOTA TRÊN SONOFF

Để Sonoff lấy được dữ liệu của pzem-004T và hoạt động đúng các bạn phải cài đặt module như sau:

Cài đặt cổng GPIO:

Gõ địa chỉ IP để vào giao diện của tasmota, chọn configuration -> configure module:

  1. GPIO1 Serial Out: chọn PZEM0XX Tx (62)
  2. GPIO3 Serial In: chọn PZEM016 Rx (98)

Giao diện khi cài đặt thành công

Cài đặt độ trễ tín hiệu

Mặc định thì tasmota sẽ lấy dữ liệu 5 phút 1 lần, các bạn có thể giảm thời gian này xuống 1 phút bằng cách gõ lệnh trong console:

TelePeriod 60

Cài đặt múi giờ.

Tasmota tự động đồng bộ hóa giờ qua internet, tuy nhiên múi giờ mặc định là GMT-1
Tasmota sai giờ dẫn đến thời gian reset bộ đếm điện năng tiêu thụ hàng ngày không đúng, với múi giờ mặc định thì nó sẽ reset bộ đếm = 0 vào lúc 6:00

Cách chỉnh lại múi giờ rất đơn giản, chỉ cần vào console gõ lệnh sau:

Timezone +7

Các bạn xem giờ trong console xem đúng chưa nhé.

Cài đặt MQTT

Các bạn cài đặt MQTT trên sonoff cho đúng để kết nối với home assistant nhé.

CÀI ĐẶT TRÊN HOME ASSISTANT

Bước kết nối, và cài đặt trên tasmota đã hoàn tất, tuy nhiên qua giao diện của tasmota chúng ta chỉ thấy được thông số của ngày hôm nay, hôm qua và tổng hàng tháng.
Để làm được nhiều việc hơn thì chúng ta phải kết nối hệ thống này với home assistant.

Lấy dữ liệu từ sonoff

Dữ liệu của Pzem-004T trả về dưới định dạng JSON, bạn có thể xem dữ liệu sensor trong phần console,
đây là ví dụ 1 đoạn dữ liệu JSON mà tasmota trả về:

{
"Time":"2019-07-08T15:48:44",
"ENERGY":{
"TotalStartTime":"2019-06-29T10:34:48",
"Total":95.325,
"Yesterday":16.842,
"Today":11.621,
"Period":27,
"Power":1639,
"ApparentPower":1658,
"ReactivePower":248,
"Factor":0.99,
"Frequency":50,
"Voltage":210,
"Current":7.899
}
}

Để hiển thị dữ liệu này trên home assistant thì chúng ta phải tạo 1 sensor mqtt
Trong configuration.yaml thêm dòng sau:

sensor:
- platform: mqtt
name: "Voltage"
state_topic: "tele/powermeter/SENSOR"
value_template: "{{ value_json['ENERGY'].Voltage }}"
unit_of_measurement: "V"
icon: mdi:flash
- platform: mqtt
name: "Power"
state_topic: "tele/powermeter/SENSOR"
value_template: "{{ value_json['ENERGY'].Power }}"
unit_of_measurement: "W"
icon: mdi:power-plug
- platform: mqtt
name: "Energy Today"
state_topic: "tele/powermeter/SENSOR"
value_template: "{{ value_json['ENERGY'].Today }}"
unit_of_measurement: "kWh"
icon: mdi:calendar-today
- platform: mqtt
name: "Energy Yesterday"
state_topic: "tele/powermeter/SENSOR"
value_template: "{{ value_json['ENERGY'].Yesterday }}"
unit_of_measurement: "kWh"
icon: mdi:calendar-today
- platform: mqtt
name: "Energy Total"
state_topic: "tele/powermeter/SENSOR"
value_template: "{{ value_json['ENERGY'].Total }}"
unit_of_measurement: "kWh"
icon: mdi:calendar-blank

Như dòng code trên, mình đã tạo 5 sensors để lưu 5 thông số.

Dùng Utility Meter để theo dõi thông số chính xác hơn

Mình dùng hệ thống này được vài hôm và phát hiện ra khi mất điện thì lượng điện tiêu thụ ngày hôm nay ([‘ENERGY’].Today) sẽ bị sai,
ngoài ra, tổng điện tiêu thụ hàng tháng được reset vào ngày 1 của đầu tháng, tuy nhiên điện lực lại chốt số công tơ vào ngày khác.

Vì vậy mình sẽ dùng 1 component có sẵn của home assistant là Utility Meter.
Component tạo ra biến đếm có chức năng là theo dõi giá trị tăng dần của 1 sensor khác.
Biến đếm này có thể reset hàng ngày vào giờ nào đó, hoặc hàng tháng vào 1 ngày/giờ nào đó theo thiết lập sẵn.

Việc dùng Utility Meter sẽ khắc phục được nhược điểm của của pzem-004T.

Mình tạo ra 2 sensors, để lưu trữ lượng điện tiêu thụ hàng ngày, hàng tháng như sau:

utility_meter:
daily_energy:
source: sensor.energy_today
cycle: daily
monthly_energy:
source: sensor.energy_today
cycle: monthly
offset:
days: 14

Các bạn chú ý phần offset days: 14 tức là nó sẽ reset về 0 vào 0:00 ngày 14 hàng tháng.

Hiển thị dữ liệu sensor lên Home Asssitant

Trong bài viết này, mình sử dụng custom card để hiển thị biểu đồ dữ liệu tên là Mini Graph Card,
Các bạn có thể cài đặt theo hướng dẫn ở đây https://github.com/kalkih/mini-graph-card

Sau khi cài đặt hãy thử thêm 1 custom card như sau để thống kê lượng điện hàng giờ:

entities:
- sensor.power
name: Power
points_per_hour: 1
show:
graph: bar
type: 'custom:mini-graph-card'

Dùng Influxdb để lưu và thống kê dữ liệu hiệu quả hơn

Home assistant sử dụng SQLlite để lưu trữ dữ liệu của sensor, switch, …
Việc lưu hết thông số của Home Assistant lên đó sẽ làm dữ liệu ngày một tăng lên, làm giảm tốc độ khởi động. Vì vậy mình khuyên các bạn nên để giới hạn lưu dữ liệu thấp xuống, không lưu các trạng thái, sensor không cần thiết để có 1 hệ thống hoạt động tối ưu.

Influxdb là cơ sở dữ liệu được tối ưu cho việc lưu dữ liệu theo chuỗi thời gian, nó được tích hợp sẵn vào Home Assistant dưới dạng Addon, các bạn có thể cài thêm.

Sau khi cài đặt influxdb các bạn có thể lập biểu đồ thống kê năng lượng điện tiêu thụ hàng ngày như sau:

MỞ RỘNG

Công thức tính tiền điện hàng tháng dùng Template sensor trong home assistant

Công thức tính theo bảng giá điện sinh hoạt, các bạn có thể thêm vào hass như 1 sensor:

sensor:
- platform: template
sensors:
tiendien:
friendly_name: "Tiền điện"
unit_of_measurement: 'đ'
value_template: >-
{% set watt = states('sensor.monthly_energy')|float %}
{%- if(watt >= 400) -%}
{% set money = 83900 + 173400 + 201400 + 253600 + 283400 + (watt-400)*2927 %}
{%- elif(watt >= 300) -%}
{% set money = 83900 + 173400 + 201400 + 253600 + (watt-300)*2834 %}
{%- elif(watt >= 200) -%}
{% set money = 83900 + 173400 + 201400 + (watt-200)*2536 %}
{%- elif(watt >= 100) -%}
{% set money = 83900 + 173400 + (watt-100)*2014 %}
{%- elif(watt >= 50) -%}
{% set money = 83900 + (watt-50)*1734 %}
{%- else -%}
{% set money = watt*1678 %}
{%- endif-%}
{% set money = money*1.1 %}
{{ "{0:,.0f}".format(money| int) }}

 

Cách calibrate module pzem-004T

Thiết bị được bán ra đã được calibrate ít nhất 2 lần bằng thiết bị chuyên dụng (theo lời NSX).

Trong trường hợp module của bạn không chính xác thì bạn có thể calibrate nó bằng phần mềm đi theo của nxs,
việc calibrate module cần có thiết bị chuyên dụng, điều kiện hiệu chuẩn là điện 220v, dòng 10A

Mật khẩu để calibrate là pzem014/6

Theo: ykh.io