- #!/usr/bin/env python
-
- """
- File: set_coil.py
- Desc: set a specific coil to a specific value
- """
- __author__ = '0xRoM'
- from argparse import ArgumentParser, ArgumentTypeError
- from pyModbusTCP.client import ModbusClient
- import time
- import sys
-
- parser = ArgumentParser()
- parser.add_argument('-i','--ipaddress', action='store', type=str, required=True, help='Input IP Address')
- parser.add_argument('-p','--port', action='store', type=int, required=False, help='Port Number', default=502)
- parser.add_argument('-c','--coil', action='store', type=int, required=True, help='Coil Number', default=0)
- parser.add_argument('-tr','--true', action='store_true', required=False, help='True if set')
- parser.add_argument('-l','--loop', action='store_true', required=False, help='loop on')
- parser.add_argument('-t','--timeout', action='store', type=float, required=False, help='request every X seconds', default=2)
- args = parser.parse_args()
-
- client=ModbusClient(host=args.ipaddress,port=args.port,auto_open=True,auto_close=True,timeout=10)
- if args.true:
- client.write_single_coil(args.coil,True)
- else:
- client.write_single_coil(args.coil,False)
-
- if args.loop:
- i=1
- while True:
- client=ModbusClient(host=args.ipaddress,port=args.port,auto_open=True,auto_close=True,timeout=10)
- if args.true:
- client.write_single_coil(args.coil,True)
- else:
- client.write_single_coil(args.coil,False)
- client.close()
- print '\r>>packet: %d' % i,
- sys.stdout.flush()
- i+=1
- time.sleep(args.timeout)
-