IToTの覚え書き

マイクロビット、アルドゥイーノ、ラズベリーパイなどで楽しい道具を作る趣味のサイトです。 基本的に自分用の覚え書きです。

2020年末にIFTTTが有料化して毎月4ドル支払わないと3個までしかアプリが使えなくなりました。
今まで30個くらい作っていたので困りました。毎月4ドルでもちりも積もれば山です。

しかしこれはIFTTTの番号#と文字$を両方使うことで対応できました。
「OK グーグル ナンバー # $」です。
たとえばナンバー99はgoogle spleadsheetのシート名99に相当します。
料理のレシピですので覚えやすく99(クック)にしました。

これで、たとえば「OK グーグル No.99 肉じゃが」といえばシート名99「料理レシピ」が開き、C1セルに「肉じゃが」と入ります。C2~C5までに表から肉じゃがのレシピを検索し、計算式で加工して最終的にC6にnotifier boardに送るurlを作ります。すると「肉じゃがのレシピは卵1、水1/2、小麦粉60g、片栗粉30gです」とgoogle home miniが喋ってくれます。

ほかに分別ごみをシート名53に作って「OK グーグル No.53 明日」といえばC1セルの「明日」という文字から表計算の式が計算してC4セルに「燃えないごみ」、C5セルに「明日は燃えないごみの日です」を算出し、それからC6セルにurlを作ります。セルの各式はExcelに似ていて簡単に作れます。
これでIFTTT1個のアプリでgoogle spleadsheetが許す100シート分まで使え、3個なら300シートまで無料で使えます。

悪いことばかりでなくいいこともありました。今までGASでUrlFetchApp.fetch(url)するときにurlは日本語はダメでurlコードに変換する必要がありました。そこで今まではecl.jsをgoogle spredsheet内でライブラリ化して
var url = ecl.EscapeSJIS(value);
としていましたが、google spleadsheetは賢くなって日本語のままでfetchできるようになりました。

参考までに私の作ったGAS(GoogleAppsScript←googleの作ったJavaScriptみたいなやつ)はこれ1個だけです。
これでIFTTTからJSONで送られてきた番号#と文字$からシートを移動し、表のデータを検索し結果を、家のD1 miniカードのesp8266-google-home-notifier経由で、google home miniに喋らせることができます。
function doPost(e) {
var jsonString = e.postData.getDataAsString();//JSONでないと文字化けする
var data = JSON.parse(jsonString);
var value1 = data.value1; //NumberField(#)の中身
var value2 = data.value2; //TextField($)の中身
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(value1);
sheet.getRange("C1").setValue(value2);//IFTTからの文字をC1に入れて検索
url = sheet.getRange("C6").getValue();//C6までにurlを作る
UrlFetchApp.fetch(url); //notifierにデータを送る
}


これと補完する数字#と文字列$を入れ替えたようなもう一つの方法もあります。

2021年になって、久しぶりにアイデアが湧いてさわってみたら、esp8266-google-home-notifierが喋らなくなっていました。

アイデアとは台所で立ったまま料理名をいえば、自分の料理レシピをgoogle home mini が言ってくれるというもの。例えば「OKグーグル 私のレシピ 野菜炒め」というと、「野菜炒めのレシピは水大2、酒大1、塩こしょう、醤油、オイスターソース、片栗粉各小1です」と言ってくれるもの。

esp8266-google-home-notifier作者のhorihiro(Hirofumi Horikawa)さんの情報を調べてみたら、google側の小変更があったが、esp8266-google-ttsバージョンアップで対応済みとのこと。
(horihiroさんありがとう!あなたはいい人です)
さっそくesp8266-google-ttsのバージョンアップをしましたが喋りませんでした。そこで、
Windows Xp → Windows 7
Arduino IDE 1.6.5 → 1.8.13
Board Maneger で、esp8266 Board 2.4.1 → 2.7.4
Library Maneger で、esp8266-google-home-notifier 1.0.7 → 1.0.7
Library Maneger で、esp8266-google-tts 1.0.7 → 1.1.0

と全て最新にバージョンアップしました。それでも喋りませんでした。

horihiroさんの所は喋るのに私の所が喋らないのはソフトのせいじゃないはず。ハードかな?試しにボードを今まで使っていたもの(Wemos D1ミニ開発ボード ESP8285)から、別なもの(D1 Mini ESP8266)に変えてみたら、喋りました。何かの仕様が変わってESP8285ははずされたんですね。

なんとか無事に2021/03/03にesp8266-google-home-notifierが復活しました。

ところがもう一つ問題が起きました。IFTTTが有料化したのです。→IFTTT有料化対処法


いまだに自宅サーバを使っています。
サーバは水冷なので比較的安定していますがHDDの定期バックアップは欠かせません。
一番簡単な方法を紹介しましょう。
まず、AmazonでHDDスタンドを買います
何でもいいのですがどれを買ったらいいか優柔不断で決められなければ、たとえばこれです。(値段から)
stand

ハードディスクの容量は現在の本体と全く同じか、大きいものがいいですが、最低、現在の使用領域の容量より大きければ大丈夫です。ノートパソコンの2.5インチなのにデスクトップの3.5インチを買うとバックアップ自体はできますが、交換して中に入れることはできません。(笑)
2.5インチならこちら。
なんでもいいならこちら。
SSDならこちら。
なんでもいいならこちら。
SSD
HDDスタンドにバックアップ用のハードディスク(もちろんSSDでもよい)を刺して、パソコン本体とUSB接続してバックアップします。
バックアップはEaseUS todo Backupというフリーソフトを使います。
これをダウンロードして、CDまたはUSBに入れて、そちらからパソコンを起動してバックアップします。
この後は、<<こちらの記事>>が詳しいです。
・EaseUS Todo Backup FreeでブータブルUSBメモリを作成しました。
・Todo BackupブータブルUSBメモリでCドライブをバックアップ

どうしてもHDDから起動するときは起動画面が出ているうちにDELキーかF2キーを押してBIOS画面に入って、起動方法からCDまたはUSBを選択してください。
起動したらソースディスクとターゲットディスクを指定してバックアップボタンを押すだけです。1時間もしたらバックアップ完了です。
2
より詳しい内容を読みたい読者様のために、
EaseUS Todo Backup Freeの公式ページ
https://jp.easeus.com/backup-software/free.html

↑このページのトップヘ