add mqtt part and compose file

This commit is contained in:
Stefan Regnery 2023-09-19 11:18:05 +02:00
parent 8e99fbe529
commit 970888ebfa
5 changed files with 31 additions and 5 deletions

View File

@ -1,6 +1,7 @@
FROM python:3.10
RUN adduser --disabled-password --gecos "" python
ENV PATH="/home/python/.local/bin:$PATH"
USER python

View File

@ -1,2 +1,10 @@
[apsystems]
username = ""
password = ""
[mqtt]
username = ""
password = ""
broker = ""
port = 1883
topic = "ez1cloud2mqtt"

7
docker-compose.yml Normal file
View File

@ -0,0 +1,7 @@
version: "3.9"
services:
ez1cloud2mqtt:
image: ez1cloud2mqtt
build: .
volumes:
- ./config.toml:/config.toml

View File

@ -1,2 +1,3 @@
toml==0.10.2
requests~=2.31.0
paho-mqtt~=1.6.1

13
run.py
View File

@ -1,6 +1,7 @@
import asyncio
import os
import toml
import paho.mqtt.client as mqtt
from CloudConnection import CloudConnection
from Inverter import Inverter
@ -11,7 +12,7 @@ async def main():
with open("config.toml", "r") as f:
config = toml.load(f)
connection = CloudConnection(config["username"], config["password"])
connection = CloudConnection(config["apsystems"]["username"], config["apsystems"]["password"])
connection.generate_user_token()
inverter = connection.get_inverter()
devices = []
@ -22,9 +23,17 @@ async def main():
for device in devices:
asyncio.create_task(device.start())
mqtt_client = mqtt.Client()
mqtt_client.username_pw_set(config["mqtt"]["username"], config["mqtt"]["password"])
mqtt_client.connect(config["mqtt"]["broker"], config["mqtt"]["port"])
while True:
item = await queue.get()
print(item)
for i in item.data:
return_code, _ = mqtt_client.publish(f"{config['mqtt']['topic']}/{item.name}/{i}", item.data[i])
if return_code == 4:
print("Invalid credentials, check your configuration.")
exit(1)
if __name__ == '__main__':