LEDで構成されるRaspberry Piを使用して小さなセットアップを構築しました。Pi と Bluemix の接続に成功しました。mybluemix.net Web ページ (関数 myCommandcallback) から LED をオン/オフする小さなコードを書きました。
import RPi.GPIO as GPIO
import time
import os, json
import ibmiotf.application
import uuid
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.OUT)
client = None
def myCommandCallback(cmd):
if cmd.event == "light":
payload = json.loads(cmd.payload)
command = payload["command"]
print command
if command == "on":
GPIO.output(17, GPIO.HIGH)
elif command == "off":
GPIO.output(17, GPIO.LOW)
try:
options = ibmiotf.application.ParseConfigFile("/home/pi/device.cfg")
options["deviceId"] = options["id"]
options["id"] = "aaa" + options["id"]
client = ibmiotf.application.Client(options)
client.connect()
client.deviceEventCallback = myCommandCallback
client.subscribeToDeviceEvents(event="light")
while True:
GPIO.wait_for_edge(18, GPIO.FALLING)
print "Button Pushed"
myData = {'buttonPushed' : True}
client.publishEvent("raspberrypi", options["deviceId"], "input", "json", myData)
time.sleep(0.2)
except ibmiotf.ConnectionException as e:
print e
WebページでLEDを点灯させるボタンをクリックすると、IBM IoTプラットフォームのセンサー情報では「点灯」と表示されますが、実際にはLEDが点灯しません。情報が受信された場合、Pi を確認する方法はありますか?