部屋の明かり(VRChat内実家と現実の実家)をOK,Googleでつけられるようにするまで.
一つの記事を見たところから始まった
この記事には外部世界と仮想世界のつなげ方(の概要)が書いてあるので興味が湧いた.
是非見て来てください!!(頭に入りやすくなる)
作った
#VRChat
— Koitama@フォトグラメトリ修行 (@Koituhatama) October 22, 2019
仮想空間の実家と現実空間の実家の明かりがOK,Googleによって灯る pic.twitter.com/nOQbfo5xNS
実装
前提
私の家にはGoogleHomeやamazon echoなどのデバイスがないので今回は自分のスマホ(android)についているGoogleアシスタントの機能を使い作成した.
GoogleHomeでも同じやり方でできそう.
実装の方法が随分と回りくどいのでご了承ください(自分で改良して♡)
全体像
OK,Google(andro)
↓
{IFTTT使用 Google Assistantで拾い →Webhookで送る}
↓
DiscordのWebhookで拾い →DiscoのBotに渡す
↓
OSC(仮想世界用のスイッチ)とwebhook(電子工作でリモコン式の照明を消せるやつのスイッチ)を送る
↓
いい感じに照明がつけられる
IFTTTからDiscordへ
アクセス→Make your own Applets from scratch +
↓
IFにGoogle assistantを追加
↓
「Say a simple phrase」かんたんなフレーズ対応用
↓
「What do you want to say」なんて言ったときに?
電気つけて(自由でいいです
「What do you want the Assistant to say in response」なんて返答すればいいの
↓
「creat」
That にwebhooksを
↓
Discordのサーバー設定から
URLにDiscordのWebhookのURLをコピー
IFTTTのWebhoockの「method」をPOSTへ
「Content Type」をapplication/jsonへ
「Body」を{ "content": "tukeruo" }へ(tukeruoの部分は何でもいいお
FINISH!!
OK,Google 「電気つけて」して試してみましょう!
しっかりとDiscordへ「tukeruo」と返ってきたらここまでは完璧です!
Discord BotとOSCと現実のライト用のWebhockのプログラム
参考
OSCメッセージでVRChatのアクションを実行する - じぇしかめも
ここからはPythonで作っていきます.
環境を書いておきます.
・python 3.6.2
・pip 19.0.3
・discord.py 1.2.4
まずは pip install discord.py でdiscordのBotを利用するライブラリをインスコします.
その次に pip install python-osc でpythonoscパッケージをインスコします.
(OSCメッセージを利用するためのものです)
注意点
現実のライト用のコードはESP-32をBlynkにつなげてWebhookしたものになります.
つまりここのコードは準備ができたら書いてください(ESP-32を買う,赤外線LEDを買う,赤外線センサーを買う,Blynk用のソースを書く,Webhookでつなげる)
つまりdef ie_light():のところをコメントアウトしておいて.
ここの参考もおいておきます.
Bot作ってきて
TOKENのところで少し解釈を間違ったので注意.(Client Secretの方をコピーしていたw)
import discord from pythonosc import udp_client from pythonosc.osc_message_builder import OscMessageBuilder import requests def main(a): messe = ['/cube/activate', a] # 受信先のVRChat IP = '127.0.0.1' PORT = 9000 # OSCメッセージ情報の読み込み address = messe[0] arg = messe[1] print(address) print(arg) # OSCメッセージの構築 client = udp_client.UDPClient(IP, PORT) msg = OscMessageBuilder(address=address) msg.add_arg(arg) m = msg.build() # OSCメッセージの送信 client.send(m) def ie_light(): url ='現実のライト用のWebhook' response = requests.get(url) print(requests) print(type(response)) # 自分のBotのアクセストークンに置き換えてください TOKEN = 'DiscordのBotのアクセストークン' # 接続に必要なオブジェクトを生成 client = discord.Client() # 起動時に動作する処理 @client.event async def on_ready(): # 起動したらターミナルにログイン通知が表示される print('ログインしました') # メッセージ受信時に動作する処理 @client.event async def on_message(message): if message.content == 'tukeruo': main(1) ie_light() if message.content == 'kesuo': main(0) ie_light() client.run(TOKEN)
ここまでは全くUnityをいじっていません.
ジェシカさんのところのやり方を参考にしているのでUnityでの設定箇所はそちらをご覧ください(https://jscmla1118.hatenablog.com/entry/2018/11/10/184833)
すごい丸投げ