Пример #1
0
    def on_message(self, io_msg):
        usage_values = json.loads(str(
            io_msg.contentdata.decode('utf-8')))["train_data"]
        validation_values = json.loads(str(
            io_msg.contentdata.decode('utf-8')))["validation_data"]
        np_usage_values = np.array(usage_values)
        nplen = float(len(np_usage_values))
        mean = sum(np_usage_values) / nplen
        stdev = np.std(np_usage_values)
        print('data: mean: {} standard_dev: {}'.format(mean, stdev))

        min_expected_val = float(mean) - 2 * float(stdev)
        max_expected_val = float(mean) + 2 * float(stdev)
        for i in range(0, 30):
            if validation_values[i] < min_expected_val or validation_values[
                    i] > max_expected_val:
                print('anomaly usage at {} for device {} with value {}'.format(
                    i, io_msg.tag, validation_values[i]))
                local_msg = IoMessage()
                local_msg.tag = io_msg.tag
                global final_result
                final_result = '{"usage_data":[' + ",".join(
                    map(str, validation_values)) + '],"anomaly_value":' + str(
                        validation_values[i]) + ',"anomaly_step":' + str(
                            i) + '}'
Пример #2
0
def simulate_seismic():
    lock.acquire()
    config = current_config
    lock.release()

    if not config:
        print 'Config is empty...'
        return False

    time.sleep(config.get(FREQUENCY, DEFAULT_SLEEP_TIME) / 1000.)
    msg = IoMessage()
    msg.infotype = SEISMIC_JSON
    msg.infoformat = TEXT_UTF8
    contentdata = {
        MOTION_X:
        random.uniform(config.get(MINIMUM_VALUE_X, DEFAULT_MINIMUM_VALUE),
                       config.get(MAXIMUM_VALUE_X, DEFAULT_MAXIMUM_VALUE)),
        MOTION_Y:
        random.uniform(config.get(MINIMUM_VALUE_Y, DEFAULT_MINIMUM_VALUE),
                       config.get(MAXIMUM_VALUE_Y, DEFAULT_MAXIMUM_VALUE)),
        MOTION_Z:
        random.uniform(config.get(MINIMUM_VALUE_Z, DEFAULT_MINIMUM_VALUE),
                       config.get(MAXIMUM_VALUE_Z, DEFAULT_MAXIMUM_VALUE))
    }
    contentdata = json.dumps(contentdata)
    msg.contentdata = bytearray(contentdata)
    client.post_message_via_socket(msg)
Пример #3
0
def sendIOMessage(type, data):
    try:
        client = IoFogClient()
    except IoFogException as e:
        #client creation failed, e contains description
        print(e)
        return -1

    msg = IoMessage()
    msg.infotype = type
    msg.infoformat = type
    msgcontent = data

    msg.contentdata = msgcontent

    client.post_message_via_socket(msg)
Пример #4
0
def simulate_temperature():
    lock.acquire()
    config = current_config
    lock.release()

    if not config:
        print 'Config is empty...'
        return False

    time.sleep(config.get(FREQUENCY, DEFAULT_SLEEP_TIME) / 1000.)
    msg = IoMessage()
    msg.infotype = TEMPERATURE
    msg.infoformat = DECIMAL_CELSIUS
    contentdata = json.dumps(random.uniform(config.get(MINIMUM_VALUE, DEFAULT_MINIMUM_VALUE),
                                            config.get(MAXIMUM_VALUE, DEFAULT_MAXIMUM_VALUE)))
    msg.contentdata = bytearray(contentdata)
    client.post_message_via_socket(msg)
Пример #5
0
 def get_next_messages(self):
     try:
         next_messages_resp = make_post_request(self.url_get_next_messages, APPLICATION_JSON, self.request_body_id)
     except HTTPError as e:
         raise IoFogHttpException(e.code, e.read())
     messages = []
     for json_msg in next_messages_resp[MESSAGES]:
         messages.append(IoMessage.from_json(json_msg))
     return messages
Пример #6
0
def transform_message(msg):
    lock.acquire()
    config = current_config
    lock.release()

    if not config:
        print 'Config is empty...'
        return None

    new_msg = None
    for selection in config.get(SELECTIONS, []):
        if msg.infotype == selection.get(
                INPUT_TYPE) and msg.infoformat == selection.get(INPUT_FORMAT):
            content_data = transform_content_data(msg.contentdata,
                                                  selection.get(OUTPUTS, []))
            new_msg = IoMessage()
            new_msg.infotype = str(selection.get(OUTPUT_TYPE, ''))
            new_msg.infoformat = str(selection.get(OUTPUT_FORMAT, ''))
            new_msg.contentdata = bytearray(content_data)

    return new_msg
Пример #7
0
 def get_next_messages_from_publishers_within_timeframe(self, query):
     try:
         next_messages_resp = make_post_request(self.url_get_publishers_messages, APPLICATION_JSON,
                                                json.dumps(query))
     except HTTPError as e:
         raise IoFogHttpException(e.code, e.read())
     response = {
         TIME_FRAME_START: next_messages_resp[TIME_FRAME_START],
         TIME_FRAME_END: next_messages_resp[TIME_FRAME_END]
     }
     messages = []
     for json_msg in next_messages_resp[MESSAGES]:
         messages.append(IoMessage.from_json(json_msg))
     response[MESSAGES] = messages
     return response
Пример #8
0
 def received_message(self, message):
     data = bytearray(message.data)
     opt_code = data[0]
     if opt_code == CODE_MSG:
         self.logger.debug('Received message')
         msg_data = data[5:]
         if len(msg_data) == 0:
             return
         msg = IoMessage.from_bytearray(msg_data)
         self.send(bytearray([CODE_ACK]), binary=True)
         self.listener.on_message(msg)
     elif opt_code == CODE_RECEIPT:
         self.logger.debug('Received receipt')
         receipt_data = data[1:]
         if len(receipt_data) == 0:
             return
         id_len = receipt_data[0]
         ts_len = receipt_data[1]
         pos = 2
         message_id = str(receipt_data[pos:pos + id_len])
         pos += id_len
         timestamp = util.bytearray_to_num(receipt_data[pos:pos + ts_len])
         self.send(bytearray([CODE_ACK]), binary=True)
         self.listener.on_receipt(message_id, timestamp)
Пример #9
0
def build_message():
    msg = IoMessage()
    msg.infotype = "infotype"
    msg.infoformat = "infoformat"
    msg.contextdata = ""
    msg.tag = "tag"
    msg.groupid = "groupid"
    msg.authid = "authid"
    msg.authgroup = "authgroup"
    msg.hash = "hash"
    msg.previoushash = "previoushash"
    msg.nonce = "nonce"

    return msg