Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 953981d4

Přidáno uživatelem Martin Forejt před téměř 4 roky(ů)

parse csv message payload

Zobrazit rozdíly:

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