Questo forum utilizza i cookies
Questo forum fa uso di cookie per migliorare l'esperienza utente. I cookie sono piccoli file di testo memorizzati sul tuo browser. I cookie impostati dal forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza, vengono utilizzati unicamente per memorizzare le tue preferenze. Navigando sul sito accetti che RaspberryItaly installi i cookie sul tuo browser.
Per maggiori informazioni consulta l'informativa sui Cookie di RasberryItaly

Un cookie verra memorizzato nel browser indipendentemente dalla scelta per evitare che questa domanda ti venga posta di nuovo. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link nel footer.
  • Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
help rpinotify

help rpinotify
#1
Salve a tutti

Sto seguendo la guida per inviare una notifica dal raspberry a telegram premendo un pulsante fisico 
La guida è questa https://rpinotify.it/uses/buttonpressed.php 
Ho copiato lo script pari pari inserendo il mio token 
Solo che quando lo avvio mi dice questo :


>>> %Run rpinotify.py
Traceback (most recent call last):
  File "/home/pi/rpinotify.py", line 13, in <module>
    GPIO.setup(pin, GPIO.IN,pull_up_down=GPIO.PUD_UP)
ValueError: Channel must be an integer or list/tuple of integers
>>> 

lo script è il seguente

#!/usr/bin/env python
# -*- coding: utf-8 -*-
token="TOKEN"
testonoti="PROVA INVIO MESSAGGIO"
pin="18"

import RPi.GPIO as GPIO
import time
import requests


GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.IN,pull_up_down=GPIO.PUD_UP)


while True:
    inputValue = GPIO.input(pin)
    if (inputValue == False):
        requests.get('https://api.rpinotify.it/existencerequest/{}/text/{}'.format(token, testonoti))
    time.sleep(0.3)

Dove sbaglio?

Grazie
Risposta
#2
Prova con pin=18 ( senza i doppi apici). Probabilmente lo script si aspetta un intero, ma con i doppi apici gli passi una stringa

Inviato dal mio XT1039 utilizzando Tapatalk
Risposta
#3
più modernamente, lo riscriverei così (non lo ho provato):
Codice:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# impostazioni:
token="TOKEN"                                                  # il token RpiNotify
testonoti="PROVA INVIO MESSAGGIO"      # testo della notifica
pin=18                                                                   # pin GPIO a cui è connesso il pulsante

# importazione librerie:
import requests
from gpiozero import Button

#programma:
button = Button(pin)
button.when_pressed = requests.get('https://api.rpinotify.it/existencerequest/{}/text/{}'.format(token, testonoti))
Risposta
#4
Sad 
(21/07/2017, 23:03)Zzed Ha scritto: più modernamente, lo riscriverei così (non lo ho provato):
Codice:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# impostazioni:
token="TOKEN"                                                  # il token RpiNotify
testonoti="PROVA INVIO MESSAGGIO"      # testo della notifica
pin=18                                                                   # pin GPIO a cui è connesso il pulsante

# importazione librerie:
import requests
from gpiozero import Button

#programma:
button = Button(pin)
button.when_pressed = requests.get('https://api.rpinotify.it/existencerequest/{}/text/{}'.format(token, testonoti))

Ciao e di nuovo grazie

Provo e riprovo ma non va 

Ho copiato il tuo script ,inserito dentro python 2 ,cambiato il token , salvato il file , poi da python 2 premo run per vedere cosa succede e mi escono queste scritte :

Traceback (most recent call last):
  File "/home/pi/rpi.py", line 15, in <module>
    button.when_pressed = requests.get('https://api.rpinotify.it/existencerequest/{}/text/{}'.format(token, testonoti))
  File "/usr/lib/python2.7/dist-packages/gpiozero/devices.py", line 159, in __setattr__
    return super(GPIOBase, self).__setattr__(name, value)
  File "/usr/lib/python2.7/dist-packages/gpiozero/mixins.py", line 209, in when_activated
    self._when_activated = self._wrap_callback(value)
  File "/usr/lib/python2.7/dist-packages/gpiozero/mixins.py", line 257, in _wrap_callback
    raise BadEventHandler('value must be None or a callable')
BadEventHandler: value must be None or a callable


Non capisco proprio
Risposta
#5
ho fatto qualche piccolo errore, credo.
Comunque perchè funzioni, ovviamente devi esserti registrato al bot di rpinotify.

riproviamoci:
Codice:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# impostazioni:
token="TOKEN"                                                  # il token RpiNotify
testonoti="PROVA INVIO MESSAGGIO"      # testo della notifica
pin=18                                                                   # pin GPIO a cui è connesso il pulsante

# importazione librerie:
import requests
from gpiozero import Button

#programma:
button = Button(pin)
button.when_pressed = requests.get('http://api.rpinotify.it/notification/{}/text/{}'.format(token, testonoti))
Risposta
#6
Il bot funziona, in Bash funziona perfettamente, in python non mi da errori però non invia le notifiche
Risposta
#7
In realtà c'era un 404 perché l'indirizzo che ho copiato era errato. Prova quest'ultima dovrebbe andare

Ps: evita di quotare per intero i messaggi precedenti se non utile alla discussione : per leggerli basta alzare lo sguardo altrimenti sono inutili ripetizioni che rendono la discussione difficile da seguire.
Risposta
#8
salve a tutti , mi ricollego a questo post perchè ho un problema con lo stesso progetto . ho creato uno script sulla base anche di quanto scritto qui pero' dopo che lo lancio ottengo questo errore

pi@raspberrypi:~ $ sudo python telegram18
Traceback (most recent call last):
 File "telegram18", line 11, in <module>
   from gpiozero import Button
ImportError: No module named gpiozero

telegram18 è il nome dello script che ho fatto cosi
Codice:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# impostazioni:
token="eyJhbGciOiJ....................u6FWIDoA$"
testonoti="PROVA INVIO MESSAGGIO"      # testo della notifica
pin=18                                                                   # pin $

# importazione librerie:
import requests
from gpiozero import Button

#programma:
button = Button(pin)
button.when_pressed = requests.get('http://api.rpinotify.it/notification/{}/tex$

ho messo i puntini dentro il Token per non incollarlo tutto .
dove sto sbagliando ?
Risposta
#9
Python è abbastanza chiaro nei messaggi di errore:
"ImportError: No module named gpiozero"
Non puoi importare gpiozero perchè non è installato sul tuo sistema.
Gpiozero è preinstallato in Raspbian, quindi probabilmente stai usando Raspbian Lite o un altro sistema che non lo ha preinstallato.
Per installarlo:
aggiorna la lista dei repository con
Codice:
sudo apt-get update
poi installalo per Python 3:
Codice:
sudo apt-get install python3-gpiozero
o per Python 2:
Codice:
sudo apt-get install python-gpiozero

Se non dovesse funzionare, devi installarlo tramite pip.
Per installare PIP, nel caso tu non lo abbia già:
Per Python 3:
Codice:
sudo apt-get install python3-pip
mentre per Python 2:
Codice:
sudo apt-get install python-pip

ora finalmente, installiamo Gpiozero:
Per Python 3:
Codice:
sudo pip3 install gpiozero
Per Python 2:
Codice:
sudo pip install gpiozero
Risposta
#10
grazie molte Zzed , ora ho installato gpiozero che sulla lite infatti non c'era . appena lancio il comando
sudo python telegram18
per renderlo attivo , dato che non è ancora sui cron lo devo fare per ora a "manina" . ottengo questa risposta e ricevo la notifica immediatamente
Traceback (most recent call last):
File "telegram18", line 15, in <module>
button.when_pressed = requests.get('http://api.rpinotify.it/notification/{}/text/{}'.format(token, testonoti))
File "/usr/lib/python2.7/dist-packages/gpiozero/devices.py", line 119, in __setattr__
return super(GPIOBase, self).__setattr__(name, value)
File "/usr/lib/python2.7/dist-packages/gpiozero/mixins.py", line 212, in when_activated
self._when_activated = self._wrap_callback(value)
File "/usr/lib/python2.7/dist-packages/gpiozero/mixins.py", line 260, in _wrap_callback
raise BadEventHandler('value must be None or a callable')
gpiozero.exc.BadEventHandler: value must be None or a callable
però dovrei ricevere la notifica solo se il GPIO18 si chiude fisicamente verso GND cosa che non accade
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect