Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
co2ampel2
Web
Commits
3ce51a0e
Commit
3ce51a0e
authored
Apr 17, 2025
by
Patrick Ade
Browse files
created jsonhandler (untested), refactoring
parent
57c9cb62
Changes
5
Show whitespace changes
Inline
Side-by-side
src/mqtt_influx_backend/
I
nfluxDBWriter.py
→
src/mqtt_influx_backend/
i
nfluxDBWriter.py
View file @
3ce51a0e
File moved
src/mqtt_influx_backend/jsonhandler.py
0 → 100644
View file @
3ce51a0e
import
json
file_name
=
"mac_to_room.json"
def
load_json
():
with
open
(
file_name
)
as
f
:
mac_room_mapping
=
json
.
load
(
f
)
return
mac_room_mapping
def
write_json
(
mac_room_mapping
:
dict
):
with
open
(
file_name
,
"w"
)
as
f
:
f
.
seek
(
0
)
json
.
dump
(
mac_room_mapping
,
f
,
indent
=
4
)
f
.
truncate
()
# TODO Check if truncate is necessary?
src/mqtt_influx_backend/
M
QTTClientHandler.py
→
src/mqtt_influx_backend/
m
QTTClientHandler.py
View file @
3ce51a0e
import
json
import
json
from
datetime
import
datetime
from
datetime
import
datetime
import
paho.mqtt.client
as
mqtt
import
paho.mqtt.client
as
mqtt
from
mqtt_influx_backend
import
I
nfluxDBWriter
from
src.
mqtt_influx_backend
import
i
nfluxDBWriter
class
MQTTClientHandler
:
class
MQTTClientHandler
:
# Konstruktor
# Konstruktor
def
__init__
(
self
,
broker_url
:
str
,
topic
:
str
,
influx_writer
:
InfluxDBWriter
):
def
__init__
(
#logger sollte hier zugeweist werden
self
,
broker_url
:
str
,
topic
:
str
,
influx_writer
:
influxDBWriter
):
# logger sollte hier zugeweist werden
self
.
broker_url
=
broker_url
self
.
broker_url
=
broker_url
self
.
topic
=
topic
self
.
topic
=
topic
self
.
influx_writer
=
influx_writer
self
.
influx_writer
=
influx_writer
...
@@ -21,8 +23,8 @@ class MQTTClientHandler:
...
@@ -21,8 +23,8 @@ class MQTTClientHandler:
print
(
"Connected with result code "
+
str
(
rc
))
print
(
"Connected with result code "
+
str
(
rc
))
client
.
subscribe
(
self
.
topic
)
client
.
subscribe
(
self
.
topic
)
#def save_mapping(self):
#
def save_mapping(self):
#with open(self.mapping_file, "w") as f:
#
with open(self.mapping_file, "w") as f:
# json.dump(self.mac_to_room, f, indent=4)
# json.dump(self.mac_to_room, f, indent=4)
# eventuell refactorn und die Aufgaben in Methoden aufteilen
# eventuell refactorn und die Aufgaben in Methoden aufteilen
...
@@ -57,15 +59,16 @@ class MQTTClientHandler:
...
@@ -57,15 +59,16 @@ class MQTTClientHandler:
# ToDo "room": metadate["todo"],
# ToDo "room": metadate["todo"],
"mac"
:
metadate
[
"mac-address"
]
"mac"
:
metadate
[
"mac-address"
]
},
},
fields
=
{
fields
=
{
"co2"
:
msg
[
"co2"
],
"co2"
:
msg
[
"co2"
],
"temperature"
:
msg
[
"temp"
],
"temperature"
:
msg
[
"temp"
],
"humidity"
:
msg
[
"rh"
]
"humidity"
:
msg
[
"rh"
]
,
},
},
timestamp
=
metadate
[
"time"
]
timestamp
=
metadate
[
"time"
]
,
)
)
print
(
"Wrote to InfluxDB:"
,
msg
)
# muss später rausgeschmiessen werden
print
(
"Wrote to InfluxDB:"
,
msg
)
# muss später rausgeschmiessen werden
except
Exception
as
e
:
except
Exception
as
e
:
# log
# log
print
(
"Error processing message:"
,
e
)
print
(
"Error processing message:"
,
e
)
...
...
src/mqtt_influx_backend/mac_to_room
→
src/mqtt_influx_backend/mac_to_room
.json
View file @
3ce51a0e
File moved
src/mqtt_influx_backend/
M
ain.py
→
src/mqtt_influx_backend/
m
ain.py
View file @
3ce51a0e
from
dotenv
import
load_dotenv
from
dotenv
import
load_dotenv
import
os
import
os
import
logging
import
logging
from
src.mqtt_influx_backend.MQTTClientHandler
import
MQTTClientHandler
from
src.mqtt_influx_backend.mQTTClientHandler
import
MQTTClientHandler
from
src.mqtt_influx_backend.InfluxDBWriter
import
InfluxDBWriter
from
src.mqtt_influx_backend.influxDBWriter
import
InfluxDBWriter
def
get_logger
(
name
:
str
=
"default_logger"
)
->
logging
.
Logger
:
def
get_logger
(
name
:
str
=
"default_logger"
)
->
logging
.
Logger
:
logger
=
logging
.
getLogger
(
name
)
logger
=
logging
.
getLogger
(
name
)
if
not
logger
.
handlers
:
# Verhindert doppelte Handler bei mehrfacher Initialisierung
if
(
not
logger
.
handlers
):
# Verhindert doppelte Handler bei mehrfacher Initialisierung
logger
.
setLevel
(
logging
.
DEBUG
)
logger
.
setLevel
(
logging
.
DEBUG
)
handler
=
logging
.
StreamHandler
()
handler
=
logging
.
StreamHandler
()
formatter
=
logging
.
Formatter
(
formatter
=
logging
.
Formatter
(
'
[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s
'
"
[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s
"
)
)
handler
.
setFormatter
(
formatter
)
handler
.
setFormatter
(
formatter
)
logger
.
addHandler
(
handler
)
logger
.
addHandler
(
handler
)
...
@@ -19,21 +22,23 @@ def get_logger(name: str = "default_logger") -> logging.Logger:
...
@@ -19,21 +22,23 @@ def get_logger(name: str = "default_logger") -> logging.Logger:
load_dotenv
()
load_dotenv
()
def
main
():
def
main
():
influx_writer
=
InfluxDBWriter
(
influx_writer
=
InfluxDBWriter
(
url
=
os
.
getenv
(
"INFLUXDB_URL"
),
url
=
os
.
getenv
(
"INFLUXDB_URL"
),
token
=
os
.
getenv
(
"INFLUXDB_TOKEN"
),
token
=
os
.
getenv
(
"INFLUXDB_TOKEN"
),
org
=
os
.
getenv
(
"INFLUXDB_ORG"
),
org
=
os
.
getenv
(
"INFLUXDB_ORG"
),
bucket
=
os
.
getenv
(
"INFLUXDB_BUCKET"
)
bucket
=
os
.
getenv
(
"INFLUXDB_BUCKET"
)
,
)
)
mqtt_handler
=
MQTTClientHandler
(
mqtt_handler
=
MQTTClientHandler
(
broker_url
=
os
.
getenv
(
"MQTT_BROKER_URL"
),
broker_url
=
os
.
getenv
(
"MQTT_BROKER_URL"
),
topic
=
os
.
getenv
(
"MQTT_TOPIC"
),
topic
=
os
.
getenv
(
"MQTT_TOPIC"
),
influx_writer
=
influx_writer
influx_writer
=
influx_writer
,
)
)
mqtt_handler
.
start
()
mqtt_handler
.
start
()
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
main
()
main
()
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment