GPS적 수제 전언 시스템
12297 단어 RaspberryPiPHP파이썬PythonistaGPS
소개
집에 돌아오면 전언 메시지가 도착하는 시스템을 만들고 싶었습니다.
그리고 생각한 아이디어가 iBeacon을 사용하는 방법이었습니다.
Beacon에 가까워지면 알림이 와서 전언을 읽을 수 있다는 느낌입니다.
하지만 Mac이 없기 때문에 개발할 수 없다는 것을 깨달았습니다.
그러나 다시 깨달았습니다. 장소를 알고 싶다면 GPS를 사용하면 좋다는 것에.
만들고 싶은 것
집에 돌아오면 전언이 메시지가 도착하는 시스템.
준비하는 것
RaspberryPi (전언을 두는 곳)
iPhone(Pythonista3 설치됨)
완성 이미지
우선 A씨가 전언을 설정합니다.
그리고 B 씨가 집에 도착하면 전언이 도착한다는 이미지입니다.
만들기
iPhone 측 처리
전언 설정
설정하는 쪽은 Pythonista3로 손쉽게 만들었습니다.
UI에서 메시지를 가져오고 HTTP POST에서 보내는 중입니다.
set_msg.pyimport requests
import ui
import console
def set_msg(sender):
payload = {'text': 'set_msg', 'msg': sender.text}
r = requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
console.alert(`Message', sender.text, 'OK', hide_cancel_button=True)
view = ui.View()
view.name = 'Set Message'
view.background_color = 'white'
view.bounds = (0,0,450,600)
msg_field = ui.TextField(frame=(view.width * 0.05, view.height * 0.3, view.width * 0.75, view.height * 0.1), title='input message')
msg_field.action = set_msg
view.add_subview(msg_field)
view.present('sheet')
다가왔다는 사실을 알려
이것은 iPhone이 장착 된 GPS를 사용합니다. 이쪽도 손쉽게 Pythonista3로 만들었습니다.
매분마다 위치를 결정하고 가까워지면 HTTP POST를 수행합니다.
나가기 직전에 스크립트를 시작한다고 가정합니다.
스크립트를 시작한 위치가 집이라고 가정합니다.
이 위치를 임의의 장소로 변경하면, 그 지점에 도달했을 때에 메세지를 보내는 것도 가능합니다.
gps_msg.pyimport location
import notification
import requests
import console
from time import sleep
console.set_idle_timer_disabled(True)
geocode=location.get_location()
home_lat = geocode['latitude']
home_lng = geocode['longitude']
print(home_lat)
print(home_lng)
while True:
sleep(60)
location.start_updates()
cur_geocode=location.get_location()
cur_lat = cur_geocode['latitude']
cur_lng = cur_geocode['longitude']
print(cur_lat)
print(cur_lng)
if home_lat - 0.0003 < cur_lat and cur_lat < home_lat + 0.0003:
if home_lng - 0.0003 < cur_lng and cur_lng < home_lng + 0.0003:
payload = {'text': 'send_msg'}
requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
location.stop_updates()
백그라운드 동작을 계속하는 것 같습니다만, 장시간의 가동은 시도하고 있지 않습니다.
RaspberryPi 측 처리
전언을 받고 보내기
RaspberryPi를 웹 서버로 사용하여 PHP에서 전언을 받고 보내는 과정을 수행합니다.
HTTP POST를 계기로 각 처리를 실행합니다.
전언은 set_msg
로 텍스트에 저장하고 send_msg
로 Slack 게시를 합니다.
일단 메시지를 보내면 내용을 지우고 보내지 않게 하고 있습니다.
<?php
function func_set_msg($msg){
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, $msg);
return;
}
function func_send_msg(){
exec("python3 /home/pi/python_code/slack_msg.py");
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, '');
return;
}
if($_POST['text'] == "set_msg"):
func_set_msg($_POST['msg']);
endif;
if($_POST['text'] == "send_msg"):
func_send_msg();
endif;
?>
Slack 게시
Slacker를 사용하여 텍스트 메시지를 게시하기만 하면 됩니다.
from slacker import Slacker
import codecs
token = "set_your_token"
slacker = Slacker(token)
channel_name = "#" + "general"
message = ''
with codecs.open('/home/pi/work/msg.txt','r', 'utf-8') as f:
message = f.read()
if message != '' :
slacker.chat.post_message(channel_name, message)
테스트
테스트이므로 스스로 전언을 설정하고 스스로 받습니다.
먼저 전언을 설정합니다.
설정할 수 있었습니다.
그리고 외출합니다.
집에 붙었는지 여부의 판정이 적당하기 때문에 가능한 멀리 갑니다.
그리고. . .
집에 돌아왔습니다.
전언, 왔어요.
마지막으로
보안 측면은 생각하지 않습니다.
완전히 자기 만족입니다.
Reference
이 문제에 관하여(GPS적 수제 전언 시스템), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitazet/items/fe8f64400fbbd2397c70
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
집에 돌아오면 전언이 메시지가 도착하는 시스템.
준비하는 것
RaspberryPi (전언을 두는 곳)
iPhone(Pythonista3 설치됨)
완성 이미지
우선 A씨가 전언을 설정합니다.
그리고 B 씨가 집에 도착하면 전언이 도착한다는 이미지입니다.
만들기
iPhone 측 처리
전언 설정
설정하는 쪽은 Pythonista3로 손쉽게 만들었습니다.
UI에서 메시지를 가져오고 HTTP POST에서 보내는 중입니다.
set_msg.pyimport requests
import ui
import console
def set_msg(sender):
payload = {'text': 'set_msg', 'msg': sender.text}
r = requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
console.alert(`Message', sender.text, 'OK', hide_cancel_button=True)
view = ui.View()
view.name = 'Set Message'
view.background_color = 'white'
view.bounds = (0,0,450,600)
msg_field = ui.TextField(frame=(view.width * 0.05, view.height * 0.3, view.width * 0.75, view.height * 0.1), title='input message')
msg_field.action = set_msg
view.add_subview(msg_field)
view.present('sheet')
다가왔다는 사실을 알려
이것은 iPhone이 장착 된 GPS를 사용합니다. 이쪽도 손쉽게 Pythonista3로 만들었습니다.
매분마다 위치를 결정하고 가까워지면 HTTP POST를 수행합니다.
나가기 직전에 스크립트를 시작한다고 가정합니다.
스크립트를 시작한 위치가 집이라고 가정합니다.
이 위치를 임의의 장소로 변경하면, 그 지점에 도달했을 때에 메세지를 보내는 것도 가능합니다.
gps_msg.pyimport location
import notification
import requests
import console
from time import sleep
console.set_idle_timer_disabled(True)
geocode=location.get_location()
home_lat = geocode['latitude']
home_lng = geocode['longitude']
print(home_lat)
print(home_lng)
while True:
sleep(60)
location.start_updates()
cur_geocode=location.get_location()
cur_lat = cur_geocode['latitude']
cur_lng = cur_geocode['longitude']
print(cur_lat)
print(cur_lng)
if home_lat - 0.0003 < cur_lat and cur_lat < home_lat + 0.0003:
if home_lng - 0.0003 < cur_lng and cur_lng < home_lng + 0.0003:
payload = {'text': 'send_msg'}
requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
location.stop_updates()
백그라운드 동작을 계속하는 것 같습니다만, 장시간의 가동은 시도하고 있지 않습니다.
RaspberryPi 측 처리
전언을 받고 보내기
RaspberryPi를 웹 서버로 사용하여 PHP에서 전언을 받고 보내는 과정을 수행합니다.
HTTP POST를 계기로 각 처리를 실행합니다.
전언은 set_msg
로 텍스트에 저장하고 send_msg
로 Slack 게시를 합니다.
일단 메시지를 보내면 내용을 지우고 보내지 않게 하고 있습니다.
<?php
function func_set_msg($msg){
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, $msg);
return;
}
function func_send_msg(){
exec("python3 /home/pi/python_code/slack_msg.py");
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, '');
return;
}
if($_POST['text'] == "set_msg"):
func_set_msg($_POST['msg']);
endif;
if($_POST['text'] == "send_msg"):
func_send_msg();
endif;
?>
Slack 게시
Slacker를 사용하여 텍스트 메시지를 게시하기만 하면 됩니다.
from slacker import Slacker
import codecs
token = "set_your_token"
slacker = Slacker(token)
channel_name = "#" + "general"
message = ''
with codecs.open('/home/pi/work/msg.txt','r', 'utf-8') as f:
message = f.read()
if message != '' :
slacker.chat.post_message(channel_name, message)
테스트
테스트이므로 스스로 전언을 설정하고 스스로 받습니다.
먼저 전언을 설정합니다.
설정할 수 있었습니다.
그리고 외출합니다.
집에 붙었는지 여부의 판정이 적당하기 때문에 가능한 멀리 갑니다.
그리고. . .
집에 돌아왔습니다.
전언, 왔어요.
마지막으로
보안 측면은 생각하지 않습니다.
완전히 자기 만족입니다.
Reference
이 문제에 관하여(GPS적 수제 전언 시스템), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitazet/items/fe8f64400fbbd2397c70
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import requests
import ui
import console
def set_msg(sender):
payload = {'text': 'set_msg', 'msg': sender.text}
r = requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
console.alert(`Message', sender.text, 'OK', hide_cancel_button=True)
view = ui.View()
view.name = 'Set Message'
view.background_color = 'white'
view.bounds = (0,0,450,600)
msg_field = ui.TextField(frame=(view.width * 0.05, view.height * 0.3, view.width * 0.75, view.height * 0.1), title='input message')
msg_field.action = set_msg
view.add_subview(msg_field)
view.present('sheet')
import location
import notification
import requests
import console
from time import sleep
console.set_idle_timer_disabled(True)
geocode=location.get_location()
home_lat = geocode['latitude']
home_lng = geocode['longitude']
print(home_lat)
print(home_lng)
while True:
sleep(60)
location.start_updates()
cur_geocode=location.get_location()
cur_lat = cur_geocode['latitude']
cur_lng = cur_geocode['longitude']
print(cur_lat)
print(cur_lng)
if home_lat - 0.0003 < cur_lat and cur_lat < home_lat + 0.0003:
if home_lng - 0.0003 < cur_lng and cur_lng < home_lng + 0.0003:
payload = {'text': 'send_msg'}
requests.post('http://YOUR_SERVER_ADDRESS/', data=payload)
location.stop_updates()
<?php
function func_set_msg($msg){
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, $msg);
return;
}
function func_send_msg(){
exec("python3 /home/pi/python_code/slack_msg.py");
$filename = '/home/pi/work/msg.txt';
file_put_contents($filename, '');
return;
}
if($_POST['text'] == "set_msg"):
func_set_msg($_POST['msg']);
endif;
if($_POST['text'] == "send_msg"):
func_send_msg();
endif;
?>
from slacker import Slacker
import codecs
token = "set_your_token"
slacker = Slacker(token)
channel_name = "#" + "general"
message = ''
with codecs.open('/home/pi/work/msg.txt','r', 'utf-8') as f:
message = f.read()
if message != '' :
slacker.chat.post_message(channel_name, message)
테스트이므로 스스로 전언을 설정하고 스스로 받습니다.
먼저 전언을 설정합니다.
설정할 수 있었습니다.
그리고 외출합니다.
집에 붙었는지 여부의 판정이 적당하기 때문에 가능한 멀리 갑니다.
그리고. . .
집에 돌아왔습니다.
전언, 왔어요.
마지막으로
보안 측면은 생각하지 않습니다.
완전히 자기 만족입니다.
Reference
이 문제에 관하여(GPS적 수제 전언 시스템), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mitazet/items/fe8f64400fbbd2397c70
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GPS적 수제 전언 시스템), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mitazet/items/fe8f64400fbbd2397c70텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)