Category tech.

MH-Z19 という格安 CO2 センサを読んでみた | tech - 氾濫原 の続きです。

Raspberry Pi で喋らせる

Open jtalk で喋るようにしてあるので

  • 1000ppm を超えたら換気をうながす (アラート)
  • 600ppm 未満になったら告知する (アラート解除)

みたいにした。

alert = false

loop do
        begin
                ppm = get_latest.last
                case
                when ppm > 2000
                        system("jsay.sh", "CO2濃度が2000ppmを超えました。ただちに換気を行ってください")
                        alert = true
                when ppm > 1000
                        system("jsay.sh", "CO2濃度が1000ppmを超えました。換気を行ってください")
                        alert = true
                when alert && ppm < 600
                        alert = false
                        system("jsay.sh", "CO2濃度が600ppmまで下がりました")
                end
        rescue Exception => e
                p e
        end
        sleep 5 * 60
end

get_latest は GrowthForecast からデータをとってくるやつ。センサーからデータを読むプロセスは別にしてあるので、間接的にgfからとってきてる。

常に表示する

家で余っているスマフォに常時表示するようにした。これも GrowthForecast からデータをとる。具体的には

グラフは vis.js を使ってみた。結構つかいやすい。example のうちの 404 Not Found を参考にしたらうまくできた。

今後

GrowthForecast にデータを投げてるので、gf の API をメインで使ってみたが、gf はそういう用途のためのものじゃないので、かなり無駄感がある。WebSockeet 経由でデータを転送するゲートウェイみたいなのをまず作ったほうがいいかもしれない。

  1. トップ
  2. tech
  3. CO2 センサの可視化

花王の漂白剤シリーズに「ハイター」というのがあるが、種類がいっぱいあってよくわからない。というところだけど、実は公式のFAQに一覧があって、どのように成分が違うのかと用途が記載されている。

大きな違いは「界面活性剤」の有無になる。汎用性が高いのは含まれていないほうなので、とりあえず買うなら「ハイターE」「月星ブリーチC」あたり、「ハイターE」は一般向けだと「ハイター 衣料用漂白剤」になる。

【業務用 衣料用塩素系漂白剤】ハイターE 5kg(花王プロフェッショナルシリーズ) - 花王

花王

5.0 / 5.0

なお基本的に「ハイター」には塩素系を期待すると思うが、酸素系の「ハイター」も存在しているので注意が必要。

消毒用途では基本的に10倍希薄して使うことになっている (商品は6%だが、塩素は揮発してしまうため 5% 扱いとする)。0.5%以上 (5000ppm) の濃度で使用しても消毒効果は上がらず、残ってしまう時間が長くなるだけなので、必ず守る。

なお次亜塩素酸ナトリウムが重宝される理由としては、蛋白質と接触すると食塩に変化するため残留リスクが低いことにある。

ref

  1. トップ
  2. tech
  3. ハイターの種類と選びかた。最も汎用性が高いのは

さくらのVPSのウェブサーバでIPv6の接続をうける | tech - 氾濫原 で、IPv6 アクセス環境がないと書いたが、スマフォで簡単に IPv6 接続できることを知った。

APN 設定

IIJ mio の場合、APN の設定で IPv4/IPv6を選ぶだけで優先的に v6 接続されるようになる。

全ホストの IPv6 対応

自力で確認できる環境が身近にあることがわかったので、このサーバでホストしているホストを IPv6 対応してみた (もとも IPv6 インターフェイスも listen してるので単に AAAA レコードをひけるようにしただけ)

ちゃんと接続されてるのか?

見た目が何も変わらないのが正しい状態なのだけど、IPv6 接続されてるのかよくわからないので、仕掛けをしてみた。

判定は単に REMOTE_ADDR を見て、IPv6 アドレスだったら IPv6 接続と判定する。: を含んでいたら IPv6 と判定するようにする。

このサイトの場合、ページ全体をキャッシュしているため、内容をIPv4/IPv6で出しわけると持つべきキャッシュが倍になってしまい現実的ではない。ということで、以下のようにした。

  • CSS で適当なところに content: attr(data-ip-info); と書いておく
  • JS で接続情報を取得するエンドポイントを叩き data-ip-info を埋める

ref

  1. トップ
  2. tech
  3. IPv6 対応にした