Revize 953981d4
Přidáno uživatelem Martin Forejt před téměř 4 roky(ů)
aswi2021vochomurka/service/message_parser.py | ||
---|---|---|
1 |
from paho.mqtt.client import MQTTMessage |
|
2 |
|
|
3 |
from aswi2021vochomurka.model.Message import Message |
|
4 |
|
|
5 |
|
|
6 |
class ParseException(Exception): |
|
7 |
pass |
|
8 |
|
|
9 |
|
|
10 |
def parse_mqtt_message(message: MQTTMessage) -> Message: |
|
11 |
data = message.payload.decode("utf-8") |
|
12 |
parts = data.split(";") |
|
13 |
if len(parts) != 4: |
|
14 |
raise ParseException |
|
15 |
|
|
16 |
try: |
|
17 |
return Message( |
|
18 |
message.topic, |
|
19 |
int(parts[2]), |
|
20 |
parts[0], |
|
21 |
parts[1], |
|
22 |
float(parts[3]) |
|
23 |
) |
|
24 |
except Exception as error: |
|
25 |
raise ParseException from error |
aswi2021vochomurka/service/mqtt/mqtt_subscriber.py | ||
---|---|---|
1 | 1 |
import paho.mqtt.client as mqtt |
2 | 2 |
|
3 |
from aswi2021vochomurka.service.message_parser import parse_mqtt_message, ParseException |
|
3 | 4 |
from aswi2021vochomurka.service.subscriber import Subscriber |
4 |
from aswi2021vochomurka.model.Message import Message |
|
5 | 5 |
|
6 | 6 |
|
7 | 7 |
class MQTTSubscriber(Subscriber): |
... | ... | |
17 | 17 |
client.subscribe(topic) |
18 | 18 |
|
19 | 19 |
# The callback for when a PUBLISH message is received from the server. |
20 |
def on_message(self, client, userdata, message): |
|
21 |
print(message.topic + " " + str(message.payload.decode("utf-8"))) |
|
22 |
m = Message(message.topic, 0, '', '', 1) |
|
23 |
self.callback.onMessage(m) |
|
20 |
def on_message(self, client, userdata, message: mqtt.MQTTMessage): |
|
21 |
try: |
|
22 |
m = parse_mqtt_message(message) |
|
23 |
print(m) |
|
24 |
self.callback.onMessage(m) |
|
25 |
except ParseException as error: |
|
26 |
print('invalid message data format') |
|
27 |
# TODO better reaction on bad format |
|
28 |
pass |
|
24 | 29 |
|
25 | 30 |
def on_disconnect(self, client, userdata, rc): |
26 | 31 |
self.callback.onDisconnected() |
Také k dispozici: Unified diff
parse csv message payload