Rework image function

This commit is contained in:
Linus Dietz
2024-08-09 09:30:04 +02:00
parent 693e0b0048
commit c1998f8938
+36 -12
View File
@@ -5,6 +5,7 @@ import json
import volvo import volvo
import util import util
import os import os
import requests
from threading import Thread, Timer from threading import Thread, Timer
from datetime import datetime from datetime import datetime
from babel.dates import format_datetime from babel.dates import format_datetime
@@ -84,13 +85,14 @@ def send_car_images(vin, data, device):
if util.keys_exists(data, "images"): if util.keys_exists(data, "images"):
for entity in [{"name": "Exterior Image", "id": "exterior_image"}, for entity in [{"name": "Exterior Image", "id": "exterior_image"},
{"name": "Interior Image", "id": "interior_image"}]: {"name": "Interior Image", "id": "interior_image"}]:
url_topic = f"homeassistant/image/{vin}_{entity['id']}/image_url" 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']}", "object_id": f"volvo_{vin}_{entity['id']}",
"schema": "state", "schema": "state",
"icon": "mdi:image-area", "icon": "mdi:image-area",
"url_topic": url_topic, "content_type": "image/png",
"image_topic": image_topic,
"device": device, "device": device,
"unique_id": f"volvoAAOS2mqtt_{vin}_{entity['id']}", "unique_id": f"volvoAAOS2mqtt_{vin}_{entity['id']}",
"availability_topic": availability_topic "availability_topic": availability_topic
@@ -102,19 +104,41 @@ def send_car_images(vin, data, device):
retain=True retain=True
) )
headers = {"User-Agent": "(Windows NT 10.0; Win64; x64)",
"sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "document", "Accept-Encoding": "gzip, deflate, br, zstd",
"sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1", "upgrade-insecure-requests": "1"}
# Post exterior image
if entity["id"] == "exterior_image": if entity["id"] == "exterior_image":
mqtt_client.publish( if not os.path.exists("exterior_image.png"):
url_topic, response = requests.get(data["images"]["exteriorImageUrl"], headers=headers)
data["images"]["exteriorImageUrl"], if response.status_code == 200:
retain=True with open("exterior_image.png", 'wb') as image:
) image.write(response.content)
if os.path.exists("exterior_image.png"):
ext_image = open("exterior_image.png", mode="rb").read()
mqtt_client.publish(
image_topic,
ext_image,
retain=True
)
if entity["id"] == "interior_image": if entity["id"] == "interior_image":
mqtt_client.publish( # Post interior Image
url_topic, if not os.path.exists("interior_image.png"):
data["images"]["internalImageUrl"], response = requests.get(data["images"]["internalImageUrl"], headers=headers)
retain=True if response.status_code == 200:
) with open("interior_image.png", 'wb') as image:
image.write(response.content)
if os.path.exists("interior_image.png"):
int_image = open("interior_image.png", mode="rb").read()
mqtt_client.publish(
image_topic,
int_image,
retain=True
)
def on_connect(client, userdata, flags, rc): def on_connect(client, userdata, flags, rc):