IM920sLとPDHの接続(Node-REDでのデータ処理)

1.概要

LPWA(IM920sL)とPDH(Physical Data Hub)の接続に関して説明します。
ハード的には、親機を、IM920sLのUSBインターフェースボードに載せてPDHのUSBポートに接続するだけです。USBインターフェースボードは、FTDI社のVCP(Virtual COM Port ) Driversを使っており、PDH側でUSBデバイスと認識します。
ソフト的には、ターミナルソフトやNode-REDを使い、シリアルポートとして読み出すことができます。ターミナルソフトの読出し設定に関しては、こちら(Windows PC / PDH)を参照してください。以下、PDHソフトウェア(Node-RED)へのデータの取込に関して説明します。なお、PDHソフトウェアの最新版へのバージョンアップのやり方はこちら(最新版PDHソフトウェアへの更新)を参照してください。

2.受信データの形式

LPWA(IM920sL)の送信データの制約に、一度に送れるデータ長が32バイトまでというのがあります。そのため、LPWAから送られてくるデータはJSONフォーマットではなく、先頭にセンサの識別子、その後、センサの数値データが続きます。そして、それらは‘,’(カンマ)で区切られています。例えば、環境センサBME688から、送信側のLPWAに送られるコマンドとデータは、以下のような形式です。
  TXDU 0001,t13,17.00,43.23,1012.32,932.39
順に、TXDU: 送信コマンド、0001:送信先ノード番号、t13: センサの識別子、17.00: 気温、43.23: 湿度、1012.32: 気圧、932.39:ガスという並びになっています。
これが、送信側のLPWAに送られます。送られたデータを受け取った受信側のLPWAから、
  00,0002,3F: t13,17.00,43.23,1012.32,932.39
という形式で出てきます。受信データのフォーマットはこちらを参照してください。そこで、これをNode-REDの入り口でR-MSMの出力と同じJSONフォーマットに変換します。
以下に、LPWAで対応しているセンサと識別子と受信データ形式の一覧を次に示します。識別子の後のデータは、数値データのラベルの順番の意味を持ちます。

3.LPWA InputのJSONフォーマットへの変換フロー

LPWA InputをJSONフォーマットに変換するNode-REDのフローを以下に示します。/dev/ttyUSB0からの入力を、R-MSMのJSONと同様のJSONフォーマットに変換します。
以下、各ノードの説明を行いますが、実際に使用される場合には、Appendixにある“JSONデータ”を読み込んで必要に応じて修正して使用してください。

3-1. 入力部

入力部は、①serial inノードと②functionノードと③switchノードと④link outノードで構成されます。

 

1) serial inノードで、LPWAの親機が受信したデータを受信します。
PDHに他にUSBを接続していない場合は、シリアルポート名を”/dev/ttyUSB0”としてください(他にもUSB接続がある場合には、親機のUSBのデバイス名を調べる必要があります)。
ボーレートは、”19200”に設定してください(変更している場合はそのスピードにして下さい)。

2) functionノードで、データをカンマ区切りのデータに変換します。
文字のreplaceコマンドを使って、カンマへの変換と不要文字の削除を行います。

3) switchノードで、labelを使って、データを振り分けます。
データの内容はセンサ毎に異なりますので、以降の処理はセンサ毎になります。

4) link outでJSON形式への変換部にセンサ毎に送ります。

3-2. JSON形式への変換部

JSON形式への変換部は、①link inノードと②csvノードと③functionノードと④changeノードと⑤link outノードで構成されます。②csvノードと③functionノードは、センサ毎に中身が異なります。

1) link inノードは、入力部のlink outにセンサ毎にそれぞれ繋げます。

2) csvノードは、カンマ区切りのデータをJSONフォーマットに変換します。その際に、列名をキー文字として使用します。そのため、センサ毎に異なります。後ほど列名の一覧を示しますが、例として、BME680(t2)のcsvノードの記述を示します。列名に順番にキー文字を列挙しています。

3) functionノードは、センサ毎にデータの補足処理を行っています。これも後ほどfunctionノードの中身の一覧を示しますが、BME680(t2)を例に示しておきます。
温度補正を行うのと、単位の文字列を追加しています。そして、最後に“sensor”名を追加しています。

4) changeノードは、LPWAのデータとして送られてきたデータのうち、この先、不要なものを削除しています。具体的には、以下の受信データの赤字の部分です。
00,0002,3F: t13,17.00,43.23,1012.32,932.39
JSONで書くと以下の様になります。
{“dummy”:00,“id”:2,”RSSI”:”3F”,”label”:”t13”,“temp”:{“val”:17.0},”humid”:{“val”:43.23},”press”:{“val”:1012.32},”gas”:{“val”:932.39},”sensor”:”BME688″}
この部分は、どのセンサも共通なので、まとめてから削除しています。

5) link outノードは、R-MSMの入力相当になります。そこで、PDH用ソフトウェアの“sensor-module_data”タブに入力します。
具体的な修正内容は次の項で説明します。

 

4.PDHソフトウェアへの入力

LPWAのフォーマットから、R-MSMのJSON形式に変換したのちに、PDHのソフトウェアの“sensor-module_data”タブに入力します。その入力箇所に関する修正箇所に関して説明します。
① “sensor-module_data”タブにlink inノードを配置します。そして、“LPWA input”タブの最終のlink out ノードと繋げます。
② link inノードの出力を、Date/Time Formatterノードの入力に繋げます。
③ これは必須ではありません。link inノードの出力を、debugノードとtriggerノードの入力に繋げます。
④ 修正終了後、“デプロイ”を実行して完了です。

5.動作の確認

5-1. debugノードの出力確認

前項で修正した“sensor-module_data”タブのdebugノードの出力を許可し、デバッグ画面にデータが出てくるのを確認します。

5-2. ダッシュボードの確認

環境センサ“BME688”をenableにしている場合は、ダッシュボードでデータが来ているか簡単に確認できます。

5-3. JSONデータのファイル書込み実施での確認

PDHソフトウェアの“センサデータの利用”タブにあるinjectノード“rec_start”のボタン①を押すとファイルへの書込みが開始されますので、そのファイルの中身で確認できます。書込みを止める場合は、”rec_stop“のボタン②を押してください。
ファイル名は、/home/pi/Documents/R-MSM-data/R-MSM_(日時).jsonです(例:R-MSM_20230118-134451.json)。③のfileノードの下に書込みがうまくいっている場合には、ファイル名が表示されます。

6. Appendix(LPWA inputタブのJSONデータ)

上記で説明したLPWA inputのJSONデータを以下に掲載します。Node-REDのエディタ画面で読み込んでください。

[{"id":"2773a62ea935bd8a","type":"tab","label":"LPWA Input","disabled":false,"info":""},{"id":"531a5b0a5c797088","type":"comment","z":"2773a62ea935bd8a","name":"IM920sL Input","info":"","x":130,"y":120,"wires":[]},{"id":"bdf7a9c9a85a3400","type":"serial in","z":"2773a62ea935bd8a","name":"","serial":"70e0a4c8.89672c","x":150,"y":180,"wires":[["719a41a616fce813"]]},{"id":"719a41a616fce813","type":"function","z":"2773a62ea935bd8a","name":"preparation","func":"const re = \"000\"\nmsg.payload = msg.payload.replace(':',',');\nmsg.payload = msg.payload.replace(re,'');\nwhile (msg.payload.search(' ')>0){\n    msg.payload = msg.payload.replace(' ','');\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":180,"wires":[["13bca76e65c1b03f"]]},{"id":"13bca76e65c1b03f","type":"switch","z":"2773a62ea935bd8a","name":"Selection","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"t2","vt":"str"},{"t":"cont","v":"t3","vt":"str"},{"t":"cont","v":"t5","vt":"str"},{"t":"cont","v":"t10","vt":"str"},{"t":"cont","v":"t13","vt":"str"},{"t":"cont","v":"t14","vt":"str"},{"t":"cont","v":"t15","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":460,"y":180,"wires":[["060d3fb73dd1be82"],["144aadaac337afb7"],["d9b624c9c64aadc5"],["01fc6f27f34a4ab8"],["4cd322b4791eb20a"],["ffbb32361966964b"],["628196c8d4ae39ab"]]},{"id":"060d3fb73dd1be82","type":"link out","z":"2773a62ea935bd8a","name":"BME680","links":["3e6284d1d29843be"],"x":575,"y":60,"wires":[]},{"id":"144aadaac337afb7","type":"link out","z":"2773a62ea935bd8a","name":"ADS1015","links":["e2bd473f47679b75"],"x":575,"y":100,"wires":[]},{"id":"d9b624c9c64aadc5","type":"link out","z":"2773a62ea935bd8a","name":"RPR0521","links":["5a2012765ffb875c"],"x":575,"y":140,"wires":[]},{"id":"01fc6f27f34a4ab8","type":"link out","z":"2773a62ea935bd8a","name":"S11059","links":["2f28f7d.030b908","626998787f83e5cd"],"x":575,"y":180,"wires":[]},{"id":"4cd322b4791eb20a","type":"link out","z":"2773a62ea935bd8a","name":"BME688","links":["e622f225.f3c4c8","d69e1444.1203a8","7ff7b35e0d3ed938"],"x":575,"y":220,"wires":[]},{"id":"628196c8d4ae39ab","type":"link out","z":"2773a62ea935bd8a","name":"MH-Z14B","links":["89e9c564cdc3eb59"],"x":575,"y":300,"wires":[]},{"id":"1653a00d3dfc8221","type":"comment","z":"2773a62ea935bd8a","name":"BME680(t2)","info":"","x":670,"y":60,"wires":[]},{"id":"7033efb73b275f10","type":"comment","z":"2773a62ea935bd8a","name":"ADS1015(t3)","info":"","x":670,"y":100,"wires":[]},{"id":"afc44dbad03e962b","type":"comment","z":"2773a62ea935bd8a","name":"RPR0521(t5)","info":"","x":670,"y":140,"wires":[]},{"id":"471f51ca5ca0e772","type":"comment","z":"2773a62ea935bd8a","name":"S11059(t10)","info":"","x":670,"y":180,"wires":[]},{"id":"5cbcf9b191b945ff","type":"comment","z":"2773a62ea935bd8a","name":"BME688(t13)","info":"","x":670,"y":220,"wires":[]},{"id":"f9c068cc11611efb","type":"comment","z":"2773a62ea935bd8a","name":"MH-Z14B(t15)","info":"","x":670,"y":300,"wires":[]},{"id":"ffbb32361966964b","type":"link out","z":"2773a62ea935bd8a","name":"DS18B20","links":["0bbb39a6fa91d050"],"x":575,"y":260,"wires":[]},{"id":"8c1c438f4d22bc95","type":"comment","z":"2773a62ea935bd8a","name":"DS18B20(t14)","info":"","x":670,"y":260,"wires":[]},{"id":"134e2541cb0a2bb3","type":"comment","z":"2773a62ea935bd8a","name":"BME680(t2)","info":"","x":130,"y":300,"wires":[]},{"id":"3b11ccf30e1759c5","type":"link out","z":"2773a62ea935bd8a","name":"from LPWA","links":["9350fccc04180454"],"x":595,"y":640,"wires":[]},{"id":"c43ea13f0f506c2e","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,temp,humid,press,gas,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":340,"wires":[["cee614c56ff91857"]]},{"id":"3e6284d1d29843be","type":"link in","z":"2773a62ea935bd8a","name":"","links":["060d3fb73dd1be82"],"x":95,"y":340,"wires":[["c43ea13f0f506c2e"]]},{"id":"60ac516729dd904b","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,ADC0,ADC1,ADC2,ADC3,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":440,"wires":[["2b3969dc742c0d4e"]]},{"id":"e2bd473f47679b75","type":"link in","z":"2773a62ea935bd8a","name":"","links":["144aadaac337afb7","726261d7.92ef7","900b0938.3b0f2"],"x":95,"y":440,"wires":[["60ac516729dd904b"]]},{"id":"f463968051f4ab03","type":"comment","z":"2773a62ea935bd8a","name":"ADS1015(t3)","info":"","x":130,"y":400,"wires":[]},{"id":"15489c0831a3ed26","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.red = {\"val\":msg.payload.red}\nmsg.payload.green = {\"val\":msg.payload.green}\nmsg.payload.blue = {\"val\":msg.payload.blue}\nmsg.payload.IR = {\"val\":msg.payload.IR}\nmsg.payload.sensor = \"S11059\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":640,"wires":[["4ec662929a4728a4"]]},{"id":"69964120de2a1000","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,red,green,blue,IR,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":640,"wires":[["15489c0831a3ed26"]]},{"id":"626998787f83e5cd","type":"link in","z":"2773a62ea935bd8a","name":"","links":["01fc6f27f34a4ab8","829dd137.42b57","6fd3e889.1d98a8"],"x":95,"y":640,"wires":[["69964120de2a1000"]]},{"id":"25fb19f05898850a","type":"comment","z":"2773a62ea935bd8a","name":"S11059(t10)","info":"","x":130,"y":600,"wires":[]},{"id":"cee614c56ff91857","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"const tempcorrect = -10;\nmsg.payload.temp = {\"val\":msg.payload.temp,\"units\":\"deg\"}\nmsg.payload.temp.val += tempcorrect;\nmsg.payload.temp.val = parseFloat(msg.payload.temp.val.toFixed(2));\nmsg.payload.humid = {\"val\":msg.payload.humid,\"units\":\"%\"}\nmsg.payload.press = {\"val\":msg.payload.press,\"units\":\"hPa\"}\nmsg.payload.gas = {\"val\":msg.payload.gas,\"units\":\"IAQ\"}\nmsg.payload.sensor = \"BME680\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":340,"wires":[["4ec662929a4728a4"]]},{"id":"2b3969dc742c0d4e","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.ADC0 = {\"val\":msg.payload.ADC0}\nmsg.payload.ADC1 = {\"val\":msg.payload.ADC1}\nmsg.payload.ADC2 = {\"val\":msg.payload.ADC2}\nmsg.payload.ADC3 = {\"val\":msg.payload.ADC3}\nmsg.payload.sensor = \"ADS1015\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":440,"wires":[["4ec662929a4728a4"]]},{"id":"4ec662929a4728a4","type":"change","z":"2773a62ea935bd8a","name":"整理","rules":[{"t":"delete","p":"payload.dummy","pt":"msg"},{"t":"delete","p":"payload.RSSI","pt":"msg"},{"t":"delete","p":"payload.label","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":640,"wires":[["3b11ccf30e1759c5"]]},{"id":"ec5f1a1acf2c234e","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,Prox,Als,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":540,"wires":[["bc240afb7ac427e4"]]},{"id":"5a2012765ffb875c","type":"link in","z":"2773a62ea935bd8a","name":"","links":["d9b624c9c64aadc5","a034f216.122dd8","62e28348.0e02ac"],"x":95,"y":540,"wires":[["ec5f1a1acf2c234e"]]},{"id":"f6d81d86a4d9140a","type":"comment","z":"2773a62ea935bd8a","name":"RPR0521(t5)","info":"","x":130,"y":500,"wires":[]},{"id":"bc240afb7ac427e4","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.Prox = {\"val\":msg.payload.Prox}\nmsg.payload.Als = {\"val\":msg.payload.Als}\nmsg.payload.sensor = \"RPR0521\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":540,"wires":[["4ec662929a4728a4"]]},{"id":"3056eaee4db2398b","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.temp = {\"val\":msg.payload.temp}\nmsg.payload.humid = {\"val\":msg.payload.humid}\nmsg.payload.press = {\"val\":msg.payload.press}\nmsg.payload.gas = {\"val\":msg.payload.gas}\nmsg.payload.sensor = \"BME688\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":740,"wires":[["4ec662929a4728a4"]]},{"id":"80e1fbbcf3c40c4e","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,temp,humid,press,gas,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":740,"wires":[["3056eaee4db2398b"]]},{"id":"7ff7b35e0d3ed938","type":"link in","z":"2773a62ea935bd8a","name":"","links":["4cd322b4791eb20a"],"x":95,"y":740,"wires":[["80e1fbbcf3c40c4e"]]},{"id":"460474796b4074fb","type":"comment","z":"2773a62ea935bd8a","name":"BME688(t13)","info":"","x":130,"y":700,"wires":[]},{"id":"d460c49a49ac80f2","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.co2 = {\"val\":msg.payload.co2,\"units\":\"ppm\"}\nmsg.payload.sensor = \"MH-Z14B\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":940,"wires":[["4ec662929a4728a4"]]},{"id":"37c67cfcc1ed2270","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,co2,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":940,"wires":[["d460c49a49ac80f2"]]},{"id":"89e9c564cdc3eb59","type":"link in","z":"2773a62ea935bd8a","name":"","links":["628196c8d4ae39ab"],"x":95,"y":940,"wires":[["37c67cfcc1ed2270"]]},{"id":"a3c61d0e19d5bd1f","type":"comment","z":"2773a62ea935bd8a","name":"MH-Z14B(t15)","info":"","x":130,"y":1080,"wires":[]},{"id":"36f8abe9eb8863a7","type":"comment","z":"2773a62ea935bd8a","name":"DS18B20(t14)","info":"","x":130,"y":800,"wires":[]},{"id":"fdadf914c6993c81","type":"csv","z":"2773a62ea935bd8a","name":"","sep":",","hdrin":"","hdrout":"none","multi":"one","ret":"\\n","temp":"dummy,id,RSSI,label,item,temp0,temp1,datetime","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":190,"y":840,"wires":[["783758e6c1edcd12"]]},{"id":"0bbb39a6fa91d050","type":"link in","z":"2773a62ea935bd8a","name":"","links":["ffbb32361966964b"],"x":95,"y":840,"wires":[["fdadf914c6993c81"]]},{"id":"783758e6c1edcd12","type":"function","z":"2773a62ea935bd8a","name":"変換","func":"msg.payload.temp0 = {\"val\":msg.payload.temp0,\"units\":\"deg\"}\nmsg.payload.temp1 = {\"val\":msg.payload.temp1,\"units\":\"deg\"}\nmsg.payload.sensor = \"DS18B20\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":840,"wires":[["4ec662929a4728a4"]]},{"id":"4c268af428c1715a","type":"comment","z":"2773a62ea935bd8a","name":"JSON形式への変換","info":"","x":150,"y":260,"wires":[]},{"id":"115d1ea2.f0f319","type":"comment","z":"2773a62ea935bd8a","name":"タブ \"sensor-module_data” へ","info":"","x":590,"y":600,"wires":[]},{"id":"7c190d5b.2878dc","type":"comment","z":"2773a62ea935bd8a","name":"Copyright","info":"// 著作権と条件について/ Copyright, Terms and Conditions\n// English follows \n/***\n本研究は、内閣府(CAO)、省庁横断的戦略的イノベーション創造推進事業(SIP)の「フィジカル空間デジタルデータ処理基盤研究開発計画」(資金提供:NEDO)の支援を受けています。\n \nCopyright (c) 2022年 , 立命館大学 全著作権を所有\nBSD-3-Clause\n\nソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。\n1. ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。\n2. バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。\n3. 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、学校法人立命館の名前またはコントリビューターの名前を使用してはならない。\n\n本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。 \n***/\n/***\nThis work was supported by the Cabinet Office (CAO), Cross-ministerial Strategic Innovation Promotion Program (SIP), “Physical space digital data processing infrastructure research and development plan” (funding agency: NEDO).\n\nCopyright © 2022 The Ritsumeikan Trust All rights reserved.\nBSD-3-Clause\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n3. Neither the name of the Ritsumeikan Trust nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n***/","x":640,"y":420,"wires":[]},{"id":"70e0a4c8.89672c","type":"serial-port","serialport":"/dev/ttyUSB0","serialbaud":"19200","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]

 

著作権と条件について/ Copyright, Terms and Conditions

English follows

本研究は、内閣府(CAO)、省庁横断的戦略的イノベーション創造推進事業(SIP)の「フィジカル空間デジタルデータ処理基盤研究開発計画」(資金提供:NEDO)の支援を受けています。

Copyright (c) 2022年 , 立命館大学 全著作権を所有
BSD-3-Clause

ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
1. ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
2. バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
3. 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、学校法人立命館の名前またはコントリビューターの名前を使用してはならない。

本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。

This work was supported by the Cabinet Office (CAO), Cross-ministerial Strategic Innovation Promotion Program (SIP), “Physical space digital data processing infrastructure research and development plan” (funding agency: NEDO).

Copyright © 2022 The Ritsumeikan Trust All rights reserved.
BSD-3-Clause

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the Ritsumeikan Trust nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.