From 1066a980de39519c049ee8d0c0c59fdfb2d3bcc9 Mon Sep 17 00:00:00 2001 From: Daniel Kempkens Date: Sat, 3 Aug 2024 20:55:56 +0200 Subject: [PATCH] feat: measure home energy usage --- lib/weewx_proxy/modbus/deye.ex | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/weewx_proxy/modbus/deye.ex b/lib/weewx_proxy/modbus/deye.ex index 1506ad9..4482c79 100644 --- a/lib/weewx_proxy/modbus/deye.ex +++ b/lib/weewx_proxy/modbus/deye.ex @@ -57,6 +57,29 @@ defmodule WeewxProxy.Modbus.Deye do {:ok, state} end + @impl true + def handle_message(["bitshake", "tele", "smartmeter", topic], publish, state) do + if topic == "SENSOR" do + {:ok, meter_data} = Jason.decode(publish) + + timestamp = DateTime.utc_now() |> DateTime.to_unix() + day = get_in(meter_data, ["eBZ", "E_in"]) + active = get_in(meter_data, ["eBZ", "Power"]) + + mqtt_data = %{ + dateTime: timestamp, + homeEnergyDay: day, + homeEnergyActive: active + } + + :ok = Publisher.publish("weewx/ingest_si", mqtt_data) + + {:ok, state} + else + {:ok, state} + end + end + @impl true def handle_message(topic, publish, state) do full_topic = Enum.join(topic, "/")