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 = 'xxz@gmail.com'
    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_now

    def 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 = 'xxz@gmail.com'
    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_now

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