From 0f71496b429516f6491a3f06bb26971bbbb0f88d Mon Sep 17 00:00:00 2001 From: ja-ilija Date: Mon, 28 Feb 2022 22:24:25 -0300 Subject: [PATCH] add fleet analytics hook --- Dockerfile.template | 2 +- sensor.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Dockerfile.template b/Dockerfile.template index 54bb522..714db7d 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -6,7 +6,7 @@ RUN install_packages \ kmod \ libiio0 \ libiio-utils \ - python3-libiio + python3-libiio WORKDIR /usr/src/app diff --git a/sensor.py b/sensor.py index db1e8b6..e84d0b9 100644 --- a/sensor.py +++ b/sensor.py @@ -14,6 +14,7 @@ import idetect from reading import IIO_READER from information import Information +import requests def mqtt_detect(): @@ -95,7 +96,14 @@ def background_web(server_socket): client_connection.sendall(response.encode()) client_connection.close() - +# sends to fleet analytics transport service +def sent_to_fleet_analytics(endpoint_url, message): + try: + print("Sending log {} to fleet analytics at {}.".format(message, endpoint_url)) + res = requests.post(endpoint_url, json = message) + print("Send status was {}".format(res)) + except Exception as e: + print("Error connecting to mqtt. ({0})".format(str(e))) if __name__ == "__main__": @@ -103,7 +111,10 @@ def background_web(server_socket): use_httpserver = os.getenv('ALWAYS_USE_HTTPSERVER', 0) publish_interval = os.getenv('MQTT_PUB_INTERVAL', '8') publish_topic = os.getenv('MQTT_PUB_TOPIC', 'sensors') + publish_fleet_analytics = os.getenv('PUBLISH_FLEET_ANALYTICS', 0) + FLEET_ANALYTICS_PORT = 5000 + try: interval = float(publish_interval) except Exception as e: @@ -152,4 +163,12 @@ def background_web(server_socket): while True: if mqtt_address != "none": client.publish(publish_topic, json.dumps(balenasense.sample())) + if publish_fleet_analytics: + FLEET_ANALYTICS_SERVER_HOST = "0.0.0.0" + # just a placeholder if we end up exposing multiple transport services + FLEET_ANALYICS_SERVICE_NAME = "kafka-rest" + sent_to_fleet_analytics("{}:{}/{}".format(FLEET_ANALYTICS_SERVER_HOST, FLEET_ANALYTICS_PORT, FLEET_ANALYICS_SERVICE_NAME), + json.dumps(balenasense.sample())) + time.sleep(interval) +