def post(self): group_name = request.json.get('group_name') group_id = request.json.get('group_id') group_eui = request.json.get('group_eui') if not group_name: abort(422) def group_eui_productor(): import random s = '' for i in range(4): s += chr(random.randint(0, 255)) return s.encode('hex').upper() def on_add_group(data): pass # group_eui = group_eui_productor() # socketio_cli = MSocketIO(LORA_HOST, LORA_PORT, EventNameSpace, params={'app_eui': APP_EUI, 'token': TOKEN}) # # event_space = socketio_cli.define(EventNameSpace, path=NAMESPACE) # event_space.emit('add_group', {'name': group_name, 'group_addr': group_eui, 'nwkskey': '2B7E151628AED2A6ABF7158809CF4F3C', # 'appskey': '2B7E151628AED2A6ABF7158809CF4F3C'}) # socketio_cli.wait(3) group = Group(group_name, group_id, group_eui) # todo 添加到LoRaWan服务器,带回group_id db.session.add(group) db.session.commit() return group
def delete(self, id): group = Group.get(id) if group: try: group.remove() return jsonify({'success': u'删除成功'}) except IntegrityError, e: response = jsonify({'error': u'删除失败'}) response.status_code = 422
def put(self, id): group_name = request.json.get('group_name') group = Group.get(id) if not group: abort(404) group.group_name = group_name # todo: 添加组到LoRa服务器 # group_eui = None group.save() return group
def get(self): groups = Group.get_groups() # if not routes: # abort(404) return groups
def put(self, group_id): # socketio_cli = MSocketIO(LORA_HOST, LORA_PORT, EventNameSpace, params={'app_eui': APP_EUI, 'token': TOKEN}) # # event_space = socketio_cli.define(EventNameSpace, path=NAMESPACE) group = Group.get(group_id) members = loads(request.data) delete = [] add = [] failed_rm_euis = [] failed_add_euis = [] def on_rm_dev_from_group(data): if data['success'] == 0: dev_eui = data['dev_eui'] failed_rm_euis.append(dev_eui) def on_add_dev_into_group(data): if data['success'] == 0: dev_eui = data['dev_eui'] failed_add_euis.append(dev_eui) event_space.on('rm_dev_from_group', on_rm_dev_from_group) event_space.on('add_dev_into_group', on_add_dev_into_group) if group.group_id: original_members = group.buses for bus in original_members: if bus.id not in [mem['bus_id'] for mem in members]: delete.append(bus.id) for m in members: if m['bus_id'] not in [ori.id for ori in original_members]: add.append(m['bus_id']) # delete members delete_buses = [] for d in delete: bus = Bus.get(d) if bus: delete_buses.append(bus) # add members add_buses = [] for a in add: bus = Bus.get(a) if bus: add_buses.append(bus) for bus in delete_buses: event_space.emit('rm_dev_from_group', {'group_id': group.group_id, 'cmd': 'rm_dev_from_group', 'dev_eui': bus.eui}) for bus in add_buses: event_space.emit('add_dev_into_group', {'group_id': group.group_id, 'cmd': 'add_dev_into_group', 'dev_eui': bus.eui}) # 等待socketio的操作结果 socketio_cli.wait(3) # 写入数据库 for bus in delete_buses: if bus.eui not in failed_rm_euis: bus.group_id = None db.session.add(bus) for bus in add_buses: if bus.eui.upper() not in failed_add_euis: bus.group_id = group.id db.session.add(bus) db.session.commit() error_message = '' if failed_add_euis + failed_rm_euis: error_message = ', '.join(failed_add_euis + failed_rm_euis) + ' 操作失败' socketio_cli.disconnect() return {'error_message': error_message}, 201 socketio_cli.disconnect() return {'error_message': '组不存在'}, 422