#やったこと
GPSマルチユニットSORACOM Editionのデータを、SORACOM Funk経由でAWS Lambdaに送り、位置情報をLINE Notifyを使用して通知する。位置情報はGoogleマップのリンクで。使用する言語は、Python。
#GPS マルチユニット SORACOM Edition とは
以下、公式サイトより引用
GPS マルチユニット SORACOM Editionは、「位置情報(GPS)」「温度」「湿度」「加速度」の4つのセンサーと充電式バッテリーを内蔵し、 セルラーLPWAであるLTE-M通信がご利用可能なデバイスです。
詳細については、以下を参照ください。
(公式)GPS マルチユニット SORACOM Edition とは
GPSマルチユニット SORACOM Editionで遊ぶ
#SORACOM Funkとは
クラウドサービスの Function を直接実行できるサービスです。
今回は、AWS Lambdaを実行します。
以下参照ください
(公式)SORACOM Funk とは
SORACOM Funkを使ってみた。
#LINE Notifyとは
以下、公式サイトより
Webサービスからの通知をLINEで受信
Webサービスと連携すると、LINEが提供する公式アカウント"LINE Notify"から通知が届きます。
複数のサービスと連携でき、グループでも通知を受信することが可能です。
以下参照
Python で LINE にメッセージを送信(LINE Notify)
#AWS LambdaでLINE Notifyを呼び出す
SORACOM、AWS Lambda、LINE Notifyの設定については、省略します。
以下を AWS Lambdaに。
Python 3.6
時刻も通知してます。
import os
import requests
import datetime
def lambda_handler(event, context):
lat = event['lat'] #緯度
lon = event['lon'] #経度
# 現在日時を取得(日本時間)
now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
# 位置情報が取得できない場合
if lat == None or lon == None:
msg = now.strftime('%Y-%m-%d') + " " + now.strftime('%H:%M:%S') + " " + "位置情報を取得できませんでした"
line_notify(msg)
return
# Google マップで表示
mapurl = "https://maps.google.co.jp/maps?q=" + str(lat) + "," + str(lon) # google map用
msg = now.strftime('%Y-%m-%d') + " " + now.strftime('%H:%M:%S') + " " + "現在地はここです" + " " + mapurl
line_notify(msg)
# LINE Notifyに通知
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ "<LINEのTOKENを設定>"}
data = {"message" : msg}
s3 = requests.Session()
r3 = s3.post(url, data=data, headers=headers)