EBUG勉強会/20260228_河豚板IoT
をテンプレートにして作成
Start:
#topicpath
* 河豚板IoT [#z896ba7e]
RIGHT:EBUG 第96回会合 2026年2月28日 ~
川俣吉広、kaw@on.rim.or.jp
精密金属加工を行っている工場で使用されている、河豚板を用...
#contents
* 背景 [#lf99c81c]
#ref(Display.jpg,wrap,around,right,20%)
この工場では、鉄道・航空関連の工作機械部品の加工を行って...
従来、それらの測定・管理は人手により行っていたが、2019年...
#clear
* 概要と特徴 [#u22a9acf]
** システム構成 [#s9262db6]
#ref(SoftScheme3.png,wrap,around,left,25%)
河豚板LiveUSB上に以下の各機能を実装した。
- センサからのデータ取得
- 取得したデータの処理
- 処理済みデータの保持と取り出し
- グラフ生成
- ウェブユーザインターフェース
#clear
** 画面構成 [#u1556458]
#ref(disp_dashboard.png,around,left,20%);
- ダッシュボード
-- センサーセル: 現在値 / トレンド / 取得断 / 最低・最高...
-- 週間天気 → 今後の生産工程のための参考情報
-- ステータス行
#clear
#ref(disp_graph.png,around,right,20%);
- グラフ表示: 単体 / カスタム
-- グラフ(デフォルト): 生の測定値 / トレンド値
-- カスタムグラフ: 複数表示、表示形式変更など
#clear
#ref(disp_ctrl.png,around,left,20%);
- 管理・設定画面
-- 全センサの状態を数値で一覧表示
-- 各種パラメータの表示・設定
#clear
* 設計方針 [#yaca45c2]
''シンプル & 丈夫で長持ち''
- スタンドアロン(オンプレミス対応)
-- サーバは河豚板LiveUSB内で完結
-- 内製のWiFi温度センサはサーバと直接通信
-- 表示端末からサーバへもWiFi経由の直接アクセスが可能
- 低依存
-- 他の複雑なシステムになるべく依存しない
-- OSに同梱の要素で構成
- 低スペック
-- 既存の機器を転用可能に
-- 複雑な機能は入れない。シンプルに保つ
* ハードウェア [#w988bc67]
** データ処理サーバ [#m6a5b0e6]
||CENTER:当初|CENTER:現在|h
|本番機|ThinkPad G40:&br;Pentium4 2.4GHz, Mem 512MB&br;US...
|開発 兼&br;予備機|ThinkPad R52e:&br;CPU: PentiumM 1.7GHz...
----
|&ref(EBUG勉強会/20251122_vmmvmd/TempSensors1.png,,25%);|...
|CENTER:通常時|CENTER:障害発生時|
** メーカー製センサ [#mdf4a780]
#ref(Sensor.jpg,wrap,around,right,20%)
- [[T&D社>https://www.tandd.co.jp/]]の[[おんどとり>https:...
- 温度および湿度を取得可能
- 各センサがクラウドストレージにデータを送信
- サーバはクラウドストレージからセンサ・取得期間を指定し...
#clear
- APIが開示されていれば、他メーカーの製品も対応可能
** 内製(自作)センサ
システムに組み込むセンサのプロトタイプとして2式製作。開...
|CENTER:|CENTER:|c
|&ref(pix1.jpg,,20%);|&ref(pix3.jpg,,20%);|
|&ref(pix2.jpg,,20%);|&ref(exterior.jpg,,25%);|
*** 実装条件
- 工場内で使用するため、有線配線は使用不可
-- 電源は内蔵、外部電源は使用しない: 単三×3本
-- 測定値の伝送は、無線を使用: WiFi
*** 構成 [#rfcb352f]
#ref(block.png,wrap,around,right,40%)
- マイクロコントローラ:~
Espressif社 ESP8266 (CPU: Xtensa, WiFi対応)~
ESP-WOOM-02ブレイクアウトボードを使用
- 温度センサ:~
LM61BIZ(アナログ出力)~
→音声ケーブルで延長可能
- 電源:~
LDO AVR (低損失CMOS三端子レギュレータ) NJU7223F33
#clear
*** 開発環境: [#y137daf7]
- ラズベリーパイ1B上にArduino IDEをインストール
- [[Arduino core for ESP8266 WiFi chip>https://github.com...
(コンパイル時にはGCC/Xtensaが呼び出される)
- コーディングはArduinoスケッチにて行う
- ビルド後の実行ファイルは、シリアルにてESP-WOOM-02に転送
** 設計上の課題と解決 [#x2c39b66]
*** 動作寿命の延長 [#u8e9af63]
#ref(powertest.jpg,wrap,around,right,33%)
- データ取得間隔は約5分、その間ESP8266をDeepSleepさせる
-- 待機時の電流は約53μA (電池寿命は推定約4ヶ月→実測値も同...
-- DeepSleep復帰時は、プログラムは最初から実行。変数の値...
--- 電源再投入に近い動作/コーディングに工夫が必要~
→ ハードコーディング or Flash保存領域 or RTCメモリ領域
-- センサへの電源も直接供給するのではなく、測定の時だけGP...
#clear
- 未採用の案
-- 前回と測定値が同じであれば、WiFiでのデータ送信をしない~
→ センサ故障・データ取得失敗と区別できない
-- WiFiの送信電力を必要十分な値に低減する~
WiFiのモードを指定できるのであれば、ビットレートは低くて...
→ その分送信出力を低減できる(可能なら)~
→ そもそもDSSS/FHSSでこの理屈は成立するか?
-- 電源の三端子レギュレータを省略して、乾電池直結にする。...
→ 電池の電圧変動がセンサの出力電圧に影響を与えるため、セ...
→ 過電圧保護がないが、大丈夫か?
-- 電池の容量/本数を増加
-- ソーラーパネル+スーパーキャパシタ
*** 測定精度の向上 [#x0e4ba57]
- 取得値のばらつきを減らす
-- DeepSleep()から復帰してのAnalogRead()の実行タイミング...
-- 復帰後、短い間隔を置いてデータを数回取得する → 0.1秒間...
- 測定精度はESP8266のADC (10bit)の量子化誤差が支配的
-- 未採用の案
--- センサー出力~ADC間にCRの時定数回路を挿入し、現在の4...
→ 複雑な計算なので、サーバ側で実施 → ハード的にはCRの追加...
|&ref(CRcurve.png,,35%);|
--- ADCを使わず、I2Cなどを用い、かつ、より精度の高いセン...
→ I2Cにすることで、センサの消費電力は増大?減少?
* ソフトウェア [#f2d32146]
** データ処理サーバ [#icdaf489]
全体の構成
#ref(SoftScheme2.png,wrap,around,right,10%)
冒頭で紹介したように、
- データの取得と処理
- 処理済みデータの保持・アーカイブと取り出し
- グラフ生成
- ウェブUI
の要素から構成される
#clear
*** データの取得と処理 [#e42bac16]
:データの取得 - enc_*.pl (例: enc_ondotori.pl)|データソー...
enc_amedas.plは、気象庁アメダスの気温データを取得するスク...
:処理の中核 - decdemux.pl|enc_*.plからのデータを受信~
・データを内部処理に適した形式に変換(Decode & Demultiplex)~
・生データを処理~
・4サンプルの平均化(8266センサの場合)~
・生データ→センサごとの補正値で校正~
・FIR/IIR処理 (トレンド計算・グラフ平準化)~
・Min/Max保持~
・重複受信データのuniq~
・etc...~
・各センサは設定ファイルで定義された特性を持つインスタン...
・処理後の値はデータ保存部に送られ、persistentな値として...
:処理の制御 - decdemuxctl.pl|dexdemux.plの制御ユティリティ~
・設定ファイルの再読み込み~
・全グラフの強制描画~
・Min/Max値リセットのトリガ~
・ログファイルへの追記 / ステータスラインへの表示~
・動作の一時停止・再開 (停止中は受信データをバッファリン...
・データ保持部のファイルの再オープン~
・センサーデータの個別書き込み~
・decdemux.plの停止~
これらの機能も「制御コマンド」としてdecdemux.plに送られる。
:計算・統計処理 - enc_calcstat.pl|各センサからのデータを...
:週間天気の処理 - fetch_wkwx.pl|気象庁の予報データを取得...
・予報文をパースし天気アイコンを生成~
例: 予報文「曇り」→ アイコン <雲(0)> ... 数字はアイコ...
: 予報文「曇り時々雨」→ アイコンの並び <雲(0)><雨(-1...
: 予報文「晴れのち曇り時々雪」→ アイコンの並び <太陽...
・最低・最高気温~
・日付の色 (土日休祝の計算)
*** 処理済データの保持・アーカイブと取り出し [#a1086ac9]
- 単純にセンサーごとのファイルに書き込み
-- status/<センサー番号> ... センサーの現在の測定値、計算...
-- log/<センサー番号> ... センサーの測定値の履歴
- 先月以前のデータは圧縮してアーカイブ
- cron + 河豚板のusbfadm syncで定期的に永続ストレージに保存
*** グラフ生成 [#xb8ed1bb]
- gnuplotで生成 ([[SAG (System Activity Grapher)>https://...
- 表示形式の基本 - 生データとトレンド(FIR or IIRフィルタ...
- グラフ描画
-- 単一のセンサのグラフ(デフォルト)
-- 複数のグラフの組み合わせ・表示フォーマットの変更など(...
*** ウェブUI [#i39d78ab]
- OpenBSD httpd + PHP_FPMを使用
-- ダッシュボード / 各グラフ / 設定画面を表示
-- ESP8266センサの測定データを受ける。計測データはHTTPのG...
** 時間軸の表記法 - dt-syntax [#n334bdef]
このシステムでは、ある時点を暦や時刻に沿って指定すること...
*** 文法 [#t0cebd36]
:書式|/home/sensor/include/dtparser.pm
:説明|Perlモジュールdtparser.pmはISO 8601風の日付・時刻の...
<dt-syntax> ::= <日時> | <日時><期間>
~<日付>の部分はある時点を表わす。基本的にはYYYY/mm/dd,HH:...
<日時> ::= <日付>","<時刻> | <日付> | <時刻> | "thisyear...
<日付> ::= <西暦>"/"<月>"/"<日> | <西暦>"/"<月> | <月>"/...
<西暦> ::= <4ケタの符号なし整数>
<月> ::= <1~2ケタの符号なし整数>
<日> ::= <1~2ケタの符号なし整数>
<時刻> ::= <時>":"<分>":"<秒> | <時>":"<分>
<時> ::= <1~2ケタの符号なし整数>
<分> ::= <1~2ケタの符号なし整数>
<秒> ::= <1~2ケタの符号なし整数>
<Unix Epoch> ::= <符号なし整数>
thisyear, thismonth, thisweek, todayは、今年、今月、今週...
nowはこのモジュールがset_basetime関数で初期化された時点を...
なお、Unix Epoch以外の表記はこのモジュールが呼び出された...
~
~<期間>の部分は、<日付>からある時間だけ離れた時点を表す。
<期間> ::= <オフセット> | <期間><オフセット>
<オフセット> := <数値><期間単位>
<数値> ::= <符号><符号なし整数> | <符号なし整数>
<符号> ::= "+" | "-"
<期間単位> ::= "Y" | "m" | "d" | "V" | "H" | "M" | "S"
~<期間単位>はそれぞれ、年、月、日、週、時、分、秒を表わす...
~<符号>は、+が未来方向、-が過去方向を表わす。
上の定義から分かるように、期間はオフセットを1回以上繰り...
-1m3V12H は -1m-3V-12H と等価
+1m3V12H は +1m+3V+12H と等価
+1m-3V12H は +1m-3V-12H と等価
つまり、オフセット部の符号が省略された場合は、直前の符号...
:例|
12:3 ... 本日の12時3分0秒
today-1V+15H30M ... 一週間前の日の15時30分0秒
1600788674-2V+15d ... 2020年9月24日 0時31分14秒 (日本標...
*** 使用例 [#jd5ffa58]
dt-syntaxは、システムの随所で使われているが、手動でグラフ...
spangraph.shは、コマンドライン引数でdt-syntaxを用いて描画...
:spangraph.shの書式|spangraph.sh ['''オプション'''] '''開...
:使用例|
2020年8月のセンサ15のグラフを生成
$ spangraph.sh 2020/8 2020/9 15
または
$ spangraph.sh 2020/8 1m 15
先々月の初日から一週間分のセンサ7,センサ8のグラフを生成
$ spangraph.sh thismonth-2m 1V 7,8
2020年のセンサ3のグラフを月毎に生成
$ jot 12 | xargs -I % spangraph.sh 2020/% 1m 3
背景色を白色に変更し、測定データとトレンドをプロットする...
$ spangraph.sh -c bg-white -p with-trend today now 15
ファイル名を「年月日,時分」形式に変更して昨日分のグラフを...
$ spangraph.sh -o %y%m%d,%H%M today -1d 15
* ユーザの声 [#lbab5b36]
- 温度を数値だけでなくグラフで傾向をつかめるのは助かって...
- webインターフェイスを用意してもらったおかげで、現場のお...
- 天気予報がわかるのは空調の強さを検討するために、また納...
- グラフができればマウスホバーで数値が表示されるようなAJA...
- 期待した内容を実現していただいたので、現状で満足してお...
- お金に余裕があれば、もう1セット作ってもらいたいと思って...
* 終わりに [#baeaa44b]
このシステムは、2020年の運用開始から、途中、おんどとりク...
安定した運用ができている要因として、以下のようなこと考え...
- ''シンプル & 丈夫で長持ち''な設計方針が、想定した環境や...
- また、その環境や運用規模が河豚板をベースとした運用にも...
- 当初の打ち合わせで仕様を適切に打ち合わせでき、また、そ...
- これには、ユーザの担当窓口の方がシステムの開発事情につ...
クライアントサイドでの高機能化(マウスホバーで数値表示)や...
End:
#topicpath
* 河豚板IoT [#z896ba7e]
RIGHT:EBUG 第96回会合 2026年2月28日 ~
川俣吉広、kaw@on.rim.or.jp
精密金属加工を行っている工場で使用されている、河豚板を用...
#contents
* 背景 [#lf99c81c]
#ref(Display.jpg,wrap,around,right,20%)
この工場では、鉄道・航空関連の工作機械部品の加工を行って...
従来、それらの測定・管理は人手により行っていたが、2019年...
#clear
* 概要と特徴 [#u22a9acf]
** システム構成 [#s9262db6]
#ref(SoftScheme3.png,wrap,around,left,25%)
河豚板LiveUSB上に以下の各機能を実装した。
- センサからのデータ取得
- 取得したデータの処理
- 処理済みデータの保持と取り出し
- グラフ生成
- ウェブユーザインターフェース
#clear
** 画面構成 [#u1556458]
#ref(disp_dashboard.png,around,left,20%);
- ダッシュボード
-- センサーセル: 現在値 / トレンド / 取得断 / 最低・最高...
-- 週間天気 → 今後の生産工程のための参考情報
-- ステータス行
#clear
#ref(disp_graph.png,around,right,20%);
- グラフ表示: 単体 / カスタム
-- グラフ(デフォルト): 生の測定値 / トレンド値
-- カスタムグラフ: 複数表示、表示形式変更など
#clear
#ref(disp_ctrl.png,around,left,20%);
- 管理・設定画面
-- 全センサの状態を数値で一覧表示
-- 各種パラメータの表示・設定
#clear
* 設計方針 [#yaca45c2]
''シンプル & 丈夫で長持ち''
- スタンドアロン(オンプレミス対応)
-- サーバは河豚板LiveUSB内で完結
-- 内製のWiFi温度センサはサーバと直接通信
-- 表示端末からサーバへもWiFi経由の直接アクセスが可能
- 低依存
-- 他の複雑なシステムになるべく依存しない
-- OSに同梱の要素で構成
- 低スペック
-- 既存の機器を転用可能に
-- 複雑な機能は入れない。シンプルに保つ
* ハードウェア [#w988bc67]
** データ処理サーバ [#m6a5b0e6]
||CENTER:当初|CENTER:現在|h
|本番機|ThinkPad G40:&br;Pentium4 2.4GHz, Mem 512MB&br;US...
|開発 兼&br;予備機|ThinkPad R52e:&br;CPU: PentiumM 1.7GHz...
----
|&ref(EBUG勉強会/20251122_vmmvmd/TempSensors1.png,,25%);|...
|CENTER:通常時|CENTER:障害発生時|
** メーカー製センサ [#mdf4a780]
#ref(Sensor.jpg,wrap,around,right,20%)
- [[T&D社>https://www.tandd.co.jp/]]の[[おんどとり>https:...
- 温度および湿度を取得可能
- 各センサがクラウドストレージにデータを送信
- サーバはクラウドストレージからセンサ・取得期間を指定し...
#clear
- APIが開示されていれば、他メーカーの製品も対応可能
** 内製(自作)センサ
システムに組み込むセンサのプロトタイプとして2式製作。開...
|CENTER:|CENTER:|c
|&ref(pix1.jpg,,20%);|&ref(pix3.jpg,,20%);|
|&ref(pix2.jpg,,20%);|&ref(exterior.jpg,,25%);|
*** 実装条件
- 工場内で使用するため、有線配線は使用不可
-- 電源は内蔵、外部電源は使用しない: 単三×3本
-- 測定値の伝送は、無線を使用: WiFi
*** 構成 [#rfcb352f]
#ref(block.png,wrap,around,right,40%)
- マイクロコントローラ:~
Espressif社 ESP8266 (CPU: Xtensa, WiFi対応)~
ESP-WOOM-02ブレイクアウトボードを使用
- 温度センサ:~
LM61BIZ(アナログ出力)~
→音声ケーブルで延長可能
- 電源:~
LDO AVR (低損失CMOS三端子レギュレータ) NJU7223F33
#clear
*** 開発環境: [#y137daf7]
- ラズベリーパイ1B上にArduino IDEをインストール
- [[Arduino core for ESP8266 WiFi chip>https://github.com...
(コンパイル時にはGCC/Xtensaが呼び出される)
- コーディングはArduinoスケッチにて行う
- ビルド後の実行ファイルは、シリアルにてESP-WOOM-02に転送
** 設計上の課題と解決 [#x2c39b66]
*** 動作寿命の延長 [#u8e9af63]
#ref(powertest.jpg,wrap,around,right,33%)
- データ取得間隔は約5分、その間ESP8266をDeepSleepさせる
-- 待機時の電流は約53μA (電池寿命は推定約4ヶ月→実測値も同...
-- DeepSleep復帰時は、プログラムは最初から実行。変数の値...
--- 電源再投入に近い動作/コーディングに工夫が必要~
→ ハードコーディング or Flash保存領域 or RTCメモリ領域
-- センサへの電源も直接供給するのではなく、測定の時だけGP...
#clear
- 未採用の案
-- 前回と測定値が同じであれば、WiFiでのデータ送信をしない~
→ センサ故障・データ取得失敗と区別できない
-- WiFiの送信電力を必要十分な値に低減する~
WiFiのモードを指定できるのであれば、ビットレートは低くて...
→ その分送信出力を低減できる(可能なら)~
→ そもそもDSSS/FHSSでこの理屈は成立するか?
-- 電源の三端子レギュレータを省略して、乾電池直結にする。...
→ 電池の電圧変動がセンサの出力電圧に影響を与えるため、セ...
→ 過電圧保護がないが、大丈夫か?
-- 電池の容量/本数を増加
-- ソーラーパネル+スーパーキャパシタ
*** 測定精度の向上 [#x0e4ba57]
- 取得値のばらつきを減らす
-- DeepSleep()から復帰してのAnalogRead()の実行タイミング...
-- 復帰後、短い間隔を置いてデータを数回取得する → 0.1秒間...
- 測定精度はESP8266のADC (10bit)の量子化誤差が支配的
-- 未採用の案
--- センサー出力~ADC間にCRの時定数回路を挿入し、現在の4...
→ 複雑な計算なので、サーバ側で実施 → ハード的にはCRの追加...
|&ref(CRcurve.png,,35%);|
--- ADCを使わず、I2Cなどを用い、かつ、より精度の高いセン...
→ I2Cにすることで、センサの消費電力は増大?減少?
* ソフトウェア [#f2d32146]
** データ処理サーバ [#icdaf489]
全体の構成
#ref(SoftScheme2.png,wrap,around,right,10%)
冒頭で紹介したように、
- データの取得と処理
- 処理済みデータの保持・アーカイブと取り出し
- グラフ生成
- ウェブUI
の要素から構成される
#clear
*** データの取得と処理 [#e42bac16]
:データの取得 - enc_*.pl (例: enc_ondotori.pl)|データソー...
enc_amedas.plは、気象庁アメダスの気温データを取得するスク...
:処理の中核 - decdemux.pl|enc_*.plからのデータを受信~
・データを内部処理に適した形式に変換(Decode & Demultiplex)~
・生データを処理~
・4サンプルの平均化(8266センサの場合)~
・生データ→センサごとの補正値で校正~
・FIR/IIR処理 (トレンド計算・グラフ平準化)~
・Min/Max保持~
・重複受信データのuniq~
・etc...~
・各センサは設定ファイルで定義された特性を持つインスタン...
・処理後の値はデータ保存部に送られ、persistentな値として...
:処理の制御 - decdemuxctl.pl|dexdemux.plの制御ユティリティ~
・設定ファイルの再読み込み~
・全グラフの強制描画~
・Min/Max値リセットのトリガ~
・ログファイルへの追記 / ステータスラインへの表示~
・動作の一時停止・再開 (停止中は受信データをバッファリン...
・データ保持部のファイルの再オープン~
・センサーデータの個別書き込み~
・decdemux.plの停止~
これらの機能も「制御コマンド」としてdecdemux.plに送られる。
:計算・統計処理 - enc_calcstat.pl|各センサからのデータを...
:週間天気の処理 - fetch_wkwx.pl|気象庁の予報データを取得...
・予報文をパースし天気アイコンを生成~
例: 予報文「曇り」→ アイコン <雲(0)> ... 数字はアイコ...
: 予報文「曇り時々雨」→ アイコンの並び <雲(0)><雨(-1...
: 予報文「晴れのち曇り時々雪」→ アイコンの並び <太陽...
・最低・最高気温~
・日付の色 (土日休祝の計算)
*** 処理済データの保持・アーカイブと取り出し [#a1086ac9]
- 単純にセンサーごとのファイルに書き込み
-- status/<センサー番号> ... センサーの現在の測定値、計算...
-- log/<センサー番号> ... センサーの測定値の履歴
- 先月以前のデータは圧縮してアーカイブ
- cron + 河豚板のusbfadm syncで定期的に永続ストレージに保存
*** グラフ生成 [#xb8ed1bb]
- gnuplotで生成 ([[SAG (System Activity Grapher)>https://...
- 表示形式の基本 - 生データとトレンド(FIR or IIRフィルタ...
- グラフ描画
-- 単一のセンサのグラフ(デフォルト)
-- 複数のグラフの組み合わせ・表示フォーマットの変更など(...
*** ウェブUI [#i39d78ab]
- OpenBSD httpd + PHP_FPMを使用
-- ダッシュボード / 各グラフ / 設定画面を表示
-- ESP8266センサの測定データを受ける。計測データはHTTPのG...
** 時間軸の表記法 - dt-syntax [#n334bdef]
このシステムでは、ある時点を暦や時刻に沿って指定すること...
*** 文法 [#t0cebd36]
:書式|/home/sensor/include/dtparser.pm
:説明|Perlモジュールdtparser.pmはISO 8601風の日付・時刻の...
<dt-syntax> ::= <日時> | <日時><期間>
~<日付>の部分はある時点を表わす。基本的にはYYYY/mm/dd,HH:...
<日時> ::= <日付>","<時刻> | <日付> | <時刻> | "thisyear...
<日付> ::= <西暦>"/"<月>"/"<日> | <西暦>"/"<月> | <月>"/...
<西暦> ::= <4ケタの符号なし整数>
<月> ::= <1~2ケタの符号なし整数>
<日> ::= <1~2ケタの符号なし整数>
<時刻> ::= <時>":"<分>":"<秒> | <時>":"<分>
<時> ::= <1~2ケタの符号なし整数>
<分> ::= <1~2ケタの符号なし整数>
<秒> ::= <1~2ケタの符号なし整数>
<Unix Epoch> ::= <符号なし整数>
thisyear, thismonth, thisweek, todayは、今年、今月、今週...
nowはこのモジュールがset_basetime関数で初期化された時点を...
なお、Unix Epoch以外の表記はこのモジュールが呼び出された...
~
~<期間>の部分は、<日付>からある時間だけ離れた時点を表す。
<期間> ::= <オフセット> | <期間><オフセット>
<オフセット> := <数値><期間単位>
<数値> ::= <符号><符号なし整数> | <符号なし整数>
<符号> ::= "+" | "-"
<期間単位> ::= "Y" | "m" | "d" | "V" | "H" | "M" | "S"
~<期間単位>はそれぞれ、年、月、日、週、時、分、秒を表わす...
~<符号>は、+が未来方向、-が過去方向を表わす。
上の定義から分かるように、期間はオフセットを1回以上繰り...
-1m3V12H は -1m-3V-12H と等価
+1m3V12H は +1m+3V+12H と等価
+1m-3V12H は +1m-3V-12H と等価
つまり、オフセット部の符号が省略された場合は、直前の符号...
:例|
12:3 ... 本日の12時3分0秒
today-1V+15H30M ... 一週間前の日の15時30分0秒
1600788674-2V+15d ... 2020年9月24日 0時31分14秒 (日本標...
*** 使用例 [#jd5ffa58]
dt-syntaxは、システムの随所で使われているが、手動でグラフ...
spangraph.shは、コマンドライン引数でdt-syntaxを用いて描画...
:spangraph.shの書式|spangraph.sh ['''オプション'''] '''開...
:使用例|
2020年8月のセンサ15のグラフを生成
$ spangraph.sh 2020/8 2020/9 15
または
$ spangraph.sh 2020/8 1m 15
先々月の初日から一週間分のセンサ7,センサ8のグラフを生成
$ spangraph.sh thismonth-2m 1V 7,8
2020年のセンサ3のグラフを月毎に生成
$ jot 12 | xargs -I % spangraph.sh 2020/% 1m 3
背景色を白色に変更し、測定データとトレンドをプロットする...
$ spangraph.sh -c bg-white -p with-trend today now 15
ファイル名を「年月日,時分」形式に変更して昨日分のグラフを...
$ spangraph.sh -o %y%m%d,%H%M today -1d 15
* ユーザの声 [#lbab5b36]
- 温度を数値だけでなくグラフで傾向をつかめるのは助かって...
- webインターフェイスを用意してもらったおかげで、現場のお...
- 天気予報がわかるのは空調の強さを検討するために、また納...
- グラフができればマウスホバーで数値が表示されるようなAJA...
- 期待した内容を実現していただいたので、現状で満足してお...
- お金に余裕があれば、もう1セット作ってもらいたいと思って...
* 終わりに [#baeaa44b]
このシステムは、2020年の運用開始から、途中、おんどとりク...
安定した運用ができている要因として、以下のようなこと考え...
- ''シンプル & 丈夫で長持ち''な設計方針が、想定した環境や...
- また、その環境や運用規模が河豚板をベースとした運用にも...
- 当初の打ち合わせで仕様を適切に打ち合わせでき、また、そ...
- これには、ユーザの担当窓口の方がシステムの開発事情につ...
クライアントサイドでの高機能化(マウスホバーで数値表示)や...
Page: