webrelay-modbus/gpio_test2.py
2020-12-09 08:20:15 -08:00

100 lines
3.1 KiB
Python

import time
import datetime as dt
import logging
import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library
from pubsub import pub
from WebRelay import WebRelay
tnow = dt.datetime.now()
logging.basicConfig(
handlers = [
logging.FileHandler("log." + tnow.strftime("%Y%m%d-%H%M%S")),
logging.StreamHandler(),
],
format='%(asctime)s %(message)s',
datefmt='%m/%d/%Y %H:%M:%S',
level=logging.INFO
)
logging.info("Driver started")
pin2relay = {}
pin2relay[11] = 0
pin2relay[13] = 1
pin2relay[16] = 2
pin2relay[18] = 3
# 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)
def turn_relay_on(relay_id):
print ("turning on ", relay_id)
def turn_relay_off(relay_id):
print ("turning off ", relay_id)
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_off, "turn_relay_off")
pub.subscribe(modbus.turn_relay_on, "turn_relay_on")
#pub.subscribe(turn_relay_off, "turn_relay_off")
#pub.subscribe(turn_relay_on, "turn_relay_on")
valve1_old = False
valve2_old = False
try:
while True:
# Valve 1 Switch
if GPIO.input(11) == 0:
if not valve1_old:
logging.info("Open Valve 1")
valve1_old = not valve1_old
pub.sendMessage("turn_relay_on", relay_id=0)
else:
if valve1_old:
logging.info("Close Valve 1")
valve1_old = not valve1_old
pub.sendMessage("turn_relay_off", relay_id=0)
# Container 2 Full
if GPIO.input(13) == 0:
if not valve2_old:
logging.info("Open Valve 2")
valve2_old = not valve2_old
pub.sendMessage("turn_relay_on", relay_id=1)
else:
if valve2_old:
logging.info("Close Valve 2")
valve2_old = not valve2_old
pub.sendMessage("turn_relay_off", relay_id=1)
time.sleep(0.1)
except KeyboardInterrupt:
GPIO.cleanup() # Clean up
pub.sendMessage("turn_relay_off", relay_id=0)
pub.sendMessage("turn_relay_off", relay_id=1)
modbus.disconnect_slave()
logging.info("Driver terminated")