<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IFTTT | ウダ2Blog</title>
	<atom:link href="https://uda2.com/blog/tag/ifttt/feed/" rel="self" type="application/rss+xml" />
	<link>https://uda2.com/blog</link>
	<description>大阪でフリーランスとしてWEB制作している管理人が気になった技術をメモったり、作ったツールの紹介などを綴っているブログです。</description>
	<lastBuildDate>Mon, 21 May 2018 09:51:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>AlexaとRaspberryPiでテレビ消して</title>
		<link>https://uda2.com/blog/alexa_raspberrypi_tv/</link>
					<comments>https://uda2.com/blog/alexa_raspberrypi_tv/#respond</comments>
		
		<dc:creator><![CDATA[uda2]]></dc:creator>
		<pubDate>Mon, 21 May 2018 09:51:16 +0000</pubDate>
				<category><![CDATA[制作日記]]></category>
		<category><![CDATA[Alexa]]></category>
		<category><![CDATA[AQUOS]]></category>
		<category><![CDATA[Beebotte]]></category>
		<category><![CDATA[IFTTT]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<guid isPermaLink="false">https://uda2.com/blog/?p=2208</guid>

					<description><![CDATA[<p>テレビもsiriからRaspberryPiを経由し赤外線でコントロールしてたのですが前回のAlexaとRaspberryPiで電気付けての件で調べてるうちにsharp-aquos-remote-controlを発見してし</p>
The post <a href="https://uda2.com/blog/alexa_raspberrypi_tv/">AlexaとRaspberryPiでテレビ消して</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></description>
										<content:encoded><![CDATA[<p>テレビもsiriからRaspberryPiを経由し赤外線でコントロールしてたのですが前回の<a href="https://uda2.com/blog/alexa_raspberrypi/" target="_blank">AlexaとRaspberryPiで電気付けて</a>の件で調べてるうちに<a href="https://github.com/benburkhart1/sharp-aquos-remote-control" target="_blank">sharp-aquos-remote-control</a>を発見してしまった。<br />
調べてみるとウチのテレビ（LC-32F5）を含む多くのAQUOSは元々パソコンやスマホからの操作が可能になってるらしい。<br />
<a href="http://www.sharp.co.jp/support/aquos/doc/lc40_32f5_mn_exp.pdf" target="_blank">LC-40F5/32F5 取扱説明書・付録</a></p>
<p>sharp-aquos-remote-controlを使おうと思ったのですが、sharp-aquos-remote-controlをインストールしても「Cannot find module &#8216;sharp-aquos-remote-control&#8217;」と言われて動かず、直接参照すると動いたがチューナーに接続すると「ECONNREFUSED」と言われて接続拒否され、モニタに接続すると「An unknown error occurred.」と言われて止まった。<br />
試しに直接AQUOSにsocket接続してみるとすんなり動作したのでPythonでsocket接続するスクリプトを書くことにした。ちなみに、ウチのテレビはモニタとチューナーに分かれてる変則的なテレビだがsocket接続するのはモニター側という事が分かった。<br />
<span id="more-2208"></span><br />
まず準備としてテレビのIPを固定して「AQUOSリモート設定」でリモートを「する」に変更してユーザー名とパスワードとポートを設定する。このあたりはテレビの説明書に書かれてある。<br />
そして、スクリプトを書いていく<br />
<strong>$ vi ~/.homebridge/aquos.py</strong></p>
<pre><code># -*- coding:utf-8 -*-
import socket
import sys
import time

host = '＜テレビのIPアドレス＞'
port = ＜テレビで設定したポート番号＞
username = '＜テレビで設定したユーザー名＞'
password = '＜テレビで設定したパスワード＞'
so = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
so.connect((host, port))
res = so.recv(1024)
so.send(username+'\n')
so.send(password+'\n')
res = so.recv(1024)
args = sys.argv

so.send('POWR?   \n')
time.sleep(1)
res = so.recv(1024).strip()
if pow != "1" and args[1] == "ON":
	so.send('POWR1   \n')
	time.sleep(1)
	res = so.recv(1024)
elif pow == "1" and args[1] == "OFF":
	so.send('POWR0   \n')
	time.sleep(1)
	res = so.recv(1024)

so.close()</code></pre>
<p>そして、動作するか実験<br />
<strong>$ python aquos.py OFF</strong></p>
<p>電源のオンとオフを試しましたがオンが出来ませんでした。<br />
（念のためWakeupOnLANで起こせないかも確かめましたが無理でした。）<br />
アプリ<a href="https://play.google.com/store/apps/details?id=jp.co.sharp.av.android.airdockremocon&#038;hl=ja" rel="noopener" target="_blank">AQUOSコネクト</a>でも電源を切ると再接続できないのでもしかしたらチューナーとモニターが分かれた独特なテレビなので動作しないのかもしれません。</p>
<p>気を取り直しALEXAからテレビを消せるように設定していく。<br />
Beebotteは前回のを流用するとしてIFTTTを設定していく<br />
「this」に「AmazonAlexa」の「Say a pecific phrase」を選び「What phrase?」に台詞を入れる。今回は「テレビ消して」と入力。<br />
「that」に「Webhook」の「Make a web request」を選ぶ。URL、Method、ContentTypeは前回と同じでBodyを<strong>{“data”:[{“action”:”OFF”,”device”:”TV”}]}</strong>としておく</p>
<p>前回のmqtt_beebotte.pyの「if __name__ == &#8216;__main__&#8217;:」の上（26行目）あたりに下記を追加<br />
<strong>$ vi ~/.homebridge/mqtt_beebotte.py</strong></p>
<pre><code>    elif data["device"] == 'TV':
        if data["action"] == 'ON':
            subprocess.call('python /home/hogehoge/.homebridge/aquos.py ON', shell=True)
        elif data["action"] == 'OFF':
            subprocess.call('python /home/hogehoge/.homebridge/aquos.py OFF', shell=True)</code></pre>
<p>反映させるためサービスを再起動する。<br />
<strong>$ sudo systemctl restart alexa.service</strong></p>
<p>色々書いてますが最近は簡単に設定できるスマートコントローラが出てるので普通の人は難易度の高いRaspberryPIに挑戦する必要は無いです。</p>
<div class="amacco"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B076Q99TT7/amaccoz-22/ref=nosim" target="_blank"><img decoding="async" src="https://images-fe.ssl-images-amazon.com/images/I/41LP-DEewcL._PT0_CR56,143,366,306_SX180_.jpg" width="180" alt="ラトックシステム スマート家電コントローラ スマホで家電をコントロール 外出先からいつでも自宅の家電製品を遠隔操作できる 【Works with Alexa認定製品】 RS-WFIREX3" title="ラトックシステム スマート家電コントローラ スマホで家電をコントロール 外出先からいつでも自宅の家電製品を遠隔操作できる 【Works with Alexa認定製品】 RS-WFIREX3" border="0" align="left" style="margin-right:5px;" />ラトックシステム スマート家電コントローラ スマホで家電をコントロール 外出先からいつでも自宅の家電製品を遠隔操作できる 【Works with Alexa認定製品】 RS-WFIREX3</a></p>
<p>7560円<br />ラトックシステム<br clear="both" /></div>
<p><strong>[参考サイト]</strong><br />
<a href="https://htlab.net/blog/2012/05/19/aquos-lan/" target="_blank">AQUOSをLAN経由で遠隔操作する方法 | 高エネルギー技術研究室</a><br />
<a href="https://qiita.com/ShinnosukeOka/items/259002469075812861cf" target="_blank">Google Home で AQUOS を動かしてみる</a></p>The post <a href="https://uda2.com/blog/alexa_raspberrypi_tv/">AlexaとRaspberryPiでテレビ消して</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://uda2.com/blog/alexa_raspberrypi_tv/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AlexaとRaspberryPiで電気付けて</title>
		<link>https://uda2.com/blog/alexa_raspberrypi/</link>
					<comments>https://uda2.com/blog/alexa_raspberrypi/#respond</comments>
		
		<dc:creator><![CDATA[uda2]]></dc:creator>
		<pubDate>Sat, 19 May 2018 09:40:15 +0000</pubDate>
				<category><![CDATA[制作日記]]></category>
		<category><![CDATA[Alexa]]></category>
		<category><![CDATA[Beebotte]]></category>
		<category><![CDATA[IFTTT]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<guid isPermaLink="false">https://uda2.com/blog/?p=2195</guid>

					<description><![CDATA[<p>今までsiriを使った音声操作をしていたのでHomePodを待っていた。2月になってようやく海外で発売されたが349ドル（執筆時の為替で約38,700円）とかなり高価なので諦めてEcho Dot（セールで4,980円）を</p>
The post <a href="https://uda2.com/blog/alexa_raspberrypi/">AlexaとRaspberryPiで電気付けて</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></description>
										<content:encoded><![CDATA[<p>今までsiriを使った音声操作をしていたのでHomePodを待っていた。2月になってようやく海外で発売されたが349ドル（執筆時の為替で約38,700円）とかなり高価なので諦めてEcho Dot（セールで4,980円）を買った。<br />
Alexaで家電操作する方法は大きく2つで自前のスキル（アプリ）を作るかIFTTTを使うかになりますが今回はIFTTTを使う事にしました。<br />
IFTTTは様々なサービスを連携させるサービスでスキルを作るよりは簡単だが「電気付けてをトリガー」と最後にトリガーと言う必要があります。<br />
<span id="more-2195"></span><br />
<strong>■siriの流れ</strong><br />
siri → homebridge → irMagician<br />
<strong>■IFTTT経由（Alexa）の流れ</strong><br />
Alexa → IFTTT → Beebotte → 常駐させたスクリプト → irMagician</p>
<p>homebridgeの時は操作される家電の振りをするのでsiriからの情報が直接取得出来てシンプルな構造ですがAlexaにはそういうのはまだ開発されてないので複雑になります。<br />
まずIFTTTにイベントの発火（トリガー）の指示をして指示内容をBeebotteに送ります。<br />
BeebotteはMQTTを使ったIoT向けの軽量メッセージブローカーサービスで１日50000メッセージまでなら無料で使えます。<br />
IFTTTの指示が来るとウチのraspberryPiに通知が届けてもらいます。今回はraspberryPiが非公開なのでMQTTを使いましたが公開してたらHTTP経由でもいいかもしれません。<br />
通知の受け口はpaho-mqttというライブラリを使ってPythonで書き、それを常駐させます。<br />
最終的には前回siri用に作ったスクリプトを実行させて家電を操作します。</p>
<p>それではレシピです。<br />
まずは<a href="https://beebotte.com/" target="_blank">Beebotte</a>に入会（Sighn up）します。<br />
「Channels」の右上の「Create new」をクリックします。<br />
Channel Nameに適当な名前を入れ<br />
Channel Discriptionに適当な説明を入れ<br />
Resource Nameに適当な名前を入れ<br />
Resource Discriptionに適当な説明を入れ「Create Channel」を押します。<br />
Channel NameとResource Nameは受け取る際に使います。<br />
出来たChannelの名前をクリックすると「Channel Token」というのがあります。「Channel Name」「Resource Name」と併せて後で使うのでメモしておいてください。</p>
<p>次に<a href="https://ifttt.com/" target="_blank">IFTTT</a>に入会（Sighn up）します。<br />
ログインしたら右上のユーザー名をクリックして「NewApplet」を選びます。<br />
「this」（トリガー）に「AmazonAlexa」の「Say a pecific phrase」を設定（初回はAmazonにサインインさせられる）<br />
「What phrase?」に台詞を入れる。今回は「電気をつけて」と入力<br />
「that」（アクション）に「Webhook」の「Make a web request」を設定<br />
URLを<strong>https://api.beebotte.com/v1/data/write/＜Channel Name＞/＜Resource Name＞?token=＜Channel Token＞</strong><br />
Methodを<strong>POST</strong><br />
ContentTypeを<strong>application/json</strong><br />
Bodyを<strong>{&#8220;data&#8221;:[{&#8220;action&#8221;:&#8221;ON&#8221;,&#8221;device&#8221;:&#8221;Light&#8221;}]}</strong><br />
としておく</p>
<p>そしてRaspberryPI。ウチはPython3のpip3が入って無かったのでインストールする。<br />
<strong># sudo apt install python3-pip</strong><br />
MQTTを受けるライブラリをインストール<br />
<strong># pip3 install paho-mqtt</strong><br />
前回のsiri用（homebridge）に作ったフォルダに設置していく事にする。<br />
<strong>$ cd .homebridge</strong><br />
Beebotteの証明書を落としておく<br />
<strong>$ wget https://beebotte.com/certs/mqtt.beebotte.com.pem</strong><br />
<strong>$ vi mqtt_beebotte.py</strong></p>
<pre><code># -*- coding: utf-8 -*-

import paho.mqtt.client as mqtt
import json
import subprocess
import os

HOST = 'mqtt.beebotte.com'
PORT = 8883
CA_CERTS = '/home/hogehoge/.homebridge/mqtt.beebotte.com.pem'
_TOKEN = '＜Channel Token＞'
TOPIC = '＜Channel Name＞/＜Resource Name＞'

def on_connect(client, userdata, flags, respons_code):
    print('status {0}'.format(respons_code))

def on_message(client, userdata, msg):
    print(msg.topic + ' ' + str(msg.payload))
    data = json.loads(msg.payload.decode("utf-8"))["data"][0]
    print(msg.payload.decode("utf-8"))
    if data["device"] == 'Light':
        if data["action"] == 'ON':
            subprocess.call('python /home/hogehoge/.homebridge/data/irm.py -p -f /home/hogehoge/.homebridge/data/DLC303V-ON.json', shell=True)
        elif data["action"] == 'OFF':
            subprocess.call('python /home/hogehoge/.homebridge/data/irm.py -p -f /home/hogehoge/.homebridge/data/DLC303V-OFF.json', shell=True)

if __name__ == '__main__':
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.username_pw_set('token:%s' %_TOKEN)
    client.tls_set(CA_CERTS)
    client.connect(HOST, PORT)
    client.subscribe(TOPIC)
    client.loop_forever()</code></pre>
<p>※パスはサービス化を見越してフルパスにしてますので設置場所に合わせて変更して下さい。</p>
<p>DLC303V-ON.jsonやDLC303V-ON.jsonのファイルは以前<a href="https://uda2.com/blog/homekit1/" target="_blank">Raspberry Piで先取りHomekit</a>で作ったものを使ってます。もちろんirm.pyも引き続き<a href="http://netbuffalo.doorblog.jp/archives/4872290.html" target="_blank">netbuffalo</a>さんのものを使わしてもらってます。<br />
python3にpaho-mqttを入れてpythonにpyserialを入れてる都合上python3（3.5）のスクリプトからpython（2.7）のスクリプトを呼ぶという不思議な形になってしまいましたがpythonに詳しくないのでスルーします。<br />
実行して、実際にalexaに「アレクサ、電気付けてをトリガー」と言ってみる。<br />
<strong>$ python3 mqtt_beebotte.py</strong><br />
（止め方分からないのでターミナルを終了しました。）<br />
正しく動作したら常駐させます。<br />
<strong># vi /lib/systemd/system/alexa.service</strong></p>
<pre><code>[Unit]
Description=Alexa Service
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/hogehoge/.homebridge/mqtt_beebotte.py

[Install]
WantedBy=multi-user.target</code></pre>
<p><strong># chmod 644 /lib/systemd/system/alexa.service</strong><br />
<strong># systemctl daemon-reload</strong><br />
<strong># systemctl enable alexa.service</strong><br />
常駐されてるか再起動して確認する。<br />
<strong># reboot</strong><br />
<strong># systemctl status alexa.service</strong></p>
<p>これでiphoneからもalexaからも操作できるようになったが「～をトリガー」が面倒です。<br />
alexaの定形アクション（siriだとシーン）にiftttも登録出来るようになることを祈ります。</p>
<p><strong>参考サイト</strong><br />
<a href="https://qiita.com/machu/items/122c8403b35748bd5f4c" target="_blank">Amazon Echoで「○○をつけて」と言って家電を操作する</a><br />
<a href="http://denpa-shinbun.com/entry/amazonecho-raspberrypi" target="_blank">Amazon EchoとRaspberry Piで部屋の照明を制御する #おうちハック &#8211; ちぎっては投げるブログ</a><br />
<a href="https://qiita.com/Guwashi/items/e1ea9c61af4715198edc" target="_blank">IFTTT, Beebotte, Mosquitto, SSL/TLS を使って, なるべく安全に Google Home から Raspberry Pi や ESP8266 を操作する &#8211; Qiita</a></p>The post <a href="https://uda2.com/blog/alexa_raspberrypi/">AlexaとRaspberryPiで電気付けて</a> first appeared on <a href="https://uda2.com/blog">ウダ2Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://uda2.com/blog/alexa_raspberrypi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
