webrelay-modbus/gpio2modbus.py
2020-12-09 05:13:07 -08:00

50 lines
1.9 KiB
Python

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()