TinkerForge

概要

TinkerForge は一般的なセンサを提供し、環境のモニタリングから工場の自動化までさまざまなユースケースに対応します。
Things Cloud とTinkerForgeを共に利用することで、

  • 既製のハードウェア製品を互いにつなぎ合うだけで完全なM2Mのユースケースを組み立てることができます。設定は不要です -- Things Cloud のJava エージェントによって部品同士が自動的にお互いを発見し、クラウドにつながります。
  • センサデータやリモートコントロール可能なデバイスがすぐに見える化されます。

インストール

Things Cloud のJavaエージェントはTinkerForgeの製品を箱から出したらすぐに使えるようサポートしています。
Raspberry Pi上でのJavaエージェントのインストールおよび起動についてはRaspberry Piのセクションを参照してください。

Raspberry Pi と TinkerForge

TinkerForge製品を Things Cloud と共に利用する

基本的な使用法

Things Cloud のページをWebブラウザで開き、"All devices"へ移動し、Javaエージェントが起動しているデバイスを選択します。
"Child devices"タブを選択すると接続しているTinkerForgeデバイスのリストが表示されます。

標準では、TinkerForge製品は接続している機器の名前(スクリーンショット中の"RaspPi BCM2708 00000000e2f5ad4d")、製品のタイプ("Temperature")、製品のシリアルナンバー("dGW")を利用して名前が付けられます。
この名前は"Info"タブで編集が可能です。

リモート設定

Brickletsはc8y_Configurationのオペレーションを利用してリモートから設定することが可能です。
UIのこの機能にアクセスするには、エージェントを実行しているデバイスに移動します。
"control"タブの中にConfigurationパネルがあり、クライアント側で定義されたさまざまな変更可能オプションが含まれています。

気圧、湿度、環境光、水分、距離、電圧、電流、温度のbricklets

Barometer Humidity Ambient Light Moisture Distance IR Voltage/Current Current Temperatur

センサデータはセンサの"Measurements"タブをクリックすることで閲覧可能です。

データは Things Cloud エージェントによって定期的に収集されます。
収集周期は"Configuration"パネルで設定が可能です。
例えば、"c8y.light.interval=5000"は光センサに対して5,000ミリ秒ごとに問い合わせを行うことを意味します。

PTC bricklet

PTC bricklet

定期収集の周期に加え、"c8y.ptc.wiremode"オプションを利用してPTC brickletのワイヤモードを設定することもできます。 ワイヤモードについてはTinkerForge online documentationをご覧ください。

LCDディスプレイbricklet

LCD 20x4 Display Bricklet

Things Cloud からディスプレイを操作するには、ディスプレイbrickletの"Control"タブをクリックします。 "Relay"ボタンはバックライトのon/offを操作します。"Send Message"フィールドはディスプレイに表示するテキストメッセージを送ります。

ディスプレイは底面に4つのボタンを持っています。これらのボタンを操作すると、 Things Cloud 上の"Events"タブで表示されるイベントを送信されます。
例えば、このイベントをCEL statementを使って行うことも可能で、このイベントは"c8y_ButtonPressedEvent"というタイプになります。ボタンの番号は、イベントのテキストの一部です。

4x7 セグメントディスプレイ bricklet

4x7 Segment Display bricklet

4x7 セグメントディスプレイの実装はLCDディスプレイbrickletと似ている。
加えて、"Configuration"パネルの"c8y.4x7segmentdisplay.brightness"オプション(最大値: 7, 最小値: 1, デフォルト: 4)を利用することで、ディスプレイの明度を設定することもできます。

リモートスイッチ bricklet

Remote Switch bricklet

設定

リモートスイッチbrickletはリモートのソケットやランプなどをon/offさせるために使用することができます。
アドレッシングには3つのタイプをサポートする。

  • Type Aアドレッシング: 事前に定義されたtypeAデバイスをリモートスイッチbrickletに追加するためには、"Configuration"パネルで以下の行を追加する。

      c8y.remoteswitch.<device name>.type=A
      c8y.remoteswitch.<device name>.houseCode=<house code>
      c8y.remoteswitch.<device name>.receiverCode=<receiver code>    
    

    Where:
    <device name> - デバイス名(e.g. socket1, lamp1, etc.)
    <house code> - 5-bit integer (0 to 31)
    <receiver code> - 5-bit integer (0 to 31)

  • Type Bアドレッシング: 事前に定義されたtypeBデバイスをリモートスイッチbrickletに追加するためには、"Configuration"パネルで以下の行を追加する。

      c8y.remoteswitch.<device name>.type=B
      c8y.remoteswitch.<device name>.address=<address>
      c8y.remoteswitch.<device name>.unit=<unit>    
    

    Where:
    <device name> - デバイス名(e.g. socket1, lamp1, etc.).
    <address> - 16-bit integer (0 to 65534)
    <unit> - 4-bit integer (0 to 15)

  • Type Cアドレッシング: 事前に定義されたtypeCデバイスをリモートスイッチbrickletに追加するためには、"Configuration"パネルで以下の行を追加する。

      c8y.remoteswitch.<device name>.type=C
      c8y.remoteswitch.<device name>.systemCode=<system code>
      c8y.remoteswitch.<device name>.deviceCode=<device code>    
    

    Where:
    <device name> - デバイス名(e.g. socket1, lamp1, etc.).
    <system code> - 4-bit character (A to P)
    <device code> - 4-bit integer (0 to 15)

リモートスイッチアドレッシングの詳細についてはTinkerForge documentationを参照してください。

制御

デバイスはc8y_RelayArray操作を使用して、アルファベット順にオン/オフを切り替えることができます。 "OPEN"はoff、"CLOSED"はonを意味します。

例: リモートスイッチbricklet上の以下の操作

"c8y_RelayArray" : [
    "OPEN",
    "CLOSED"
]

は以下の設定となり、

c8y.remotebricklet.device2.type=B
c8y.remotebricklet.device2.address=31337
c8y.remotebricklet.device2.unit=7
c8y.remotebricklet.device1.type=C
c8y.remotebricklet.device1.systemCode=B
c8y.remotebricklet.device1.deviceCode=13

"device2"をoffにして"device1"をonにします。

デュアルリレー Bricklet

Dual Relay Bricklet

デュアルリレーbrickletは2つのリレーで構成されます。
各リレーは3つのターミナルを持ち、真ん中のターミナルはリレーの状態に応じて左右のターミナルと電気的に接続されます。

制御

デュアルリレーbrickletはc8y_RelayArray操作を用いてスイッチングすることができます。

"c8y_RelayArray" : [
    "OPEN",
    "CLOSED"
]

例えば、上記の操作はリレー1の状態を"OPEN"にし、リレー2の状態を"CLOSED"にします。

IO16 bricklet

IO16 Bricklet

設定

IO16 brickletは8-pinのポートが2つで構成されています。 このbrickletは"Configuration"パネルで設定ができます。 設定可能なオプションは以下の通りです。

c8y.io16.porta.direction=<direction>
c8y.io16.porta.value=<value>
c8y.io16.portb.direction=<direction>
c8y.io16.portb.value=<value>

Where:

  • <direction> は8-bit integer(0 to 255) のdirection maskです。 0 - output, 1 - input.
  • <value> は8-bit integer(0 to 255) のvalue maskで、それぞれ入力/出力のタイプを示します。ピンが出力として設定されている場合、0と1は単に論理値になります。
    ピンが入力として設定されている場合、1はプルアップ入力を意味し、0は標準入力となります。

例えば、Bポートのdirectionを192(11000000)、値を88(01011000)に設定した場合、以下を意味します。

  • B3, B4ピンは論理値1(3,3/5 V)の出力として設定されます。
  • B0, B1, B2, B5ピンは論理値0(0V)の出力として設定されます。
  • B6ピンはプルアップ入力として設定されます。
  • B7は標準入力として設定されます。

制御

IO16出力は"c8y_RelayArray"操作を用いてスイッチングすることができます。

"c8y_RelayArray" : [
    "OPEN",
    "OPEN",
    "CLOSED",
    "OPEN"
]

この操作はA0からB7のピンで4つの出力を切り替えていきます。

赤外線/超音波距離測定briclets

Distance IR Distance US

赤外線/超音波距離測定bricletsはセンサデータを提供するだけでなく、イベントを送信します。
ディスプレイ上のボタンを押下するのと同様に、距離測定brickletsのセンサを中断するとイベントを送信します。 イベントは距離測定brickletの"Events"タブで確認することができ、イベントを起点としてCELを実行することもできます。イベントのタイプは"c8y_EntranceEvent"です。 加えて、以下の設定オプションが提供されます。

  • c8y.distanceir.eventSlackTime, c8y.distanceus.eventSlackTime - イベント間の最小時間を設定します。単位はmsです。デフォルト値は10000msです。
  • c8y.distanceir.eventTreshold - イベントのトリガを引く最小距離を設定します。単位はmmです。デフォルト値は400mmです。
  • c8y.distanceus.eventTreshold - イベントのトリガを引く最小距離を設定します。単位は%です。デフォルト値は25%です。

補足: 超音波距離測定brickletは距離を%で測定し、0%は概ね2cmを意味し、100%は概ね400cmを意味します。
これは測定した距離の値と実際の距離には5Vの供給電圧の実際の値との間に関係があり(供給電圧の分散は測定した距離の値の分散につながる)、その関係は非線形となる(近距離では解像度が大きくなる)ためです。

GPS bricklet

GPS Bricklet

GPS brickletは現在位置を報告し、デバイスが移動すると位置情報をアップデートします。
現在位置はデバイスマネージメントの中で地図上に表示され、移動履歴が可視化されます。

TinkerForge driverを追加したい

TinkerForge製品のドライバのソースコードは Cumulocity 社の https://bitbucket.org/m2m/cumulocity-examples の java-agent/tinkerforge-driver で一般に公開されています。