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)
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')
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
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
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
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
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
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')
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
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)
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
def __del__(self): led.ioctl(led.IXORA_LED5, led.GREEN, led.LOW) led.ioctl(led.IXORA_LED5, led.RED, led.LOW)
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)
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()
def __del__(self): led.ioctl(led.IXORA_LED4, led.GREEN, led.LOW) led.ioctl(led.IXORA_LED4, led.RED, led.LOW) pymodbus.free_rtu()