Source code for juham_automation.ts.energycostcalculator_ts

from typing import Any
from typing_extensions import override
import json

from masterpiece.mqtt import MqttMsg

from juham_core import JuhamTs
from juham_core.timeutils import (
    epoc2utc,
    timestampstr,
)


[docs] class EnergyCostCalculatorTs(JuhamTs): """The EnergyCostCalculator recorder.""" def __init__(self, name: str = "ecc_ts") -> None: super().__init__(name) self.topic_net_energy_balance = self.make_topic_name("net_energy_cost")
[docs] @override def on_connect(self, client: object, userdata: Any, flags: int, rc: int) -> None: super().on_connect(client, userdata, flags, rc) if rc == 0: self.subscribe(self.topic_net_energy_balance)
[docs] @override def on_message(self, client: object, userdata: Any, msg: MqttMsg) -> None: super().on_message(client, userdata, msg) if msg.topic == self.topic_net_energy_balance: m = json.loads(msg.payload.decode()) self.record_powerconsumption(m)
[docs] def record_powerconsumption(self, m: dict[str, Any]) -> None: """Record powerconsumption Args: m (dict[str, Any]): to be recorded """ self.write_point( "energycost", {"site": m["name"]}, m, timestampstr(m["ts"]) )