HT-A9に最適なスピーカースタンド

SONY HT-A9に最適なスピーカースタンドは

Mounting Dreamの MD5402-2M5x30ネジ4本です。

内容物はこんな感じ。スピーカー用アセンブリパーツはQのスペーサーのみ使用します。組立自体はマニュアル通りなので難しくありません。

スピーカーとL字のアタッチメントはこのようにスピーカーを載せて仮決めしてからネジ止めするとピッタリはまります。

ポールの内径は約28mmです。電源プラグがギリギリ通る幅なので延長コードを使用する際は大きさに注意が必要です。

スタンドを一番低くした状態。付属の電源ケーブルは20cmほどしか出ません。

こんな感じでセッティングできます。

付属の蝶ナットとスピーカーの壁掛け穴で固定するのはダメですか?

ダメです。

壁掛け穴はあくまでもスピーカーの自重で固定するためのものです。スタンドに置きつつ蝶ナットの組み合わせだとしっかり固定できません。

またL字のアタッチメントと背面と密着する格好となるため、クリアランスが無く電源ケーブルを通す場所がありません。

どこで買うか

 

公式サイトでは$79.99なのに日本のアマゾンでは約23000円と割高です。

そこで私がお勧めするのはAmazon.comでの購入です。日本への発送もでき約半額で購入できます。私は2セット購入で送料+関税で合計$244でした。

M5 x 30mmネジはこちら。43本も要らない人は近くのホームセンターで4本購入してください。

【完全無料】Microsoft Graph APIを個人アカウントで利用する方法

Microsoft Graph APIは企業利用のイメージが強いですが、無料で作成した個人アカウントでも利用できます。

Microsoft Graph により到達可能なユーザー

ユーザーの同意を得た上で、Microsoft Graph を使用することにより、ユーザーのプロファイル、OneDrive や Outlook のメール、予定表、連絡先などの Office サービス、および Windows のデバイスおよびアクティビティにアクセスすることができます。

更にMicrosoft Graph API自体は無料で利用できます。

Microsoft Graph の従量制課金 API とサービスの概要

ほとんどの Microsoft Graph API は標準 API です。 

・・・

定義済みの使用しきい値内の標準 API へのアクセスは、追加コストなしでユーザー ライセンスの一部として利用できます。

Microsoftの機械翻訳はちょっと何言ってるか分かりませんが、要はAPIコール自体は無料(追加費用なし)で、API経由で操作する側のサービスが有料であれば、お金がかかるよということです。すなわちExcel Online、Word Online、One Driveなどの無料で利用できるマイクロソフト製品は無料でMicrosoft Graph APIも利用できるということです。

Microsoft Graph APIは非常に便利なツールで且つ、無料とくれば使わない手はありません。そこで基本的な使い方をサンプルプログラムを通じて学んでいきたいと思います。サンプルプログラムはPythonを使ってExcel Onlineにデータを追記していく簡単なプログラムです。ステップは

  1. アクセストークンの取得
  2. Excel Online上の特定ファイルのファイルサイズを取得
  3. Excel Online上の特定ファイルにファイルサイズを追記

という流れです。無意味なプログラムですが、実行するたびにデータが変わり動作を理解するには十分だと思います。

Excel Online上の特定ファイルのファイルサイズを取得して追記するプログラム

#!/usr/bin/python
# coding: UTF-8

import requests
import json
import os
 
#tokenファイルを読み込み
tokenfile = "./data/token.txt"

#アクセストークンの読み取り
token = open(tokenfile, "r")
access_token = token.read().strip()
token.close
 
headers = {'Authorization': 'Bearer {}'.format(access_token)}

#Excel file sizeを取得

excelurl = "https://graph.microsoft.com/v1.0/me/drive/root:/GraphAPI/filesize.xlsx"

resultexcelfile = requests.get(excelurl, headers=headers)
excelfilejson = resultexcelfile.json()
excelfilesize = (excelfilejson['size'])
excelfilesizekilo = round(excelfilesize / 1024, 2)

#Microsoft Graph APIを使ってExcel Onlineを更新

# POSTするJSONデータをdict型で作成
dict = {
    "values" : [
        [
            f"{excelfilesizekilo}",
            ]
        ]
    }

#URLをセット
url = "https://graph.microsoft.com/v1.0/me/drive/items/9XXXXXXXXXXXXXXXXXXX0/workbook/tables/{DXXXXXX-AAAA-BBBB-CCCC-CDDDDDDDDDDC}/rows"

result = requests.post(url, headers=headers, json=dict)
jsondata = (result.json())

プログラム解説

#tokenファイルを読み込み
tokenfile = "./data/token.txt"

#アクセストークンの読み取り
token = open(tokenfile, "r")
access_token = token.read().strip()
token.close
 
headers = {'Authorization': 'Bearer {}'.format(access_token)}

まずはEntra IDのアクセストークンを取得します。取得方法はこちらの手順で取得したものをファイルに保存し利用します。読み取ったトークンをベアラー認証として使用します。

#Excel file sizeを取得

excelurl = "https://graph.microsoft.com/v1.0/me/drive/root:/GraphAPI/filesize.xlsx"

resultexcelfile = requests.get(excelurl, headers=headers)
excelfilejson = resultexcelfile.json()
excelfilesize = (excelfilejson['size'])
excelfilesizekilo = round(excelfilesize / 1024, 2)

Excel Onine上のファイル情報を取得するMicrosoft Graph APIエンドポイントは以下です。

GET https://graph.microsoft.com/v1.0/me/drive/root:/Path/To/filesize.xlsx

One Driveのルートディレクトリからファイルまでをフルパスで指定すればよいだけですが、

/drive/root:

という特殊な文字列をファイルパスの途中に入れる必要があります。

エクセルファイルのURLが指定できたらrequests.getを使ってファイル情報のJSONデータを取得し、’size’を指定してファイルサイズを取り出します。

最後に1024で割ってキロバイトにしておきます。

#Microsoft Graph APIを使ってExcel Onlineを更新

# POSTするJSONデータをdict型で作成
dict = {
    "values" : [
        [
            f"{excelfilesizekilo}",
            ]
        ]
    }

取得したファイルサイズをMicrosoft Graph APIを使ってExcel Online上のエクセルファイルに追記します。はじめに書き込むデータのdict型を作成します。この時、書き込むエクセルファイルのテーブルのカラムとデータの数が合っていないと書き込みできないので注意が必要です。

#URLをセット
url = "https://graph.microsoft.com/v1.0/me/drive/items/9XXXXXXXXXXXXXXXXXXX0/workbook/tables/{DXXXXXX-AAAA-BBBB-CCCC-CDDDDDDDDDDC}/rows"
 
result = requests.post(url, headers=headers, json=dict)
jsondata = (result.json())

Excel Onlineを更新するMicrosoft Graph APIエンドポイントは以下です。

POST https://graph.microsoft.com/v1.0/me/drive/items/[file id]/workbook/tables/[table id]/rows
Content-Type: application/json

{
    "values" : [
        [
            DATA1,
            DATA2,
        ]
    ]
}

[file id]、[tablel id]は実際のIDを入力します。

file id、table idはこちらの手順を参考にMicrosoft Graph Explorerを使って取得してください。

最後にrequests.postを使ってデータをPOSTすれば書き込み完了です。

以上。

近いうちにこのIFTTT統合の変更が予定されています。とGoogleが言ってきたときの対処法

2022年8月に入ってからでしょうか。Google HomeとIFTTTを連携している音声コマンドを実行するとGoogle Homeがこんなことを言うようになりました。

グーグルホーム

近いうちにこのIFTTT統合の変更が予定されています。詳しくは、Googleアシスタントのヘルプセンターをご覧ください。

Googleアシスタントのヘルプセンターには特に本件に関する記述は見当たらないのですが、IFTTTが声明を出しています。

https://ifttt.com/explore/google-assistant-changes

As of August 31, 2022 the Google Assistant service on IFTTT will be modified due to changes Google is requiring on their platform. Existing Google Assistant Applets will be archived and service connection information will be deleted.

要約すると

  • 2022年8月31日をもってIFTTT上のGoogleアシスタントサービスに変更が入り、既存のGoogleアシスタントアプレットはアーカイブされ接続情報は削除されます。
  • 新しいバージョンのGoogleアシスタントサービス(V2)は既に利用可能です。
  • なお、既存のアプレットを移行する方法はありません。
  • あとOKグーグルのあとにActivateというフレーズが必要になります。
  • 設定はGoogle Homeアプリの「Works with Google」からできます。

というわけです。恐らく待っていても自動移行とかは無さそうなので、さっさと自分で設定することにしました。

Google Home(Google Assistant V2) → Nature Remo → ダイキンのエアコンの設定例

参考としてGoogle HomeからNature Remoを経由してダイキンのエアコンを操作する場合の設定例です。

IFTTTの設定

まず始めにIFTTTでGoogle Assistant V2のシーンを作成します。

IFTTTアプリから「作成する」→「If This追加する」と進み「google」で検索し、「Google Assistant V2」を選びます。

Google Assistant V2はシーンです。「Activate scene」をタップ。

ダイキンのエアコンの操作なので「ダイキンつけて」と入力します。注意書きにも書いてあるとおり、OK GoogleとActivateは予約語なので使えません。「続ける」をタップ。

続いてアクションの設定です。「nature」と検索してNature Remoを選択します。

「ダイキンつけて」のアクションなので一番下の「Turn on air conditioner」を選択します。

お好みの温度を選びます。

IFTTTの設定はこれで完了です。

Works with GoogleからIFTTTをリンク

続いてGoogle HomeアプリのWorks with GoogleからIFTTTをリンクさせます。

Google Homeアプリの「設定」→「Works with Google」を選択。

「IFTTT」を検索。

認証画面が出るので許可をしてこのようにLinked ServicesにIFTTTが追加されれば完了です。

これで基本的にはGoogle Assistant V2を使ったGoogle HomeからNature Remoを経由したダイキンのエアコンの設定は完了です。

音声コマンドは「OKグーグル、ダイキンつけてを有効にして」でエアコンの電源が入ります。

Googleアシスタントのルーティンを使って更に音声コマンドを簡略化

このままだと「ダイキンつけてを有効にして」となんだか日本語が変なので、Googleアシスタントのルーティン機能を使って音声コマンドをスッキリさせます。

Google Homeアプリから「アシスタントの設定」→「ルーティン」→「新規」→「開始条件を追加」をタップします。

開始条件は一番上の「Googleアシスタントに話しかけたとき」を選択。

わかりやすい音声コマンドにします。

続いて「カスタムアクションの追加」を選択します。

カスタムコマンドはIFTTTの設定で有効になっている「ダイキンつけてを有効にして」と入力します。

このままだとGoogle Homeからの返答が「ダイキンつけてを有効にしてをオンにします」と更にややこしくなるので、返答をカスタマイズします。

アクションの追加で「連絡、お知らせ」を選択します。

「お知らせの作成」を選択。

「ルーティンを開始するデバイス上で通知する」を選んでメッセージはGoogle Homeにしゃべって欲しい文言を入れます。

これで設定は完了です。

やってみよう。Google Assistant V2を使った音声コマンド

yakkun

ダイキンつけて

グーグルホーム

ダイキンをつけます

成功です!

あとは同様の手順でに電源オフや他の家電も設定すればIFTTT統合変更対応は完了です。