1線式センサーとZabbix 2を使用したエルモゾーン温度監視

画像



4列の気密ゾーンがあり、各列に16のオープンラックがあります。

空調スキーム:ホットコールドコリドー、外部エバポレーターを備えた内部エアコン、列ごとに3台のエアコン、つまりコールドコリドーごとに6台のエアコン



目的:コンディショナーの故障を防ぐ可能性のある密閉ゾーン温度監視システムを構築する。



この問題を解決するために、1線式温度センサーのネットワークと監視システムZabbix 2を使用することが決定されました。



1線式ネットワークを組み立てます。



1線式ネットワークとは、 こちらにあります



必要なもの:



1. DS9490R 1-Wireネットワークコントローラ



画像



2.温度センサーDS18B20 、数量:カウント:4行* 16ラック連続*ラックごとに2センサー(冷間および高温通路)、つまり128センサー。



画像



3.センサーを簡単に設置するために、RJ45-RJ45アダプターを使用しました 5e GCT11-8p8c 、これも128個



画像



4.各センサー、2つのパッチコード、つまり128 * 2 = 256の場合、パッチコードの長さはサーバーラックの幅の半分です。



センサーを組み立て、アダプターの3本のワイヤーを選択し、アダプターに3つの穴を開け、センサーをはんだ付けします。

サーマルガンからの接着剤ではんだの場所を埋めることをお勧めします。これは次のような結果になります。

画像



1線式ネットワークコントローラーに直接接続し、そこから情報を読み取ることで、センサーの動作をすぐに確認することをお勧めします。 センサーに番号を付けることもお勧めします:1から128までの番号を順番に貼り付けます1線式ネットワークの初期化については以下で説明します。



そのため、ラックに固定すると見えます。



画像



コントローラーにはRJ45ではなくRJ11コネクタがあるため、ゼロセンサーアダプターを作成することをお勧めします。シリアル番号はゼロになり、ラックの数は1から始まります。



重要!

サーバーが2行であったため、ネットワークの長さは約140メートルでした。

テストの過程で、USBポートの電力ではこのような長いネットワークには不十分であることが判明しました。コントローラーはネットワークの半分を超えてセンサーに問い合わせることができないため、USBハブを購入して外部電源を確保し、コントローラーを接続することをお勧めします。 ハブを接続すると、センサーのポーリングレートが増加し、ネットワークにエラーが表示されなくなり、すべてのセンサーが読み取られました。

ネットワークを2つのセグメントに分割することはできませんでした。センサーからデータを読み取るプログラムが、どのコントローラーを使用するかを理解できず、少なくとも取得できなかったためです。





1線式ネットワークの初期化とセンサー値の取得。



そのため、ソフトウェア部分の構成に進みます。



1-wireネットワークのUSBコントローラーが接続されているサーバーはFreeBSD 9.1を実行しており、Zabbix 2.0.8がポートからインストールされています。



DigiTempソフトウェアは、センサー値を取得するために使用されます



DigiTempソースをダウンロードしてコンパイルします。コンパイルされたプログラムは/usr/local/etc/digitemp/new/digitemp-3.6.0/







コントローラーを使用するには、digitemp_DS2490プログラムを使用します



# cd /usr/local/etc/digitemp/new/digitemp-3.6.0/

# ./digitemp_DS2490 -i









DigiTempは、デバイスからデータを読み取ることができるように、ルートから実行する必要があります。

ネットワーク構成ファイルはそこに格納されているため、プログラムはそのディレクトリからのみ実行する必要があります。



./digitemp_DS2490 -i



実行の結果は、プログラムのホームディレクトリにある.digitemprcという名前の1-wireネットワーク構成ファイルになります。

この場合、digitempは64ビットのセンサーIDを出力し、ファイルに書き込みます。



.Digitemprcの例

TTY USB





READ_TIME 1000





LOG_TYPE 1





LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"





CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"





HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"





SENSORS 133





ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61





ROM 1 0x28 0x29 0xD5 0x19 0x03 0x00 0x00 0xFD





ROM 2 0x28 0x59 0xDE 0x19 0x03 0x00 0x00 0x15





ROM 3 0x28 0xDA 0xD6 0x19 0x03 0x00 0x00 0x98





ROM 4 0x28 0xFD 0xBE 0x19 0x03 0x00 0x00 0x84





ROM 5 0x28 0xCB 0xE2 0x19 0x03 0x00 0x00 0x6F







重要な

カウンター番号ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61、ネットワーク上の物理的な連続番号ではありません。この番号はネットワークの初期化中に受信されました。つまり、最初に応答したのはファイルに書き込まれました。

したがって、センサーをはんだ付けしてチェックする段階で、すぐにシーケンシャルネットワークを形成することをお勧めします。 つまり、センサーを取り出し、はんだ付けし、すぐにコントローラーに接続し、。/ digitemp_DS2490を起動して-iのIDを取得し、Excelテーブルにコピーし、ROM番号を...に順次追加しました。

彼らはセンサーの接続を外し、シリアル番号を貼って、花輪に掛けてパッチカードでつなぎました。 ガーランドをコントローラーに接続してテストを開始することはお勧めしません。最初にはるかに長くなり、次に上記に照らして、センサーからの応答が順番に来ないという事実のために、新しいセンサーのIDを検索するのがより難しくなります。



すべてのセンサーをテストした後、ガーランドをコントローラーに接続し、。 ./digitemp_DS2490 -i



を実行し./digitemp_DS2490 -i







ネットワーク構成ファイル.digitemprcが生成されます



交換する必要があります

ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61





ROM 1 0x28 0x29 0xD5 0x19 0x03 0x00 0x00 0xFD





ROM 2 0x28 0x59 0xDE 0x19 0x03 0x00 0x00 0x15





ROM 3 0x28 0xDA 0xD6 0x19 0x03 0x00 0x00 0x98





ROM 4 0x28 0xFD 0xBE 0x19 0x03 0x00 0x00 0x84







同じ形式のExcelファイルで取得したものに。



結果の.digitemprcファイルを別のフォルダーに保存します。突然./digitemp_DS2490 -i



再度実行すると、ファイルが上書きされ、物理アドレス指定が不正確になる可能性が高いためです。



1線式ネットワークが構成された後、センサー値を読み取って、. ./digitemp_DS2490 -q -a -r1 -n1



実行すると、プログラムがセンサー値を表示します。



ネットワークのシリアル接続が正しいことを確認します。たとえば、5センサーを加熱してプログラムを実行すると、温度が4上がるはずです(番号付けが0から始まるため)



Zabbixのセットアップに移りましょう



ZabbixでZabbixがインストールされているサーバーは、ZabbixServerと呼ばれます。

その中に129個のデータ要素を作成します。つまり、データ要素ごとに各温度センサーごとに作成します。



画像



理解することが重要です:

gmz.temp.t17は要素のキーであり、センサー値を送信するために使用されます

値はzabbix_senderプログラムを介して送信されるため、アイテムのタイプは「Zabbix trapper」である必要があります。



また、12のエアコンごとに12の追加データ要素を作成します。 センサーは、エアコンの冷気出口の下に3つのセンサーが配置されるように配置されているため、これら3つのセンサーの平均を考慮して、データ要素が計算されます。



画像



式に注意してください。つまり、最後に取得されたセンサー値が合計され、3で除算されます。



データ要素を追加したら、値データをZabbixに送信できます。



rootユーザーのcrontabで、タスクを追加します。

*/1 * * * * /usr/local/etc/digitemp/digitemp_cron.sh > /dev/null 2>&1









つまり、スクリプトdigitemp_cron.shを1分間に1回実行します

cat /usr/local/etc/digitemp/digitemp_cron.sh







#!/usr/local/bin/bash





cd /usr/local/etc/digitemp/new/digitemp-3.6.0/





./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -







-o"ZabbixServer gmz.temp.t%s %N %.2C"



-この行はデータ出力形式を定義します。



重要!

ZabbixServerは、ZabbixサーバーがZabbixにインストールされているホストの名前です。



./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -



./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -







zabbix_senderの結果、すべての行が送受信されるはずです:



サーバーからの情報:「処理された133が失敗しました0合計133秒が0.000540費やされました」

送信済み:133; スキップ:0; 合計:133



その場合は、グラフとトリガーを追加し、アラートを設定できます。



画像



画像







All Articles