TigerJython | xx für Gymnasien |
Deutsch English |
Der micro:bit kann Push-Notifikationen über das LinkUp.-Modul versenden, wenn dieses mit dem Interneet verbunden ist.. Push-Mitteilungen werden auf einem Cloud-Server zwischengespeichert, und von einer Push-Applikation eines Smartphones abgeholt. Auf dem Smartphone lösen die Push-Benachrichtigungen in der Regel einen akustischen Alarm aus und werden in einem Notifikationsfenster angezeigt, auch wenn der Smartphone im Ruhezustand ist oder anders verwendet wird.
Damit man die Push-Nachrichten empfangen kann, wird auf dem Smartphone die App Pushover installiert. (von Google Play bzw. App Store). Die Gratisversion funktioniert eine Woche lang, dann muss man sie neu installieren. Eine immer funktionierende Version kostet nur Fr. 5.-. Beim ersten Start erstellst man ein Benutzerkonto mit Email-Adresse und Passwort. Dabei wird man aufgefordert, dem Smartphone einen beliebigen Namen zu geben, in diesem Beispiel aplu. Die persönlichen Kontoangaben werden beim Versenden der Push-Benachrichtigungen nicht verwendet.
Für das Versenden von Pushnachrichten braucht man einen User Key und einen API-Token-Key.. Dazu verwendet man am besten einen PC, wählt im Browser die URL https://www.pushover.net und loggt sich mit den oben festgelegten Kontoangaben ein.
Zum Testen kann man im Message-Fenster etwas eintippen, um die ersten Pushbenachrichtigung zu erhalten.
Wichtig ist aber der Klick auf Send Notification, damit wird der UserKey angezeigt, den man sich notieren muss.
Dann muss man auf den Link Application klicken
und im Feld Name eine beliebige Bezeichnung eingeben, (hier abc ). Die Checkbox Terms of Service bestätigen und auf Create Application klicken.
Danach erscheint ein API Token Key , den man sich ebenfalls notieren muss:
Beispiel 1: Eine Nachricht versenden
Um Nachrichten zu versenden, muss der mbRobot über den Accesspoint mit dem Internet verbunden sein. Im ersten Beispiel wird lediglich eine sehr einfache Textnachricht gesendet. Im Code muss man die User- und Token Key einfügen sowie die URL des Pushover-Servers. Eine Benachrichtigung wird mit der Funktion httpPost(url, content) gesendet, wobei content die benannten Parametern token, user, title und message beinhaltet. Nach der Programmausführung wird in kurzer Zeit die Push-Nachricht am dem Smartphone angezeigt. |
# Push1.py from linkup import * token = "ainrm1ongcvfgbfpfqeryi8prixb8g" user = "setghjcbt8qibfibdgsew33q3abx" title = "micro:bit" message = "Greetings from mbRobot" connectAP("mySSID", "myPassword") url = "https://api.pushover.net/1/messages.json" content = "token=%s&user=%s&title=%s&message=%s" %(token, user, title, message) response = httpPost(url, content) print("response:", response) |
|
Erklärungen zum Programmcode:
token = "ainrm1vdgzvfgbfpfqeryi8prixb8g": API Token Key, den man beim Erstellen des Pushover-Kontos erhalten hat | |
print("response:", response): Die Antwort des Servers im Terminalfenster anzeigen |
Beispiel 2: Roboter mit einem Distanzsensor zur Überwachung verwenden.
Der Roboter sendet eine Push-Benachrichtigung, wenn ein Objekt i im Abstand von 5 bis 50 cm erscheint. Dann wird er für 10 s inaktiv. |
# Push2.py from linkup import * from mbrobot import * token = "aeqskhjloizzo9h4v8okpc5ug74desn" user = "u781hdp6qe8oiuznnejrm6wx8fi36q6" title = "movement detector" def sendNotification(distance): print("Sending push notification") connectAP("mySSID", "myPassword") url = "https://api.pushover.net/1/messages.json" message = "Object detected. Distance: " + str(distance) content = "token=%s&user=%s&title=%s&message=%s" %(token, user, title, message) httpPost(url, content) while True: d = getDistance() print(d) if 50 < d < 500: sendNotification(d) delay(10000) |
|
Erklärungen zum Programmcode:
if 50 < d < 500: dasselbe wie d > 50 and d < 500, d liegt zwischen 50 mm und 500 mm | |
sendNotification(distance):Löst die Benachrichtigung aus |
Beispiel 3: Erdfeuchtigkeit mit Push-Benachrichtigungen überwachen
Die Anlage zur Messung der Feuchte der Pflanzenerde aus den Kapiteln "Physical Computing" und "IoT" kann mit einer Pushnachricht ergänzt werden. Mit den Krokodilklammern am Pin 1 und 3V wird ein Stromkreis aufgebaut. Bei niedriger Feuchte ist der Messwert, die man mit pin1.read_analog() erhält, wesentlich kleiner als wenn die Erde feucht ist. sendNotification() wird aufgerufen, wenn v < 500 ist. Dann wird einmalig eine Push-Nachricht versendet und der Besitzer der Blume kann entsprechend reagieren. |
# Puah3.py from linkup import * from mbrobot import * token = "aeqsgkdrnj5zo9h4v8okpc5ug74desn" user = "jlutg81hdp6qe8pqynnejrm6wx8fi36q6" title = "mbRobot" def sendNotification(distance): print("Sending push notification") connectAP("mySSID", "myPassword") url = "https://api.pushover.net/1/messages.json" message = "I need water!" content = "token=%s&user=%s&title=%s&message=%s" %(token, user, title, message) httpPost(url, content) while True: v = pin1.read_analog() print(v) if v < 500: sendNotification(v) break delay(1000) |
|
Beispiel 4: PIR-Bewegungsdetektor zur Überwachung einsetzen
Der Pyroelektrische Infrarot-Sensor (PIR) verwendet die Eigenschaft einiger Halbleiter, dass eine Temperaturänderung zu einer elektrischen Spannung führt. Da Lebewesen eine Temperaturstrahlung im Infrarot-Bereich abgeben, können PIR-Sensoren die Bewegung von Lebewesen im Bereich von bis zu einigen Metern detektieren. Sie werden vor allem in Alarmanlagen eingesetzt. Der Sensor gibt bei einer Bewegung ein digitales Signal HIGH ab, das nach einigen Sekunden wieder auf LOW geht, falls keine Bewegung mehr stattfindet.
|
Achtung: Da P2 auch für den Ultrasonic-Sensor verwendet wird, muss dieser aus dem Sockel entfernt werden. Der Sensor ist eigentlich ein digitaler Sensor, d.h. hat nur zwei Zustände (Spannungspegel). Am Analogeingang des micro:bit betragen diese ungefähr 800 (Alarm ausgelöst) und 100 (Ruhezustand).
# Push4.py from microbit import * from linkup import * def sendNotification(v): print("Sending push notification") connectAP("mySSID", "MyPassword") url = "https://api.pushover.net/1/messages.json" message = "Movement detected" content = "token=%s&user=%s&title=%s&message=%s" %(token, user, title, message) httpPost(url, content) token = "amnvfdsnj5zo9h4v8okpc5ug74desn" user = "kjugfhdp6qe8pqynnejrm6wx8fi36098" title = "motion detector" state = "IDLE" while True: v = pin2.read_analog() print(v) if v > 500 and state =="IDLE": sendNotification(v) if v < 200 and state == "ALARM": state = "IDLE" delay(500) |
|
Erklärungen zum Programmcode:
state = "IDLE": Es wird eine Zustandsvariable verwendet, die beschreibt, ob der Alarm eben ausgelöst wurde (ALARM) oder der Sensor sich im Detektionsmodus (IDLE) befindet |