From 9581a3ce2c78cca1024db387a19893057de934bf Mon Sep 17 00:00:00 2001 From: DasMoorhuhn Date: Thu, 27 Jun 2024 00:42:25 +0200 Subject: [PATCH] make docker image from 1GB to around 100MB --- .gitignore | 3 +- .idea/git_toolbox_blame.xml | 6 + vector.py => .media/vector.py | 0 Charts/data.json | 2594 +++++++++++++++++++++++++++++++-- Charts/index.html | 205 ++- Charts/script.js | 107 -- Charts/styles.css | 20 - Dockerfile | 38 +- README.md | 5 + docker-compose.yml | 2 +- log_to_json.py | 13 - python/docker_entrypoint.sh | 6 +- python/requierements.txt | 1 - python/src/log_data.py | 37 +- python/src/main.py | 4 +- run_docker.sh | 9 +- 16 files changed, 2693 insertions(+), 357 deletions(-) create mode 100644 .idea/git_toolbox_blame.xml rename vector.py => .media/vector.py (100%) delete mode 100644 Charts/script.js delete mode 100644 Charts/styles.css delete mode 100644 log_to_json.py diff --git a/.gitignore b/.gitignore index 8b10401..48b6f47 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ __pycache__ devices.yml -history.* \ No newline at end of file +history.* +data/ \ No newline at end of file diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 0000000..7dc1249 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/vector.py b/.media/vector.py similarity index 100% rename from vector.py rename to .media/vector.py diff --git a/Charts/data.json b/Charts/data.json index 032d501..a71509c 100644 --- a/Charts/data.json +++ b/Charts/data.json @@ -1,45 +1,13 @@ [ { "data": { - "timestamp": "2024-06-22T23:59:06+02:00", - "mac": "A4:C1:38:46:D7:75", - "temperature": 20.4, - "humidity": 69, - "battery_percent": 87, - "battery_volt": 2.985, - "count": 241 - }, - "device": { - "mac": "A4:C1:38:46:D7:75", - "name": "4", - "room": "dinner_room" - } - }, - { - "data": { - "timestamp": "2024-06-22T23:59:07+02:00", - "mac": "A4:C1:38:DD:9F:EB", - "temperature": 20.3, - "humidity": 70, - "battery_percent": 85, - "battery_volt": 2.975, - "count": 240 - }, - "device": { - "mac": "A4:C1:38:DD:9F:EB", - "name": "5", - "room": "kitchen" - } - }, - { - "data": { - "timestamp": "2024-06-22T23:59:07+02:00", + "timestamp": "2024-06-23T00:51:02+02:00", "mac": "A4:C1:38:9A:81:25", "temperature": 25.1, "humidity": 51, "battery_percent": 82, "battery_volt": 2.946, - "count": 143 + "count": 202 }, "device": { "mac": "A4:C1:38:9A:81:25", @@ -49,45 +17,13 @@ }, { "data": { - "timestamp": "2024-06-22T23:59:09+02:00", - "mac": "A4:C1:38:83:05:E8", - "temperature": 22.2, - "humidity": 61, - "battery_percent": 80, - "battery_volt": 2.933, - "count": 32 - }, - "device": { - "mac": "A4:C1:38:83:05:E8", - "name": "my_room", - "room": "my_room" - } - }, - { - "data": { - "timestamp": "2024-06-23T00:13:48+02:00", - "mac": "A4:C1:38:DD:9F:EB", - "temperature": 20.3, - "humidity": 70, - "battery_percent": 85, - "battery_volt": 2.974, - "count": 1 - }, - "device": { - "mac": "A4:C1:38:DD:9F:EB", - "name": "5", - "room": "kitchen" - } - }, - { - "data": { - "timestamp": "2024-06-23T00:13:49+02:00", + "timestamp": "2024-06-23T00:51:02+02:00", "mac": "A4:C1:38:46:D7:75", - "temperature": 20.4, + "temperature": 20.3, "humidity": 69, "battery_percent": 87, - "battery_volt": 2.986, - "count": 2 + "battery_volt": 2.985, + "count": 44 }, "device": { "mac": "A4:C1:38:46:D7:75", @@ -97,13 +33,29 @@ }, { "data": { - "timestamp": "2024-06-23T00:13:50+02:00", + "timestamp": "2024-06-23T00:51:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 43 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:51:03+02:00", "mac": "A4:C1:38:83:05:E8", - "temperature": 22.2, - "humidity": 61, + "temperature": 22.3, + "humidity": 60, "battery_percent": 80, "battery_volt": 2.932, - "count": 90 + "count": 238 }, "device": { "mac": "A4:C1:38:83:05:E8", @@ -113,13 +65,93 @@ }, { "data": { - "timestamp": "2024-06-23T00:13:55+02:00", + "timestamp": "2024-06-23T00:51:04+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 63 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:52:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 44 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:52:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 22.3, + "humidity": 60, + "battery_percent": 81, + "battery_volt": 2.933, + "count": 242 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:52:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 65 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:52:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 45 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:52:05+02:00", "mac": "A4:C1:38:9A:81:25", "temperature": 25.1, "humidity": 51, "battery_percent": 82, - "battery_volt": 2.945, - "count": 160 + "battery_volt": 2.946, + "count": 203 }, "device": { "mac": "A4:C1:38:9A:81:25", @@ -129,12 +161,2092 @@ }, { "data": { - "timestamp": "2024-06-23T00:14:11+02:00", + "timestamp": "2024-06-23T00:53:01+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.945, + "count": 204 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:53:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 46 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:53:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 66 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:53:04+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 45 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:53:04+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 22.4, + "humidity": 60, + "battery_percent": 81, + "battery_volt": 2.933, + "count": 246 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:54:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.945, + "count": 205 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:54:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 47 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:54:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 47 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:54:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 22.4, + "humidity": 60, + "battery_percent": 81, + "battery_volt": 2.933, + "count": 250 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:54:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 67 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:55:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 207 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:55:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 48 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:55:03+02:00", "mac": "A4:C1:38:83:05:E8", "temperature": 22.3, - "humidity": 61, - "battery_percent": 81, + "humidity": 60, + "battery_percent": 80, "battery_volt": 2.932, + "count": 254 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:55:04+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.983, + "count": 49 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:55:05+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 68 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:56:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.3, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 49 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:56:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 22.3, + "humidity": 60, + "battery_percent": 80, + "battery_volt": 2.932, + "count": 2 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:56:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 69 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:56:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.983, + "count": 50 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:56:05+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 208 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:57:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.3, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 50 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:57:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 22.1, + "humidity": 55, + "battery_percent": 80, + "battery_volt": 2.932, + "count": 6 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:57:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.975, + "count": 70 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:57:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.983, + "count": 51 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:57:07+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 209 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:58:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 210 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:58:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.983, + "count": 52 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:58:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.3, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 51 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:58:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 20.3, + "humidity": 55, + "battery_percent": 80, + "battery_volt": 2.926, + "count": 11 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:58:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 71 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:59:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 211 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:59:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 52 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:59:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 20.3, + "humidity": 55, + "battery_percent": 80, + "battery_volt": 2.926, + "count": 15 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:59:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 73 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T00:59:04+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.986, + "count": 53 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:00:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 74 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:00:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 212 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:00:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.986, + "count": 54 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:00:05+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 53 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:00:05+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 18.6, + "humidity": 58, + "battery_percent": 80, + "battery_volt": 2.926, + "count": 20 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:01:01+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 213 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:01:01+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.986, + "count": 55 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:01:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 55 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:01:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 17.3, + "humidity": 62, + "battery_percent": 77, + "battery_volt": 2.902, + "count": 25 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:01:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 75 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:02:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 214 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:02:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 56 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:02:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 56 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:02:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 16.3, + "humidity": 64, + "battery_percent": 77, + "battery_volt": 2.902, + "count": 30 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:02:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 76 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:01+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 15.5, + "humidity": 67, + "battery_percent": 77, + "battery_volt": 2.902, + "count": 35 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:01+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 77 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:02+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.988, + "count": 65 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 216 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 58 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:03:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 57 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:04:01+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 58 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:04:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 15.5, + "humidity": 67, + "battery_percent": 75, + "battery_volt": 2.885, + "count": 39 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:04:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 217 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:04:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 59 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:04:04+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 78 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:05:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 14.9, + "humidity": 69, + "battery_percent": 75, + "battery_volt": 2.885, + "count": 44 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:05:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.3, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 59 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:05:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 218 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:05:04+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 60 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:05:04+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 79 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:06:01+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 80 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:06:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 219 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:06:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 61 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:06:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 14.3, + "humidity": 70, + "battery_percent": 75, + "battery_volt": 2.885, + "count": 49 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:06:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.973, + "count": 60 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:07:01+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 82 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:07:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 62 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:07:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 13.9, + "humidity": 72, + "battery_percent": 73, + "battery_volt": 2.872, + "count": 53 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:07:04+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 220 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:07:07+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.971, + "count": 61 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:08:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.971, + "count": 62 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:08:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 83 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:08:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 221 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:08:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 13.5, + "humidity": 73, + "battery_percent": 73, + "battery_volt": 2.872, + "count": 57 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:08:05+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 63 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:09:01+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 222 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:09:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 64 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:09:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 13.5, + "humidity": 73, + "battery_percent": 73, + "battery_volt": 2.872, + "count": 61 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:09:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 84 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:09:08+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 64 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.946, + "count": 224 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 65 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 65 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:04+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 13.2, + "humidity": 74, + "battery_percent": 73, + "battery_volt": 2.867, + "count": 65 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:07+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 85 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:10:13+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.987, + "count": 74 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:11:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 225 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:11:03+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 67 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:11:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.9, + "humidity": 76, + "battery_percent": 73, + "battery_volt": 2.867, + "count": 69 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:11:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 66 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:11:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 86 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 67 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 87 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 226 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.7, + "humidity": 77, + "battery_percent": 73, + "battery_volt": 2.867, + "count": 73 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:05+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 68 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:12:08+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.1, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.99, + "count": 76 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:01+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 227 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 69 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.977, + "count": 88 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:04+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.6, + "humidity": 78, + "battery_percent": 73, + "battery_volt": 2.867, + "count": 77 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:04+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 68 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:13:05+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.99, + "count": 77 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 228 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.984, + "count": 70 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.6, + "humidity": 78, + "battery_percent": 72, + "battery_volt": 2.862, + "count": 80 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 69 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:03+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 90 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:14:07+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.99, + "count": 78 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:01+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.984, + "count": 71 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:01+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 91 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:01+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 70 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:02+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.987, + "count": 79 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 229 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:15:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.4, + "humidity": 78, + "battery_percent": 72, + "battery_volt": 2.862, + "count": 84 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:01+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.984, + "count": 72 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 92 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:03+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 230 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.2, + "humidity": 79, + "battery_percent": 72, + "battery_volt": 2.862, + "count": 88 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:04+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 72 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:16:18+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.987, + "count": 80 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:17:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.984, + "count": 73 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:17:02+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 93 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:17:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 73 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:17:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.2, + "humidity": 79, + "battery_percent": 72, + "battery_volt": 2.861, "count": 92 }, "device": { @@ -145,29 +2257,13 @@ }, { "data": { - "timestamp": "2024-06-23T00:14:11+02:00", - "mac": "A4:C1:38:46:D7:75", - "temperature": 20.4, - "humidity": 69, - "battery_percent": 87, - "battery_volt": 2.986, - "count": 2 - }, - "device": { - "mac": "A4:C1:38:46:D7:75", - "name": "4", - "room": "dinner_room" - } - }, - { - "data": { - "timestamp": "2024-06-23T00:14:12+02:00", + "timestamp": "2024-06-23T01:17:05+02:00", "mac": "A4:C1:38:9A:81:25", "temperature": 25.1, "humidity": 51, "battery_percent": 82, - "battery_volt": 2.945, - "count": 160 + "battery_volt": 2.947, + "count": 232 }, "device": { "mac": "A4:C1:38:9A:81:25", @@ -177,18 +2273,306 @@ }, { "data": { - "timestamp": "2024-06-23T00:14:12+02:00", - "mac": "A4:C1:38:DD:9F:EB", - "temperature": 20.3, - "humidity": 70, + "timestamp": "2024-06-23T01:17:07+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.987, + "count": 81 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:01+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, "battery_percent": 85, "battery_volt": 2.974, - "count": 1 + "count": 94 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:01+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.975, + "count": 74 }, "device": { "mac": "A4:C1:38:DD:9F:EB", "name": "5", "room": "kitchen" } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 233 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.2, + "humidity": 79, + "battery_percent": 72, + "battery_volt": 2.861, + "count": 96 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.986, + "count": 75 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:18:04+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.2, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.988, + "count": 82 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:02+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 234 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:02+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.1, + "humidity": 80, + "battery_percent": 72, + "battery_volt": 2.861, + "count": 100 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:03+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 75 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:05+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.986, + "count": 76 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:05+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 95 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:19:08+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.1, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.988, + "count": 84 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:02+02:00", + "mac": "A4:C1:38:46:D7:75", + "temperature": 20.3, + "humidity": 69, + "battery_percent": 87, + "battery_volt": 2.985, + "count": 77 + }, + "device": { + "mac": "A4:C1:38:46:D7:75", + "name": "4", + "room": "dinner_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:02+02:00", + "mac": "A4:C1:38:DD:9F:EB", + "temperature": 20.2, + "humidity": 70, + "battery_percent": 85, + "battery_volt": 2.974, + "count": 76 + }, + "device": { + "mac": "A4:C1:38:DD:9F:EB", + "name": "5", + "room": "kitchen" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:03+02:00", + "mac": "A4:C1:38:83:05:E8", + "temperature": 12.0, + "humidity": 80, + "battery_percent": 72, + "battery_volt": 2.858, + "count": 104 + }, + "device": { + "mac": "A4:C1:38:83:05:E8", + "name": "my_room", + "room": "my_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:05+02:00", + "mac": "A4:C1:38:BB:98:5C", + "temperature": 20.1, + "humidity": 71, + "battery_percent": 87, + "battery_volt": 2.988, + "count": 85 + }, + "device": { + "mac": "A4:C1:38:BB:98:5C", + "name": "3", + "room": "living_room" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:05+02:00", + "mac": "A4:C1:38:9A:81:25", + "temperature": 25.1, + "humidity": 51, + "battery_percent": 82, + "battery_volt": 2.947, + "count": 235 + }, + "device": { + "mac": "A4:C1:38:9A:81:25", + "name": "6", + "room": "server" + } + }, + { + "data": { + "timestamp": "2024-06-23T01:20:06+02:00", + "mac": "A4:C1:38:D0:78:41", + "temperature": 20.0, + "humidity": 64, + "battery_percent": 86, + "battery_volt": 2.976, + "count": 96 + }, + "device": { + "mac": "A4:C1:38:D0:78:41", + "name": "2", + "room": "pantry" + } } -] \ No newline at end of file +] diff --git a/Charts/index.html b/Charts/index.html index 1ff615a..8e600f5 100644 --- a/Charts/index.html +++ b/Charts/index.html @@ -25,30 +25,88 @@ .device-info { margin-bottom: 10px; } + .datetimepicker-container { + width: 80%; + margin: 20px auto; + display: flex; + justify-content: space-between; + } + .datetimepicker-container input, .datetimepicker-container button { + padding: 10px; + font-size: 16px; + background-color: #1e1e1e; + border: 1px solid #444; + border-radius: 5px; + color: #ffffff; + } + .datetimepicker-container button { + cursor: pointer; + } - + +

Geräte-Diagramme

+
+ + + + + +
diff --git a/Charts/script.js b/Charts/script.js deleted file mode 100644 index 2ba5ddc..0000000 --- a/Charts/script.js +++ /dev/null @@ -1,107 +0,0 @@ -document.addEventListener('DOMContentLoaded', function () { - fetch('data.json') - .then(response => { - if (!response.ok) { - throw new Error('Network response was not ok ' + response.statusText); - } - return response.json(); - }) - .then(data => { - const devices = {}; - - data.forEach(entry => { - const mac = entry.device.mac; - if (!devices[mac]) { - devices[mac] = { - temperatureData: [], - humidityData: [], - labels: [], - name: entry.device.name, - room: entry.device.room - }; - } - devices[mac].labels.push(new Date(entry.data.timestamp)); - devices[mac].temperatureData.push(entry.data.temperature); - devices[mac].humidityData.push(entry.data.humidity); - }); - - const chartsContainer = document.getElementById('chartsContainer'); - - Object.keys(devices).forEach(mac => { - const device = devices[mac]; - - const chartContainer = document.createElement('div'); - chartContainer.className = 'chart-container'; - - const canvas = document.createElement('canvas'); - canvas.id = `chart-${mac}`; - - const title = document.createElement('h3'); - title.textContent = `Device ${device.name} in ${device.room}`; - - chartContainer.appendChild(title); - chartContainer.appendChild(canvas); - chartsContainer.appendChild(chartContainer); - - const ctx = canvas.getContext('2d'); - new Chart(ctx, { - type: 'line', - data: { - labels: device.labels, - datasets: [ - { - label: 'Temperatur (°C)', - data: device.temperatureData, - borderColor: 'rgba(255, 99, 132, 1)', - backgroundColor: 'rgba(255, 99, 132, 0.2)', - borderWidth: 1, - yAxisID: 'y1' - }, - { - label: 'Luftfeuchtigkeit (%)', - data: device.humidityData, - borderColor: 'rgba(54, 162, 235, 1)', - backgroundColor: 'rgba(54, 162, 235, 0.2)', - borderWidth: 1, - yAxisID: 'y2' - } - ] - }, - options: { - responsive: true, - scales: { - x: { - type: 'time', - time: { - unit: 'minute', - tooltipFormat: 'll HH:mm' - } - }, - y1: { - type: 'linear', - position: 'left', - beginAtZero: true, - title: { - display: true, - text: 'Temperatur (°C)' - } - }, - y2: { - type: 'linear', - position: 'right', - beginAtZero: true, - title: { - display: true, - text: 'Luftfeuchtigkeit (%)' - }, - grid: { - drawOnChartArea: false - } - } - } - } - }); - }); - }) - .catch(error => console.error('Error loading JSON data:', error)); -}); diff --git a/Charts/styles.css b/Charts/styles.css deleted file mode 100644 index 9cfcc97..0000000 --- a/Charts/styles.css +++ /dev/null @@ -1,20 +0,0 @@ -body { - font-family: Arial, sans-serif; - display: flex; - flex-direction: column; - align-items: center; - background-color: #f4f4f4; - margin: 0; - padding: 20px; -} - -.chart-container { - width: 80%; - margin: 20px 0; -} - -canvas { - background-color: #ffffff; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); -} diff --git a/Dockerfile b/Dockerfile index 0a9db2a..2d972d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,35 @@ +FROM python:3.12-alpine3.20 AS build_bluepy + +RUN apk add \ + bluez \ + make \ + git \glib-dev \ + gcc \ + build-base \ + freetype-dev \ + libpng-dev \ + openblas-dev + +RUN git clone https://github.com/IanHarvey/bluepy.git && \ + cd bluepy && \ + python3.12 setup.py build && \ + python3.12 setup.py install + FROM python:3.12-alpine3.20 WORKDIR = /src - COPY python/src/ . COPY python/requierements.txt . COPY python/docker_entrypoint.sh / - RUN mkdir data +VOLUME data -# RUN apt-get update && \ -# apt-get install -y bluez sudo +RUN apk add sudo bluez +# Copy bluepy from the bluepy build stage +COPY --from=build_bluepy /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages +COPY --from=build_bluepy /usr/local/bin /usr/local/bin -RUN apk add --no-cache \ - sudo \ - make \ - bluez \ - bluez-deprecated \ - alsa-utils \ - alsa-utils-doc \ - alsa-lib \ - alsaconf - -RUN pip3.12 install -r requierements.txt && rm -f requierements.txt +RUN pip3.12 install -r requierements.txt && rm requierements.txt ENTRYPOINT sh /docker_entrypoint.sh \ No newline at end of file diff --git a/README.md b/README.md index 2675b4a..3215cef 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,8 @@ sudo sh run_docker.sh ### MicroPython for MicroController Coming when I develop it... + + +# Resources +- https://pythonspeed.com/articles/alpine-docker-python this article is nuts :D +- https://docs.docker.com/build/building/multi-stage/ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 2f47bf8..71086ff 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,6 @@ version: '3' services: atc_mithermometer_gateway: - image: atc-mithermometer-gateway:develop + image: dasmoorhuhn/atc-mithermometer-gateway:develop-alpine container_name: ATC_MiThermometer_Gateway build: . \ No newline at end of file diff --git a/log_to_json.py b/log_to_json.py deleted file mode 100644 index 7cef3ea..0000000 --- a/log_to_json.py +++ /dev/null @@ -1,13 +0,0 @@ -import json - - -with open('history.txt', 'r') as file: - content = file.readlines() - -lines = [] -for line in content: - line = json.loads(line.strip()) - lines.append(line) - -with open('history.json', 'w') as file: - file.write(json.dumps(lines)) diff --git a/python/docker_entrypoint.sh b/python/docker_entrypoint.sh index b4a9ea2..f672995 100644 --- a/python/docker_entrypoint.sh +++ b/python/docker_entrypoint.sh @@ -1,8 +1,8 @@ #!/bin/bash -service dbus start -bluetoothd & +# service dbus start +# bluetoothd & -/bin/bash +/bin/sh sudo python3 main.py diff --git a/python/requierements.txt b/python/requierements.txt index dd13488..3d4fa3d 100644 --- a/python/requierements.txt +++ b/python/requierements.txt @@ -1,4 +1,3 @@ -bluepy pyyaml bs4 lxml diff --git a/python/src/log_data.py b/python/src/log_data.py index 2724848..b2a5589 100644 --- a/python/src/log_data.py +++ b/python/src/log_data.py @@ -6,21 +6,30 @@ from devices import Device workdir, filename = os.path.split(os.path.abspath(__file__)) -def log_to_txt(devices): - with open(f'{workdir}{os.sep}history.json', 'r') as file: - data = json.load(file) +def log_to_json(devices): + for device in devices: + dev, data_obj, from_config = device + data_obj: Data + from_config: Device + file_name = f'{workdir}{os.sep}data{os.sep}{str(data_obj.mac).replace(":", "-")}.json' - with open(f'{workdir}{os.sep}history.json', 'w') as file: - for device in devices: - dev, data_obj, from_config = device - data_obj:Data - from_config:Device - data.append({ - "data": data_obj.to_json(), - "device": from_config.to_json() - }) - final_data = {"measurements": data} - file.write(json.dumps(data, indent=2)) + try: + with open(file_name, 'r') as file: data = json.load(file) + except: + with open(file_name, 'w') as file: file.write("[]") + data = [] + + data.append({ + "timestamp": data_obj.timestamp, + "temperature": data_obj.temperature, + "humidity": data_obj.humidity, + "battery_percent": data_obj.battery_percent, + "battery_volt": data_obj.battery_volt, + "name": from_config.name, + "room": from_config.room + }) + + with open(file_name, 'w') as file: file.write(json.dumps(data, indent=2)) def log_to_mongodb(data): diff --git a/python/src/main.py b/python/src/main.py index 420c42b..c993e3d 100644 --- a/python/src/main.py +++ b/python/src/main.py @@ -1,7 +1,7 @@ from discovery import start_discovery from loop import start_loop -from log_data import log_to_txt +from log_data import log_to_json devices = start_discovery() -log_to_txt(devices) +log_to_json(devices) diff --git a/run_docker.sh b/run_docker.sh index 20f4df3..eae75ca 100644 --- a/run_docker.sh +++ b/run_docker.sh @@ -1,9 +1,12 @@ +TAG=develop-alpine +CONTAINER=dasmoorhuhn/atc-mithermometer-gateway:$TAG + sudo killall -9 bluetoothd -docker stop atc-mithermometer-gateway:develop +docker stop $CONTAINER > /dev/null 2>&1 docker run \ --cap-add=SYS_ADMIN \ --cap-add=NET_ADMIN \ --net=host \ -v /var/run/dbus/:/var/run/dbus/ \ - -v /path/to/data:/src/data \ - atc-mithermometer-gateway:develop \ No newline at end of file + -v ./data:/src/data \ + $CONTAINER \ No newline at end of file