Ejemplo n.º 1
0
    def update_pin(self, opts):
        db = init_db()
        led = opts["led"]
        value = opts["output"]
        device_uuid = opts["device_uuid"]
        devices = db.execute("SELECT id FROM devices"
                             " WHERE uuid = '{}'"
                             .format(device_uuid))
        if not rows_exist(devices):
            raise UnsupportedDeviceError()

        pins = db.execute("SELECT pins.id FROM pins, devices"
                          " WHERE pins.device_id = devices.id"
                          " AND pins.name = '{0}'"
                          " AND devices.uuid = '{1}'".
                          format(led, device_uuid))
        if not rows_exist(pins):
            raise UnsupportedPinError()

        db.execute("UPDATE pins"
                   " JOIN devices ON devices.id = pins.device_id"
                   " SET pins.status = {0}"
                   " WHERE pins.name = '{1}'"
                   " AND devices.uuid = '{2}'".
                   format(int(value), led, device_uuid))
Ejemplo n.º 2
0
 def run(self):
     self.logger.debug("Starting message pusher")
     self.amqp_client.open_connection()
     while True:
         db = init_db()
         try:
             messages = db.execute(
                 "SELECT devices.uuid, messages.params, messages.id"
                 " FROM messages, devices"
                 " WHERE messages.device_id = devices.id"
                 " AND messages.status = 'queued'")
             for message in messages:
                 self.logger.debug(message)
                 payload = message['params']
                 queue = message['uuid']
                 message_id = message['id']
                 self.amqp_client.publish(queue, payload)
                 db.execute("UPDATE messages SET status = 'pushed'"
                            " WHERE id = {}".format(message_id))
                 self.logger.debug("Pushed message {0} for device uuid {1}"
                                   .format(payload, queue))
         except Exception as e:
             self.logger.debug("Oops! Error :{0}\n{1}"
                               .format(e.message, traceback.format_exc()))
         db.close()
         time.sleep(10)