Meine Frau sagte mir, ich solle mich anstellen, wenn ich das Büro verlasse, aber ehrlich gesagt ist es ein Ärger. Ich fragte mich, ob ich automatisch benachrichtigen konnte, dass ich das Büro verlassen hatte, und schickte die Standortinformationen vorerst an AWS.
Smartphone: Kyocera (KTV44) OS:Android 9
Installieren Sie termux unter Android mit Google Play. https://play.google.com/store/apps/details?id=com.termux&hl=ja
Da es schwierig ist, mit einem Smartphone über die Tastatur einzugeben, Geben Sie nach der Installation den folgenden Befehl ein, um die Umgebung für ssh zu erstellen.
$ termux-setup-storage #Erlaube termux, Android-Speicher zu verwenden.
$ pkg install openssh #Installieren Sie ssh (sowohl Server als auch Client).
$ sshd #Starten Sie den SSH-Server
$ passwd #Passworteinstellung
$ whoami #Benutzername bestätigen (notieren)
$ ifconfig #Überprüfen Sie die IP-Adresse Ihres Smartphones (notieren Sie sich diese)
Die von termux angezeigte IP-Adresse entspricht übrigens der IP-Adresse des Smartphones. Wenn Sie sie also im Voraus kennen, müssen Sie sie nicht konfigurieren.
Stellen Sie als Nächstes mit ssh von Ihrem PC aus eine Verbindung zu Ihrem Smartphone her, um die Arbeit zu vereinfachen. Sei hier vorsichtig. Die Standard-TCP-Portnummer für ssh ist 22, für termux ist jedoch 8022 angegeben. Geben Sie daher die Portnummer mit der Option -p an. PC (Ubuntu) Seite
$ ssh -p 8022 (Nutzername)@(IP-Adresse des Smartphones)
Wenn Sie zum ersten Mal ssh machen Are you sure you want to continue connecting (yes/no)? Antworte mit Ja. Geben Sie danach das auf Ihrem Smartphone festgelegte Passwort ein.
Da die Hintergrundverarbeitung im Ausgangszustand verboten ist, wird die SSH-Verbindung jedes Mal unterbrochen, wenn das Smartphone in den Ruhezustand wechselt. Durch Auswahl von "RELEASE WAKE LOCK" auf Ihrem Smartphone wird die Hintergrundverarbeitung durchgeführt.
Sobald Sie ssh verwenden können, werden wir die Umgebung weiter aufbauen.
$ pkg install git #Installieren Sie git für AWS IoT Core, um es später zu verwenden.
$ pkg install python #Installieren Sie auch Python.
$ pkg install vim-python #Installieren Sie auch vim für die Dateibearbeitung.
$ pkg install termux-api #termux-Installieren Sie auch API. Erforderlich, um GPS-Informationen zu erhalten.
Nach Abschluss des Installationssystems müssen Sie im nächsten Schritt AWS Iot Core konfigurieren. Lesen Sie diesen ↓ Artikel, registrieren Sie das Objekt "android01" und führen Sie den Verbindungstest vom Smartphone zu AWS durch. https://qiita.com/zakuzakuzaki/items/e30d63598ca1d6c0f2a9
Ich war überrascht, weil ich es so machen konnte, wie es war. Termux ist unglaublich.
Verwenden Sie den Befehl termux-location in "termux-api", um die Standortinformationen abzurufen. https://wiki.termux.com/wiki/Termux-location
$ termux-location -p network #Geben Sie die aktuelle Position aus, die das Smartphone beobachtet
{
"latitude": 35.6359322,
"longitude": 139.8786311,
"altitude": 43.5,
"accuracy": 23.26799964904785,
"vertical_accuracy": 3.299999237060547,
"bearing": 0.0,
"speed": 0.0,
"elapsedMs": 97,
"provider": "network"
}
-p ist eine Option zum Auswählen der Methode zum Abrufen von Standortinformationen und zum Auswählen aus [GPS / Netzwerk / Passiv]. Die Standardeinstellung ist GPS, aber aus irgendeinem Grund konnte ich dies auf meinem Smartphone nicht tun. Deshalb habe ich mich für das Netzwerk entschieden. (Kein Fehler, warten Sie lange.) Übrigens, selbst wenn Sie Ihr Smartphone von einer Wi-Fi-Verbindung auf eine 3G-Verbindung umstellen, können Sie die Standortinformationen nur abrufen, wenn Sie Netzwerk auswählen.
Wahrscheinlich ein Problem mit den Berechtigungen der Termux-App, aber ich konnte es nicht lösen, also habe ich es verlassen. Normalerweise kann Android Nutzungsrechte wie Ordner, Kameras, GPS usw. für jede Anwendung auf dem Einstellungsbildschirm der Anwendung vergeben. Termux hat in erster Linie keine Wahl der Autorität, daher gibt es keine Möglichkeit, diese zu gewähren.
Nachdem Sie bestätigt haben, dass die Standortinformationen abgerufen werden können, speichern Sie sie zur einfachen Verarbeitung im JSON-Format.
$ termux-location -p network |sed -e "4,10d"|tr -d '\n'|tr -d ' '| sed -s s/,}/}/g > location.json
$ cat location.json
{"latitude":35.6359322,"longitude":139.8786311}#Bestätigen Sie, dass es schön geformt wurde
Was machst du ・ Standortinformationen abrufen ・ Gelöschte Zeilen 4-10 (außer Längen- und Breitengrad) -Löschen Sie Zeilenumbrüche
Erstellen Sie als Nächstes ein Programm zum Veröffentlichen der Standortinformationen. Erstellen Sie "jsonPub.py", eine modifizierte Version des letzten Teils von "basicPubSub.py", einer Beispieldatei in aws-iot-device-sdk-python. Stellen Sie sicher, dass Sie location.json laden und veröffentlichen, das Standortinformationen enthält.
Vor dem Bearbeiten
basicPubSub.py (Zeile 112 und danach)
# Publish to the same topic in a loop forever
loopCount = 0
while True:
if args.mode == 'both' or args.mode == 'publish':
message = {}
message['message'] = args.message
message['sequence'] = loopCount
messageJson = json.dumps(message)
myAWSIoTMQTTClient.publish(topic, messageJson, 1)
if args.mode == 'publish':
print('Published topic %s: %s\n' % (topic, messageJson))
loopCount += 1
time.sleep(1)
Nach der Bearbeitung
jsonPub.py (Zeile 112 und danach)
# Publish to the same topic in a loop forever
with open("location.json", "rb") as load_file:#Standortinformationsdatei lesen
location = bytearray(load_file.read())#Für MQTT-Übertragung in Bytearray-Typ konvertieren
loopCount = 0
while True:
if args.mode == 'both' or args.mode == 'publish':
myAWSIoTMQTTClient.publish(topic, location, 1)#Standortinformationen veröffentlichen
if args.mode == 'publish':
print('Published topic %s: %s\n' % (topic, location))#Zur Bestätigung
loopCount += 1
time.sleep(1)
Damit ist der Aufbau auf der Smartphone-Seite abgeschlossen.
Als nächstes stellen Sie die Wolkenseite ein. Es ändert nur die Richtlinie.
Fügen Sie unter AWS IoT> Richtlinien Themen hinzu, die Sie veröffentlichen und abonnieren können. Dieses Mal habe ich ein Thema namens "Ort" hinzugefügt. Wenn Sie mit der Bearbeitung fertig sind, klicken Sie auf "Als neue Version speichern". Andernfalls tritt ein Verbindungsfehler auf.
Gehen Sie zu AWS IoT> Tests, geben Sie den Themennamen (Speicherort) ein und klicken Sie dann auf Thema abonnieren.
Führen Sie jsonPub.py im Terminal aus. Geben Sie den Themennamen mit der Option -t am Ende des Befehls an.
python jsonPub.py -e (Bitte passen Sie Ihre ARN an)-ats.iot.ap-northeast-1.amazonaws.com -r root-CA.crt -c android01.cert.pem -k android01.private.key -t location
Stellen Sie sicher, dass die folgende Meldung an das Terminal ausgegeben wird. Ich konnte die Standortinformationen abonnieren, die mein Smartphone von AWS für AWS veröffentlicht hat.
Received a new message:
b'{"latitude":35.6359322,"longitude":139.8786311}'
from topic:
location
--------------
Stellen Sie außerdem auf der AWS-Seite sicher, dass Sie das Standortthema abonnieren.
Danke für Ihre Unterstützung.
Wir haben eine Umgebung erstellt, um die Standortinformationen des Smartphones an AWS zu senden. Als nächstes wäre es schön, wenn Sie Lamda usw. verwenden könnten, um die automatische Benachrichtigung über das Verlassen des Büros und die Abfahrtszeit des Rückzugs zu überprüfen. Übrigens, bitte seien Sie versichert, dass die auf dieser Seite angezeigten Standortinformationen nicht mein Zuhause sind.
Die diesmal erstellte Datei wird auf github veröffentlicht. https://github.com/zakuzakuzaki/zaki-aws/tree/main/iot
Danke für Ihre Kooperation. Ich habe versucht, die Entwicklungsumgebung auf dem Android-Terminal vorzubereiten https://qiita.com/leosuke/items/b83425d5a6730aa4cf94
Erstellen Sie ein mobiles Repository, das Sie mit Termux führen können https://wlog.flatlib.jp/item/1859
Lesen Sie JSON mit Python https://qiita.com/kikuchiTakuya/items/53990fca06fb9ba1d8a7
Recommended Posts