Optimize climate timer (#40)

* Add logic to turn climate switch off if driver door is opened

* Update car data after climate state change

* Climate stop on left or right door open

* Bump version
This commit is contained in:
Linus Dietz
2023-06-29 17:46:34 +02:00
committed by GitHub
parent 30f415cb1f
commit 67320c32f6
4 changed files with 47 additions and 11 deletions
+17 -1
View File
@@ -1,13 +1,15 @@
import requests
import mqtt
import util
import time
from threading import Thread, currentThread
from datetime import datetime, timedelta
from config import settings
from babel.dates import format_datetime
from const import charging_system_states, charging_connection_states, door_states, window_states, \
OAUTH_URL, VEHICLES_URL, VEHICLE_DETAILS_URL, RECHARGE_STATE_URL, CLIMATE_START_URL, \
WINDOWS_STATE_URL, LOCK_STATE_URL, TYRE_STATE_URL, supported_entities, BATTERY_CHARGE_STATE_URL, \
STATISTICS_URL
STATISTICS_URL, CLIMATE_STOP_URL
session = requests.Session()
session.headers = {
@@ -168,10 +170,24 @@ def initialize_climate(vins):
def disable_climate(vin):
print("Turning climate off by timer!")
mqtt.door_status[vin].do_run = False
mqtt.assumed_climate_state[vin] = "OFF"
mqtt.update_car_data()
def check_door_status(vin):
t = currentThread()
while getattr(t, "do_run", True):
lock_door_left = api_call(LOCK_STATE_URL, "GET", vin, "door_front_left", True)
lock_door_right = api_call(LOCK_STATE_URL, "GET", vin, "door_front_right", True)
if lock_door_left == "ON" or lock_door_right == "ON":
Thread(target=api_call, args=(CLIMATE_STOP_URL, "POST", vin)).start()
mqtt.assumed_climate_state[vin] = "OFF"
mqtt.update_car_data()
break
time.sleep(5)
def api_call(url, method, vin, sensor_id=None, force_update=False):
global token_expires_at
if datetime.now(util.TZ) >= token_expires_at: