Exemplo n.º 1
0
 def __init__(self, ip='127.0.0.1', port=502):
     super(PboxTCP, self).__init__()
     self.isopened = False
     print('[Modbus TCP] %s -- %d' % (ip, port))
     try:
         pymodbus.new_tcp(ip, port)
         # set_timeout(seconds, microseconds = us)
         pymodbus.set_timeout(0, 3000000)  # default timeout=3s
         self.isopened = True
     except BaseException as err:
         led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)
         print(err)
Exemplo n.º 2
0
    def readstring(self, readlist, size=1):
        """
            Read String from Device.
            readlist = [function code, address, data type]
        """
        if self.isopened is False:
            return None

        try:
            ret = pymodbus.read_registers(readlist[0:3], size)
        except BaseException as err:
            if self.platform == 'linux':
                led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
                led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)
            print(err)
            return None
        else:
            if self.platform == 'linux':
                led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
                led.ioctl(led.IXORA_LED4, led.GREEN, led.HIGH)
            else:
                pass

        # And each hexadecimal number into ASCII code
        return ''.join((lambda v: [chr(i) for i in v])(ret)).strip('\x00')
Exemplo n.º 3
0
    def newrtu(self, dev='/dev/ttymxc1'):
        """New RTU for Modbus."""

        print('[Modbus RTU] Port=%s' % (dev))
        try:
            self.isopened = pymodbus.new_rtu(dev)
        except BaseException as err:
            self.isopened = False
            print(err)

        if (self.platform == 'linux') and (self.isopened is False):
            led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)

        return self.isopened
Exemplo n.º 4
0
    def newtcp(self, addr='127.0.0.1', port=502):
        """New TCP for Modbus."""

        print('[Modbus TCP] IP=%s:%d' % (addr, port))
        try:
            self.isopened = pymodbus.new_tcp(addr, port)
        except BaseException as err:
            self.isopened = False
            print(err)

        if (self.platform == 'linux') and (self.isopened is False):
            led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)

        return self.isopened
Exemplo n.º 5
0
    def insert(self, items_data):
        """
        Insert MySQL Table Message.
        items_data = [{itemName='', value=''}, {...}].
        """

        insert_dict = {'table_name': self.tablename}
        insert_dict['time'] = time.strftime("%Y%m%d %H:%M:%S",
                                            time.localtime())
        insert_dict['items'] = items_data

        try:
            ret = self.sess.post(self.inserturl,
                                 data=json.dumps(insert_dict),
                                 timeout=self.timeout)
            val = int(ret.text)
        except BaseException as err:
            val = -1
            print(err)

        if self.platform == 'linux':
            if val == 0:
                led.ioctl(led.IXORA_LED5, led.GREEN, led.HIGH)
                led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
            else:
                led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
                led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)

        return val
Exemplo n.º 6
0
    def create(self, items_data):
        """
            Create MySQL Table Message.
            items_data = dict(Items[ {itemName='', itemType=''}, {...}])
        """

        # create_data = {'table_name': self.table, 'items' : items_data}
        create_data = dict(table_name=self.tablename, delFlg=0, items=[])
        print('[PboxAliyun] Table Name = %s' % self.tablename)

        for items in items_data.get('Items'):
            create_data['items'].append(dict(itemName=items.get('itemName'),\
                                             itemType=items.get('itemType')))
        try:
            ret = self.sess.post(self.createurl,
                                 data=json.dumps(create_data),
                                 timeout=self.timeout)
            val = int(ret.text)
        except BaseException as err:
            val = -1
            print(err)

        if self.platform == 'linux':
            if val == 0:
                led.ioctl(led.IXORA_LED5, led.GREEN, led.HIGH)
                led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
            else:
                led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
                led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)

        return val
Exemplo n.º 7
0
    def create(self, items_data):
        """Create Table Message."""
        # create_data = {'table_name': self.table, 'items' : items_data}
        create_data = dict(table_name=self.table, delFlg=0, items=[])

        print('[Modbus TCP] Cloud Table Name = %s' % self.table)

        for items in items_data.get('Items'):
            create_data['items'].append(dict(itemName=items.get('itemName'),\
                                             itemType=items.get('itemType')))
        try:
            ret = self.sess.post(self.createurl,
                                 data=json.dumps(create_data),
                                 timeout=self.timeout)
            val = int(ret.text)
        except BaseException:
            led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)
            return -1
        else:
            led.ioctl(led.IXORA_LED5, led.GREEN, led.HIGH)

        if val == -1:
            led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
            led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)
        return val
Exemplo n.º 8
0
 def send(self, readlist, length=1):
     """Send Data to Device."""
     try:
         ret = pymodbus.read_registers(readlist[0:3], length)
     except BaseException as err:
         led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
         led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)
         print(err)
         return None
     else:
         led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
         led.ioctl(led.IXORA_LED4, led.GREEN, led.HIGH)
     finally:
         pass
     # When the length is greater than 1, it is a string.
     # And each hexadecimal number into ASCII code
     return ret[0] if length == 1 else ''.join(
         (lambda val: [chr(i) for i in val])(ret)).strip('\x00')
Exemplo n.º 9
0
    def readregs(self, readlist, size=1):
        """
            Read Data from Device.
            readlist = [function code, address, data type]
        """
        if self.isopened is False:
            return None

        try:
            retlist = pymodbus.read_registers(readlist[0:3], size)
        except BaseException as err:
            if self.platform == 'linux':
                led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
                led.ioctl(led.IXORA_LED4, led.RED, led.HIGH)
            print(err)
            return None
        else:
            if self.platform == 'linux':
                led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
                led.ioctl(led.IXORA_LED4, led.GREEN, led.HIGH)
            else:
                pass

        return retlist
Exemplo n.º 10
0
 def __del__(self):
     self.isopened = False
     pymodbus.free_tcp()
     if self.platform == 'linux':
         led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
         led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
Exemplo n.º 11
0
    def insert(self, items_data):
        """
        Insert Data to DataBase.
        items_data type is list.
        """

        insert_dict = {'table_name': self.table}
        insert_dict['time'] = time.strftime("%Y%m%d %H:%M:%S", time.localtime())
        insert_dict['items'] = items_data

        try:
            ret = self.sess.post(self.inserturl, data=json.dumps(insert_dict), timeout=self.timeout)
            val = int(ret.text)
        except BaseException:
            led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
            led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)
            return -1
        else:
            led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
            led.ioctl(led.IXORA_LED5, led.GREEN, led.HIGH)

        if val == -1:
            led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
            led.ioctl(led.IXORA_LED5, led.RED, led.HIGH)

        return val
Exemplo n.º 12
0
 def __del__(self):
     led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
     led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
Exemplo n.º 13
0
 def __del__(self):
     if self.platform == 'linux':
         led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW)
         led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
Exemplo n.º 14
0
 def __del__(self):
     self.isopened = False
     led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
     led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
     pymodbus.free_tcp()
Exemplo n.º 15
0
 def __del__(self):
     led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW)
     led.ioctl(led.IXORA_LED4, led.RED, led.LOW)
     pymodbus.free_rtu()