カメニッキ

カメとインコと釣りの人です

eSensorとeRemoteによって外出時にペット部屋の状況を知る・状況に応じて家電操作する

困っていたこと

  • 今日おもったより気温下がったけど、ペット部屋の温度が不安
  • おもったより帰宅遅くなって、22時に部屋が明るいまま…

僕と妻どちらも家を留守にする時間が長いため、この辺困ってました。

これまでどうしていたか

  • 安全側に倒してエアコン常時つけっぱ > 電気代3万↑
  • タイマーコンセントを使ってスポットライトを自動オン・オフ > あんまり明るくないし、直接光で目への影響が不安

さらにさらに

  • 実際、昼間何℃になってるのか知りたくて、ネットワークカメラ越しに温度計を写すということなぞもしていた f:id:tapira:20180509174559p:plain

. . . . . .

電気代つらいし、カメラで温度計みるの虚しいのでなんとかしたい

解決するために必要なもの

  • eSensor
  • eRemote

eSensor

以下のことが計測できます

  • 温度
  • 湿度
  • 明るさ
  • 空気の流れ

また、今回諸事情により利用していませんが以下のように環境条件をトリガーにリモコン操作が可能です - 温度が○℃を下回った - 温度が○℃を上回った - 湿度が○%を上回った

スマートフォンのアプリから以下のように確認できる f:id:tapira:20180509221154j:plain

eRemote

いわゆるスマートリモコンとして作動し、かつ外部からネットワーク経由で指示できます

  • 外からエアコンの電源を入れる
  • 外からエアコンの温度設定を変更する
  • 外から照明を消す
  • 時刻設定でリモコン操作する

f:id:tapira:20180509221845j:plain

できるようになったこと

  • OK 今日おもったより気温下がったけど、ペット部屋の温度が不安
  • OK おもったより帰宅遅くなって、22時に部屋が明るいまま…

今後やりたいこと

環境条件をトリガーにして自動的にエアコンの設定を変更する機能を活用したい。 相性が悪いのか、エアコンの動作モードを指定してからの条件設定がうまくいかないが、機能としては存在するので使えるようにしたい。

例) - 24℃を下回ったら暖房26℃設定でエアコンをオン - 27℃を上回ったらエアコンをオフ - 30℃を上回ったら冷房でエアコンをオン

リモコン対応していない加湿器をリモート操作したい

例) - 湿度50%を下回ったら加湿器をオン

あったらいいな

  • リモート餌やり装置
  • リモート水循環装置

おしまい

新宮 相島の浮き波止への渡しは連絡先変わってます!!!

現在渡しをされてる方は090-2503-7228の方1名だけだそうです!!!

 

「相島 浮き波止」でググると出てくる以下の電話番号へ掛けたところ「うちはもうやってないですよ~~」と言われました。(多分何件も掛かってくるのだろう…)  

 

- 092-962-2738

- 092-962-2881

 

 

(追記)

11/27行ってきました!65cmのシーバス釣れました😶
f:id:tapira:20171129143945j:image

 

 

GMOペパボを退職します

11月末日をもって退職することとなり、本日が最終出社日でした。 11/30まで無職です。 2年半と少し、在籍したことになります。

これまで

SIerからの未経験インフラエンジニアとして採用いただき、主にロリポを担当してました。
日々の運用からgolangやmrubyを使用した開発など、楽しく仕事できました。

近くの席にスーパーなエンジニアが何人も座ってて、仕事ぶりをみたりアドバイスを受けることができる環境は刺激的でした。
使ってるOSSにbugfix PRしたり、100人以上の前で喋ったり、何か問題が起きた時にシステムコールやcoredumpを追いかけて原因を突き止めたり、
これまでそういうことをまさか自分がやるとは思ってなく、とてもよい経験でした。

仕事外では釣り部 部長として 船釣りや離島釣り、イカ部で夜スプラトゥーン大会楽しかったです。

朝目が覚めて「あ〜仕事か・・いきたくないな・・・」と思うことがなくて、それって自分の中ではすごいことだと思う。。。

これから

12月からヤフー株式会社で働かせてもらいます。小倉勤務です。 ソフトウェアエンジニアとしてがんばります。

最後に在職中に社内外お世話になったで方々、ありがとうございました!!

fluentdでログ中の特定キーワード出現回数を集計しTreasure Dataへインポートする

やりたいこと

外部からのアクセスを、ある条件をもとにブロックした時、/var/log/nginx/blocked.log というファイルにログ記録しています。 集計単位(10分毎とか)ごとに、その件数をカウントし、Treasure Dataへインポートするためにやったことのメモです。

前提

  • 全部ログ突っ込んで抜き出したら? > ログ量が膨大なので...

必要なtd-agent-gem

  • キーワードをもとにログ行数をカウントするのに使います github.com

  • Treasure Dataへインポートするために使います* github.com

conf

<source>
  @type tail
  format /^.+nginx: (?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<pid>\d+).(?<tid>\d+): (?<message>.*)$/
  time_format %Y/%m/%d %H:%M:%S
  path /var/log/nginx/%Y%m%d/blocked.log_%Y%m%d_%H
  pos_file /var/log/nginx/blocked.log.pos
  tag nginx-blocked.log
</source>

<match nginx-blocked.log>
  type grepcounter
  count_interval 600
  input_key message
  regexp BLOCKED
  threshold 1
  add_tag_prefix blocked.count
</match>

<filter blocked.count.nginx-blocked.log>
  @type record_transformer
  enable_ruby
  remove_keys message,input_tag,input_tag_last
  <record>
    time ${Time.now.to_i}
  </record>
</filter>

<match blocked.count.nginx-blocked.log>
  @type tdlog
  apikey xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  auto_create_table
  database test
  table blocked_count
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td
  flush_interval 600s
</match>

補足

  • /var/log/nginx/%Y%m%d/blocked.log_%Y%m%d_%H をtailで監視します。
  format /^.+nginx: (?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<pid>\d+).(?<tid>\d+): (?<message>.*)$/
  time_format %Y/%m/%d %H:%M:%S

でログ形式・Time形式を指定しており、該当したものに nginx-blocked.log tagを付与しています。

  • ここで行数のカウントをおこなっています。 内容としては 600sec 単位に BLOCKED キーワードを抜き出しています。 threshold 1 と本来の使い方では回数がしきい値超えた時にmailする、などとなるようですが、今回は全て記録したいため 1 としました。

  • filterを使用して以降の処理 tdlog で {"time": 1234567, "count": 123 }のようなjson形式でTreasure Dataへなげれるように整形しています。 record内でrubyを使いたいのでenable_ruby grepcounterから使わないキーも渡ってきているのでremove_keys message,input_tag,input_tag_lastで削除します。 recordディレクティブ内でtime` というキーでunixtimestampを列追加しています

  • Treasure Dataにデータインポートしています。 使い方は標準の内容なので割愛


  • Apacheのログを全部TDに突っ込む
  • 条件に一致したnginxログをTDに突っ込む

のような方法はすぐ見つかったのですが、集計した個数を一行TDに突っ込む方法が見つからず苦戦しました。(そもそもTDの使い方にあっているか謎) 参考までに

Fukuoka.go#9でLTさせてもらった

connpass.com

当日、急遽参加させてもらうことになって、いそいそお昼休みに資料作ってなんとか間に合った

gitpitch.com


内容は初歩的なもので、ここ数ヶ月golangに触れる機会があって、その時ハマったgolangのゼロ値によるものでした。 トーク前に某golang貴公子に「それもっといい方法ありますよ」とプレッシャー掛けられた この辺使えと sql - The Go Programming Language


僕は人前で喋るのも資料作るのも苦手なので、これらのイベントの喋る側は避けて通ってるけど、
喋る側としてイベント参加したほうが絶対おもしろいな〜と、PHPカンファレンス福岡に引き続き思った。。。


『Goならわかるシステムプログラミング』www.lambdanote.com

面白そうな本が予約受付してたのでポチッた

おしまい