так и не получилось, играя со значениями, добиться нужного результата… пришлось применить немного говнокода 
может кому пригодится, у кого геркон будет так же «дрибезжать». возможно проблема в нем, надо попробовать другой поставить.
цель была оповещать когда произойдет открытие.
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
import RPIO # Импортируем библиотеку RPIO
import time # ...и для работы со временем
import MySQLdb
import gc #чистка мусора
import requests
import datetime
from time import sleep
close=0
input_pins = (18,19,20,21,22,23,24,25,26,27) # Задаем номера пинов, которые будут использоваться под ввод. Лучше внести в этот список побольше пинов, дабы избежать наводок.
for i in xrange(len(input_pins)): # Включаем их на ввод и подтягиваем к земле
RPIO.setup(input_pins[i], RPIO.IN, pull_up_down=RPIO.PUD_DOWN)
def write_door_state(gpio_id, val): # Создаем функцию, запускаемую при изменении состояния GPIO
dat=datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")
if val==0:
global close
if close==0:
close=1
try:
db = MySQLdb.connect(host="localhost",user="log",passwd="pas",db="1")
except:
print "connection failed"
door = open('/home/pi/project/door', 'w', 0)
door.write (time.strftime("0 "+"%Y-%m-%d %H:%M:%S")+"\tОткрытие\r\n") #\t - символ табуляции, \r\n - перевод строки
try:
cursor = db.cursor()
sql = """insert into door (bool,date,name) values ('%(val)s','%(date)s','%(stat)s')"""%{"val":'0', "date":dat, "stat":'Open'}
cursor.execute(sql)
db.commit()
cursor.close()
time.sleep(5) # delays for 5 seconds
except MySQLdb.Error as e:
print "MySQL Error: %s" % str(e)
else:
db.close()
gc.collect()
door.close()
requests.get("http://sms.ru/sms/send?api_id=блабла&to=номер&text=Door open!")
time.sleep(60) # delays for 60 seconds
else:
door = open('/home/pi/project/door', 'w', 0)
close=0
door.write (time.strftime("1 "+"%Y-%m-%d %H:%M:%S")+"\tЗакрытие\r\n")
door.close()
# Настраиваем порт на ожидание прерываний и выполнение выщенаписанной функции#Добавляем прерывание, с подтяжкой к земле и подавлением дребезга контактов
RPIO.add_interrupt_callback(22, write_door_state,pull_up_down=RPIO.PUD_DOWN, threaded_callback=True, debounce_timeout_ms=50)
RPIO.wait_for_interrupts() # Ждем прихода прерывания.
Думаю, что код с нуля писать не придется, а достаточно будет этот переделать под свои нужды))