# Dry contact inputs

<abstract>
The CM3-Home board has two inputs designed for mechanical contact like switches or push-buttons. This article
illustrates how to use them.
</abstract>

The contacts are available on screw terminals. Each contact can be closed 
on a single common line.

<img src="./cm3home_drycontacts.jpg" class="img-responsive">

The input lines are opto-isolated from the CPU side and are in the same "electrical domain" 
of the RS485 ports. 

The GPIOs  used are:

* GPIO 28: Left side contact #1. When closed the GPIO level is low
* GPIO 29: Right side contact #2. When closed the GPIO level is low

### Python example

<abstract>
This example reads the input #1 and #2 state and turn-on 
the [left or right relays](/CM3-HOME_relay) when closed. 
</abstract>

	import RPi.GPIO as GPIO
	import time
	
	INP_LEFT=28
	INP_RIGHT=29
	RELAY_LEFT=21
	RELAY_RIGHT=22
	
	
	GPIO.setmode(GPIO.BCM)
	GPIO.setwarnings(False)
	GPIO.setup(INP_LEFT,GPIO.IN)
	GPIO.setup(INP_RIGHT,GPIO.IN)
	GPIO.setup(RELAY_LEFT,GPIO.OUT)
	GPIO.setup(RELAY_RIGHT,GPIO.OUT)
	
	while True:
	    if GPIO.input(INP_LEFT):
	        GPIO.output(RELAY_LEFT,GPIO.LOW)
	    else:
	        GPIO.output(RELAY_LEFT,GPIO.HIGH)
	
	    if GPIO.input(INP_RIGHT):
	        GPIO.output(RELAY_RIGHT,GPIO.LOW)
	    else:
	        GPIO.output(RELAY_RIGHT,GPIO.HIGH)

