aboutsummaryrefslogtreecommitdiffstats
path: root/devices.py
blob: 0b0ba2afda69fb18e248e4c65443b2fe4c511cb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import tasmotadevicecontroller
import database
import asyncio
import json
import os

COUNTER_NAMES = ["Total", "Today"]
GAUGE_NAMES = ["Power", "ApparentPower", "ReactivePower", "Factor", "Voltage", "Current"]
SUMMARY_NAMES = ["TotalStartTime", "Yesterday"]
BOOLEAN_ENUM_NAMES = ["Power"]

async def get_energy_for(host, username = None, password = None):
    device = await tasmotadevicecontroller.TasmotaDevice().connect(host, username, password)
    energy = await device.sendRawRequest("Status 8")
    power = await device.getPower()
    # friendlyname = await device.getFriendlyName()
    energy["StatusSNS"]["ENERGY"]["Power"] = power
    return energy["StatusSNS"]["ENERGY"]
    # return {"%s_%s" % (status["FriendlyName"], k): v for k, v in status.items()}

async def log_energies_for(db: database.PowerDatabase, host, username, password):
    pass

if __name__  == "__main__":
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        print(asyncio.run(get_energy_for("switch.plug", "admin", "securebackdoor")))
        # asyncio.run(get_all_plugs("4u.plug:admin:securebackdoor,switch.plug:admin:securebackdoor,router.plug:admin:securebackdoor,nas.plug:admin:securebackdoor"))
    except KeyboardInterrupt:
        pass