forked from peter/volvo2mqtt
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8b6f9cf53 | ||
|
|
7c32ca59be | ||
|
|
67948b0900 | ||
|
|
48663d2e0d | ||
|
|
76cfa21db7 | ||
|
|
9d11dff24b | ||
|
|
3a4160451c | ||
|
|
515e1a8d27 | ||
|
|
4961f7bfad | ||
|
|
a68216bdd5 | ||
|
|
98d8dd7e65 |
@@ -171,6 +171,6 @@ Here is what every option means:
|
|||||||
[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
|
[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
|
||||||
[releases]: https://github.com/Dielee/volvo2mqtt/releases
|
[releases]: https://github.com/Dielee/volvo2mqtt/releases
|
||||||
[releases-shield]: https://img.shields.io/github/release/Dielee/volvo2mqtt.svg
|
[releases-shield]: https://img.shields.io/github/release/Dielee/volvo2mqtt.svg
|
||||||
[maintenance-shield]: https://img.shields.io/maintenance/yes/2025.svg
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2026.svg
|
||||||
[commits-shield]: https://img.shields.io/github/commit-activity/y/Dielee/volvo2mqtt.svg
|
[commits-shield]: https://img.shields.io/github/commit-activity/y/Dielee/volvo2mqtt.svg
|
||||||
[commits]: https://github.com/Dielee/volvo2mqtt/commits/main
|
[commits]: https://github.com/Dielee/volvo2mqtt/commits/main
|
||||||
|
|||||||
+4
-4
@@ -1,6 +1,6 @@
|
|||||||
requests~=2.32.0
|
requests~=2.32.0
|
||||||
dynaconf~=3.1.12
|
dynaconf~=3.2.13
|
||||||
paho-mqtt~=1.6.1
|
paho-mqtt~=2.1.0
|
||||||
Babel~=2.12.1
|
Babel~=2.18.0
|
||||||
pytz~=2023.3
|
pytz~=2026.1.post1
|
||||||
google_play_scraper~=1.2.6
|
google_play_scraper~=1.2.6
|
||||||
@@ -1,3 +1,34 @@
|
|||||||
|
## v1.13.5
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes:
|
||||||
|
|
||||||
|
- Add build.yaml for homeassistant version > 2026.04.X
|
||||||
|
|
||||||
|
## v1.13.4
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes:
|
||||||
|
|
||||||
|
- Fix `AttributeError: module 'paho.mqtt.client' has no attribute 'CallbackAPIVersion'` when paho-mqtt < 2.0 is installed
|
||||||
|
|
||||||
|
## v1.13.3
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes:
|
||||||
|
|
||||||
|
- Bump pypi packages
|
||||||
|
|
||||||
|
## v1.13.2
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes:
|
||||||
|
|
||||||
|
- Fix KeyError: 'authorizeResponse' in auth flow #318
|
||||||
|
|
||||||
|
## v1.13.1
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes:
|
||||||
|
|
||||||
|
- Fix missing charging system state `error` #314
|
||||||
|
- Move `object_id` to `default_entity_id` for mqtt entities according to #312
|
||||||
|
|
||||||
## v1.13.0
|
## v1.13.0
|
||||||
|
|
||||||
### 🚀 Features:
|
### 🚀 Features:
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
build_from:
|
||||||
|
amd64: ghcr.io/home-assistant/base-python:latest
|
||||||
|
aarch64: ghcr.io/home-assistant/base-python:latest
|
||||||
|
armv7: ghcr.io/home-assistant/base-python:latest
|
||||||
|
armhf: ghcr.io/home-assistant/base-python:latest
|
||||||
|
i386: ghcr.io/home-assistant/base-python:latest
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
name: "Volvo2Mqtt"
|
name: "Volvo2Mqtt"
|
||||||
description: "Volvo AAOS MQTT bridge"
|
description: "Volvo AAOS MQTT bridge"
|
||||||
version: "1.13.0"
|
version: "1.13.5"
|
||||||
slug: "volvo2mqtt"
|
slug: "volvo2mqtt"
|
||||||
init: false
|
init: false
|
||||||
url: "https://github.com/Dielee/volvo2mqtt"
|
url: "https://github.com/Dielee/volvo2mqtt"
|
||||||
|
|||||||
+3
-2
@@ -1,6 +1,6 @@
|
|||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
VERSION = "v1.13.0"
|
VERSION = "v1.13.5"
|
||||||
|
|
||||||
OAUTH_TOKEN_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
|
OAUTH_TOKEN_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
|
||||||
OAUTH_AUTH_URL = "https://volvoid.eu.volvocars.com/as/authorization.oauth2"
|
OAUTH_AUTH_URL = "https://volvoid.eu.volvocars.com/as/authorization.oauth2"
|
||||||
@@ -61,7 +61,8 @@ availability_topic = "volvoAAOS2mqtt/availability"
|
|||||||
|
|
||||||
charging_system_states = {"CHARGING": "Charging", "IDLE": "Idle",
|
charging_system_states = {"CHARGING": "Charging", "IDLE": "Idle",
|
||||||
"FAULT": "Fault", "UNSPECIFIED": "Unspecified",
|
"FAULT": "Fault", "UNSPECIFIED": "Unspecified",
|
||||||
"DONE": "Done", "SCHEDULED": "Scheduled"}
|
"DONE": "Done", "SCHEDULED": "Scheduled", "ERROR": "Error",
|
||||||
|
"DISCHARGING": "Discharging"}
|
||||||
|
|
||||||
charging_connection_states = {"DISCONNECTED": "Disconnected", "UNSPECIFIED": "Unspecified",
|
charging_connection_states = {"DISCONNECTED": "Disconnected", "UNSPECIFIED": "Unspecified",
|
||||||
"FAULT": "Fault", "CONNECTED": "Connected"}
|
"FAULT": "Fault", "CONNECTED": "Connected"}
|
||||||
|
|||||||
+11
-6
@@ -25,8 +25,13 @@ active_schedules = {}
|
|||||||
otp_code = None
|
otp_code = None
|
||||||
|
|
||||||
def connect():
|
def connect():
|
||||||
client = mqtt.Client("volvoAAOS2mqtt") if os.environ.get("IS_HA_ADDON") \
|
client_id = "volvoAAOS2mqtt" if os.environ.get("IS_HA_ADDON") \
|
||||||
else mqtt.Client("volvoAAOS2mqtt_" + settings.volvoData["username"].replace("+", ""))
|
else "volvoAAOS2mqtt_" + settings.volvoData["username"].replace("+", "")
|
||||||
|
try:
|
||||||
|
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, client_id)
|
||||||
|
except AttributeError:
|
||||||
|
# paho-mqtt < 2.0 does not have CallbackAPIVersion
|
||||||
|
client = mqtt.Client(client_id)
|
||||||
|
|
||||||
if "logging" in settings["mqtt"] and settings["mqtt"]["logging"]:
|
if "logging" in settings["mqtt"] and settings["mqtt"]["logging"]:
|
||||||
mqtt_logger = logging.getLogger("mqtt")
|
mqtt_logger = logging.getLogger("mqtt")
|
||||||
@@ -58,7 +63,7 @@ def create_otp_input():
|
|||||||
state_topic = otp_mqtt_topic + "/state"
|
state_topic = otp_mqtt_topic + "/state"
|
||||||
config = {
|
config = {
|
||||||
"name": "Volvo OTP",
|
"name": "Volvo OTP",
|
||||||
"object_id": "volvo_otp",
|
"default_entity_id": "volvo_otp",
|
||||||
"schema": "state",
|
"schema": "state",
|
||||||
"command_topic": otp_mqtt_topic,
|
"command_topic": otp_mqtt_topic,
|
||||||
"state_topic": state_topic,
|
"state_topic": state_topic,
|
||||||
@@ -95,7 +100,7 @@ def send_car_images(vin, data, device):
|
|||||||
image_topic = f"homeassistant/image/{vin}_{entity['id']}/image_topic"
|
image_topic = f"homeassistant/image/{vin}_{entity['id']}/image_topic"
|
||||||
config = {
|
config = {
|
||||||
"name": entity["name"],
|
"name": entity["name"],
|
||||||
"object_id": f"volvo_{vin}_{entity['id']}",
|
"default_entity_id": f"volvo_{vin}_{entity['id']}",
|
||||||
"schema": "state",
|
"schema": "state",
|
||||||
"icon": "mdi:image-area",
|
"icon": "mdi:image-area",
|
||||||
"content_type": "image/png",
|
"content_type": "image/png",
|
||||||
@@ -405,7 +410,7 @@ def update_ha_device(entity, vin, state):
|
|||||||
logging.debug("Updating icon to " + icon + " for " + entity["id"])
|
logging.debug("Updating icon to " + icon + " for " + entity["id"])
|
||||||
config = {
|
config = {
|
||||||
"name": entity['name'],
|
"name": entity['name'],
|
||||||
"object_id": f"volvo_{vin}_{entity['id']}",
|
"default_entity_id": f"volvo_{vin}_{entity['id']}",
|
||||||
"schema": "state",
|
"schema": "state",
|
||||||
"icon": f"mdi:{icon}" if icon else f"mdi:{entity['icon']}",
|
"icon": f"mdi:{icon}" if icon else f"mdi:{entity['icon']}",
|
||||||
"state_topic": f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/state",
|
"state_topic": f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/state",
|
||||||
@@ -446,7 +451,7 @@ def create_ha_devices():
|
|||||||
for entity in volvo.supported_endpoints[vin]:
|
for entity in volvo.supported_endpoints[vin]:
|
||||||
config = {
|
config = {
|
||||||
"name": entity['name'],
|
"name": entity['name'],
|
||||||
"object_id": f"volvo_{vin}_{entity['id']}",
|
"default_entity_id": f"volvo_{vin}_{entity['id']}",
|
||||||
"schema": "state",
|
"schema": "state",
|
||||||
"icon": f"mdi:{entity['icon']}",
|
"icon": f"mdi:{entity['icon']}",
|
||||||
"state_topic": f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/state",
|
"state_topic": f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/state",
|
||||||
|
|||||||
+1
-1
@@ -114,7 +114,7 @@ def authorize(renew_tokenfile=False):
|
|||||||
|
|
||||||
def continue_auth(auth_session, data):
|
def continue_auth(auth_session, data):
|
||||||
next_url = data["_links"]["continueAuthentication"]["href"].replace("http://", "https://") + "?action=continueAuthentication"
|
next_url = data["_links"]["continueAuthentication"]["href"].replace("http://", "https://") + "?action=continueAuthentication"
|
||||||
auth = auth_session.get(next_url)
|
auth = auth_session.post(next_url, data="{}")
|
||||||
|
|
||||||
if auth.status_code == 200:
|
if auth.status_code == 200:
|
||||||
return auth.json()
|
return auth.json()
|
||||||
|
|||||||
Reference in New Issue
Block a user