[PYTHON] Überwachen Sie die Temperatur mithilfe der Cloud-IoT-Plattform Raspberry Pi + Alibaba

Dieses Tutorial zeigt, wie Sie mit der IoT-Plattform ** Alibaba Cloud ** eine Einwegkommunikation für die Nachrichtenübermittlung von Endgeräten an die Cloud einrichten.

Überblick

Mit der Alibaba Cloud IoT-Plattform können Sie Daten von verschiedenen Arten global bereitgestellter elektronischer Geräte einfach und sicher verbinden und verwalten. Sie können einnehmen. IoT-Plattform mit anderen Cloud-Diensten (ApsaraDB, Quick BI ja / product / quickbi), Message Queue usw.) zum Sammeln, Verarbeiten, Analysieren und Visualisieren von IoT-Daten in Echtzeit. Sie können eine Komplettlösung erstellen, um Ihre Geschäftseffizienz zu verbessern.

Es gibt zwei Arten von Kommunikationskanälen, die zwischen dem Endgerät und der IoT-Cloud eingestellt werden können. Bei der bidirektionalen Kommunikation können Daten über denselben Datenkanal gesendet und empfangen werden, während bei der bidirektionalen Kommunikation Daten vom IoT-Gerät an die IoT-Plattform gesendet und empfangen werden können. Im Folgenden finden Sie einige Beispiele für Projekte, die über Einweg-Kommunikationskanäle implementiert werden können.

  1. Überwachen Sie die Temperatur des Wassertanks zu Hause.
  2. Erkennt und empfängt Sicherheitsalarme wie Gaslecks, Brände und unbefugte Eingriffe. 3 können Sie die Luftfeuchtigkeit überwachen und eine Benachrichtigung über Regentropfen erhalten. 4, überwachen Sie den Status von Elektrogeräten und elektronischen Geräten.

Diese Projekte können weiter ausgebaut werden, um Überwachungsparameter mithilfe der bidirektionalen Kommunikation zu steuern. Das beste Beispiel wäre ein Feuchtigkeitsregler für Gartenböden. Sie können die Luftfeuchtigkeit des Bodens überwachen. Wenn die Luftfeuchtigkeit einen bestimmten Schwellenwert unterschreitet, können Sie dem IoT-Gerät signalisieren, den Sprinkler einzuschalten und die Luftfeuchtigkeit auf ein akzeptables Niveau zurückkehren zu lassen.

Dieses Lernprogramm zeigt jedoch nur die Einwegkommunikation, bei der eine Nachricht von einem Endgerät an die IoT-Cloud gesendet wird. Raspberry PI misst die Temperatur alle 60 Sekunden mithilfe eines Temperatursensors und veröffentlicht die Temperaturdaten in der Alibaba IoT-Cloud als JSON-serialisierte Zeichenfolge im folgenden Format.

{ 'temperature': 12 }

Wobei 12 die vom Sensor gemessene Temperatur ist.

Veröffentlichte Temperaturmessungen werden im Tabellen-Setup der Instanz Alibaba Cloud Table Store gespeichert.

Die folgende Abbildung vereinfacht den Datenfluss durch das Beispielsystem. Beachten Sie, dass alle Ereignisse in dieser Abbildung asynchron auftreten. image.png Abbildung 1 Datenflussdiagramm

Voraussetzungen

Dieses Tutorial ist leicht zu verstehen und zu befolgen, wenn Sie mit den folgenden Techniken vertraut sind:

1, Programmiersprache Python 2. Aufbau einer elektronischen Schaltung unter Verwendung einer Brotplatte 3, Alibaba Cloud-Umgebung

** Hardware- und Softwarevoraussetzungen ** Bevor Sie an diesem Projekt arbeiten, bauen Sie bitte die elektronische Schaltung wie im folgenden Schaltplan gezeigt auf und überprüfen Sie, ob sie ordnungsgemäß funktioniert. Laden Sie außerdem die folgende Bibliothek in die Raspberry Pi-Umgebung herunter.

1, w1thermsensor Python-Bibliothek (https://pypi.org/project/w1thermsensor/) 2. Python-Codebeispiel (https://github.com/itexpertshire/AlibabaIoTCloudDemo)

image.png Abbildung 2 Schaltplan

Himbeer-Umgebungseinstellungen

  1. Melden Sie sich bei Raspberry Pi an und aktivieren Sie die 1-Wire-Schnittstelle in den Raspberry Pi-Einstellungen. image.png Abbildung 3 Raspberry Pi 1-Wire-Konfiguration

  2. Öffnen Sie ein Shell-Terminal mit Raspberry pi und installieren Sie die folgenden Bibliotheken.

sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-iot
sudo pip install w1thermsensor

Richten Sie IoT-Geräte in der Alibaba Cloud ein

  1. Melden Sie sich bei der IoT Platform Console an und wählen Sie die Region Region China (Shanghai) aus.

  2. Erstellen Sie ein Basisprodukt mit dem Knotentyp als Gerät image.png Abbildung 4 Produkteinrichtung

  3. Fügen Sie das Gerät unter dem im vorherigen Schritt erstellten Produkt hinzu. Stellen Sie sicher, dass der Gerätestatus wie unten gezeigt aktiviert ist. image.png Abbildung 5 Geräteeinstellungen

  4. Erstellen Sie eine Regel mit dem JSON-Datentyp und klicken Sie auf die Schaltfläche Verwalten, um die folgenden Optionen festzulegen.

  5. Schreiben Sie einen SQL-Ausdruck, um den Temperaturattributwert auszuwählen, der in den von Raspberry veröffentlichten JSON-Daten verwendet werden kann. image.png Abbildung 6 SQL-Abfrageausdruck

  6. Definieren Sie Datenübertragungsregeln. Die aus der IoT-Nachricht extrahierten Daten werden in einer Tabelle namens myIOT gespeichert, die in der Alibaba Table Store-Instanz erstellt wurde. Tabellen im Tabellenspeicher haben mindestens einen Primärschlüssel. Die aktuelle Uhrzeit ist in der JSON-Nachricht zur Verwendung mit dem Primärschlüssel enthalten. Um den Zeitwert einer veröffentlichten Nachricht abzurufen, müssen Sie die folgende Syntax verwenden: $ {JSON-Nachrichtenattribut}. Die verbleibenden JSON-Attribute werden automatisch als separate Attribute in der Table Store-Tabelle gespeichert. image.png Abbildung 7 Datenübertragungsregeln

Exemplarische Vorgehensweise für Python-Anwendungen

  1. Laden Sie den Python-Beispielcode aus dem Github-Repository herunter / klonen Sie ihn. https://github.com/itexpertshire/AlibabaIoTCloudDemo
  2. Importieren Sie das IoT-Python-SDK, den W1TermSensor und die base64-Bibliothek.
from aliyunsdkcore import client
from aliyunsdkiot.request.v20170420 import RegistDeviceRequest
from aliyunsdkiot.request.v20170420 import PubRequest
import time
import base64
from w1thermsensor import W1ThermSensor
  1. Initialisieren Sie die folgenden Variablen mit Ihren Anmeldeinformationen für das Cloud-Konto und dem IoT-Geräteschlüssel.
accessKeyId='<This will be found in your account security management page>'
accessKeySecret='<This will be found in account security management page>'
clt = client.AcsClient(accessKeyId, accessKeySecret, '<IoT Region>')
productKey ='< This is available in ProductKey field of the product configured >'
deviceName = '<Name of the device created>'
  1. Um eine Nachricht auszugeben, setzt die IoT-Cloud das Standardthema auf / $ {productKey} / $ {deviceName} / update. Bereiten Sie daher die folgende Zeichenfolge des öffentlichen Themennamens vor.
topicName = '/'+productKey+'/'+deviceName+'/update'
  1. Initialisieren Sie das Nachrichtenobjekt "request" mit dem Themennamen und dem Produktschlüssel.
request = PubRequest.PubRequest()
request.set_accept_format('json') # Set the response format as json.
request.set_ProductKey(productKey)
request.set_TopicFullName(topicName) #Full name of the topic to which the messages are sent.
  1. Initialisieren Sie die Temperatursensormethode, bevor Sie die Temperatur vom Sensor ablesen
sensor = W1ThermSensor()

  1. Verwenden Sie in einer Endlosschleife sensor.get_temperature, um die Temperatur zu lesen, und verwenden Sie die Funktion clt.do_action_with_exception, um alle 60 Sekunden eine Nachricht an das IoT-Gerät zu senden.
while True:
    temperature = sensor.get_temperature()
    timevalue = time.time()
    print("The temperature is %s celsius" % temperature)    
    message = "{ 'temperature': %s, 'time': %s }" % (temperature,timevalue)
    print (base64.urlsafe_b64encode(message)) 
    request.set_MessageContent(base64.urlsafe_b64encode(message)) #JSON message in Base64 String
    request.set_Qos(0)
    result = clt.do_action_with_exception(request)
    print 'result : ' + result
    time.sleep(60)

Ausführen und testen

Lassen Sie uns nun den Python-Code ausführen. Stellen Sie sicher, dass der Sensor ordnungsgemäß an den Raspberry GPIO-Pin angeschlossen ist.

Wechseln Sie im Raspberry Unix-Terminal in das Anwendungscodeverzeichnis und verwenden Sie den Befehl python, um den Code auszuführen.

pi@raspberrypi:~/iot/AlibabaIoTCloudDemo $ python tempMonitor.py

Die folgende Nachricht wird an das Terminal ausgegeben. image.png Abbildung 8 Raspberry Pi-Ausgabe Die Temperaturmessungen werden in der Tabelle im Tabellenspeicher wie unten gezeigt angezeigt. image.png Abbildung 9 Tabellenspeicherdaten

Fehlerbehebung

1, ** Python-Code, der den folgenden Fehler zurückgibt ** w1thermsensor.errors.NoSensorFoundError. Kein unbekannter Temperatursensor mit ID '' gefunden.

Führen Sie den folgenden Befehl aus und prüfen Sie, ob cat w1_slave ausgeführt werden kann.

cd /sys/bus/w1/devices
ls
cd 28-XXXXXXXXXXXX (change the X's to your own address)
cat w1_slave

Wenn Sie keine Geräte sehen, die mit 28 beginnen, ist entweder der DS18B20 nicht richtig angeschlossen, die Verkabelung ist defekt oder der Sensor ist defekt. Befolgen Sie die Abbildung oben genau für die Verbindung.

2, ** Nachricht wird nicht im Tabellenspeicher gespeichert ** Stellen Sie sicher, dass die Nachricht empfangen und an den Tablestore im Abschnitt Geräteprotokoll gesendet wird. image.png Abbildung 10 Geräteprotokoll

Recommended Posts

Überwachen Sie die Temperatur mithilfe der Cloud-IoT-Plattform Raspberry Pi + Alibaba
Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 3) ~ ESP32-Einstellungen Analoger Temperatursensor
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
Ermitteln Sie die Temperatur mit Python auf Raspberry Pi 3!
Senden Sie Daten von Raspberry Pi mit AWS IOT
Versuchen Sie es mit dem Temperatursensor (LM75B) mit Raspeye.
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 2) ~ ESP32-Einstellung L Chika
Innenüberwachung mit Raspberry Pi
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi
USB über Ethernet mit Raspberry pi
Versuchen Sie es mit ArUco mit Raspberry Pi
Verwenden einer Webkamera mit Raspberry Pi
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Erkennen Sie "Helligkeit" mit Python auf Raspberry Pi 3!
Verwenden Sie OpenJtalk, damit Raspberry Pi Japanisch spricht
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
Verwendung des digitalen 1-Draht-Temperatursensors DS18B20 mit Raspberry Pi von Python
Erkennen Sie Schiebeschalter mit Python auf Raspberry Pi 3!
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Erkennen Sie Magnetschalter mit Python auf Raspberry Pi 3!
Automatischer Start von Raspberry Pi-Programmen mit Systemd
Einfache Verbindung zwischen Raspberry Pi und AWS IoT
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Erstellen Sie ein Besuchermeldungssystem mit Raspberry Pi
Zeigen Sie die CPU-Temperatur alle 5 Sekunden auf dem Raspberry Pi 4 an
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Verbinden Sie Ihren Raspberry Pi mit Blynk mit Ihrem Smartphone
Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm
[GoogleCloudPlatform] Verwenden Sie die Google Cloud-API mit der API-Clientbibliothek
Messen Sie die CPU-Temperatur von Raspeye mit Python