"에!? 아침은 비가 내리지 않았는데! 우산 가져오지 않아~."를 해결하는 GoogleHome 제휴 앱을 만들어 보았다
9758 단어 스마트 스피커파이썬GoogleHome
소개
Google Home을 사용하여 귀가 시간의 날씨가 악천후이면 매일 아침 자동으로 우산을 잊지 않도록 음성 통지 해주는 작은 앱을 만들었습니다.
IFTTT라든지 사용하면 LINE이나 메일, PUSH 통지는 간단하게 할 수 있습니다만, 역시 음성으로 가르쳐 준 분이 잊지 않고 편리하다고 생각합니다.
이제 젖어 돌아가거나 갑자기 비닐 우산으로 지출하거나 비가 멈출 때까지 쓸데없는 잔업을 할 필요가 없습니다.
서버 측 프로그램은 Python, Google Home 연계는 Node.js의 google-home-notifier에서 개발했습니다.
GitHub의 리포지토리는 여기입니다. 배포 방법도 게재하고 있습니다.
완제품 동영상
완제품 동영상을 YouTube에 게시했습니다.
GoogleHome을 자발적으로 말하는 방법
여기 편한 기사을 참고로 Node.js의 google-home-notifier라는 라이브러리를 사용했습니다.
알고리즘 개요
완제품 동영상을 YouTube에 게시했습니다.
GoogleHome을 자발적으로 말하는 방법
여기 편한 기사을 참고로 Node.js의 google-home-notifier라는 라이브러리를 사용했습니다.
알고리즘 개요
단지, 이것뿐입니다.
이번에는 Server는 라즈파이를 사용했습니다.
소스 코드
일기 예보 정보를 OpenWeatherMap의 REST-API를 이용하여 취득하여 그것을 바탕으로 NodeJS 파일을 실행할지 여부를 판단하는 메인 프로그램입니다.
weather.pyimport configparser
import datetime
import requests
import os
import logging.config
# コンフィグファイル読み込み
inifile = configparser.ConfigParser()
inifile.read("config.ini")
# ログコンフィグファイル読み込み
logging.config.fileConfig("logging.conf")
logger = logging.getLogger("root")
# 本日の日付を取得
today = str(datetime.date.today())
# 帰宅時間を取得
back_time = inifile.get("back_time", "back_time")
# 天気情報取得パラメータ設定
city_id = inifile.get("openweathermap", "city_id")
app_id = inifile.get("openweathermap", "app_id")
params = {"id": city_id, "APPID": app_id}
headers = {"content-type": "application/json"}
# 天気情報を取得
response = requests.get("http://api.openweathermap.org/data/2.5/forecast", params=params, headers=headers)
data = response.json()
# 本日の帰宅時間の天気情報を抽出
weather_today_back_time = ""
for date_time in data["list"]:
if date_time["dt_txt"].startswith(today) and date_time["dt_txt"].endswith(back_time):
weather_today_back_time = date_time["weather"][0]["main"]
logging.info("The weather of going home time: " + weather_today_back_time)
# もし悪天候であればGoogleHomeを喋らせるNodeJSを実行
if weather_today_back_time == "Rain" or weather_today_back_time == "Snow" or weather_today_back_time == "Thunderstorm":
js_file = inifile.get("googlehomenotifier", "js_file")
command = "/usr/local/bin/node " + js_file
os.system(command)
GoogleHome에 음성 알림 요청을 실행하는 프로그램은 여기입니다.
이 기사의 것을 거의 그대로 유용했습니다.
main.jsconst googlehome = require('google-home-notifier')
const language = 'ja';
googlehome.device('Google-Home', language);
googlehome.ip("192.168.11.3");
googlehome.notify('今日の帰宅時間頃は天気が崩れそうです。傘を忘れずに。', function(res) {
console.log(res);
});
미래
GUI로 설정할 수 있도록 하거나, 전철의 지연을 음성 통지해 주기도 만들어 보고 싶다.
Reference
이 문제에 관하여("에!? 아침은 비가 내리지 않았는데! 우산 가져오지 않아~."를 해결하는 GoogleHome 제휴 앱을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gold-kou/items/887c79a58ad496e417d6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import configparser
import datetime
import requests
import os
import logging.config
# コンフィグファイル読み込み
inifile = configparser.ConfigParser()
inifile.read("config.ini")
# ログコンフィグファイル読み込み
logging.config.fileConfig("logging.conf")
logger = logging.getLogger("root")
# 本日の日付を取得
today = str(datetime.date.today())
# 帰宅時間を取得
back_time = inifile.get("back_time", "back_time")
# 天気情報取得パラメータ設定
city_id = inifile.get("openweathermap", "city_id")
app_id = inifile.get("openweathermap", "app_id")
params = {"id": city_id, "APPID": app_id}
headers = {"content-type": "application/json"}
# 天気情報を取得
response = requests.get("http://api.openweathermap.org/data/2.5/forecast", params=params, headers=headers)
data = response.json()
# 本日の帰宅時間の天気情報を抽出
weather_today_back_time = ""
for date_time in data["list"]:
if date_time["dt_txt"].startswith(today) and date_time["dt_txt"].endswith(back_time):
weather_today_back_time = date_time["weather"][0]["main"]
logging.info("The weather of going home time: " + weather_today_back_time)
# もし悪天候であればGoogleHomeを喋らせるNodeJSを実行
if weather_today_back_time == "Rain" or weather_today_back_time == "Snow" or weather_today_back_time == "Thunderstorm":
js_file = inifile.get("googlehomenotifier", "js_file")
command = "/usr/local/bin/node " + js_file
os.system(command)
const googlehome = require('google-home-notifier')
const language = 'ja';
googlehome.device('Google-Home', language);
googlehome.ip("192.168.11.3");
googlehome.notify('今日の帰宅時間頃は天気が崩れそうです。傘を忘れずに。', function(res) {
console.log(res);
});
GUI로 설정할 수 있도록 하거나, 전철의 지연을 음성 통지해 주기도 만들어 보고 싶다.
Reference
이 문제에 관하여("에!? 아침은 비가 내리지 않았는데! 우산 가져오지 않아~."를 해결하는 GoogleHome 제휴 앱을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gold-kou/items/887c79a58ad496e417d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)