def post_message(mkey): if not request.json: abort(400) c = concs.find_by_mkey(mkey) if c is None: abort(404) app.logger.debug(request.json) devices = Devices(c) senml_ser = opentrv.data.senml.Serializer() records = senml_ser.from_json_object(request.json) for r in records: d = devices.find_by_topic(r.topic) if d is None: d = devices.add_topic(r.topic) app.logger.debug("Adding device {0}/{1}".format(d["mkey"], d["bn"])) else: app.logger.debug("Retrieving device {0}/{1}".format(d["mkey"], d["bn"])) sensors = Sensors(d) s = sensors.find_by_record(r) if s is None: s = sensors.add_record(r) app.logger.debug("Adding sensor {0}/{1}/{2}".format(s["mkey"], s["bn"], s["n"])) else: app.logger.debug("Retrieving sensor {0}/{1}/{2}".format(s["mkey"], s["bn"], s["n"])) sensors.save() ts = Series(s) ts.add_record(r) ts.save() devices.save() return jsonify({'ok': True}), 201
def test_find_by_topic(self): mkey = "test_mkey" c = {"uuid": "test_uuid", "mkey": mkey} t = opentrv.data.Topic("my/topic") devices = Devices(c) devices.add_topic(t) d = devices.find_by_topic(t) self.assertIsNotNone(d) self.assertEqual(mkey, d["mkey"]) self.assertEqual("my_topic", d["bn"])
def test_find_by_bn(self): mkey = "test_mkey" c = {"uuid": "test_uuid", "mkey": mkey} bn = "mytopic" devices = Devices(c) devices.add({"mkey": mkey, "bn": bn}) d = devices.find_by_bn(bn) self.assertIsNotNone(d) self.assertEqual(mkey, d["mkey"]) self.assertEqual(bn, d["bn"])
def get_concentrator(mkey): c = concs.find_by_mkey(mkey) if c is None: abort(404) devices = Devices(c) cat = opentrv.data.hypercat.Catalogue( [opentrv.data.hypercat.CatalogueItem( url_for('get_device', mkey=d['mkey'], bn=d['bn']), "Device {0}/{1}".format(d['mkey'], d['bn']), payload = d ) for d in devices.find_all()] ) return opentrv.data.hypercat.Serializer().to_json(cat)
def get_sensor(mkey, bn, n): c = concs.find_by_mkey(mkey) if c is None: abort(404) devices = Devices(c) d = devices.find_by_bn(bn) if d is None: abort(404) sensors = Sensors(d) s = sensors.find_by_n(n) if s is None: abort(404) ts = Series(s) return opentrv.data.senml.Serializer().to_json(ts.find_all_records())
def get_concentrator(mkey): c = concs.find_by_mkey(mkey) if c is None: abort(404) devices = Devices(c) cat = opentrv.data.hypercat.Catalogue([ opentrv.data.hypercat.CatalogueItem(url_for('get_device', mkey=d['mkey'], bn=d['bn']), "Device {0}/{1}".format( d['mkey'], d['bn']), payload=d) for d in devices.find_all() ]) return opentrv.data.hypercat.Serializer().to_json(cat)
def get_device(mkey, bn): c = concs.find_by_mkey(mkey) if c is None: abort(404) devices = Devices(c) d = devices.find_by_bn(bn) if d is None: abort(404) sensors = Sensors(d) cat = opentrv.data.hypercat.Catalogue([ opentrv.data.hypercat.CatalogueItem( url_for('get_sensor', mkey=s['mkey'], bn=s['bn'], n=s['n']), "Sensor {0}/{1}/{2}".format(s['mkey'], s['bn'], s['n']), content_type=opentrv.data.senml.MIME_TYPE, payload=s) for s in sensors.find_all() ]) return opentrv.data.hypercat.Serializer().to_json(cat)
def get_device(mkey, bn): c = concs.find_by_mkey(mkey) if c is None: abort(404) devices = Devices(c) d = devices.find_by_bn(bn) if d is None: abort(404) sensors = Sensors(d) cat = opentrv.data.hypercat.Catalogue( [opentrv.data.hypercat.CatalogueItem( url_for('get_sensor', mkey=s['mkey'], bn=s['bn'], n=s['n']), "Sensor {0}/{1}/{2}".format(s['mkey'], s['bn'], s['n']), content_type = opentrv.data.senml.MIME_TYPE, payload = s ) for s in sensors.find_all()] ) return opentrv.data.hypercat.Serializer().to_json(cat)
def post_message(mkey): if not request.json: abort(400) c = concs.find_by_mkey(mkey) if c is None: abort(404) app.logger.debug(request.json) devices = Devices(c) senml_ser = opentrv.data.senml.Serializer() records = senml_ser.from_json_object(request.json) for r in records: d = devices.find_by_topic(r.topic) if d is None: d = devices.add_topic(r.topic) app.logger.debug("Adding device {0}/{1}".format( d["mkey"], d["bn"])) else: app.logger.debug("Retrieving device {0}/{1}".format( d["mkey"], d["bn"])) sensors = Sensors(d) s = sensors.find_by_record(r) if s is None: s = sensors.add_record(r) app.logger.debug("Adding sensor {0}/{1}/{2}".format( s["mkey"], s["bn"], s["n"])) else: app.logger.debug("Retrieving sensor {0}/{1}/{2}".format( s["mkey"], s["bn"], s["n"])) sensors.save() ts = Series(s) ts.add_record(r) ts.save() devices.save() return jsonify({'ok': True}), 201