Grafana

You are currently browsing the archive for the Grafana category.

新潟県上越市の「やまぎし農園」に、環境データーモニターシステムを設置し、試験運用を開始しました。

IMG_4166-EDIT

「やまぎし農園」は主にトマトを栽培していますが、一度でもやまぎし農園のトマトを食べたものなら他のトマトは食べられなくなるような美味しさです。

IMG_3459-EDIT

やまぎし農園については以下のページに紹介されています。
http://www.local-pressjoetsu.com/member13.html

本機は自宅に構築した気象モニターを極力シンプルに小型化したもので、XIAO ESP32C3コントローラーをベースに1900 mAhの小型Lipoバッテリーに太陽電池パネルを取り付け、これのみで連続的にデータ収集が可能な仕様になっています。インターネット接続は、IoT用格安Simを実装した4Gのモバイルルーターを屋外に設置し、モニターとはWifiで接続しています。

IMG_4167-EDITのコピー

IMG_4164-EDITのコピー

データ収集項目やセンサーの選択・設置方法他は、山岸さんの長年のトマト栽培ノウハウから得られた知見を元に実装しています。

実際の農園の環境は非常に過酷で、真夏の高温に激しい湿度変化や降雨、これから冬場に向かっての低温や豪雪など予断を許さぬ状況が続きます。はたして本機が実際の農業の現場でどのくらい有益なものになるか、今後が非常に楽しみです。

Tags: ,

宅内IoT化推進で、データ収録用のWebサーバーを複数立てていますが、以前ここでも紹介したRaspberry pi 3をLinuxでWebサーバー化したものをメインで使っています。しかし流石にpi3ではチャンネル数が増えると非力に感じたので、新しいサーバー本体を色々物色しておりました。
Ubuntuが入れば良いので、小型の中古のデスクトップで十分なのですが、最近インテルのN100というCPUを使った超低価格・超小型PCというのがブームになっていて、Windows11が入って2万円くらいで購入できることを知りました。

N100:CPUモデルがそのジャンルの主流なのですが、それよりひと世代前のCPU(セレロンN4000など)を使ったものになると、投げ売り状態でさらに激安で購入できます。メモリも8GでSSDも128GはあるのでUbuntuを入れるには十分です。そうなるとRaspberry pi 5などを買うよりはるかにコスパ良くlinuxサーバーが構築できます。(電源やケース、SSDなども追加する必要なし)
ということでアマゾンのセールのタイミングを見計って、BMAX Pro B1 miniというモデルを購入してみました。CPUはN4000でRAM 8G SSD 128G、Windows11がバンドルされて、セール価格で1万円を切っていました。Windows11は不要でUbuntuに書き換えるのですが、一応動作チェックしてみてWebブラウズ、Youtubeくらいだったら全く問題ないレベルで驚きました。あとファンレスで無音なのと、M.2 2280 SSDの空きスロットがあってストレージ増設できる点は非常にサーバーに向いています。

494075111_9689927317768235_8362430632072900632_n

それでこのまま普通に組んで動作させても良いのですが、カラー液晶化したコンパクト・マックSE/30の筐体が余っていたので、このBmax Proを中に入れてみました。

493897671_9689927354434898_600785761993539009_n

493899908_9689927051101595_6994901419254479905_n

494108112_9689927024434931_2414233947464998157_n

社会人になった最初のボーナスで買ったのがMac Plusのフルセットで、その後だいぶん経ってからこのSE/30を中古で購入しました。SE/30はデザインをドイツのフロッグデザイン社が行っていたのですが、アップルデザインでは定評のあるジョナサン・アイブが手掛けたものよりはるかに気に入っていました。ということもあってMac PlusとSE/30は捨てることが出来なくて、後にブラウン管のモノクロ画面をカラーの液晶に入れ替えました。これを行ったのが2009年で、それからなんと15年も経ってしまいました。(液晶化の方法は以下のリンクのブログで説明しています)

https://lute.penne.jp/thumbunder/%e6%b6%b2%e6%99%b6mac-plus/

493899908_9689927124434921_5543488358518415105_n

コンパクトマックは映画バック・トゥ・ザ・フューチャー2でネタにされるくらいの、現代ではほとんど実用性の無いマシンですが、このデザインは今でも大変魅力的です。特にフロッグデザインのSE/30はドイツモダンデザイン(バウハウス、ウルム造形大学)の流れを感じられます。linux web serverとして復活したSE/30、とても気に入っています。

Tags: ,

学生のころから、電子部品を調達するために頻繁に秋葉原に出向いていたのですが、コロナ以降ほとんど通販ですますことが多くなって、実店舗に足を運ぶ機会は以前より少なくなってしまいました。(交通費より送料の方が安いし)
しかしやはり現物を手に取って形状や状態を確認したり、思わぬ掘り出し物に出会ったりするワクワク感は、現地に実際に足を運ばなければ得られないものです。

秋葉原に行ったら必ず訪れるのが「秋月電子」で、6月に2Fにもフロアーが拡張されたのですが、ここに「掘り出し物コーナー」というのがあります。そこで見つけたのが「ボッシュ製総合環境センサBME680を使用したセンサモジュール」です。これは現用品は1320円で普通に販売されているものですが、なぜか1個だけ300円で出ていて即Getしました。特に不良品でも無いようで、早速動作させ、まともなデータが得られることを確認しました。

K-14469

BME680は気温、湿度、気圧が1つで測定できるマルチセンサーですが、加えて「ガス(有機溶剤、アルコール等)濃度」の測定をサポートしています。テストでArduinoのライブラリーからこのガス濃度を取ってみると「GAS = xxxkΩ」という値で出てきて、いったいこれが何を示しているのか?さっぱりわかりません。

そこでボッシュ社のサイトをチェックすると、BSEC(Bosch Sensortec Environmental Cluster )というライブラリーがサポートされていて、これを利用すると上記のGAS値をIAQ(Index for Air Quality)やCO2濃度に変換してくれるのです。そしてなんとBSECはArduinoをサポートしていて、ライブラリーマネージャーから簡単にインストールして利用できます。

https://github.com/BoschSensortec/BSEC-Arduino-library

実際試してみるとこのライブラリーを利用できるプロセッサーは非常に限定されていて、最近よく使っているXIAOのESP32C3などではコンパイルエラーが出て使用できません。いろいろ試して「ESP32 Dev Module」で確実に動作することがわかりました。早速ブレッドボードで組んで、linuxサーバーにデータを送ってGrafanaで表示させてみました。

IMG_3245

iaq

IAQは写真のTable4のような定義になっていて、空気の汚れ具合を数値で確認することができます。CO2の値はほとんどこのIAQにリンクしているように見えますが、一応ppm値で出てきます。別にCO2モニターを持っているので比較すると、値の絶対値は目安程度?に考えた方が良いようです。

iaq_table

このBSECライブラリーはソフトウェアの後処理で換算値を算出するので、よくセンサーモニターでやる一定周期で測定して休止期間中にスリープさせてバッテリー駆動させるような使い方はできません。そのため電源を常時つないでおく必要があります。

CO2 gas

今回掘り出し物でたまたま300円で調達できてラッキーでしたが、普通に購入しても価値のある非常に面白いセンサーです。
あとこれの別機種の新製品でBME688というのが出ていて、これはなんと匂い成分のAIプロファイリングをサポートしています。

https://www.bosch-sensortec.com/…/gas-sensors/bme688/

例ではエスプレッソコーヒー豆とドリップ用コーヒー豆の匂い成分の違いをBME AI-Studioでモデリングしています。

https://youtu.be/4vdliMRtxBY?si=4A4DEWqV4ra1i-1S

コーヒー紅茶好きとしては、非常に興味深いので是非試してみたくなりました。

ということで、やはり実際に店舗やコンサートや講習会などに足を運ぶことで、意外な出会いや情報を得ることができるということを実感した、という次第であります。

家庭内のセンサー、環境モニターの測定データ送信先を順次Raspberry pi 3+のUbuntuサーバへ移行していますが、懸案であった「家庭内・消費電力モニター」の改版・移行作業が完了しました。これは2016年に作成したものですが、ラズパイA+を使用してレンタルサーバーにデータ送信し、自前のPHPプログラムでグラフ化していました。

これを宅内LinuxサーバーのGrafanaでグラフ表示させるように改版するわけですが、なにせ7年も前にpython2で作ったシステムなので、この際一気に最新の環境にアップデートしてみました。

IMG_3242 IMG_3243

まずラズパイOSを最新版にしたところ、今まで使っていたUSB/Wifiアダプターが認識されなくなりました。どうもチップが古いようで、ドライバーを探すのも面倒なので手持ちのラズパイZero 2Wに載せ換えました。

python2で書いたプログラムは、移行環境ではそのまま動作しなかったので、こちらも最新のpython3に書き換えました。python3だとThonnyも使えるし。同じpythonという名前ですが、2と3ではかなり変更点が多く、特にライブラリー関係で互換性のないものが多数あるので非常に厄介です。

このシステムでは、電流センサーの出力電圧を読むA/DコンバーターにMCP3002というチップを使っており、ラズパイとはSPIで接続されます。python2のSPIライブラリーは「py-spidev」というものを使用していたのですが、これがなぜかpython3環境だとMCP3002からデータを取ってきません。特にエラーも出ないし、デバックする元気もないので「gpiozero」ライブラリを使用してみました。

https://gpiozero.readthedocs.io/en/latest/api_spi.html

当方はこれを初めて使ったのですが、なんとSPIライブラリでMCP3002を直接指定でき、データの取得も非常に楽です。全く問題なく電圧測定・読み取りできました。

次にサーバーに接続するhttpのライブラリですが、python2では「urllib/urllib2」を使用していました。しかしこちらはpython3ではサポートされないので、使い慣れた「requests」に変更しました。

あとサーバー側ではhttp/POSTで受信したデータをデータベース:mysqlに格納するPHPプログラムを作成し、データベースを設定します。測定データがデータベースに格納されることが確認できれば、後はGrafanaでグラフ表示・可視化を行います。

自宅消費電力w1w2 自宅消費電力w1w2avr

Grafanaではmin/max/aveのほか、積算値(Total)の表示ができるので、任意の期間で総消費電力の表示が可能です。(例えば1日とか1ヶ月など、秒単位で指定可能)

これで電力会社の請求書との比較が簡単に行えます。もっと複雑な計算がしたければSQLでプログラムすることも可能で、Grafanaのフレキシビリティーの高さは圧倒的です。

今回懸案のシステム移行が完了し、色々面倒はありましたがとても気分がスッキリしました。

現在自宅ではRaspberry pi3 B+をSSDでWebサーバー化して、気象ステーション2号機のデータ蓄積サーバーとして稼働させています。
SSDはmac bookより外して余っていた120GBのものをUSBケースに入れてラズパイに接続しています。
OSは使い慣れたUbuntu系で、piのARM系CPUをサポートしている軽量ディストリ・Ubuntu mateをインストール。pi 3のパフォーマンス&メモリ1GだとGUIを動かすのは無謀なところですが、SSDにしたことでオペレーションだけなら普通に使えました。
非常に順調なので宅内に設置しているセンサー類を全てこのpi3にデータ集約することにしました。

IMG_3144

まず、各部屋に設置している環境ロガーと放射能測定器をこのサーバーにデータ送信するようプログラムの書き換えを行い、サーバー側のPHP作成、データベースエントリー、Grafanaの設定を行なっていきます。これらを作ったのは2017年で6年も前なので、今の開発環境でコンパイルするとエラー出まくりでちょっと手間取りましたが無事完了しました。

放射線レベル移動平均

前はグラフ表示をPHPで自前で書いていたのですが、Grafanaのフレキシビリティーの高さに今更ながら圧倒されました。特にSQL文でデータを加工できるので、放射能測定結果に移動平均を計算して表示させることが非常に楽に実現できました。もっと早くSQL+Grafanaに移行すればよかった。いままでSQLをプログラミング言語として認識・作成することはなかったのですが、非常に便利なのでもう少し文法などを学習してみたいと思います。

IMG_3163 IMG_3153

あと、電力消費測定システムと、PM2.5のセンサー、赤外・紫外線測定システムが残っているので順次追加して行こうかと思いますが、電力消費測定システムはpython2.0で書いていて、もう化石のようになっているのでこの際python3かC++に作り替えたほうが良さそうです。