TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
push

7. PUSH-BENACHRICHTIGUNGEN

 

 

DU LERNST HIER...

 

wie du dein Smartphone so einrichtest, um Push-Benachrichtigungen von der Oxocard zu erhalten.

Push-Benachrichtigungen werden in der Regel auf dem Handy mit einem akustischen Alarm und einem Notifikationsfenster angezeigt, auch wenn du es gerade sonstwie verwendest oder es im Ruhezustand ist. Allerdings benötigt es dazu eine Internetanbindung (über das Mobilfunknetz oder WLAN). Sonst wird die Nachricht erst angezeigt, wenn du die Internetverbindung erstellst.

 

 

EINRICHTUNG DER PUSH-APP

 

Gehe mit dem Handy auf Google play (für Android) oder App Store (für iPhone) und installiere die App mit dem Namen Pushover. Die Gratisversion funktioniert eine Woche lang, sonst musst du sie nach Ablauf neu installieren oder kaufen. Beim ersten Start erstellst du ein Benutzerkonto mit Email-Adresse und Passwort. Du wirst dabei aufgefordert, deinem Handy einen beliebigen Namen zu geben, in diesem Beispiel aplu. Deine persönlichen Kontoangaben werden beim Versenden der Push-Benachrichtigungen nicht verwendet. Du kannst dich nachher über https://www.pushover.net mit diesen Kontoangaben einloggen.

Wenn du im Message-Fenster etwas eintippst und Send Notification klickst, so solltest du bereits eine erste Push-Benachrichtigung erhalten. Notiere dir den User Key, den du später beim Versenden von Push-Messages brauchst.

Klicke auf Create an Application.

und tippe im Feld Name einen beliebigen Bezeichner ein, z.B. abc. Bestätige die Checkbox Terms of Service und klicke Create Application.

Notiere dir den API Token Key:

 

 

MUSTERBEISPIELE

 

Du bist nun eingerichtet, um von der Oxocard Push-Benachrichtigungen zu versenden. Mit dem Modul tcpcom ist dies sehr einfach. Zuerst musst du mit der Oxocard über einem Access Point aufs Internet gelangen. Dann sendest du Benachrichtigung mit der Funktion HTTPClient.pushover(), der du die beiden Keys, sowie Titel und Inhalt der Meldung übergibst.

Programm:

from tcpcom import Wlan, HTTPClient

Wlan.connect("myssid", "mypassword")
apitoken = "ainrm1ongfpfqeryi8prixb8g4"
userkey = "uu4m7u7qhcbt8qibfibdgsew33"

title =  'Von der Oxocard'
message = 'Liebe Gruesse\nJoern'
HTTPClient.pushover(apitoken, userkey, title, message)
► In Zwischenablage kopieren

Du bist nun ausgerüstet, um Alarme und Messdaten von der Oxocard auf dein Handy zu "pushen". Dies kann automatisch oder mit einem Button-Klick erfolgen. Zur Demonstration verwendest du hier einen Temperatur/Feuchtigkeitssensor von Sensirion und sendest die aktuellen Messdaten mit einem Klick auf BUTTON_R2. Um in der Message einen Zeilenumbruch zu erzeugen, verwendest du \n.

Programm:

from tcpcom import Wlan, HTTPClient
from oxocard import *
from oxobutton import *
from sht31 import SHT31
from time import sleep

Wlan.connect("myssid", "mypassword")
apitoken = "ainrm1ongfpfqeryi8prixb8g4"
userkey = "uu4m7u7qhcbt8qibfibdgsew33"
title =  'Oxocard Weather Info'

sht = SHT31()
btn = Button(BUTTON_R2) 
while True:
    temp, humi = sht.get_temp_humi()
    display(int(temp + 0.5))
    sleep(3)
    display(int(humi + 0.5))
    sleep(3)
    if btn.wasPressed():
        message = "Temperature: %4.1f degC\n" %temp
        message += "Humidity: %4.1f%%" %humi
        insertBigChar("X", RED)
        HTTPClient.pushover(apitoken, userkey, title, message)
    display("::")
    sleep(2)
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Push-Benachrichtigungen sind ein weit verbreitetes Verfahren, um einem Handy Notifikationen zuzusenden, ohne dass dieses sie ständig abfragen muss.

Sowohl title und message in der Funktion pushover() müssen URL-codiert sein, damit Spezialzeichen (Umlaute, Accents, usw.) funktionieren. Ein einfacher Encoder ist in tcpcom eingebaut, der aber nicht für alle Zeichen funktioniert. Falls du Schwierigkeiten mit Spezialzeichen hast, so beschaffe dir die codierte Version des Strings von http://www.url-encode-decode.com und verwende pushover() mit dem letzten Parameter encode = False oder verzichte auf Spezialzeichen.

 

 

ZUM SELBST LÖSEN

 

 

1.

Sende 4 verschiedene Push-Benachrichtigungen beim Drücken der Tasten BUTTON_L2, BUTTON_L3, BUTTON_L2, BUTTON_R3.

2.

Sende einen Alarm auf das Handy, sobald die Temperatur über einen bestimmten Wert ansteigt. Sende einen Endalarm, wenn die Temperatur wieder auf einen um 1 Grad kleineren Wert gesunken ist. Verwende irgendeinen anderen Sensor, um Alarme auszulösen, beispielsweise einen PIR-Bewegungssensor.

3.

Nehme eine Messreihe über längere Zeit auf und speichere die Werte in einer Log-Datei. Übermittle der Inhalt dieser Datei in regelmässigen Abständen als Push-Benachrichtigung.

 

 

ZUSATZSTOFF: WIE FUNKTIONIERT PUSH-NOTIFIKATION?

 

Grundsätzlich ist ein Webserver nicht in der Lage, von sich aus eine Verbindung mit einem Client, also etwas deinem Handy, zu erstellen, um ihm Informationen zu übermitteln. Es gibt darum nur zwei Möglichkeiten, dass dein Handy über Neuigkeiten informiert wird:

A.

Das Handy baut regelmässig als Client eine Verbindung zu einem Server auf und fragt nach neuen Informationen. Dieses periodische Abfragen (Polling) wird beispielsweise bei Email-Clients verwendet, die alle 10 Minuten deine Mailbox nach neuen Nachrichten abfragen.

B.

Auf dem Handy läuft eine App, die eine Verbindung mit einem Notification Server (für Android von Google, für iOS von Apple) aufnimmt und diese offen hält. Über diesen offenen Kanal kann der Server jederzeit sofort eine Benachrichtigung an das Handy senden. Dieses Verfahren wird bei Push-Notifikationen verwendet, beispielsweise von Whatsapp.

Ablauf beim Senden einer Push-Message von der Oxocard zum Handy:

1.

Das Handy startet die App Pushover und öffnet damit einen ständigen TCP/IP-Datenkanal zum Notification Server. Damit ist der Push-Service auf dem Handy aktiv.

2.

Die Oxocard pusht eine Message, indem sie einen HTTP-POST request an den Pushover-Server (api.pushover.net) sendet.

3. Der Pushover-Server leitet die Message an den Notifikations-Server weiter, der sie dem Handy weiterleitet.