diff --git a/Cargo.toml b/Cargo.toml index a91265d..f286972 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,4 +15,5 @@ futures = "0.3.28" tokio = { version = "1.32.0", features=["macros", "rt-multi-thread"] } chrono = "0.4.31" actix-web = "4.4.0" -actix-files = "0.6.2" \ No newline at end of file +actix-files = "0.6.2" +midea = { git = "https://gavania.de/hodasemi/Midea.git" } \ No newline at end of file diff --git a/meross.py b/meross.py deleted file mode 100644 index 2b99c51..0000000 --- a/meross.py +++ /dev/null @@ -1,94 +0,0 @@ -import asyncio -import os -import datetime -import time -import sqlite3 - -from meross_iot.controller.mixins.electricity import ElectricityMixin -from meross_iot.http_api import MerossHttpClient -from meross_iot.manager import MerossManager - -EMAIL = os.environ.get('MEROSS_EMAIL') or "superschneider@t-online.de" -PASSWORD = os.environ.get('MEROSS_PASSWORD') or "hodasemi1" - - -async def main(): - # Setup the HTTP client API from user-password - http_api_client = await MerossHttpClient.async_from_user_password( - api_base_url='https://iotx-eu.meross.com', - email=EMAIL, - password=PASSWORD - ) - - # Setup and start the device manager - manager = MerossManager(http_client=http_api_client) - await manager.async_init() - - # Retrieve all the devices that implement the electricity mixin - await manager.async_device_discovery() - devs = manager.find_devices(device_class=ElectricityMixin) - - if len(devs) < 1: - print("No electricity-capable device found...") - else: - dev = devs[0] - - # Update device status: this is needed only the very first time we play with this device (or if the - # connection goes down) - await dev.async_update() - - con = connect_to_db() - - while True: - # Read the electricity power/voltage/current - instant_consumption = await dev.async_get_instant_metrics() - - insert_into_db(con, instant_consumption.power) - - time.sleep(3.0) - - # Close the manager and logout from http_api - manager.close() - await http_api_client.async_logout() - - -def connect_to_db(): - con = sqlite3.connect("data.db") - - cur = con.cursor() - - cur.execute(""" - CREATE TABLE IF NOT EXISTS data ( - id INTEGER PRIMARY KEY, - time INTEGER NOT NULL, - watts REAL NOT NULL - )""") - - con.commit() - - return con - - -def insert_into_db(con, watts): - now = datetime.datetime.now() - unix_time = time.mktime(now.timetuple()) * 1000 - - date = (int(unix_time), watts) - - cur = con.cursor() - - cur.execute(""" - INSERT INTO data (time, watts) - VALUES (?, ?) - """, - date) - - con.commit() - - -if __name__ == '__main__': - if os.name == 'nt': - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) - loop = asyncio.get_event_loop() - loop.run_until_complete(main()) - loop.stop() diff --git a/plot_meross.py b/plot_meross.py deleted file mode 100644 index 9e11729..0000000 --- a/plot_meross.py +++ /dev/null @@ -1,25 +0,0 @@ -import sqlite3 -import matplotlib.pyplot as plt -import matplotlib.dates as mdates -import numpy as np -import datetime - -con = sqlite3.connect("data.db") -cur = con.cursor() - -res = cur.execute("SELECT time, watts FROM data") - -x_values = [] -y_values = [] - -for time, watts in res: - x_values.append(datetime.datetime.fromtimestamp(time / 1000)) - y_values.append(watts) - -fig, ax = plt.subplots() -ax.plot(x_values, y_values) -plt.tick_params(rotation=45) -ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M - %d.%m")) - -plt.ylim([0, max(y_values) + 50]) -plt.show() \ No newline at end of file