#!/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)