25

Raspberry PiとActiveMQで作るセンサーライト

Embed Size (px)

DESCRIPTION

Japan JBoss User Group 2013/8/30 勉強会 灼熱のJBoss 発表資料 https://community.jboss.org/groups/japan-jbug

Citation preview

Page 1: Raspberry PiとActiveMQで作るセンサーライト
Page 2: Raspberry PiとActiveMQで作るセンサーライト

富豪的センサーライトを作ってみた

小西 高之@leather_sole

Page 3: Raspberry PiとActiveMQで作るセンサーライト

光センサー

LED

Page 4: Raspberry PiとActiveMQで作るセンサーライト

準備したもの

• Raspberry Pi ( 3台以上 )• 光センサー• LED• その他いろいろ

Page 5: Raspberry PiとActiveMQで作るセンサーライト

Raspberry Pi って知ってますか?

Page 6: Raspberry PiとActiveMQで作るセンサーライト
Page 7: Raspberry PiとActiveMQで作るセンサーライト

Raspberry Pi :特徴

• Linuxが動く– Javaも動く

• 安価• フィジカルコンピューティング向き

– GPIO– I2C

Page 8: Raspberry PiとActiveMQで作るセンサーライト

構成

Page 9: Raspberry PiとActiveMQで作るセンサーライト

ActiveMQ ( Message Broker )

• Protocols– OpenWire– AMQP– STOMP– REST– etc.

Page 10: Raspberry PiとActiveMQで作るセンサーライト

ActiveMQ ( Message Broker )

<transportConnectors>

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616”/>

<transportConnector name="amqp" uri="amqp://0.0.0.0:5672”/>

<transportConnector name="stomp" uri="stomp://0.0.0.0:61612"/>

<transportConnector name="stomp+nio" uri="stomp+nio://0.0.0.0:61613"/>

<transportConnector name="ws" uri="ws://0.0.0.0:61614/" />

</transportConnectors>

( )抜粋

Page 11: Raspberry PiとActiveMQで作るセンサーライト

光センサー( Producer )

• Python• STOMP

– stomp.pyライブラリ

Page 12: Raspberry PiとActiveMQで作るセンサーライト

光センサー( Producer )

adc = ADS1x15() #ADコンバータを指定

conn = stomp.Connection([('169.254.0.11', 61613),('169.254.0.14', 61613)])

conn.start()

conn.connect()

while True:

result = adc.readADCSingleEnded(0)

conn.send(str(result), destination='/queue/test')

( )抜粋

Page 13: Raspberry PiとActiveMQで作るセンサーライト

ライト( Consumer )

• Java– Pi4J

• OpenWire

Page 14: Raspberry PiとActiveMQで作るセンサーライト

ライト( Consumer )

private static GpioController gpio;

private static GpioPinDigitalOutput pin;

( )抜粋

gpio = GpioFactory.getInstance();

pin = gpio.provisionDigitalOutputPin(

RaspiPin.GPIO_05, "MyLED",PinState.LOW);

Message message = consumer.receive();

String text = ((TextMessage) message).getText();

if (Double.parseDouble(text) > 1000){ pin.high();

} else { pin.low();

}

Page 15: Raspberry PiとActiveMQで作るセンサーライト

センサーライトで不安なこと

Page 16: Raspberry PiとActiveMQで作るセンサーライト

センサーライトで不安なこと

• ActiveMQがハングしないか?• ActiveMQとの接続が断線しないか?

Page 17: Raspberry PiとActiveMQで作るセンサーライト

クラスタ構成

Page 18: Raspberry PiとActiveMQで作るセンサーライト

Producer failoverConsumer failover

Broker cluster

Page 19: Raspberry PiとActiveMQで作るセンサーライト

<networkConnectors>

<networkConnector uri="static:(tcp://169.254.0.14:61616)"/>

</networkConnectors>

java.naming.provider.url = failover:(tcp://169.254.0.11:61616,tcp://169.254.0.14:61616)

Broker(169.254.0.11): conf/activemq.xml

stomp.Connection([('169.254.0.11', 61613),('169.254.0.14', 61613)])

Producer

Consumer: jndi.properties

Page 20: Raspberry PiとActiveMQで作るセンサーライト

One more thing...

Page 21: Raspberry PiとActiveMQで作るセンサーライト

WebSocket

• STOMP• JavaScript

– Flot• http://www.flotcharts.org/

Page 22: Raspberry PiとActiveMQで作るセンサーライト

まとめ

• 物理マシン!安価!省スペース!• 組み込みと Java EEの融合?• ActiveMQに触ってみよう

Page 23: Raspberry PiとActiveMQで作るセンサーライト

Raspberry Pi とActiveMQ で作るセンサーライト

小西 高之@leather_sole

Page 24: Raspberry PiとActiveMQで作るセンサーライト

Thanks!

Page 25: Raspberry PiとActiveMQで作るセンサーライト