add mqtt part and compose file
This commit is contained in:
parent
8e99fbe529
commit
970888ebfa
|
|
@ -1,6 +1,7 @@
|
||||||
FROM python:3.10
|
FROM python:3.10
|
||||||
|
|
||||||
RUN adduser --disabled-password --gecos "" python
|
RUN adduser --disabled-password --gecos "" python
|
||||||
|
ENV PATH="/home/python/.local/bin:$PATH"
|
||||||
|
|
||||||
USER python
|
USER python
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,10 @@
|
||||||
|
[apsystems]
|
||||||
username = ""
|
username = ""
|
||||||
password = ""
|
password = ""
|
||||||
|
|
||||||
|
[mqtt]
|
||||||
|
username = ""
|
||||||
|
password = ""
|
||||||
|
broker = ""
|
||||||
|
port = 1883
|
||||||
|
topic = "ez1cloud2mqtt"
|
||||||
|
|
|
||||||
7
docker-compose.yml
Normal file
7
docker-compose.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
version: "3.9"
|
||||||
|
services:
|
||||||
|
ez1cloud2mqtt:
|
||||||
|
image: ez1cloud2mqtt
|
||||||
|
build: .
|
||||||
|
volumes:
|
||||||
|
- ./config.toml:/config.toml
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
toml==0.10.2
|
toml==0.10.2
|
||||||
requests~=2.31.0
|
requests~=2.31.0
|
||||||
|
paho-mqtt~=1.6.1
|
||||||
13
run.py
13
run.py
|
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import os
|
import os
|
||||||
import toml
|
import toml
|
||||||
|
import paho.mqtt.client as mqtt
|
||||||
|
|
||||||
from CloudConnection import CloudConnection
|
from CloudConnection import CloudConnection
|
||||||
from Inverter import Inverter
|
from Inverter import Inverter
|
||||||
|
|
@ -11,7 +12,7 @@ async def main():
|
||||||
with open("config.toml", "r") as f:
|
with open("config.toml", "r") as f:
|
||||||
config = toml.load(f)
|
config = toml.load(f)
|
||||||
|
|
||||||
connection = CloudConnection(config["username"], config["password"])
|
connection = CloudConnection(config["apsystems"]["username"], config["apsystems"]["password"])
|
||||||
connection.generate_user_token()
|
connection.generate_user_token()
|
||||||
inverter = connection.get_inverter()
|
inverter = connection.get_inverter()
|
||||||
devices = []
|
devices = []
|
||||||
|
|
@ -22,9 +23,17 @@ async def main():
|
||||||
for device in devices:
|
for device in devices:
|
||||||
asyncio.create_task(device.start())
|
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:
|
while True:
|
||||||
item = await queue.get()
|
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__':
|
if __name__ == '__main__':
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user