Skip to content

Commit

Permalink
style: remove global variables for bot and chat_id, ensure UPPERCASE …
Browse files Browse the repository at this point in the history
…for constants, update imports
  • Loading branch information
JakobLichterfeld committed Mar 16, 2024
1 parent ea32b5b commit 1d32148
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 28 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
### Enhancements

- build: improve non-root user creation in dockerfile
- style: remove global variables for bot and chat_id, ensure UPPERCASE for constants, update imports

### Bug Fixes

Expand Down
51 changes: 23 additions & 28 deletions src/teslamte_telegram_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
import os
import time
import paho.mqtt.client as mqtt
from telegram.bot import Bot
from telegram.parsemode import ParseMode
from telegram import Bot
from telegram.constants import ParseMode

########################################################################################

# Default values
car_id = 1
mqtt_broker_host_default = '127.0.0.1'
mqtt_broker_port_default = 1883
mqtt_broker_keepalive = 60
mqtt_broker_username_default = ''
mqtt_broker_password_default = ''
CAR_ID = 1
MQTT_BROKER_HOST_DEFAULT = '127.0.0.1'
MQTT_BROKER_PORT_DEFAULT = 1883
MQTT_BROKER_KEEPALIVE = 60
MQTT_BROKER_USERNAME_DEFAULT = ''
MQTT_BROKER_PASSWORD_DEFAULT = ''

# Environment variables
TELEGRAM_BOT_API_KEY = 'TELEGRAM_BOT_API_KEY'
Expand All @@ -24,15 +24,11 @@
MQTT_BROKER_PORT = 'MQTT_BROKER_PORT'

# MQTT topics
teslamate_topic_update_available = f"teslamate/cars/{car_id}/update_available"
teslamate_topic_update_version =f"teslamate/cars/{car_id}/update_version"
teslamate_topic_update_available = f"teslamate/cars/{CAR_ID}/update_available"
teslamate_topic_update_version =f"teslamate/cars/{CAR_ID}/update_version"

########################################################################################

# Global variables
bot = None
chat_id = None

# Helper functions
def get_env_variable(var_name, default_value=None):
""" Get the environment variable or return a default value"""
Expand Down Expand Up @@ -63,7 +59,7 @@ def on_connect(client, userdata, flags, reason_code):
client.subscribe(teslamate_topic_update_version)

update_version = 'unknown'
def on_message(client, userdata, msg):
def on_message(client, userdata, msg, bot, chat_id):
""" The callback for when a PUBLISH message is received from the server."""
global update_version
print(msg.topic+" "+str(msg.payload))
Expand All @@ -81,31 +77,30 @@ def on_message(client, userdata, msg):
parse_mode=ParseMode.HTML,
)

def setup_mqtt_client():
def setup_mqtt_client_and_telegram_bot():
""" Setup the MQTT client """


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)
client.on_connect = on_connect
client.on_message = on_message
bot = Bot(get_env_variable(TELEGRAM_BOT_API_KEY))
chat_id = get_env_variable(TELEGRAM_BOT_CHAT_ID)
client.on_message = lambda client, userdata, msg: on_message(client, userdata, msg, bot, chat_id)

username = get_env_variable(MQTT_BROKER_USERNAME, mqtt_broker_username_default)
password = get_env_variable(MQTT_BROKER_PASSWORD, mqtt_broker_password_default)
username = get_env_variable(MQTT_BROKER_USERNAME, MQTT_BROKER_USERNAME_DEFAULT)
password = get_env_variable(MQTT_BROKER_PASSWORD, MQTT_BROKER_PASSWORD_DEFAULT)
client.username_pw_set(username, password)

host = get_env_variable(MQTT_BROKER_HOST, mqtt_broker_host_default)
port = int(get_env_variable(MQTT_BROKER_PORT, mqtt_broker_port_default))
client.connect(host, port, mqtt_broker_keepalive)
host = get_env_variable(MQTT_BROKER_HOST, MQTT_BROKER_HOST_DEFAULT)
port = int(get_env_variable(MQTT_BROKER_PORT, MQTT_BROKER_PORT_DEFAULT))
client.connect(host, port, MQTT_BROKER_KEEPALIVE)

return client

# Main function
def main():
""" Main function"""
global bot
global chat_id
bot = Bot(get_env_variable(TELEGRAM_BOT_API_KEY))
chat_id = get_env_variable(TELEGRAM_BOT_CHAT_ID)

client = setup_mqtt_client()
client = setup_mqtt_client_and_telegram_bot()

client.loop_start()
try:
Expand Down

0 comments on commit 1d32148

Please sign in to comment.