Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Schreiben Sie ein Bild von Raspberry Pi mit Python in ThingSpeak

Dieses Beispiel zeigt, wie man mit Python ein Bild von einem Raspberry Pi™-Board in einen ThingSpeak-Bildkanal schreibt.

In diesem Beispiel wird ein Raspberry Pi verwendet, um ein Bild von einer Kamera aufzunehmen und lokal eine Datei zu schreiben. Anschließend wird die Bilddatei jedes Mal an ThingSpeak gesendet, wenn ein neues Bild aufgenommen wird. Sie können dieses Beispiel für einen Raspberry Pi verwenden, der mit einer Webcam oder einer Pi-Kamera verbunden ist, abhängig von den im bereitgestellten Code ausgewählten Zeilen.

Für eine Pi-Kamera können Sie den Befehl „ raspistill “ verwenden. Um diesen Code mit einer Webcam zu verwenden, verwenden Sie fswebcam, das Sie verwenden können

sudo apt-get install fswebcam

Um dieses Beispiel ausführen zu können, muss Ihr Pi über einen Internetzugang verfügen.

python-image-ex.jpg

Aufstellen

1) Erstellen Sie einen neuen ThingSpeak Bildkanal, wie in Erstellen Sie einen Bildkanal beschrieben.

2) Erstellen Sie einen neuen ThingSpeak Datenkanal, wie in Sammeln Sie Daten in einem neuen Kanal beschrieben.

3) Fügen Sie der Ansicht Ihres Datenkanals ein Bildanzeige-Widget hinzu, wie in Bildschirm beschrieben.

Code

1) Fügen Sie die folgenden Bibliotheken in Ihren Python-Code ein.

#!/usr/bin/python

from time import sleep
import os
import requests
import sys

2) Definieren Sie die Variablen, um Ihre Thingspeak-Kanäle, Anmeldeinformationen und den Speicherort der Bilddatei anzugeben.

# 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) Speichern Sie einen Schnappschuss von Ihrer Raspberry Pi-Kameraplatine.

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) Führen Sie eine Schleife aus, um einen Schnappschuss zu erfassen und ihn in Ihren ThingSpeak Bildkanal zu schreiben.

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

Schreiben Sie das Bild

Führen Sie den Code aus, während Sie das Bildanzeige-Widget in Ihrer Seitenansicht überwachen.

stapler_image_widget.jpg