示例#1
0
    def post(self):
        user_data, rqmsg, msg, user_uuid = yield self.check_arguments(
            msgws.rqEluDataGet(), None)

        if user_data is not None:
            if user_data['user_auth'] in libiisi.can_read:
                # 验证用户可操作的设备id
                yield self.update_cache('r', user_uuid)
                if 0 in user_data['area_r'] or user_data['is_buildin'] == 1:
                    rtu_ids = list(rqmsg.tml_id)
                else:
                    rtu_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id))

                if len(rtu_ids) == 0:
                    msg.head.if_st = 11
                else:
                    yield self.update_cache()
                    for tml_id in rtu_ids:
                        phy_id, fid, tml_name = self.get_phy_info(tml_id)
                        if phy_id == -1:
                            continue
                        if fid > 0:
                            addr = self.get_phy_list([fid])
                            cid = phy_id
                            tra = 2
                        else:
                            addr = [phy_id]
                            cid = 1
                            tra = 1
                        tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6259',
                                                         addr=list(addr),
                                                         cid=cid,
                                                         tra=tra)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd,
                                                     libiisi.cfg_tcs_port),
                            tcsmsg.SerializeToString())
                        tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6260',
                                                         addr=list(addr),
                                                         cid=cid,
                                                         tra=tra)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd,
                                                     libiisi.cfg_tcs_port),
                            tcsmsg.SerializeToString())
            else:
                msg.head.if_st = 11

        self.write(mx.code_pb2(msg, self._go_back_format))
        self.finish()
        del msg, rqmsg, user_data, user_uuid
示例#2
0
    def post(self):
        user_data, rqmsg, msg, user_uuid = yield self.check_arguments(
            msgws.rqEluCtl(), None)

        if user_data is not None:
            if user_data['user_auth'] in libiisi.can_read & libiisi.can_exec:
                # 验证用户可操作的设备id
                yield self.update_cache('r', user_uuid)
                if 0 in user_data['area_r'] or user_data['is_buildin'] == 1:
                    rtu_ids = list(rqmsg.tml_id)
                else:
                    rtu_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id))

                if len(rtu_ids) == 0:
                    msg.head.if_st = 11
                else:
                    yield self.update_cache()
                    for tml_id in rtu_ids:
                        phy_id, fid, tml_name = self.get_phy_info(tml_id)
                        if phy_id == -1:
                            continue
                        if fid > 0:
                            addr = self.get_phy_list([fid])
                            cid = phy_id
                            tra = 2
                        else:
                            addr = [phy_id]
                            cid = 1
                            tra = 1
                        tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6257',
                                                         addr=list(addr),
                                                         cid=cid,
                                                         tra=tra)
                        lp_do = []
                        i = 0
                        for loop in range(len(rqmsg.loop_id)):
                            if i == 8:
                                break
                            lp_do.append(loop if loop <= 2 else 2)
                        if len(lp_do) < 8:
                            lp_do.extend([2] * (8 - len(lp_do)))
                        tcsmsg.wlst_tml.wlst_elu_6257.opt_do.extend(lp_do)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd,
                                                     libiisi.cfg_tcs_port),
                            tcsmsg.SerializeToString())
            else:
                msg.head.if_st = 11

        self.write(mx.code_pb2(msg, self._go_back_format))
        self.finish()
        del msg, rqmsg, user_data, user_uuid
示例#3
0
    def post(self):
        user_data, rqmsg, msg, user_uuid = yield self.check_arguments(
            msgws.rqRtuVerGet(), None)

        env = False
        if user_data is not None:
            try:
                tver = int(self.get_argument('tver'))
            except:
                tver = 1
            if user_data['user_auth'] in libiisi.can_read:
                # 验证用户可操作的设备id
                yield self.update_cache('r', user_uuid)
                if 0 in user_data['area_r'] or user_data['is_buildin'] == 1:
                    rtu_ids = ','.join(
                        [str(a) for a in self.get_phy_list(rqmsg.tml_id)])
                else:
                    rtu_ids = ','.join([
                        str(a) for a in self.get_phy_list(
                            self.check_tml_r(user_uuid, list(rqmsg.tml_id)))
                    ])
                if len(rtu_ids) == 0:
                    msg.head.if_st = 11
                else:
                    if tver == 1:
                        tcsmsg = libiisi.initRtuJson(2, 7, 1, 1, 1,
                                                     'wlst.rtu.5c00',
                                                     self.request.remote_ip, 0,
                                                     rtu_ids, dict())
                        # libiisi.set_to_send(tcsmsg, 0, False)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{0}.wlst.rtu.5c00'.format(
                                libiisi.cfg_tcs_port),
                            json.dumps(tcsmsg, separators=(',', ':')).lower())
                    elif tver == 2:
                        tcsmsg = libiisi.initRtuProtobuf(cmd='ahhf.rtu.5c00',
                                                         tver=tver)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{0}.{1}'.format(libiisi.cfg_tcs_port,
                                                     tcsmsg.head.cmd),
                            tcsmsg.SerializeToString())
            else:
                msg.head.if_st = 11

        self.write(mx.code_pb2(msg, self._go_back_format))
        self.finish()
        del msg, rqmsg, user_data
示例#4
0
    def post(self):
        user_data, rqmsg, msg, user_uuid = yield self.check_arguments(
            msgws.rqRtuTimerCtl(), None)
        env = False
        contents = ''
        if user_data is not None:
            try:
                tver = int(self.get_argument('tver'))
            except:
                tver = 1
            if rqmsg.data_mark == 0:
                user_auth = libiisi.can_read
            else:
                user_auth = libiisi.can_exec & libiisi.can_write
            if user_data['user_auth'] in user_auth:
                env = True
                contents = 'user from {0} set rtu timer'.format(
                    self.request.remote_ip)
                # 验证用户可操作的设备id
                yield self.update_cache('r', user_uuid)
                if 0 in user_data['area_r'] or user_data['is_buildin'] == 1:
                    rtu_ids = ','.join(
                        [str(a) for a in self.get_phy_list(rqmsg.tml_id)])
                else:
                    rtu_ids = ','.join([
                        str(a) for a in self.get_phy_list(
                            self.check_tml_r(user_uuid, list(rqmsg.tml_id)))
                    ])
                if len(rtu_ids) == 0:
                    msg.head.if_st = 11
                else:
                    if tver == 1:
                        if rqmsg.data_mark == 0:
                            cmd = 'wlst.rtu.1200'
                        else:
                            cmd = 'wlst.rtu.1300'
                        tcsmsg = libiisi.initRtuJson(2, 7, 1, 1, 1, cmd,
                                                     self.request.remote_ip, 0,
                                                     rtu_ids, dict())
                        # libiisi.set_to_send(tcsmsg, 0, False)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{1}.{0}'.format(cmd,
                                                     libiisi.cfg_tcs_port),
                            json.dumps(tcsmsg, separators=(',', ':')).lower())
                    elif tver == 2:
                        if rqmsg.data_mark == 0:
                            cmd = 'ahhf.rtu.1200'
                        else:
                            cmd = 'ahhf.rtu.1300'
                        tcsmsg = libiisi.initRtuProtobuf(cmd=cmd, tver=2)
                        libiisi.send_to_zmq_pub(
                            'tcs.req.{0}.{1}'.format(libiisi.cfg_tcs_port,
                                                     cmd),
                            tcsmsg.SerializeToString())
            else:
                msg.head.if_st = 11

        self.write(mx.code_pb2(msg, self._go_back_format))
        self.finish()
        if env and rqmsg.data_mark == 1:
            self.write_event(11,
                             contents,
                             2,
                             user_name=user_data['user_name'],
                             app_unique=rqmsg.head.unique)
        del msg, rqmsg, user_data
示例#5
0
    def post(self):
        user_data, rqmsg, msg, user_uuid = yield self.check_arguments(
            msgws.rqRtuCtl(), None)

        env = False
        event_id = 0
        if user_data is not None:
            try:
                tver = int(self.get_argument('tver'))
            except:
                tver = 1
            if user_data['user_auth'] in libiisi.can_exec:
                env = True
                self.get_eventinfo()
                dosomething = False
                for x in list(rqmsg.rtu_do):
                    event_id = 0
                    if len(x.tml_id) == 0:
                        continue
                    dosomething = True
                    tcsdata = dict()

                    # 验证用户可操作的设备id
                    yield self.update_cache('x', user_uuid)
                    if 0 in user_data['area_x'] or user_data['is_buildin'] == 1:
                        rtu_ids = ','.join(
                            [str(a) for a in self.get_phy_list(x.tml_id)])
                    else:
                        rtu_ids = ','.join([
                            str(a) for a in self.get_phy_list(
                                self.check_tml_x(user_uuid, list(x.tml_id)))
                        ])
                    if len(rtu_ids) > 0:
                        if x.opt == 1:  # 单回路操作
                            event_id = 19
                            i = 0
                            for k in list(x.loop_do):
                                if k in (0, 1):
                                    tcsdata['k'] = i
                                    tcsdata['o'] = k
                                    tcsmsg = libiisi.initRtuJson(
                                        2, 7, 1, 1, 1, 'wlst.rtu.2210',
                                        self.request.remote_ip, 0, rtu_ids,
                                        tcsdata)
                                    # libiisi.set_to_send(tcsmsg, 0, False)
                                    libiisi.send_to_zmq_pub(
                                        'tcs.req.{0}.wlst.rtu.2210'.format(
                                            libiisi.cfg_tcs_port),
                                        json.dumps(tcsmsg,
                                                   separators=(',',
                                                               ':')).lower())
                                i += 1
                        elif x.opt == 2:  # 多回路操作
                            event_id = 19
                            if tver == 1:
                                i = 1
                                for k in list(x.loop_do):
                                    tcsdata['k{0}'.format(i)] = k
                                    if i == 6:
                                        break
                                    i += 1
                                tcsmsg = libiisi.initRtuJson(
                                    2, 7, 1, 1, 1, 'wlst.rtu.4b00',
                                    self.request.remote_ip, 0, rtu_ids,
                                    tcsdata)
                                # libiisi.set_to_send(tcsmsg, 0, False)
                                libiisi.send_to_zmq_pub(
                                    'tcs.req.{0}.wlst.rtu.4b00'.format(
                                        libiisi.cfg_tcs_port),
                                    json.dumps(tcsmsg,
                                               separators=(',', ':')).lower())
                            elif tver == 2:
                                tcsmsg = libiisi.initRtuProtobuf(
                                    cmd='ahhf.rtu.4b00', tver=tver)
                                tcsmsg.wlst_tml.wlst_rtu_4b00.operation.extend(
                                    list(x.loop_do))
                                libiisi.send_to_zmq_pub(
                                    'tcs.req.{0}.{1}'.format(
                                        libiisi.cfg_tcs_port, tcsmsg.head.cmd),
                                    tcsmsg.SerializeToString())
                        elif x.opt == 3:  # 停运
                            event_id = 17
                            tcsmsg = libiisi.initRtuJson(
                                2, 7, 1, 1, 1, 'wlst.rtu.2800',
                                self.request.remote_ip, 0, rtu_ids, tcsdata)
                            # libiisi.set_to_send(tcsmsg, 0, False)
                            libiisi.send_to_zmq_pub(
                                'tcs.req.{0}.wlst.rtu.2800'.format(
                                    libiisi.cfg_tcs_port),
                                json.dumps(tcsmsg,
                                           separators=(',', ':')).lower())
                        elif x.opt == 4:  # 解除停运
                            event_id = 18
                            tcsmsg = libiisi.initRtuJson(
                                2, 7, 1, 1, 1, 'wlst.rtu.2900',
                                self.request.remote_ip, 0, rtu_ids, tcsdata)
                            # libiisi.set_to_send(tcsmsg, 0, False)
                            libiisi.send_to_zmq_pub(
                                'tcs.req.{0}.wlst.rtu.2900'.format(
                                    libiisi.cfg_tcs_port),
                                json.dumps(tcsmsg,
                                           separators=(',', ':')).lower())
                if not dosomething:
                    msg.head.if_st = 11
                contents = u'{0},build-in user from {1} ctrl rtu '.format(
                    libiisi.events_def.get(event_id), self.request.remote_ip)
            else:
                msg.head.if_st = 11

        self.write(mx.code_pb2(msg, self._go_back_format))
        self.finish()
        if env:
            cur = yield self.write_event(event_id,
                                         contents,
                                         2,
                                         user_name=user_data['user_name'],
                                         app_unique=rqmsg.head.unique)
        del msg, rqmsg, user_data, user_uuid