Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

Scrivi immagine su ThingSpeak da Raspberry Pi con Python

Questo esempio mostra come scrivere un'immagine su un canale immagine ThingSpeak® da una scheda Raspberry Pi™ utilizzando Python.

Questo esempio utilizza un Raspberry Pi per acquisire un'immagine da una fotocamera e scrivere un file localmente. Quindi il file immagine viene inviato a ThingSpeak ogni volta che viene scattata una nuova immagine. Puoi utilizzare questo esempio per un Raspberry Pi collegato a una web cam o una Pi Camera, a seconda delle linee selezionate nel codice fornito.

Per una fotocamera Pi, puoi utilizzare il comando raspistill . Per utilizzare questo codice con una webcam, utilizza fswebcam, che puoi ottenere utilizzando

sudo apt-get install fswebcam

Il tuo Pi deve avere accesso a Internet per eseguire questo esempio.

python-image-ex.jpg

Impostazione

1) Creare un nuovo canale immagine ThingSpeak come descritto in Crea un canale immagine.

2) Creare un nuovo canale dati ThingSpeak come descritto in Raccogli dati in un nuovo canale.

3) Aggiungere un widget Visualizzazione immagini alla visualizzazione del tuo canale dati, come descritto in Visualizzazione delle immagini.

Codice

1) Includi le seguenti librerie nel tuo codice Python.

#!/usr/bin/python

from time import sleep
import os
import requests
import sys

2) Definisci le variabili per specificare i canali Thingspeak, le credenziali e la posizione del file immagine.

# Update this section with your ThingSpeak Image Channel ID and Image Channel API Key
thingspeakImageChannelID = 'YOUR_THINGSPEAK_IMAGE_CHANNEL_ID'
thingSpeakImageChannelAPIKey = 'YOUR_THINGSPEAK_IMAGE_CHANNEL_API_KEY'
localFileName = '/home/pi/snapshot.jpg'
thingSpeakURL = 'https://data.thingspeak.com/channels/' + thingspeakImageChannelID + '/images'

3) Salva un'istantanea dalla scheda della fotocamera Raspberry Pi.

def getSnapshotBytes():
   # Use FSWEBCAM to save a screenshot from a webcam. This requires the FSWEBCAM package.
   # Use raspistill to save a screenshot from a Pi Cam.
   # Alternatively, you can use OpenCV to directly get the bytestream from the camera.
   imageByteStream = None
   returnCode = os.system('fswebcam -r 1024x768 -S 1 -q ' + localFileName) # Use this line for webcam.
   # returnCode = os.system(‘raspistill -o ‘ + localFileName) # Use this line for a pi cam.
   if returnCode == 0:
      fh = open(localFileName, 'rb')
      imageByteStream = fh.read()
      fh.close()
   return imageByteStream

4) Esegui un ciclo per acquisire un'istantanea e scriverla sul tuo canale immagini ThingSpeak .

def main():
   # Loop infinitely
   while True:
      # Get image bytes
      imData = getSnapshotBytes()
      # POST image to ThingSpeak if there is a valid image
      if imData is not None:
         x = requests.post(url = thingSpeakURL, data = imData,
             headers = {'Content-Type': 'image/jpeg',
             'thingspeak-image-channel-api-key': thingSpeakImageChannelAPIKey,
             'Content-Length' : str(sys.getsizeof(imData))})
         print(x)
         # Sleep so we do not get locked out of ThingSpeak for posting too fast
         sleep(30)

if __name__=="__main__":
   main()

Scrivi l'immagine

Esegui il codice mentre monitori il widget Visualizzazione immagine nella visualizzazione della pagina.

stapler_image_widget.jpg