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