"name": "Smart Socket 1",
"id": "01234567890123456789",
"key": "0123456789abcdef",
"name": "Smart Socket 2",
"id": "12345678901234567890",
"key": "1234567890abcdef",
__author__ = "Damian Pasternok <my_forename at pasternok.org>"
__copyright__ = "Copyright (C) 2021 Damian Pasternok"
d = tinytuya.OutletDevice(
device.get("id"), device.get("ip"), device.get("key")
device_object["data"] = data
self.data.append(device_object)
super(Munin, self).__init__()
out = """graph_title Tuya WiFi Smart Plug power monitor
graph_args --logarithmic --units=si
graph_vlabel power parameters
for param in (("current", "mA"), ("power", "W"), ("voltage", "V")):
for i, device in enumerate(self.data):
out += f"""{param[0]}{i}.label {self.data[i].get("name") or f"Generic Smart Plug #{i}"}
{param[0]} [{param[1]}]\n"""
for param in (("current", "mA"), ("power", "W")):
out += f"total_{param[0]}.label Total {param[0]} [{param[1]}]\n"
out += f"total_{param[0]}.draw LINE2\n"
super(Munin, self).__init__()
for param in (("current", "4", 1), ("power", "5", 10), ("voltage", "6", 10)):
for i, device in enumerate(self.data):
out += f"""{param[0]}{i}.value {self.data[i].get("data").get("dps").get(param[1]) /
param[2]}\n"""
if param[0] == "current":
self.data[i].get("data").get("dps").get(param[1]) / param[2]
elif param[0] == "power":
self.data[i].get("data").get("dps").get(param[1]) / param[2]
out += f"total_current.value {total_current}\n"
out += f"total_power.value {total_power}\n"
parser = argparse.ArgumentParser(description="Tuya WiFi Smart Plug Munin Plugin.")
parser.add_argument("config", help="print graph configuration", nargs="?")
args = parser.parse_args()
if args.config == "config":
if __name__ == "__main__":