IFTTT利用を最小限に
IFTTT が 有料のIFTTT Pro のサービスに移行となり、無料契約だとアプレットを3つまでしか使えない。早々に、IFTTT からの警告メールが届き、10/7 までに契約すれば月額費用は、自分で決められるといった内容。
自宅では、Raspberry-Pi で動かしている機能や、赤外線リモコンを Google Home から制御するために、IFTTT にかなり依存していた。最近は Netflix とか Hulu とか、色々と契約しているし、出費とならないようにIFTTT 依存から脱却を図ろう。
arpに169.254.x.xが出てくる
自宅サーバの状況を見ていたら、169.254.185.142 という IP アドレスが ARP の一覧に出てくる。
MACアドレスを見ると、設置している Raspberry-Pi と同じ。
リンクローカルアドレス
以前にも同様のエントリーが出てきたことがあったので、改めて原因をしらべると、こちらに該当すると思われる解説記事。
DHCPの異常で、アドレスが得られない時に、暫定で割り振るIPアドレスみたい。その他の原因も考えられると説明があるが、実際数日間に DHCP の設定を触っていたから、出てきてもしかたがないかな。
間違ったARPエントリを消す
“arp -d 169.254.x.x”で、エントリーを消そうと思うがうまく消えてくれない。深く考えてもキリがないので、夜中にサーバの再起動させよう。
うまく消えないので、色々調べながら、以下のコマンドで消せた。
“ip -4 neigh del 169.254.x.x lladdr yy:yy:yy:yy:yy:yy dev eth0″
サーバダウン
朝起きて、”OK, Google” と叫んでも、”WiFiが繋がっていない”とのエラー。確認すると、サーバが落ちている。サーバでDHCPも動かしているので、サーバが落ちると家の中のネットワークが全部動かなくなる。それらしい時間 2020/08/20,01:15 頃の syslog などを確認するが、心配な log もあるけど、通してみると定常的な spam 系のアクセスっぽいので、原因不明。
サーバもそれなりに長期間運用しているので、新たに /var/log/trouble というフォルダを作って、syslog, messages, access.log, error.log などをコピーしておく。
WordPress 5.5 を適用
WordPressを触っていたら、version 5.5 が公開となったみたい。
新しい機能なのか、編集画面に URL 張り付けただけで、↓うまく引用してくれらぁ。
Google Home セットアップ中はiPhoneのProxyはオフ
Google Home アプリの設定を確認していたら、ファームウェアの更新みたいな表示が出たので Google Home mini の初期化(本体裏のスイッチ長押し)を行う。
# たぶん、これもproxy経由が原因だったんだろうな。
Google Home 初期化に失敗
普通に初期化を行うが、最終段階でエラーの表示で「…セットアップされているようですが、iPhoneからの通信に応答しませんでした。Google Home mini と iPhone が相互に通信出来ないネットワークに接続されている可能性があります…」といったエラーが表示され、初期化に失敗する。いろいろと試したが、失敗するが、ふと自宅内で Squid の キャッシュProxyサーバを運用しているのを思い出した…。
Proxyをオフにしたら、無事接続成功となった。
Proxy 自動設定Scriptの適用
他にも色々と試すと、Proxy設定がONだと、iPhone から Google Home mini へのストリーミングもできなくなっている。
最終的には、iPhone の WiFi 設定で、Proxy 設定の自動化で、Proxy設定のJavaScript(proxy.pac: 同じサブネット内は Proxy を使わない)を設定となった。
IFTTTのwebhooksトリガーでLINEメッセージ送信
家に帰る時に、家族のLINEに「今から帰る」とメッセージを送りたいんだけど、iOSのショートカットだと、メッセージ文面をいちいち入力する必要がある。そこで、LINEのメッセージ送信は、IFTTT に任せることにして、スマホでショートカットなり、ショートカットのオートメーションから、LINEメッセージ送信を起動したい。
また、IFTTTの JSON形式を返すWebhook trigger だと、safari が開いたままになるので、webhook trigger を起動し、x-callback-url を返す trigger ページを作ってみた。
<?php // IFTTTのwebhookトリガを呼出す // x-callback-url の機能で呼び出し側(shortcut)に戻る // ifttt webhook url $ifttt_webhook = "https://maker.ifttt.com/trigger/%s/with/key/xxxxxxxxxxxxxxxxx_xxxxxx" ; $mykey = "yyyyyyyyyyyyyyyyyyyyyy" ; // パラメータを読み込む $key = isset( $_GET[ "K" ] ) ? $_GET[ "K" ] : "" ; $command = isset( $_GET[ "C" ] ) ? $_GET[ "C" ] : "" ; $json = file_get_contents( "php:input" ) ; // 想定外の接続は無視 if ( $_SERVER['HTTPS'] != 'on' || $key != $mykey ) exit( 1 ) ; // 時間によるwebhook呼出し制限の前処理 $localtime = localtime( time() , true ) ; $l_hour = $localtime[ "tm_hour" ] ; $l_week = $localtime[ "tm_wday" ] ; // webhookの呼出し function post_webhook( $trigger , $json ) { global $ifttt_webhook ; $url = sprintf( $ifttt_webhook , $trigger ) ; $opts = array( 'http' => array( 'method' => 'POST' , 'header' => 'Content-type: application/json; charset=UTF-8' , 'content' => $json ) ) ; $context = stream_context_create( $opts ) ; header( "Content-Type: application/json; charset=utf-8" ) ; // x-callback-urlで処理後はショートカットに戻す header( "Location: shortcuts://" ) ; // IFTTTのtriggerを呼出す print file_get_contents( $url , false , $context ) ; } // GETパラメータで呼び出しするwebhookを切り替え if ( $command == "go_home" ) { // ショートカットからの呼出し用 // go_homeリクエストを中継 post_webhook( "go_home" , $json ) ; } else if ( $command == "go_home_time" ) { // オートメーションからの呼出し用 // 平日の帰宅時間のみ中継 if ( 17 <= $l_hour && $l_hour < 21 && 1 <= $l_week && $l_week <= 5 ) post_webhook( "go_home" , $json ) ; else exit( 0 ) ; } else { exit( 1 ) ; } header( "Content-Type: application/json; charset=utf-8" ) ; ?>
wsl2 の設定
WSL2 の設定
((( /etc/fstab ))) LABEL=cloudimg-rootfs / ext4 defaults 0 0 Z: /mnt/z drvfs defaults 0 0
Microsoft Terminal の設定
((( settingsjson ))) { : "defaultProfile": "デフォルトで起動するコマンドのguid", : "profiles": { "defaults": { // Put settings here that you want to apply to all profiles. // ターミナルのフォント "fontFace": "Cascadia Code", // ターミナルの色構成のデフォルト "colorScheme": "Solarized Light", // ターミナルのカーソル形状のデフォルト "cursorShape": "filledBox" }, "list": [ : { "guid": "{...}", "hidden": false, "name": "Ubuntu-20.04", "source": "Windows.Terminal.Wsl", // ログインした時のホームディレクトリ指定 "startingDirectory": "//wsl$/Ubuntu-20.04/home/t-saitoh" } ] }, : }
wsl2の再インストール
wslの設定ファイルの /etc/fstab を間違った設定をしたようで、wsl(Debian)が起動しなくなった。C:\Users\ユーザ名\AppData…? の中から実体を探せば直せそうだったけど、サクっと直ればいいなと思って Microsoft Store で WSL 環境をアンインストールした。
ただ、このやり方はまずいやり方だったようで、不備のある設定がどこかに生き残ったようで、新たに入れようとした Ubuntu 20LTS のインストールが始まらない。
色々と確認したけど再起動すると、WSL の仮想マシンを立ち上げようとがんばろうとするのか、数分間ブラックアウトするようになるし、最悪。時間がたつとようやくWindows にloginできたので、「設定」-「アプリ」-「Windows のその他の機能」で、WSL 自体を削除&再設定したら、Ubuntu 20 LTS のインストールが始まった。