• Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Digital Input

    General Discussion
    1
    3
    2279
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Pavel last edited by

      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 ?

      1 Reply Last reply Reply Quote 0
      • P
        Pavel last edited by

        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 ?

        1 Reply Last reply Reply Quote 0
        • ?
          Guest last edited by

          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)

          1 Reply Last reply Reply Quote 0
          • First post
            Last post