Digital Input
-
Chtěl bych monitorovat pomocí digitálních vstupů stav jednoho zařízení.Výstupem zařízení jsou bezpotenciálové kontakty relé.Zkouším použít callback z pigpio (v evoku callback není).Funguje dobře, ale pokud chci místo vypsání aktuálního stavu na displej zavolat nějakou funkci (třeba odeslat email, nebo uložit do google sheets), začnou se mi vypisovat postupně stavy všech vstupů od 1 do 12. Vypadá to takhle:
import pigpio, time, datetime, gspread
#Google account
email = '[email protected]'
password = 'xyz'
spreadsheet = 'Log_Unipi'pi1 = pigpio.pi()
time_stamp = time.time()emzprava = [
"stav cilso 1",
"stav cilso 2",
"stav cilso 3",
"stav cilso 4",
"stav cilso 5",
"stav cilso 6",
"stav cilso 7",
"stav cilso 8",
"stav cilso 9",
"stav cilso 10",
"stav cilso 11",
"stav cilso 12"]
stav = ["zacatek udalosti v:", "konec udalosti v:"]
idnrimp = [4,17,27,23,22,24,11,7,8,9,25,10]def debfc(gpio, level, tick):
global time_stamp, i, time_now
time_now = time.time()
if (time_now - time_stamp) >= 0.5:
i = datetime.datetime.now()
i = '{:%Y-%m-%d %H:%M:%S}'.format(i)
idf(gpio)
msg(gpio, level)
co = emzprava[idxnr]
st = stav[level]
logUpi(co, st, i)
time_stamp = time_nowdef idf(gpio):
global idxnr
idxnr = idnrimp.index(gpio)def msg(gpio, level):
print(emzprava[idxnr]),(","),(stav[level]),( i)def logUpi(co, st, i):
gc = gspread.login(email,password)
worksheet = gc.open(spreadsheet).sheet1
values = [co,st,i]
worksheet.append_row(values)cb1hi = pi1.callback(4, pigpio.RISING_EDGE, debfc)
cb1lo = pi1.callback(4, pigpio.FALLING_EDGE, debfc)
cb2hi = pi1.callback(17, pigpio.RISING_EDGE, debfc)
cb2lo = pi1.callback(17, pigpio.FALLING_EDGE, debfc)
.
.
.no není to můj denní chléb, ale přesto nevím proč to nefunguje.
Poradí někdo ? -
Chtěl bych monitorovat pomocí digitálních vstupů stav jednoho zařízení.Výstupem zařízení jsou bezpotenciálové kontakty relé.Zkouším použít callback z pigpio (v evoku callback není).Funguje dobře, ale pokud chci místo vypsání aktuálního stavu na displej zavolat nějakou funkci (třeba odeslat email, nebo uložit do google sheets), začnou se mi vypisovat postupně stavy všech vstupů od 1 do 12. Vypadá to takhle:
import pigpio, time, datetime, gspread
#Google account
email = '[email protected]'
password = 'xyz'
spreadsheet = 'Log_Unipi'pi1 = pigpio.pi()
time_stamp = time.time()emzprava = [
"stav cilso 1",
"stav cilso 2",
"stav cilso 3",
"stav cilso 4",
"stav cilso 5",
"stav cilso 6",
"stav cilso 7",
"stav cilso 8",
"stav cilso 9",
"stav cilso 10",
"stav cilso 11",
"stav cilso 12"]
stav = ["zacatek udalosti v:", "konec udalosti v:"]
idnrimp = [4,17,27,23,22,24,11,7,8,9,25,10]def debfc(gpio, level, tick):
global time_stamp, i, time_now
time_now = time.time()
if (time_now - time_stamp) >= 0.5:
i = datetime.datetime.now()
i = '{:%Y-%m-%d %H:%M:%S}'.format(i)
idf(gpio)
msg(gpio, level)
co = emzprava[idxnr]
st = stav[level]
logUpi(co, st, i)
time_stamp = time_nowdef idf(gpio):
global idxnr
idxnr = idnrimp.index(gpio)def msg(gpio, level):
print(emzprava[idxnr]),(","),(stav[level]),( i)def logUpi(co, st, i):
gc = gspread.login(email,password)
worksheet = gc.open(spreadsheet).sheet1
values = [co,st,i]
worksheet.append_row(values)cb1hi = pi1.callback(4, pigpio.RISING_EDGE, debfc)
cb1lo = pi1.callback(4, pigpio.FALLING_EDGE, debfc)
cb2hi = pi1.callback(17, pigpio.RISING_EDGE, debfc)
cb2lo = pi1.callback(17, pigpio.FALLING_EDGE, debfc)
.
.
.no není to můj denní chléb, ale přesto nevím proč to nefunguje.
Poradí někdo ? -
Dobrý den,
je potřeba nastavit softwarově pull up resistor, vice na http://abyz.co.uk/rpi/pigpio/python.htm ... ll_up_down
pi.set_pull_up_down(gpio, pigpio.PUD_UP)