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.
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.