Ajaxでco2センサーのデータ表示

ほぼ一年前に作ったco2測定データロガー、webでも結果が見れるようにしているのですがリフレッシュを自動でしないので、ブラウザで更新しないといけないから多少不便。リロード指定でもできるけれどもスマートさが無い、実行時間などで実際にはこの程度のページならなんら問題ないにしても。

と言うことでAjax使って自動更新するようにしてみた。

実行は、jqueryを使うのがコード量が少なくて良いだろう。

・全体の構成は、DBから計測値取得のphpファイルは複数箇所から呼び出すから別ファイル(data_read.php)にする。

・Apache document rootは/var/www/html/だから、

$ cp index.php /var/www/html/

のようにユーザエリア内のコード修正後はユーザディレクトリからコピーする。

やったことは以下の二点

① DBから定期的に最新の測定値を読み出して、測定値タグのclassに書き込み

② スタイルシートを同時にjsで変更してやる

の二点です。

 

過去のブログはこの辺り、

https://isehara-3lv.sakura.ne.jp/blog/2021/09/20/co2-センサー(ndirとは、non-dispersive-infrared(非分散型赤外))mh-z19bを/

現状のソースコードは、

https://github.com/chateight/co2_sensor/tree/main/co2_sensor

 

P.S. (2022/8/31)

jsのコードがスマートさに欠ける(特にスタイルシート変更部分)ので修正。

 

admin

スプレッド演算子の挙動(なんだこれは?)=> 解決済み

スプレッド演算子の数値が、展開されると勝手に二倍の値になる。以下のJavascriptの切り出しコードで、最初の展開で二倍、さらに二回目の展開でも二倍されてます。

以下のソースは切り出した部分。

let num = [108, 210, 398];

let marge = [...num, 300, 400, 500];

console.log(marge);     // [216, 420, 796, 300, 400, 500] ??

console.log(Math.max(...marge));        // 1592 ?? = 796*2

ChromeでもSafariでも同じだし、不思議な現象。まあ、そのうち解決(原因判明)するんだろうと思うけど。

P.S. (2022/8/22)

同じソース内で、配列iteratorを配列の値を二倍するiteratorでオーバーライドしていたから、つまりスプレッド演算子は実は内部的な処理はiteratorで展開されるということですね。

Array.prototype[ Symbol.iterator ] = function (){
    let index = 0;
    let set = this;

    return{
        next(){
            if (index <set.length){
                return{
                    done: false,
                    value: set[ index++ ]*2
                }
            }
            else{
                return{
                    done: true
                }
            }
        }
    }
}

 

admin

 

モノアンプ

効率の低い、プラコップスピーカーのドライブ用にスイッチサイエンスから購入のパワーアンプ、電池駆動なので出力最大は1W程度ですが十分です。

キットになっていて、ハンダ付の難しいsmt部品のアンプNCP2890D(検索するとonsemi製)だけは実装済みで、他のディスクリートの抵抗、キャパシタなどは自分で実装します。回路そのものはNCP2890Dのリファレンス回路ですが。

電源は単三二本ですが、電源スイッチは無いので電池の抜き差しで対応。

最初C3付け忘れて、やたらにハム音デカくて変だと思いましたがC3つけると普通に機能しました。

まあ、こういう物も一個あれば色々な場面で使えそうです。

 

admin

AirTagのローバッテリー

購入後おそらく15ヶ月ぐらいだと思うけど、ローバッテリー表示がiPhoneに表示されました。

電池はCR2032なので、概ね妥当と言えば妥当。使い方で変わってくると思いますがBLEだろうから、それほどの差は出ないでしょう。

P.S.

電池の解放電圧が2.9Vぐらいだったから、他(歩数計)でも使い用がないレベルに放電してました。

 

admin

TimeMachiEditor on M1 Mac

M1 MacBook Airのtimemachine editorはログインしていないと自動起動しないのでなぜかを調べてみた。

こういう風に設定、つまり毎日朝の5時にリブートして、5時半からタイムマシーンを起動させたい。しかしその時は起動しないで、MacBook Airにログインしてから、timemachineが起動する。

 

M1 MacBook AirにはPower Nap機能の設定がない、デフォルトでオンになっているらしい。以下はIntel Macの設定画面。

timemachine editorのFAQから、

① timemachine editorの常駐は不要、まあログインしてないんだからどちらにしろ無意味

② power napはオンにしろ、ただしapple siliconのモデルはデフォルトでオンになっている

どちらも満足されている筈ですがね。

以上の現象からは、回避するならばバックアップを先に実行してリブートを後回しにすれば良いだろう。

 

admin

ISRG AGREEMENT UPDATE

という内容のメールが来て何だろうなと思いましたが、おそらくsakuraで使っている無料の証明書関連だろうと思って調べると確かにそうです。

サービスを受けている側は何もやらなくてもいいけど、アップデートされたagreementは読めとあります。agreementへのリンクは、

https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf

関連しそうなsakuraからのメッセージは、

https://ssl.sakura.ad.jp/column/letsencrypt-root-certificate/

になるでしょうか。

 

admin