コード例 #1
0
 def test_event_channels_response_handle(self):
     m = Message()
     m.set({
         'node': 'rambo',
         'event': 'channels.response',
         'response': [1, 0, 1]
     })
     self.handler.handle(m)
     self.worker.set_params.assert_called_with('rambo',
                                               {'relay': [1, 0, 1]})
コード例 #2
0
    def on_event(self, event, payload):
        data = {}
        # if event == "PrinterStateChanged":
        # 	print("PrinterStateChanged")

        if event == "Connected":
            data['event'] = '3dprinter.status'
            data['parameters'] = {'status': 'connected'}

        if event == "Disconnected":
            data['event'] = '3dprinter.status'
            data['parameters'] = {'status': 'disconnected'}

        if event == "PrintStarted":
            data['event'] = '3dprinter.status'
            data['parameters'] = {'status': 'printing'}

        if event == "PrintCancelled":
            data['event'] = '3dprinter.status'
            data['parameters'] = {'status': 'aborted'}

        if event == "DisplayLayerProgress_progressChanged":
            data['event'] = '3dprinter.progress'
            data['parameters'] = {
                'percentage': payload['progress'],
                'printTimeLeftInSeconds': payload['printTimeLeftInSeconds'],
                'estimatedEndTime': payload['estimatedEndTime'],
                'printTimeLeft': payload['printTimeLeft'],
                'totalLayers': payload['totalLayer'],
                'currentLayer': payload['currentLayer'],
            }

        if event == "PrintDone":
            data['event'] = '3dprinter.status'
            data['parameters'] = {'status': 'printed'}

        if data:
            message = Message()
            message.set(data)
            if not self._settings.get_boolean(["use_proxy"
                                               ]) and self._socket is not None:
                self._socket.sendto(bytes(message), self._address)
                self._logger.info("Message by socket")
            if self._settings.get_boolean(
                ["use_proxy"]) and self._settings.get(["proxy_address"]):
                data = {
                    "message": bytes(message),
                    "ip": self._settings.get(["broadcast_ip"]),
                    "port": self._settings.get_int(["port"])
                }
                req = request.Request(self._settings.get(["proxy_address"]),
                                      data=parse.urlencode(data).encode())
                req.add_header('Content-Type', 'application/json;')
                resp = request.urlopen(req)
                self._logger.info("Message by proxy")
コード例 #3
0
ファイル: config.py プロジェクト: bkosciow/sensor_listener
 def _init_message(self):
     Message.node_name = self.config.get('general', 'node_name')
     Message.add_encoder(B64())
     Message.add_encoder(Plain())
     encoder_aes = AES(self.config.get('aes', 'staticiv'),
                       self.config.get('aes', 'ivkey'),
                       self.config.get('aes', 'datakey'),
                       self.config.get('aes', 'passphrase'))
     Message.add_encoder(encoder_aes)
     Message.add_decoder(B64())
     Message.add_decoder(encoder_aes)
コード例 #4
0
 def test_event_dht_status_handle(self):
     m = Message()
     m.set({
         'node': 'rambo',
         'event': 'dht.status',
         'response': {
             'temp': '10',
             'humi': '60'
         }
     })
     self.handler.handle(m)
     self.worker.set_params.assert_called_with('rambo', {
         'temp': '10',
         'humi': '60'
     })
コード例 #5
0
    def on_after_startup(self):
        node_name = self._settings.get(["node_name"])
        ip_address = self._settings.get(["broadcast_ip"])
        port = self._settings.get_int(["port"])

        if ip_address and port:
            self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
            self._address = (ip_address, int(port))
            self._logger.info("Socket ready %s:%d ", ip_address, port)

        if node_name and self._settings.get([
                "aes_staticiv"
        ]) and self._settings.get(["aes_ivkey"]) and self._settings.get(
            ["aes_datakey"]) and self._settings.get(["aes_passphrase"]):
            Message.node_name = node_name
            Message.add_encoder(
                AES(
                    self._settings.get(["aes_staticiv"]),
                    self._settings.get(["aes_ivkey"]),
                    self._settings.get(["aes_datakey"]),
                    self._settings.get(["aes_passphrase"]),
                ))
            self._logger.info("Message ready")
コード例 #6
0
from message_listener.server import Server
from iot_message.message import Message
from message_listener.handler_debug import HandlerDebug
from iot_message.cryptor.base64 import Cryptor as B64

Message.node_name = "PC"
Message.add_decoder(B64())
Message.drop_unencrypted = True

svr = Server()
# svr.ignore_missing_decoders = False
svr.add_handler('NodeOne', HandlerDebug({}))
svr.start()

while True:
    pass
コード例 #7
0
 def test_event_pir_nomovement_handle(self):
     m = Message()
     m.set({'node': 'rambo', 'event': 'pir.nomovement'})
     self.handler.handle(m)
     self.worker.set_params.assert_called_with('rambo', {'pir': False})
コード例 #8
0
 def test_event_detect_dark_handle(self):
     m = Message()
     m.set({'node': 'rambo', 'event': 'detect.dark'})
     self.handler.handle(m)
     self.worker.set_params.assert_called_with('rambo', {'light': False})