Make mqtt topic configurable
This commit is contained in:
2 files changed
+17
-16
No files matched your search
@@ -9,5 +9,7 @@ mqtt:
|
|||||||
port: 1883
|
port: 1883
|
||||||
user: ~
|
user: ~
|
||||||
pass: ~
|
pass: ~
|
||||||
|
auto_discovery_topic: homeassistant/sensor/solaredge_inverter
|
||||||
|
state_topic: my_home/garage/sensor/solaredge_inverter
|
||||||
|
|
||||||
poll_interval: 3
|
poll_interval: 3
|
||||||
+15
-16
@@ -11,9 +11,9 @@ import yaml
|
|||||||
from solaredge_modbus_mqtt import SolarData
|
from solaredge_modbus_mqtt import SolarData
|
||||||
from pymodbus.exceptions import ConnectionException
|
from pymodbus.exceptions import ConnectionException
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == '__main__':
|
||||||
argparser = argparse.ArgumentParser()
|
argparser = argparse.ArgumentParser()
|
||||||
argparser.add_argument("--config", type=str, default=os.environ.get('CONFIG_FILE', 'config.yaml'), help="Path to the config.yaml")
|
argparser.add_argument('--config', type=str, default=os.environ.get('CONFIG_FILE', 'config.yaml'), help='Path to the config.yaml')
|
||||||
args = argparser.parse_args()
|
args = argparser.parse_args()
|
||||||
|
|
||||||
with open(args.config, 'r') as stream:
|
with open(args.config, 'r') as stream:
|
||||||
@@ -23,11 +23,11 @@ if __name__ == "__main__":
|
|||||||
print(exc)
|
print(exc)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
mqtt = mqtt.Client(client_id="", clean_session=True, userdata=None, protocol=mqtt.MQTTv311, transport="tcp")
|
mqtt = mqtt.Client(client_id='', clean_session=True, userdata=None, protocol=mqtt.MQTTv311, transport='tcp')
|
||||||
mqtt.username_pw_set(config['mqtt']['user'], config['mqtt']['pass'])
|
mqtt.username_pw_set(config['mqtt']['user'], config['mqtt']['pass'])
|
||||||
mqtt.connect(config['mqtt']['host'], config['mqtt']['port'], 60)
|
mqtt.connect(config['mqtt']['host'], config['mqtt']['port'], 60)
|
||||||
except OSError as err:
|
except OSError as err:
|
||||||
print("Cannot connect to MQTT on {0}:{1}, error: {2}".format(config['mqtt']['host'], config['mqtt']['port'], err))
|
print('Cannot connect to MQTT on {0}:{1}, error: {2}'.format(config['mqtt']['host'], config['mqtt']['port'], err))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
inverter = solaredge_modbus.Inverter(
|
inverter = solaredge_modbus.Inverter(
|
||||||
@@ -43,7 +43,7 @@ if __name__ == "__main__":
|
|||||||
try:
|
try:
|
||||||
solar_data = SolarData(inverter.read_all())
|
solar_data = SolarData(inverter.read_all())
|
||||||
except ConnectionException as err:
|
except ConnectionException as err:
|
||||||
print("Cannot connect to SolarEdge Modbus server on {0}:{1}, error: {2}".format(config['modbus']['host'], config['modbus']['port'], err))
|
print('Cannot connect to SolarEdge Modbus server on {0}:{1}, error: {2}'.format(config['modbus']['host'], config['modbus']['port'], err))
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
mqtt.loop()
|
mqtt.loop()
|
||||||
@@ -51,18 +51,18 @@ if __name__ == "__main__":
|
|||||||
if (publishedAutoDiscovery == False):
|
if (publishedAutoDiscovery == False):
|
||||||
for k, v in solar_data.data.items():
|
for k, v in solar_data.data.items():
|
||||||
message = {
|
message = {
|
||||||
"name": "SolarEdge " + k.replace("_", " ").title(),
|
'name': 'SolarEdge ' + k.replace('_', ' ').title(),
|
||||||
"unique_id": "solaredge_" + k,
|
'unique_id': 'solaredge_' + k,
|
||||||
"unit_of_measurement": SolarData.fields[k]['unit'] if 'unit' in SolarData.fields[k] else '',
|
'unit_of_measurement': SolarData.fields[k]['unit'] if 'unit' in SolarData.fields[k] else '',
|
||||||
"state_topic": "home/hal_beneden/sensor/solaredge_inverter/" + k,
|
'state_topic': config['mqtt']['state_topic'] + '/' + k,
|
||||||
"force_update": "True",
|
'force_update': 'True',
|
||||||
"device": {
|
'device': {
|
||||||
"identifiers": ["solaredge_inverter"],
|
'identifiers': ['solaredge_inverter'],
|
||||||
"name": "SolarEdge Inverter"
|
'name': 'SolarEdge Inverter'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mqtt.publish(
|
mqtt.publish(
|
||||||
'test/homeassistant/sensor/solaredge_inverter/' + str(k) + '/config',
|
config['mqtt']['auto_discovery_topic'] + '/' + str(k) + '/config',
|
||||||
json.dumps(message),
|
json.dumps(message),
|
||||||
qos=0,
|
qos=0,
|
||||||
retain=True
|
retain=True
|
||||||
@@ -70,8 +70,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
publishedAutoDiscovery = True
|
publishedAutoDiscovery = True
|
||||||
|
|
||||||
|
|
||||||
for k, v in solar_data.data.items():
|
for k, v in solar_data.data.items():
|
||||||
mqtt.publish('test/home/hal_beneden/sensor/solaredge_inverter/' + k, payload=str(v), qos=0, retain=False)
|
mqtt.publish(config['mqtt']['state_topic'] + '/' + k, payload=str(v), qos=0, retain=False)
|
||||||
|
|
||||||
time.sleep(args.poll_interval)
|
time.sleep(args.poll_interval)
|
||||||
Reference in new issue
Block a user