import time import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library from pubsub import pub from WebRelay import WebRelay def button_callback(channel): print("Button ", channel, " was pushed!") if channel == 11: rid = 0 elif channel == 13: rid = 1 elif channel == 16: rid = 2 elif channel == 18: rid = 3 pub.sendMessage("turn_relay_off", relay_id=rid) GPIO.setwarnings(False) # Ignore warning for now GPIO.setmode(GPIO.BOARD) # Use physical pin numbering GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set pin 11 to be an input pin and set initial value to be pulled low (off) GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set pin 13 to be an input pin and set initial value to be pulled low (off) GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set pin 16 to be an input pin and set initial value to be pulled low (off) GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set pin 18 to be an input pin and set initial value to be pulled low (off) GPIO.add_event_detect(11, GPIO.RISING, callback=button_callback) # Setup event on pin 11 rising edge GPIO.add_event_detect(13, GPIO.RISING, callback=button_callback) # Setup event on pin 13 rising edge GPIO.add_event_detect(16, GPIO.RISING, callback=button_callback) # Setup event on pin 16 rising edge GPIO.add_event_detect(18, GPIO.RISING, callback=button_callback) # Setup event on pin 18 rising edge if __name__ == "__main__": nc_dict = dict() nc_dict["ipaddr"] = "192.168.1.2" nc_dict["port"] = 502 nc_dict["uid"] = 240 modbus = WebRelay() modbus.apply_network_configs(nc_dict) modbus.connect_slave() # pub.subscribe(modbus.turn_relay_on, "turn_relay_on") pub.subscribe(modbus.turn_relay_off, "turn_relay_off") message = input("Press enter to quit\n\n") # Run until someone presses enter GPIO.cleanup() # Clean up modbus.disconnect_slave()