Cześć.
Udało mi się uruchomić odczyty z chint dtsu666 za pomocą esp32 rs485 i esphome do home assistanta.
Wszystkie wartości wydają się być w normie, “na oko”, za wyjątkiem częstotliwości. Spodziewałbym się 50Hz, ale mam 174,08 Hz. Nie wiem czego to jest częstotliwość.
Logi:
[11:37:03][D][modbus_controller.sensor:025]: Sensor new state: 17408.00
[11:37:03][D][sensor:094]: 'Częstotliwość': Sending state 174.08000 Hz with 2 decimals of accuracy
Dokumentacja:
Konfiguracja:
esphome:
name: main-meter
friendly_name: main_meter
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "***"
ota:
- platform: esphome
password: "***"
wifi:
ssid: "***"
password: "***"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Main-Meter Fallback Hotspot"
password: "8yretuaeJSX8"
captive_portal:
###
uart:
id: mod_bus
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 9600
stop_bits: 1
# debug:
# direction: BOTH
# dummy_receiver: false
# after:
# delimiter: "\n"
# sequence:
# - lambda: UARTDebug::log_string(direction, bytes);
modbus:
#flow_control_pin: 23
send_wait_time: 200ms
id: mod_bus_vcx
modbus_controller:
- id: vcx
modbus_id: mod_bus_vcx
command_throttle: 100ms
setup_priority: -10
update_interval: 10s
text_sensor:
- platform: template
name: "Main-meter Uptime (human readable)"
id: uptime_human
icon: "mdi:clock-start"
update_interval: 5s
sensor:
#------------------------------------------------------
# Napięcia
#------------------------------------------------------
- platform: modbus_controller
id: faza_l1_napiecie
name: "Faza L1 napięcie"
state_class: measurement
register_type: read
address: 0x2006
unit_of_measurement: "V"
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l2_napiecie
name: "Faza L2 napięcie"
state_class: measurement
register_type: read
address: 0x2008
unit_of_measurement: "V"
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l3_napiecie
name: "Faza L3 napięcie"
address: 0x200A
state_class: measurement
unit_of_measurement: "V"
register_type: read
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.1
#------------------------------------------------------
# Częstotliwość
#------------------------------------------------------
- platform: modbus_controller
id: czestotliwosc
name: "Częstotliwość"
register_type: read
state_class: measurement
address: 0x2044
unit_of_measurement: "Hz"
value_type: S_WORD
accuracy_decimals: 2
filters:
- multiply: 0.01
#------------------------------------------------------
# Prąd
#------------------------------------------------------
- platform: modbus_controller
id: faza_l1_prad
name: "Faza L1 prąd"
register_type: read
state_class: measurement
address: 0x200C
unit_of_measurement: "A"
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.001
- platform: modbus_controller
id: faza_l2_prad
name: "Faza L2 prąd"
register_type: read
state_class: measurement
address: 0x200E
unit_of_measurement: "A"
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.001
- platform: modbus_controller
id: faza_l3_prad
name: "Faza L3 prąd"
register_type: read
state_class: measurement
address: 0x2010
unit_of_measurement: "A"
value_type: FP32
accuracy_decimals: 1
filters:
- multiply: 0.001
#------------------------------------------------------
# Moc chwilowa
#------------------------------------------------------
- platform: modbus_controller
id: faza_l1_moc_czynna
name: "Faza L1 moc czynna"
register_type: read
state_class: measurement
address: 0x2014
unit_of_measurement: "W"
value_type: FP32
accuracy_decimals: 0
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l2_moc_czynna
name: "Faza L2 moc czynna"
register_type: read
state_class: measurement
address: 0x2016
unit_of_measurement: "W"
value_type: FP32
accuracy_decimals: 0
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l3_moc_czynna
name: "Faza L3 moc czynna"
register_type: read
state_class: measurement
address: 0x2018
unit_of_measurement: "W"
value_type: FP32
accuracy_decimals: 0
filters:
- multiply: 0.1
- platform: modbus_controller
id: calkowita_moc_czynna
name: "Całkowita moc czynna"
register_type: read
state_class: measurement
address: 0x2012
unit_of_measurement: "kW"
value_type: FP32
accuracy_decimals: 0
filters:
- multiply: 0.1
#------------------------------------------------------
# Energia
# ------------------------------------------------------
- platform: modbus_controller
id: moc_czynna_pobrana
name: "Moc czynna pobrana"
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x401E
unit_of_measurement: "kWh"
value_type: FP32
accuracy_decimals: 2
#skip_updates: 60
filters:
- multiply: 1
- platform: modbus_controller
id: moc_czynna_oddana
name: "Moc czynna oddana"
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x4028
unit_of_measurement: "kWh"
value_type: FP32
accuracy_decimals: 2
#skip_updates: 60
filters:
- multiply: 1
#------------------------------------------------------
# wifi signal
#------------------------------------------------------
- platform: wifi_signal
id: dtsu_wifi_signal
name: "WiFi Signal main-meter"
update_interval: 60s
icon: "mdi:wifi"
- platform: uptime
id: inverter_uptime
name: "Main-meter Uptime"
filters:
- lambda: return x / 60.0;
unit_of_measurement: minutes
icon: "mdi:clock-start"
- platform: uptime
name: Main-meter Uptime
id: uptime_sensor
update_interval: 5s
icon: "mdi:clock-start"
internal: true
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
- platform: template
unit_of_measurement: "%"
name: "Main-meter WiFi Signal (human readable)"
accuracy_decimals: 0
update_interval: 30s
device_class: "signal_strength"
icon: "mdi:wifi"
lambda: return (-0.0134 * (id(dtsu_wifi_signal).state * id(dtsu_wifi_signal).state ) ) + (-0.2228 * id(dtsu_wifi_signal).state) + 100.2;