Node-REDでobnizを動かしてみた
盛岡市に移って早2年になります
大変恥ずかしい話ですが、いまだにゴミ収集の日付と曜日に迷ってしまうことが結構あります…💦
いきなり弁明しますが、さすがに毎週の可燃ごみの曜日くらいはわかります!
一覧表は入居時に渡されましたが、これがまた分かりにくい
情報量が多すぎて、一瞬で見る気が失せます
そして指定曜日と第何何曜日が混じっていて把握する気が失せます
ボタンポチっ 「明日はxxごみの収集日です」 みたいな感じを目指して
試みました
ゴミ収集指図表
LINEで起動メッセージを送り、起動させる
手間と思考するコストを省くことが出来たと思います
使った素材
■ キーホルダーを吊るしていたコルクボード
■ 汎用のピン
■ 100均で買ったセロテープ
■ 太すぎて歯間に入らない歯間ブラシ(キャップ付き)
■ obnizスターターキット
■ よくわからない譜面台?のようなもの
■ 長めのUSBケーブル
新たに買ったものはセロテープのみ!(なお合計金額を出すと真顔になります)
Node-REDの図
全体図
LINEから起動メッセージを送る ➡ 特定のメッセージか判断 ➡ GSheetからゴミ収集曜日の情報を送る ➡ 情報に基づいてobnizを動かす
GSheet中身
設定シート
関数を使ってゴミ収集の曜日や指定日を判別出来るようにしたシートです
毎度のごとくGSheetを使っていますが、つまるところ関数が使えるのが強い
設定シートの関数
//セルB1:明日の日付
=today()+1
//セルB2:明日の曜日
=text(B1,"ddd")
//セルB3:月初日
=EOMONTH(B1,-1)+1
//セルB4以降:隔週指定曜日 第3火曜日等々
=IF(WEEKDAY($B$3)>3,(7-(WEEKDAY($B$3)-3))+$B$3,3-WEEKDAY($B$3)+$B$3)
読込シート
設定シートの明日の日付からゴミ収集の種類判定をしています
読込シートの関数
//セルB1:明日の日付からゴミ収集指図判定
=if(or('設定シート'!B2="月",'設定シート'!B2="木"),"可燃ごみ",if('設定シート'!B2="金","プラスチック",IFERROR(VLOOKUP('設定シート'!B1,'設定シート'!B4:C8,2,false),"なし")))
obniz function ノード
ノードの追加はobnizで検索すると出てきます
今回はobniz functionノードを使っています
自分のobnizIDを設定しましょう
初期化はお好みで
obnizにやらせたいことを書きましょう
obniz function ノード
var string = msg.payload[0][1];
var servo = obniz.wired("ServoMotor", { gnd: 2, vcc: 1, signal: 0 });
if(string=="可燃ごみ"){
servo.angle(180);
obniz.wait(1000);
servo.angle(50);
}else if(string=="不燃ごみ"){
servo.angle(180);
obniz.wait(1000);
servo.angle(20);
}else if(string=="瓶缶ペット"){
servo.angle(180);
obniz.wait(1000);
servo.angle(90);
}else if(string=="古紙"){
servo.angle(180);
obniz.wait(1000);
servo.angle(130);
}else if(string=="プラスチック"){
servo.angle(180);
obniz.wait(1000);
servo.angle(160);
}else{
servo.angle(180);
}
GSheetから送られてきたpayloadの情報によって処理を分岐させてます
最初に初期角度へ戻してから指定の角度へ動かしています
(同じ指定だった場合でも動作確認が取れるように)
あるべき姿として描いていたもの
LINEからの起動というのは次善の策でしかありませんでした
本当は時間での自動起動で、置物として置いていても役割を持たせられる状態にしたかった
CRONノードを使って定期定時での自動実行をさせたかった
herokuサーバーの無料契約の為、30分経つとサーバーがスリープしてしまい
接続が途切れるため、断念…
参考にさせていただいたサイト様
過去に書いた記事リンク
最近の悩みは 適切なネタを素早く探せない ことです
これがかなり苦しい…