Flowサンプル : 温度/湿度

このFlowは疑似的に温度・湿度のデータを生成して、LoopEdge上で簡易に可視化(チャートグラフやゲージ)させるサンプルです。

各ノードの説明

(1)Start Temp/Humi(inject node
一定間隔で当該フローを実行するためのノードです。
手動で実行したい場合や一定間隔で当該フローを実行したい場合に使用するノードですので、PLC機器からのデータが接続されるような場合は不要です。
15秒間隔で実行するように設定しています。

(2)Create:Temp/Humi(funcion node
Demo動作用の温度/湿度のダミーデータを作成するためのノードです。
PLC機器からのデータが接続されるような場合は不要です。
温度と湿度のダミーデータを作成するコードを記述しています。

(3)Chart Graph(chart node
Create:Temp/Humiノードにて作成した温度のダミーデータをチャートグラフ表示させるためのノードです。チャートグラフを表示するダッシュボードの指定やグラフの種類などを設定しています。

(4)Gauge(gauge node
Create:Temp/Humiノードにて作成した湿度のダミーデータをゲージ表示させるためのノードです。ゲージを表示するダッシュボードの指定やゲージの種類などを設定しています。

(5)Dump:Temp/Humi(debug node
受け取ったデータをdebug tabに出力します。

フロー設定
[{"id":"1278b126.530fbf","type":"tab","label":"Demo : Temp/Humi"},{"id":"29c1c13f.71220e","type":"inject","z":"1278b126.530fbf","name":"Start Temp/Humi","topic":"","payload":"","payloadType":"date","repeat":"15","crontab":"","once":true,"x":120,"y":140,"wires":[["804023fb.bd1348"]]},{"id":"804023fb.bd1348","type":"function","z":"1278b126.530fbf","name":"Create : Temp/Humi","func":"// temperature\ntemp_max = 28;\ntemp_min = 26;\ntemp = Math.random() * (temp_max - temp_min) + temp_min;\nmsg.payload = Math.floor(temp * 100) / 100;\n\n// humidity\nvar humidt = {};\nhumi_max = 50;\nhumi_min = 38;\nhumi = Math.random() * (humi_max - humi_min) + humi_min; \nhumidt.payload = Math.floor(humi * 100) / 100;\n\nreturn [msg, humidt];\n","outputs":"2","noerr":0,"x":225,"y":140,"wires":[["b6beacab.133fd8","3bf34f22.058ac"],["3795e938.d4ca66","3bf34f22.058ac"]]},{"id":"b6beacab.133fd8","type":"ui_chart","z":"1278b126.530fbf","name":"Chart Graph","group":"18784aaf.af48dd","order":0,"width":"6","height":"6","label":"Temperature (Sample)","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"Temperature (Sample)","dot":true,"ymin":"20","ymax":"40","removeOlder":"10","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#31b0cc","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":true,"x":340,"y":80,"wires":[[],[]]},{"id":"3bf34f22.058ac","type":"debug","z":"1278b126.530fbf","name":"Dump : Temp/Humi","active":true,"console":"false","complete":"payload","x":440,"y":140,"wires":[]},{"id":"3795e938.d4ca66","type":"ui_gauge","z":"1278b126.530fbf","name":"Gauge ","group":"18784aaf.af48dd","order":0,"width":"6","height":"6","gtype":"gage","title":"Humidity (Sample)","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":340,"y":200,"wires":[]},{"id":"18784aaf.af48dd","type":"ui_group","z":"","name":"Dashboard Group","tab":"e0eeb339.b8c5c8","order":1,"disp":true,"width":"12","collapse":false},{"id":"e0eeb339.b8c5c8","type":"ui_tab","z":"","name":"Sample Dashboard","icon":"dashboard","order":1}]

LoopCloud FAQ


Q: LoopCloudをどうすれば試す事が出来ますか?

 こちらのリンクからLoopCloudを使い始めることができます。


Q: LoopEdgeを使わずにLoopCloudを使う事は出来ますか?

 はい、できます。LoopEdgeはLoopCloudのクライアントであり、MQTT / LWM2M / HTTP(S)経由でデータを送信できるデバイス(またはスクリプト)であれば、LoopCloudで使用できます。また、HTTP(SOAP / REST)サービスからデータを要求するデバイスをポーリングします。


Q: デバイスのINFOタブに製造元やモデル番号などのデバイス属性が表示されないのはなぜですか?

 これらの属性は、デバイスによって送信されます。この目的のために特別なOMAオブジェクトが指定されています。また、ユーザーはDevice Detailsフォームでそれらを更新することもできます。


Q: デバイスが接続していない理由は何ですか?

 クライアント側の接続パラメータが間違っているか、又はファイアウォールの問題です。


Q: [RAW]タブでデバイスデータを確認できますが、[EXPLORE]タブに表示されないのはなぜですか?

 LoopCloudに送信されるデータは、 OMNA Lightweight M2M (LWM2M) 形式で受信した場合にメッセージを解析し[EXPLORE]タブで表示されます。


Q: データをどのように視覚化出来ますか?

 LoopInsightsを利用して可視化が可能です。


Q: Data Enricherを使用する利点は何ですか?

 レガシーまたはモダンなデータ構造のリアルタイムデータを、数回のクリックで標準化されたデータ構造に変換します。 Loop DataEnricherはLoop Cloudと緊密に統合されており、古いデバイスを最新のプラットフォームに移行することができます。


Q: Key-Value機能は何をしていますか?

 Key-ValueはPOLLモデルで使用されます。これは、Webサービスが1つで、それが異なるパラメータで複数回呼び出される場合です。この場合、値をKey-Valueに入れ、値の代わりにキーを使用します。


 Q: LoopCloudは別なクラウドサービスと連携が出来ますか?

 他クラウドサービスと連携は可能ですが、LoopCloudはクラウドサービスとなっておりますので、お客様専用の環境を作成する必要がございます。そのため、別途費用が発生します。


Q: LoopCloudに登録されたデータを後から変更することは可能ですか?

 後から変更することは出来ません。


Q: LoopCloudはAPIを利用する事が可能ですか?

 可能です。APIを使ってLoopCloudに登録されたデータを読み取ることが可能です。APIはこちらから利用が出来ます。


Q: Loop License Managerの使い方を教えてください。

 こちらの機能はLitmusAutomationパートナー向けの機能となりますのでお客様はご利用出来ません。


Q: BILLINGから料金プランを変更することが可能ですか?

 料金プランの変更を行う際は、弊社サポート窓口までご連絡ください。


Q: トライアルではどのくらいの容量を保存することが可能ですか?

 1デバイスあたり75MBまでとなります。超過した場合は古いデータから削除されます。また、保存期間は1年となります。


 

LoopEdge FAQ


Q: LoopEdgeにアクセスするには?

 LoopEdgeと同じネットワーク上のブラウザを介して接続して、LoopEdge管理コンソールへアクセスします。ブラウザのURLにIPアドレスを入力します。IPアドレスはLoopEdgeデバイスにディスプレイを接続させることによって確認が可能です。
 (例:https :  //192.168.1.10)


Q: LoopCloudを使わずにLoopEdgeを使用できますか?

 LoopCloudを使わずにLoopEdgeを利用することが可能です。デバイスからデータを収集し、データを視覚化するためにLoopCloudを必ず利用する必要はござません。


Q: LoopEdgeをどうすれば試す事ができますか?

 貸出キットをご用意しておりますので弊社までご連絡ください。
 https://litmus.jig-saw.com/contact/


Q: どのようなデバイスとドライバがサポートされていますか?

 こちらからサポートされているコネクタ、デバイス、およびドライバをご確認ください。


Q: LoopFlowはプログラミング経験なしでも簡単に使えますか?

 プログラミング経験が無い方は最初は難しく感じられると存じます。しかし、ブラウザベースのUIを繋げてフロー(処理の流れ)を作ることができますので、プログラミング初心者の方でも短時間で取得が出来るかと存じます。


Q: LoopEdgeをリモートから操作することは可能ですか?

 リモート操作は提供しておりません。


Q: LoopEdgeがインストールされているOSを操作することはできますか?

 LoopEdgeはOS含めた形で提供しており、OSへの操作は禁止となっております。


Q: LoopEdgeはAndroid OSにインストールすることが可能ですか?

 対応しておりません。


Q: LoopEdgeはWindowsにインストールすることが可能ですか?

 可能ですが、特殊な要件がない限り、LinuxOSでの提供となります。


Q: 仮想環境にLoopEdgeをインストールすることはできますか?

 仮想環境での利用はサポート外となり、提供しておりません。


Q: LoopEdgeとPLCの接続上限はありますか?

 契約するライセンスによって上限は異なります。また、LoopEdgeをインストールするゲートウェイ機器のスペックによって異なります。


Q: ライセンス形態を教えてください。

 弊社営業までご連絡ください。 https://litmus.jig-saw.com/contact/


Q: LoopEdgeを再インストールしたい。手順はどこにありますか?

 弊社サポート窓口までご連絡ください。※ご契約者のみ


Q: LoopEdgeの設定情報をバックアップできますか?

 出来ます。マーケットプレイス上のアプリケーションはバックアップの対象外となりますのでご了承ください。


Q: LoopEdgeへ接続が可能なセンサーを教えてください。

 TCP/IPやUSB、シリアルで接続可能なセンサーでしたら接続可能ですが、センサー独自のソフトウェアが必要なものに関してはLoopEdge上にインストールは出来ませんので、データの変換処理作成が必要な場合や接続ができない場合がございます。


Q: 外部(インターネット)からLoopFlowの処理を実行することが可能ですか?

 LoopCloudを利用して実行させることが可能です。


Q: センサーから取得した値をデータベースに登録したい。どのような方法で出来ますか?

 LoopFlowを使ってデータベースへ値を送信することが可能です。例えばMySQLですと、MySQLのノードを利用して外部(LoopEdge外)のデータベースサーバへ接続することが可能です。


Q: LoopEdgeはどのくらいの周期でPLCから値を取ることが可能ですか?

 秒単位でポーリングを指定することが出来ます。


Q: LoopEdgeは日本語表示できますか?

 現時点では日本語化されておりませんが、今後日本語化の予定はございます。


Q: LoopEdgeからLoopCloudへの通信要件を教えてください。

 LoopEdgeからLoopCloudへ以下の通信が発生ます。
 サービス名:MQTT
 ポート:1883、8883
 送信先:mqtt.litmus.pro


 

機能を追加

LoopFlowは、Node-RED Libraryにあるノードをインストールすることで、機能を追加できます。

LoopFlowの右上メニューから「Manage palette」をクリックしてください。

「search modules」に追加したい機能のノード名を入力します。

検索結果から、追加したいノードの「install」をクリックしてください。

追加したノードがLoopFlowに表示されます。

Datahubノードの使い方

Datahubノードは、DeviceHubで取得したデータの加工、任意のタイミングのPLCからのデータ取得、PLCへの任意のデータの書き込み、DataHubへの任意のデータ送信を行うことができます。

DeviceHubのデータ取得 (生データ)

DataHubのTagにあるRAW Topicを指定します。RAW Topicのコピーアイコンをクリックし、Datahub SubscriptionノードのTopicに貼り付けます。msg.payloadにJSON文字列が渡されます。

DevieHubのデータ取得 (標準フォーマット)

DataHubのTagにあるIPSO Topicを指定します。この形式は、直接LoopCloudに送信可能なフォーマットです。あらかじめOMAの割り当てを行う必要があります。IPSO topicのコピーアイコンをクリックし、Datahub SubscriptionノードのTopicに貼り付けます。msg.payloadにJSON文字列が渡されます。

任意のタイミングのデータ取得実行

DataHubのTagにあるRAW Topicの一部を変更します。rawの部分をpollonceに書き換え、Datahub PublishノードのTopicに貼り付けます。任意の値を渡すとデータ取得が実行されます。

書き換え前

devicehub.raw.XXX.YYY

書き換え後

datahub.pollonce.XXX.YYY

PLCにデータを書き込む方法

書き込み可能なレジスタに限ります。DataHubのTagにあるRAW Topicの一部を変更します。rawの部分をwriteに書き換え、Datahub PublishノードのTopicに貼り付けます。書き込むデータは、JSON文字列をmsg.payloadに渡します。

書き換え前

devicehub.raw.XXX.YYY

書き換え後

datahub.write.XXX.YYY

書き込むJSON文字列

{"value": <書き込む値>}

任意のデータをDataHubに渡す方法

Datahubにデータを渡すことができます。Datahub PublishノードのTopicに任意の半角英数字を指定します。書き込むデータは、msg.payloadに指定します。指定できるデータは文字列、数値、真偽値です。

Datahub PublishノードのTopicは、DataHubのTopicで指定できます。

Topicをまとめて指定する方法

Datahub SubscriptionノードのTopicをまとめて指定できます。これにより、同じ処理の場合は、ひとつのノードの指定で済みます。Topic名の一部に記号「>」を指定します。

例) すべてのデータを取得する場合

>

例) Deviceに関連するすべてのTagを取得する場合

devicehub.raw.XXX.>

例) IPSO Topicすべて指定する場合

devicehub.standard.>

Flowの使い方

最初の操作

ノードの中から”inject”を選択して右のFlowにドラッグ&ドロップします。

ドロップしたノードをダブルクリックすると、ノードの設定を行えます。この設定では、timestamp(エポックミリ秒)を次のノードに送ります。「Done」をクリックすると、ノードの設定が完了します。

ノードの中から”debug”を選択して右のFlowにドラッグ&ドロップします。

配置した2つのノードにある灰色のコネクタをドラッグして、2つのノードをつなぎます。

右上のSaveをクリックします。クリックするまで、フローは動作しません

  

timestampの左側をクリックすると、debugウィンドウにタイムスタンプが表示されます。

右側の「+」をクリックすると、複数のフローを作成できます。また、タブをクリックすると、Flowの名前を変更することや削除できます。

変数

changeノードですべての変数を操作できます。変数名は、任意のアルファベットが使えます。

  • msg
    次のノードまで有効な変数です。すべてのノードはmsg.payloadでデータのやり取りします。
  • flow
    フロー内に存在するノードまで有効な変数です。
  • global
    LoopFlow全体のノードで有効な変数です。

通常はmsgを使用します。globalはLoopFlow全体に影響を与えるため注意して使用してください。

データ型

JavaScriptで使えるすべてのデータ型を使うことができます。

条件分岐

switchノードを使用すると、条件分岐をさせることができます。1の出力は1番上のコネクタ、2の出力は上から2番目のコネクタ、3の出力は上から3番目のコネクタです。

この例では3つの条件を設定していますが、任意に増やすことができます。

ダッシュボード

LoopFlow上で簡易的な可視化を行うことができます。msg.payloadに可視化したいデータを渡します。

  • chart
    折れ線グラフ、棒グラフ、円グラフを表示します
  • gauge
    最新値を表示します

ダッシュボードの設定を行うため、鉛筆アイコンをクリックしてください。

Group(画面の配置)の設定を行います。さらに、Tabの鉛筆アイコンをクリックしてください。

ここでは、タブ(全体の画面)の名前を設定し、Addをクリックします。Groupの設定画面に戻るので、GroupのAddをクリックし、chartのDoneをクリックします。

Saveを押した後に、リンクアイコンをクリックすると、ダッシュボードの画面に遷移します。

このダッシュボードは簡易的なため、LoopFlowのSaveやGWの再起動で、描画されている値がリセットされます。

フロー設定例

インポート方法

サンプルをお使いのFlowにインポートできます。右上のメニューからClipboardをクリックしてください。

フロー設定をpaste nodes hereに貼付け、Importをクリックしてください。

設定例1

リアルタイムのグラフ表示をします。任意のdebugを数回クリックしてください。debugをクリックした順番にグラフが表示されます。

※ダッシュボードのTabとGroupの設定が必要です。

フロー設定
[{"id":"d2c71857.558998","type":"inject","z":"cbcf0338.b17e1","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"x":600,"y":120,"wires":[["828a22c1.ac819"]]},{"id":"fb9bf5d7.1f5818","type":"inject","z":"cbcf0338.b17e1","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"x":600,"y":200,"wires":[["828a22c1.ac819"]]},{"id":"1d5c2de7.bae852","type":"inject","z":"cbcf0338.b17e1","name":"","topic":"","payload":"8","payloadType":"num","repeat":"","crontab":"","once":false,"x":600,"y":280,"wires":[["828a22c1.ac819"]]},{"id":"828a22c1.ac819","type":"ui_chart","z":"cbcf0338.b17e1","name":"","group":"b9675990.abaec8","order":0,"width":0,"height":0,"label":"chart","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":720,"y":200,"wires":[[],[]]},{"id":"b9675990.abaec8","type":"ui_group","z":"","name":"Default","tab":"67b10924.072d18","disp":true,"width":"6","collapse":false},{"id":"67b10924.072d18","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]

 設定例2

8.8.8.8にpingコマンドを実行し、標準出力を受け取ります。

フロー設定
 
[{"id":"1b5f9c3f.9bb5e4","type":"inject","z":"cbcf0338.b17e1","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":120,"y":620,"wires":[["2bb77943.21ac56"]]},{"id":"a5377dcf.9eacb","type":"debug","z":"cbcf0338.b17e1","name":"","active":true,"console":"false","complete":"false","x":320,"y":620,"wires":[]},{"id":"2bb77943.21ac56","type":"exec","z":"cbcf0338.b17e1","command":"ping -c 1 8.8.8.8","addpay":false,"append":"","useSpawn":"","timer":"","name":"","x":220,"y":620,"wires":[["a5377dcf.9eacb"],[],[]]}]

設定例3

www.jig-saw.comにHTTPリクエストを行い、ページのcopyrightを取得します。

フロー設定
[{"id":"a4cac8e3.18f9e8","type":"debug","z":"cbcf0338.b17e1","name":"","active":true,"console":"false","complete":"false","x":400,"y":200,"wires":[]},{"id":"df8f35d.c0840c8","type":"inject","z":"cbcf0338.b17e1","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":100,"y":200,"wires":[["b6be1a7.d62e0e8"]]},{"id":"4de91cdb.51b374","type":"html","z":"cbcf0338.b17e1","name":"","tag":".copyright","ret":"html","as":"single","x":305,"y":200,"wires":[["a4cac8e3.18f9e8"]]},{"id":"b6be1a7.d62e0e8","type":"http request","z":"cbcf0338.b17e1","name":"","method":"GET","ret":"txt","url":"https://www.jig-saw.com/","tls":"","x":205,"y":200,"wires":[["4de91cdb.51b374"]]}]

 

LoopCloudアカウント作成

https://litmus.pro にアクセスし、アカウントの登録を行います。はじめに、Registerをクリックします。

Usernameは、システムの中で一意にする必要があり、半角英数字で入力します。First nameとLast nameはあなたのお名前をローマ字で入力します。Emailはお使いのメールアドレスを入力してください。PasswordとConfirm passwordは任意のパスワードを設定してください。すべて入力後に、Registerをクリックしてください。

上で登録したメールアドレスに、no-reply@security.litmus.cloudからメールが届きます。メールの中にあるリンクを上のRegisterをクリックしてから5分以内にクリックすると、アカウントが作成されます。時間内にクリックが出来なかった場合は再度メールを送信することが可能です。

 

 

LoopEdgeログイン

LoopEdgeへログインする際はまず、IPアドレスを知る必要があります。IPアドレスはLoopEdgeがインストールされているゲートウェイ機器にディスプレイを接続してIPアドレスを確認します。

下記の例ですと https://10.0.3.15/ でアクセスが可能です。アカウント情報は納品時にお知らせいたします。

 

LoopEdgeは同じネットワーク上であれば、インターネット接続が利用できない場合でもアクセスできます。サポートするブラウザーは以下のとおりです。

Google Chrome シークレットウィンドウを推奨
Mozilla Firefox プライベートウィンドウを推奨
Apple Safari プライベートウィンドウを推奨 

※同じアカウントで連続して7回失敗した場合は5分間アカウントがロックされます。

ノード一覧

標準のノードついて説明します。

LitmusAutomation

  • Datahub Publish
    Datahubにデータを送信します。
  • Datahub Subscribe
    Datahubからデータを受け取ります。

input

  • inject
    タイムスタンプまたは、ユーザ定義のパラメータを次のノードに渡します。定義され間隔または、手動で行うこともできます。
  • catch
    フローが引き起こす可能性のあるエラーを受け取るために使用します。
  • status
    ノードのステータス情報を共有できます。例えば、MQTTノードは、接続されているかどうかを示すことができます。
  • link
    任意のフロー間で仮想ワイヤを作成します。outputにあるlinkから仮想的に接続できます。
  • mqtt
    外部のMQTTブローカーに接続し、指定したトピックのメッセージを受信するために使用します。
  • http
    webサーバーとして機能します。必ずoutputにあるhttpノードと一緒に使用します。セキュリティ上、URLに指定できるのは「/」のみです。
    http://{GWのIPアドレス}/flows/api/で待ち受けます。
  • websocket
    websocket接続を行いメッセージを受信します。
  • tcp
    TCPポートに接続や、特定のポート上で任意のTCP要求を受けることができます。
  • udp
    UDPポートに接続や、送信されるメッセージを受信するために使用します。
  • serial
    GWに接続されたシリアルポートからメッセージを受信するために使用します。

output

  • debug
    このノードに受信されるメッセージをリアルタイムにデバックペインに表示するために使用します。
  • link
    任意のフローに仮想的にワイヤを接続します。inoutのlinkに接続できます。
  • mqtt
    外部のMQTTブローカーに指定したトピックのメッセージを送信します。
  • http
    inputのhttpで受け付けたリクエストに対してレスポンスを返します。
  • websocket
    websocket接続を行いメッセージを送信します。
  • tcp
    接続済みのTCPポートにメッセージを送信します。
  • udp
    updポートにメッセージを送信します。
  • serial
    GWに接続されたシリアルポートにメッセージを送信します。

function                

  • function
    JavaScriptで任意のコードを記述できます。(JavaScriptを理解している方向け)
  • template
    指定したパラメータに文字列を書き込みます
  • delay
    特定の時間または、ランダムな時間だけメッセージを遅延させます。また、1秒あたり20メッセージなどの頻度を変更するためにも使用できます。
  • trigger
    入力メッセージ受信時と時間経過時で特定のメッセージを送信できます。ウォッチドッグタイマーとして機能します。
  • comment
    フロー上にコメントを記述するために使用します
  • http
    HTTPリクエストをサーバーに送信し、応答を待ちます。
  • tcp
    指定のTCPポートでサーバーに送信し、応答を待ちます。応答を待たないノードがinputやoutputにあるtcpノードになります。
  • switch
    条件に基づいて、メッセージを分岐します。
  • change
    メッセージのプロパティを変更、削除、追加を行います。
  • range
    入力メッセージの数値を拡大・縮小に使用します。例として、温度の値0~5Vを0~100℃にする場合などに用います。
  • split
     メッセージを指定文字列で分割し、それぞれメッセージとし出力します。例として、1個のメッセージ「a,b,c」を「,」で分割すると、「a」、「b」、「c」の3個のメッセージが作られます。
  • join
    splitで分割したメッセージを1個のメッセージに戻します。
  • csv
    CSVのメッセージを、JavaScriptオブジェクトに変換します。また、JavaScriptオブジェクトの場合は、CSV文字列に変換します。
  • html
    HTMLのメッセージから、要素を抽出します。HTMLを解析し、一致する要素の配列を返します。
  • json
    JSONのメッセージを、JavaScriptオブジェクトに変換します。また、JavaScriptオブジェクトの場合は、JSON文字列に変換します。
  • xml
    XMLのメッセージを、JavaScriptオブジェクトに変換します。また、JavaScriptオブジェクトの場合は、XML文字列に変換します。
  • rbe
    2つの連続した入力が、前の入力と現在の入力と異なるときにメッセージを生成します。

social

  • e-mail in
    メールサーバーに接続し、新しいメールを受信します。
  • e-mail
    メールサーバーに接続し、メールを送信します。

storage

  • tail
    この機能は、LinuxおよびMACで動作します。Windowsでは動作しません。設定されたファイルを監視し、新たに追加された文字列をメッセージとして生成します。
  • file in
    指定したファイルの内容を読み取ります。
  • file out
    指定したファイルにデータを書き込みます。

advanced

  • watch
    指定したファイルの変更を監視します。
  • exec
    指定のコマンドを実行します。システムに影響があるコマンドがあるため、取扱に注意して下さい。