Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Schreiben Sie ein Bild mit Python von Raspberry Pi in ThingSpeak

Dieses Beispiel zeigt, wie Sie mit Python ein Bild von einer Raspberry Pi™-Platine in einen ThingSpeak ®-Bildkanal schreiben.

In diesem Beispiel wird ein Raspberry Pi verwendet, um ein Bild von einer Kamera aufzunehmen und lokal in eine Datei zu schreiben. Anschließend wird die Bilddatei bei jeder Aufnahme eines neuen Bildes an ThingSpeak gesendet. Sie können dieses Beispiel für einen Raspberry Pi verwenden, der mit einer Webcam oder einer Pi-Kamera verbunden ist, je nachdem, welche Zeilen im bereitgestellten Code ausgewählt sind.

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 erhalten können mit

sudo apt-get install fswebcam

Ihr Pi muss über Internetzugang verfügen, um dieses Beispiel auszuführen.

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 Daten in einem neuen Kanal sammeln beschrieben.

3) Fügen Sie der Ansicht Ihres Datenkanals ein Bildanzeige-Widget hinzu, wie in Bildanzeige 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 Bilddateien 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 aufzunehmen 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