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.
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.
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. Abbildung 1 Datenflussdiagramm
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)
Abbildung 2 Schaltplan
Melden Sie sich bei Raspberry Pi an und aktivieren Sie die 1-Wire-Schnittstelle in den Raspberry Pi-Einstellungen. Abbildung 3 Raspberry Pi 1-Wire-Konfiguration
Ö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
Melden Sie sich bei der IoT Platform Console an und wählen Sie die Region Region China (Shanghai) aus.
Erstellen Sie ein Basisprodukt mit dem Knotentyp als Gerät Abbildung 4 Produkteinrichtung
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. Abbildung 5 Geräteeinstellungen
Erstellen Sie eine Regel mit dem JSON-Datentyp und klicken Sie auf die Schaltfläche Verwalten, um die folgenden Optionen festzulegen.
Schreiben Sie einen SQL-Ausdruck, um den Temperaturattributwert auszuwählen, der in den von Raspberry veröffentlichten JSON-Daten verwendet werden kann. Abbildung 6 SQL-Abfrageausdruck
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. Abbildung 7 Datenübertragungsregeln
from aliyunsdkcore import client
from aliyunsdkiot.request.v20170420 import RegistDeviceRequest
from aliyunsdkiot.request.v20170420 import PubRequest
import time
import base64
from w1thermsensor import W1ThermSensor
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>'
topicName = '/'+productKey+'/'+deviceName+'/update'
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.
sensor = W1ThermSensor()
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)
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. Abbildung 8 Raspberry Pi-Ausgabe Die Temperaturmessungen werden in der Tabelle im Tabellenspeicher wie unten gezeigt angezeigt. Abbildung 9 Tabellenspeicherdaten
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. Abbildung 10 Geräteprotokoll
Recommended Posts