SORACOM LTE-M Button for Enterprise에서 위치 정보를 검색해 보았습니다.
우선 SORACOM 사용자 콘솔에서 SORACOM LTE-M Button for Enterprise 주문
외형은 씰이 붙지 않은 LTE-M Button powered by AWS군요...
1. SIM 그룹
SIM 그룹을 적절하게 만들고 그룹에 Button을 속합니다.
2. 간이 위치 측위 기능을 사용하기 위한 설정
SIM 그룹의 기본 설정에서 SORACOM Air for Cellular 설정을 열어 간이 위치 측위 기능을 ON으로 합니다.
또한 바이너리 파서 기능을 활성화하고 형식에 @button을 입력하십시오.
SORACOM Hervest를 ON으로 설정
이 상태에서 버튼을 누르면 Hervest에 데이터가 등록됩니다.
Hervest에서 보면 ↓와 같은 느낌으로 데이터가 등록되었습니다.
데이터
1차 처리된 데이터
{"clickType":2,"clickTypeName":"DOUBLE","batteryLevel":1,"binaryParserEnabled":true}
{"clickType":2,"clickTypeName":"DOUBLE","batteryLevel":1,"binaryParserEnabled":true,"$metadata":{"locationQueryResult":"success","location":{"lat": 35.980014321805754,"lon":139.75467681884766}}}
3. SORACOM FUNK 설정
SIM 그룹의 기본 설정에서 SORACOM Funk를 켜십시오.
AWS Lambda에 데이터가 날 수 있도록 ↓처럼 설정해 보았습니다.
자격 증명은 풀다운 메뉴에서 새로 생성됩니다.
함수의 ARN은 Funk에서 호출하려는 AWS Lambda의 ARN을 입력합니다.
Lambda 함수를 만들면 APN이 표시되므로 해당 값을 복사하여 입력합니다.
Lambda에서 다음과 같은 코드를 작성해 보았습니다.
from __future__ import print_function
import boto3
import os
import json
import logging
import dateutil.parser
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET
import urllib.request
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')
from_address = "送信元のメールアドレス"
to_address = []
to_address.append("送信先メールアドレス")
def lambda_handler(event, context):
# Hervestのデータに相当する部分はeventに入ってるようです
clickType = event["clickTypeName"]
batteryLevel = event["batteryLevel"]
# 位置情報を含めた細かい値はcontext.client_context.customに入るみたいです
lat = context.client_context.custom["location"]["lat"]
lon = context.client_context.custom["location"]["lon"]
imsi = context.client_context.custom['imsi']
# 取得した位置情報をyahoo Mapに渡して該当する場所を取得してみました
apiUrl = 'https://map.yahooapis.jp/geoapi/V1/reverseGeoCoder?lat=' + str(lat) + '&lon=' + str(lon) + '&appid=' + os.environ['yahooMapApi']
response = urllib.request.Request(apiUrl)
with urllib.request.urlopen(response) as res:
data = res.read()
root = ET.fromstring(data)
titl = root[1][0][1].text
# googleマップ用のURLも生成してみました
mapUrl = 'http://maps.google.co.jp/maps?q=' + str(lat) + ',' + str(lon)
body = "\n" + titl + " にいます\n" + mapUrl
# ボタンから送られるデータには時刻情報がないみたいなのでLambda実行時の時間を使っています
ts = datetime.now() + timedelta(hours=9)
ts = ts.strftime('%Y/%m/%d %H:%M:%S')
# clickTypeによって処理の条件わけができます
if (clickType == 'SINGLE'):
subject = 'SINGLE'
body = str(ts) + body
elif (clickType == 'DOUBLE'):
subject = 'DOUBLE'
body = str(ts) + body
elif (clickType == 'LONG'):
subject = 'LONG'
body = str(ts) + body
else:
subject = 'failed'
body = 'failed'
# 例えばSES経由で位置情報を送信できます
ses.send_email(Source=from_address,
Destination={'ToAddresses': to_address},
Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}})
확인을 위해 스마트 폰의 GPS 위치 정보와 비교해 보았습니다.
휴대 기지국이 많은 곳이라면 그렇게 큰 어긋남은 없을 것 같습니다.
간단하지만 GPS없이 거친 위치를 알기 때문에 편리하다고 생각합니다.
위치
스마트 폰 (moto g7 power)의 GPS 데이터
버튼의 간이 위치 측위 기능 데이터
가스가베역
35.9801048556836,139.7520915232467
35.980014321805754,139.75467681884766
Reference
이 문제에 관하여(SORACOM LTE-M Button for Enterprise에서 위치 정보를 검색해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/odo-odo/items/16ce458fbfa86a9d5def
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SIM 그룹의 기본 설정에서 SORACOM Air for Cellular 설정을 열어 간이 위치 측위 기능을 ON으로 합니다.
또한 바이너리 파서 기능을 활성화하고 형식에 @button을 입력하십시오.
SORACOM Hervest를 ON으로 설정
이 상태에서 버튼을 누르면 Hervest에 데이터가 등록됩니다.
Hervest에서 보면 ↓와 같은 느낌으로 데이터가 등록되었습니다.
데이터
1차 처리된 데이터
{"clickType":2,"clickTypeName":"DOUBLE","batteryLevel":1,"binaryParserEnabled":true}
{"clickType":2,"clickTypeName":"DOUBLE","batteryLevel":1,"binaryParserEnabled":true,"$metadata":{"locationQueryResult":"success","location":{"lat": 35.980014321805754,"lon":139.75467681884766}}}
3. SORACOM FUNK 설정
SIM 그룹의 기본 설정에서 SORACOM Funk를 켜십시오.
AWS Lambda에 데이터가 날 수 있도록 ↓처럼 설정해 보았습니다.
자격 증명은 풀다운 메뉴에서 새로 생성됩니다.
함수의 ARN은 Funk에서 호출하려는 AWS Lambda의 ARN을 입력합니다.
Lambda 함수를 만들면 APN이 표시되므로 해당 값을 복사하여 입력합니다.
Lambda에서 다음과 같은 코드를 작성해 보았습니다.
from __future__ import print_function
import boto3
import os
import json
import logging
import dateutil.parser
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET
import urllib.request
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')
from_address = "送信元のメールアドレス"
to_address = []
to_address.append("送信先メールアドレス")
def lambda_handler(event, context):
# Hervestのデータに相当する部分はeventに入ってるようです
clickType = event["clickTypeName"]
batteryLevel = event["batteryLevel"]
# 位置情報を含めた細かい値はcontext.client_context.customに入るみたいです
lat = context.client_context.custom["location"]["lat"]
lon = context.client_context.custom["location"]["lon"]
imsi = context.client_context.custom['imsi']
# 取得した位置情報をyahoo Mapに渡して該当する場所を取得してみました
apiUrl = 'https://map.yahooapis.jp/geoapi/V1/reverseGeoCoder?lat=' + str(lat) + '&lon=' + str(lon) + '&appid=' + os.environ['yahooMapApi']
response = urllib.request.Request(apiUrl)
with urllib.request.urlopen(response) as res:
data = res.read()
root = ET.fromstring(data)
titl = root[1][0][1].text
# googleマップ用のURLも生成してみました
mapUrl = 'http://maps.google.co.jp/maps?q=' + str(lat) + ',' + str(lon)
body = "\n" + titl + " にいます\n" + mapUrl
# ボタンから送られるデータには時刻情報がないみたいなのでLambda実行時の時間を使っています
ts = datetime.now() + timedelta(hours=9)
ts = ts.strftime('%Y/%m/%d %H:%M:%S')
# clickTypeによって処理の条件わけができます
if (clickType == 'SINGLE'):
subject = 'SINGLE'
body = str(ts) + body
elif (clickType == 'DOUBLE'):
subject = 'DOUBLE'
body = str(ts) + body
elif (clickType == 'LONG'):
subject = 'LONG'
body = str(ts) + body
else:
subject = 'failed'
body = 'failed'
# 例えばSES経由で位置情報を送信できます
ses.send_email(Source=from_address,
Destination={'ToAddresses': to_address},
Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}})
확인을 위해 스마트 폰의 GPS 위치 정보와 비교해 보았습니다.
휴대 기지국이 많은 곳이라면 그렇게 큰 어긋남은 없을 것 같습니다.
간단하지만 GPS없이 거친 위치를 알기 때문에 편리하다고 생각합니다.
위치
스마트 폰 (moto g7 power)의 GPS 데이터
버튼의 간이 위치 측위 기능 데이터
가스가베역
35.9801048556836,139.7520915232467
35.980014321805754,139.75467681884766
Reference
이 문제에 관하여(SORACOM LTE-M Button for Enterprise에서 위치 정보를 검색해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/odo-odo/items/16ce458fbfa86a9d5def
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from __future__ import print_function
import boto3
import os
import json
import logging
import dateutil.parser
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET
import urllib.request
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ses = boto3.client('ses')
from_address = "送信元のメールアドレス"
to_address = []
to_address.append("送信先メールアドレス")
def lambda_handler(event, context):
# Hervestのデータに相当する部分はeventに入ってるようです
clickType = event["clickTypeName"]
batteryLevel = event["batteryLevel"]
# 位置情報を含めた細かい値はcontext.client_context.customに入るみたいです
lat = context.client_context.custom["location"]["lat"]
lon = context.client_context.custom["location"]["lon"]
imsi = context.client_context.custom['imsi']
# 取得した位置情報をyahoo Mapに渡して該当する場所を取得してみました
apiUrl = 'https://map.yahooapis.jp/geoapi/V1/reverseGeoCoder?lat=' + str(lat) + '&lon=' + str(lon) + '&appid=' + os.environ['yahooMapApi']
response = urllib.request.Request(apiUrl)
with urllib.request.urlopen(response) as res:
data = res.read()
root = ET.fromstring(data)
titl = root[1][0][1].text
# googleマップ用のURLも生成してみました
mapUrl = 'http://maps.google.co.jp/maps?q=' + str(lat) + ',' + str(lon)
body = "\n" + titl + " にいます\n" + mapUrl
# ボタンから送られるデータには時刻情報がないみたいなのでLambda実行時の時間を使っています
ts = datetime.now() + timedelta(hours=9)
ts = ts.strftime('%Y/%m/%d %H:%M:%S')
# clickTypeによって処理の条件わけができます
if (clickType == 'SINGLE'):
subject = 'SINGLE'
body = str(ts) + body
elif (clickType == 'DOUBLE'):
subject = 'DOUBLE'
body = str(ts) + body
elif (clickType == 'LONG'):
subject = 'LONG'
body = str(ts) + body
else:
subject = 'failed'
body = 'failed'
# 例えばSES経由で位置情報を送信できます
ses.send_email(Source=from_address,
Destination={'ToAddresses': to_address},
Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}})
Reference
이 문제에 관하여(SORACOM LTE-M Button for Enterprise에서 위치 정보를 검색해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/odo-odo/items/16ce458fbfa86a9d5def텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)