Add MQTT autodiscovery for HA MQTT Addon

This commit is contained in:
Linus Dietz
2023-07-03 09:02:21 +02:00
parent 9a6d128cdf
commit 91c50dba05
6 changed files with 44 additions and 10 deletions
+8 -6
View File
@@ -1,10 +1,12 @@
name: "Volvo2Mqtt"
description: "Volvo AAOS MQTT bridge"
version: "1.6.5"
version: "1.7.0"
slug: "volvo2mqtt"
init: false
url: "https://github.com/Dielee/volvo2mqtt"
apparmor: true
services:
- 'mqtt:need'
map:
- addons:rw
options:
@@ -13,10 +15,10 @@ options:
TZ: null
debug: false
mqtt:
broker: null
port: 1883
username: ""
password: ""
broker: "auto_broker"
port: "auto_port"
username: "auto_user"
password: "auto_password"
volvoData:
username: null
password: null
@@ -32,7 +34,7 @@ schema:
debug: bool
mqtt:
broker: str
port: int(1,)
port: str
username: str?
password: str?
volvoData:
+1 -1
View File
@@ -1,6 +1,6 @@
from config import settings
VERSION = "v1.6.5"
VERSION = "v1.7.0"
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
+2 -1
View File
@@ -2,11 +2,12 @@ import logging
from volvo import authorize
from mqtt import update_loop, connect
from const import VERSION
from util import set_tz, setup_logging
from util import set_tz, setup_logging, set_mqtt_settings
if __name__ == '__main__':
set_tz()
set_mqtt_settings()
setup_logging()
logging.info("Starting volvo2mqtt version " + VERSION)
authorize()
+6 -1
View File
@@ -1,4 +1,9 @@
#!/bin/bash
#!/command/with-contenv bashio
export IS_HA_ADDON="true"
export MQTTHOST=$(bashio::services mqtt "host")
export MQTTPORT=$(bashio::services mqtt "port")
export MQTTUSER=$(bashio::services mqtt "username")
export MQTTPASS=$(bashio::services mqtt "password")
python -u main.py
+1 -1
View File
@@ -13,7 +13,7 @@ configuration:
description: Enable Volvo API debug, normaly this can stay off. If enabled, the complete log file can be found under \\<Your HA Host IP>\addons\volvo2mqtt\log\volvo2mqtt.log.
mqtt:
name: MQTT Broker settings
description: Broker is your mqtt broker IP eg "192.168.0.1". Mqtt username and password are optional. Broker port can be changed. If no value is given, port 1883 will be used.
description: Leave the settings as they are if you are using the MQTT Mosquitto Addon. If not, take a look at the readme from volvo2mqtt.
volvoData:
name: Volvo configuration options
description: You have to enter your Volvo app credentials. The username is normally your email, and the password is the password you use for your Volvo app. The vin can stay empty. The Add-On will use any vin inside your Volvo account. VCCAPI key is required and comes from your Volvo developer account. Odometer multiplier is sometimes 10, sometimes 1. The same is applicable for average speed divider and average fuel consumption. Leave it as it is if you don't know what's right. Take a look at the GitHub repo for more information!
+26
View File
@@ -2,6 +2,7 @@ import logging
import pytz
import os
import sys
import config
from logging import handlers
from datetime import datetime
from const import units
@@ -87,3 +88,28 @@ def convert_metric_values(value):
else:
return value
def set_mqtt_settings():
if os.environ.get("IS_HA_ADDON"):
if config.settings["mqtt"]["broker"] != "auto_broker" \
or config.settings["mqtt"]["port"] != "auto_port" \
or config.settings["mqtt"]["username"] != "auto_user" \
or config.settings["mqtt"]["password"] != "auto_password":
# If settings were manually set, use the manually set settings
return None
broker_host = os.getenv("MQTTHOST", None)
broker_port = os.getenv("MQTTPORT", None)
broker_user = os.getenv("MQTTUSER", None)
broker_pass = os.getenv("MQTTPASS", None)
if not broker_host or not broker_port:
raise Exception("MQTT connection could not be established. Please check if your MQTT Add-On is running!")
logging.debug("MQTT Credentials - Host " + broker_host + " Port: " + str(broker_port) +
" User: " + str(broker_user) + " Pass: " + str(broker_pass))
config.settings["mqtt"]["broker"] = broker_host
config.settings["mqtt"]["port"] = broker_port
config.settings["mqtt"]["username"] = broker_user
config.settings["mqtt"]["password"] = broker_pass