diff --git a/app/celery_builder.py b/app/celery_builder.py index 5a54ede..e52afe9 100644 --- a/app/celery_builder.py +++ b/app/celery_builder.py @@ -1,42 +1,9 @@ # App initialization -import sys from flask import Flask -from .tasks import celery as celery_configurator +from .tasks.celery_configurator import make_celery app = Flask(__name__, instance_relative_config=True) app.config.from_object('config') app.config.from_pyfile('config.py', silent=True) app.config['MQTT_CLIENT_ID'] = 'final-iot-backend-server-worker' -celery = celery_configurator.make_celery(app) - - -@celery.task() -def send_config(device_id, config): - from flask_mqtt import Mqtt, MQTT_ERR_SUCCESS - mqtt = Mqtt(app) - - @mqtt.on_log() - def handle_logging(client, userdata, level, buf): - print(level, buf) - - @mqtt.on_connect() - def handle_connect(client, userdata, flags, rc): - print('MQTT worker client connected') - print("Sending configuration to device: " + str(device_id)) - print("Configuration: " + str(config)) - topic = 'device/' + str(device_id) + '/config' - print("Targeting topic: " + topic) - try: - (result, mid) = mqtt.publish(topic, config, 2) - if (result == MQTT_ERR_SUCCESS): - print("Success!!!") - print("Result: " + str(result)) - print("Message id: " + str(mid)) - mqtt.client.disconnect() - except Exception: - print("ERROR!") - error_type, error_instance, traceback = sys.exc_info() - print("Type: " + str(error_type)) - print("Instance: " + str(error_instance)) - mqtt.client.disconnect() - return +task_builder = make_celery(app) diff --git a/app/devices/api.py b/app/devices/api.py index 0e05819..d7fcba6 100644 --- a/app/devices/api.py +++ b/app/devices/api.py @@ -45,7 +45,7 @@ def set_device_configuration(device_id, configuration_json): :type configuration_json: JSON :rtype: Boolean """ - from app.celery_builder import send_config + from .tasks import send_config device = Device.get(id=device_id) device.configuration = configuration_json device.save() diff --git a/app/devices/tasks.py b/app/devices/tasks.py new file mode 100644 index 0000000..8a4bd41 --- /dev/null +++ b/app/devices/tasks.py @@ -0,0 +1,35 @@ +import sys +from app.celery_builder import task_builder +from .blueprint import devices_bp + + +@task_builder.task() +def send_config(device_id, config): + from flask_mqtt import Mqtt, MQTT_ERR_SUCCESS + mqtt = Mqtt(devices_bp) + + @mqtt.on_log() + def handle_logging(client, userdata, level, buf): + print(level, buf) + + @mqtt.on_connect() + def handle_connect(client, userdata, flags, rc): + print('MQTT worker client connected') + print("Sending configuration to device: " + str(device_id)) + print("Configuration: " + str(config)) + topic = 'device/' + str(device_id) + '/config' + print("Targeting topic: " + topic) + try: + (result, mid) = mqtt.publish(topic, config, 2) + if (result == MQTT_ERR_SUCCESS): + print("Success!!!") + print("Result: " + str(result)) + print("Message id: " + str(mid)) + mqtt.client.disconnect() + except Exception: + print("ERROR!") + error_type, error_instance, traceback = sys.exc_info() + print("Type: " + str(error_type)) + print("Instance: " + str(error_instance)) + mqtt.client.disconnect() + return diff --git a/config.py b/config.py index f9e0237..55e4c11 100644 --- a/config.py +++ b/config.py @@ -28,7 +28,7 @@ CSRF_SESSION_KEY = "secret" SECRET_KEY = "?['Z(Z\x83Y \x06T\x12\x96<\xff\x12\xe0\x1b\xd1J\xe0\xd9ld" # MQTT configuration -MQTT_CLIENT_ID = 'final-iot-backend-server' +MQTT_CLIENT_ID = 'final-iot-backend-server-local2' MQTT_BROKER_URL = 'broker.hivemq.com' MQTT_BROKER_PORT = 1883 MQTT_USERNAME = 'user'