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]})
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")
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)
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' })
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")
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
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})
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})