728x90
한국 IBM developerWorks IoT cloud용 뱃지관련 내용입니다.
하기 내용은 아래와 같은 출처에서 가져왓습니다.(출처: https://github.com/jhp72/avocado2018/tree/master/dwmeetup201812 )
<IBM developerWorks meetup 2018.12.11>
IoT 뱃지 만져보기 (마이크로 파이썬 프로그래밍 GPIO & SPI (LCD, 버튼, LED))
환경 구성
- IoT Badge USB Driver 설치
- IoT Badge 연결 터미널 S/W 설치
- Network 연결
- Web REPL download 및 연결
- Web REPL로 연결 후 Python File 업로드
- Web REPL에서 execfile 명령으로 Python Code 실행
센서 연결하기 (I2C, PWM & ADC (피에조 부저, 조도 센서, 자이로 센서))
피에조 부저 동작 맛보기
Node-RED + IoT (Watson IoT 서비스 연동하기!)
IBM IoT Platform 구성
- IBM Cloud의 서비스 카탈로그에서 스타터 킷 중 Internet of things platform starter로 선택
- Cloud Foundry App 생성
- IoT Platform Starter는 다음과 같이 구성
- Node.js Runtime 및 Node-RED IoT 서버 애플리케이션
- Node Flow 데이터 저장을 위한 Cloudant NoSQL Database
- IoT 플랫폼인 Internet of Things Platform
- 애플리케이션 이름을 영문으로 입력
- 애플리케이션 이름에 따라 자동으로 hostname이 제시되지만 고유한 이름이 되도록 iot201812-{userid}로 변경한다. (예, iot2018-hongjs) 참고. 만약 중복되어도 애플리케이션은 생성되지만 생성한 앱으로 라우팅이 되지 않음
Node-RED 실행
- IoT 서버 애플리케이션 (Node-RED) 접속
iot2018-hongjs 인 경우 Application URL은 다음과 같음
- 최초 접속 시 관리자 id 및 비밀번호 생성
- 이후 Node-RED에 접속 시 앞서 생성한 관리자 id 및 비밀번호 입력으로 로그인
- Node-RED 기본 사용
- input - function - output 노드
- inject와 debug 노드
- IoT Quick Start 노드
- IBM IoT 노드
IoT Foundation Quickstart 용 예제
- 마이크로파이썬 mqtt library 설치
Firmware에 기본으로 탑재되어 있으나 참고용으로 작성
import upip
upip.install("micropython-umqtt.simple")
- IoT Foundation Quickstart 용 예제
Watson IoT Platform Quick start 웹페이지 접속
Watson IoT Platform 소개
- IoT Server
- Application
- Gateway
- Device
MQTT Client 인증 정보
- Application 인증 정보
항목 값
server | <organization_id>.messaging.internetofthings.ibmcloud.com |
port | 1883, 8883 (encrypted), 443 (websockets) |
username | API Key (eg. a-<org_id>-a84ps90Ajs) |
password | Authentication token |
client id | a:<org_id>:<app_id> |
- Application API Key 발급
https://console.bluemix.net/docs/services/IoT/platform_authorization.html#api-key
- IoTF Device 인증 정보
항목 값
server | <organization_id>.messaging.internetofthings.ibmcloud.com |
port | 1883, 8883 (encrypted), 443 (websockets) |
username | use-token-auth |
password | Authentication token |
client id | d:<org_id>:<device_type>:<device_id> |
https://console.bluemix.net/docs/services/IoT/iotplatform_task.html#iotplatform_subtask2
IoTF Topic 정보
Publish topic 값 예시
device event | iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string | iot-2/type/badge2018/id/badge001/evt/button/fmt/json |
device command | iot-2/type/device_type/id/device_id/cmd/command_id/fmt/format_string | iot-2/type/badge2018/id/badge001/cmd/led/fmt/json |
- Publish 할 때는 모든 정보가 정확해야 함
- Subscribe 할 때는 + 문자로 항목 대체 가능
Subscribe topic 값 예시
device status | iot-2/type/device_type/id/device_id/mon | iot-2/type/+/id/+/mon |
application status | iot-2/app/app_id/mon | iot-2/app/+/mon |
device command | iot-2/cmd/command_id/fmt/format_string | iot-2/cmd/led/fmt/json |
https://console.bluemix.net/docs/services/IoT/applications/mqtt.html
IoT Badge Device Events
- status : sine
- sensor : GYRO, LUMI, IRRECV
- button : A, B, LEFT, RIGHT, UP, DOWN, OK
항목 값 예시
자이로 | accel | iot-2/type/badge2018/id/badge001/evt/accel/fmt/json |
조도센서 | luminance | |
버튼 | button |
IoT Badge Device Commands
- LCD color
- LED on/off
- IRSEND
항목 값 예시
LED | led | iot-2/type/badge2018/id/badge001/cmd/led/fmt/json |
배경색 | color |
LED 제어 예제
- 마이크로 파이썬
- Node-RED
[{"id":"1e028ecd.947891","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"led","format":"json","data":"default","qos":0,"name":"IBM IoT - led","service":"registered","x":590,"y":340,"wires":[]},{"id":"a14bf192.2c085","type":"inject","z":"64c93c11.da56f4","name":"Blue LED Toggle","topic":"","payload":"{\"d\":{\"target\":\"blue\",\"action\":\"toggle\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":340,"wires":[["7d02b9fb.439d98"]]},{"id":"1e5b55e7.fb15ea","type":"debug","z":"64c93c11.da56f4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":570,"y":400,"wires":[]},{"id":"f1cb4ee2.43a1e","type":"comment","z":"64c93c11.da56f4","name":"LED Command","info":"","x":140,"y":300,"wires":[]},{"id":"5b683874.1d07f8","type":"inject","z":"64c93c11.da56f4","name":"Blue LED On","topic":"","payload":"{\"d\":{\"target\":\"blue\",\"action\":\"on\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":380,"wires":[["7d02b9fb.439d98"]]},{"id":"86d5b821.2b8af8","type":"inject","z":"64c93c11.da56f4","name":"Blue LED Off","topic":"","payload":"{\"d\":{\"target\":\"blue\",\"action\":\"off\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":420,"wires":[["7d02b9fb.439d98"]]},{"id":"7d02b9fb.439d98","type":"change","z":"64c93c11.da56f4","name":"nothing","rules":[],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":340,"wires":[["1e028ecd.947891","1e5b55e7.fb15ea"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
Background Color 제어 예제
- 마이크로 파이썬
- Node-RED
[{"id":"667d4dee.b38e44","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"anything","format":"json","data":"default","qos":0,"name":"IBM IoT - anything","service":"registered","x":610,"y":520,"wires":[]},{"id":"fa57f80.01c4408","type":"inject","z":"64c93c11.da56f4","name":"RED","topic":"","payload":"{\"d\":{\"color\":\"red\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":520,"wires":[["8a2ffc0c.3b365"]]},{"id":"86fb5e08.6766c","type":"comment","z":"64c93c11.da56f4","name":"Color Command","info":"","x":140,"y":480,"wires":[]},{"id":"d23d9a8a.3448a8","type":"inject","z":"64c93c11.da56f4","name":"GREEN","topic":"","payload":"{\"d\":{\"color\":\"green\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":560,"wires":[["8a2ffc0c.3b365"]]},{"id":"70524771.c4ff38","type":"inject","z":"64c93c11.da56f4","name":"BLUE","topic":"","payload":"{\"d\":{\"color\":\"blue\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":600,"wires":[["8a2ffc0c.3b365"]]},{"id":"8a2ffc0c.3b365","type":"change","z":"64c93c11.da56f4","name":"color command type","rules":[{"t":"set","p":"eventOrCommandType","pt":"msg","to":"color","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":520,"wires":[["667d4dee.b38e44","32bf0de1.8c9fa2"]]},{"id":"32bf0de1.8c9fa2","type":"debug","z":"64c93c11.da56f4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":570,"y":580,"wires":[]},{"id":"c93c9c66.cad3","type":"inject","z":"64c93c11.da56f4","name":"0xffe0","topic":"","payload":"{\"d\":{\"color\":\"0xffe0\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":640,"wires":[["8a2ffc0c.3b365"]]},{"id":"8971f881.27c878","type":"inject","z":"64c93c11.da56f4","name":"asdf","topic":"","payload":"{\"d\":{\"color\":\"asdf\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":680,"wires":[["8a2ffc0c.3b365"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
버튼 이벤트 예제
- 마이크로 파이썬
- Node-RED
[{"id":"332834d9.b8fa5c","type":"comment","z":"64c93c11.da56f4","name":"Button Event","info":"","x":130,"y":740,"wires":[]},{"id":"8866da01.e8ee08","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"button","commandType":"","format":"json","name":"IBM IoT - button","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":140,"y":780,"wires":[["956314a5.80d4c8"]]},{"id":"2d2c6cb.ba64994","type":"debug","z":"64c93c11.da56f4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":610,"y":780,"wires":[]},{"id":"f211620c.86c0d","type":"change","z":"64c93c11.da56f4","name":"button","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d.char","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":780,"wires":[["2d2c6cb.ba64994"]]},{"id":"956314a5.80d4c8","type":"switch","z":"64c93c11.da56f4","name":"","property":"payload.d.type","propertyType":"jsonata","rules":[{"t":"eq","v":"keydown","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":780,"wires":[["f211620c.86c0d"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
조도 센서 이벤트 예제
- 마이크로 파이썬
- Node-RED
[{"id":"cd5ca1ba.9f4c8","type":"comment","z":"64c93c11.da56f4","name":"Luminance Event","info":"","x":140,"y":860,"wires":[]},{"id":"bf3e35a3.69df48","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"luminance","commandType":"","format":"json","name":"IBM IoT - luminance","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":150,"y":900,"wires":[["f50ddfec.e2947"]]},{"id":"cf17863f.5c0388","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":610,"y":900,"wires":[]},{"id":"f50ddfec.e2947","type":"change","z":"64c93c11.da56f4","name":"Luminance","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d.luminance","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":900,"wires":[["cf17863f.5c0388"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
- Node-RED v2
[{"id":"f5a9a0d3.fa727","type":"comment","z":"64c93c11.da56f4","name":"Luminance Event V2","info":"","x":150,"y":960,"wires":[]},{"id":"ff138051.70bba","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"luminance","commandType":"","format":"json","name":"IBM IoT - luminance","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":150,"y":1000,"wires":[["8afe494d.9b7098"]]},{"id":"50f4ad0e.023794","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":650,"y":1000,"wires":[]},{"id":"8afe494d.9b7098","type":"change","z":"64c93c11.da56f4","name":"Luminance","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d.luminance","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1000,"wires":[["88e19341.e98f8"]]},{"id":"ddbedb2d.dd54b8","type":"change","z":"64c93c11.da56f4","name":"WHITE","rules":[{"t":"set","p":"payload","pt":"msg","to":"white","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1060,"wires":[["841b8c1f.6b75a"]]},{"id":"71d0eae6.400634","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"color","format":"json","data":"default","qos":0,"name":"IBM IoT - anything","service":"registered","x":750,"y":1180,"wires":[]},{"id":"841b8c1f.6b75a","type":"change","z":"64c93c11.da56f4","name":"color payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"d\":{\"color\":payload}}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":700,"y":1060,"wires":[["50f4ad0e.023794","71d0eae6.400634"]]},{"id":"a5bd03ef.02f9","type":"change","z":"64c93c11.da56f4","name":"RED","rules":[{"t":"set","p":"payload","pt":"msg","to":"red","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1100,"wires":[["841b8c1f.6b75a"]]},{"id":"702540a8.31f3d","type":"change","z":"64c93c11.da56f4","name":"BLUE","rules":[{"t":"set","p":"payload","pt":"msg","to":"blue","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1140,"wires":[["841b8c1f.6b75a"]]},{"id":"6ff56a3c.9b4764","type":"change","z":"64c93c11.da56f4","name":"BLACK","rules":[{"t":"set","p":"payload","pt":"msg","to":"black","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":1180,"wires":[["841b8c1f.6b75a"]]},{"id":"88e19341.e98f8","type":"function","z":"64c93c11.da56f4","name":"switch","func":"if (msg.payload < 100) return [msg, null, null, null]\nelse if (msg.payload < 300) return [null, msg, null, null]\nelse if (msg.payload < 500) return [null, null, msg, null]\nreturn [null, null, null, msg]","outputs":4,"noerr":0,"x":350,"y":1120,"wires":[["ddbedb2d.dd54b8"],["a5bd03ef.02f9"],["702540a8.31f3d"],["6ff56a3c.9b4764"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
자이로/가속도 센서 이벤트 예제
- 마이크로 파이썬
- Node-RED
[{"id":"319bb39.402ba4c","type":"comment","z":"64c93c11.da56f4","name":"Accelerometer Event","info":"","x":150,"y":1240,"wires":[]},{"id":"4383d2a0.77cb2c","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"accel","commandType":"","format":"json","name":"IBM IoT - accel","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":140,"y":1280,"wires":[["5b338fd6.0f7a"]]},{"id":"5b338fd6.0f7a","type":"change","z":"64c93c11.da56f4","name":"Acceleration x-axis","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d.acceleration_y","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":1280,"wires":[["a7b01a5.416a7e8"]]},{"id":"a7b01a5.416a7e8","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":610,"y":1280,"wires":[]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
- Node-RED V2
[{"id":"3bc317e9.054bf8","type":"comment","z":"64c93c11.da56f4","name":"Accelerometer Event V2","info":"","x":160,"y":1340,"wires":[]},{"id":"2263db9b.20bc04","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"accel","commandType":"","format":"json","name":"IBM IoT - accel","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":140,"y":1380,"wires":[["99064023.0e444"]]},{"id":"99064023.0e444","type":"change","z":"64c93c11.da56f4","name":"Acceleration","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1380,"wires":[["217f9bfb.ec5c24"]]},{"id":"daa2a33d.a79ef","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.roll","x":720,"y":1380,"wires":[]},{"id":"c8774551.b35038","type":"change","z":"64c93c11.da56f4","name":"BLACK","rules":[{"t":"set","p":"payload","pt":"msg","to":"black","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":1500,"wires":[["5fc6afb2.e41ab"]]},{"id":"ff6626f1.970df8","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"color","format":"json","data":"default","qos":0,"name":"IBM IoT - color","service":"registered","x":740,"y":1560,"wires":[]},{"id":"5fc6afb2.e41ab","type":"change","z":"64c93c11.da56f4","name":"color payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"d\":{\"color\":payload}}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":1500,"wires":[["ff6626f1.970df8"]]},{"id":"df55dd06.c1ee4","type":"change","z":"64c93c11.da56f4","name":"RED","rules":[{"t":"set","p":"payload","pt":"msg","to":"red","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1540,"wires":[["5fc6afb2.e41ab"]]},{"id":"61d8ddca.c94404","type":"switch","z":"64c93c11.da56f4","name":"Pitch","property":"payload.pitch","propertyType":"msg","rules":[{"t":"btwn","v":"-10.0","vt":"num","v2":"10.0","v2t":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":310,"y":1520,"wires":[["c8774551.b35038"],["df55dd06.c1ee4"]]},{"id":"217f9bfb.ec5c24","type":"function","z":"64c93c11.da56f4","name":"roll & pitch","func":"let X = msg.payload.acceleration_x\nlet Y = msg.payload.acceleration_y\nlet Z = msg.payload.acceleration_z\n\nmsg.payload.roll = Math.atan2(Y, Z) * 180/Math.PI;\nmsg.payload.pitch = Math.atan2(X, Math.sqrt(Y*Y + Z*Z)) * 180/Math.PI;\n\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":1440,"wires":[["daa2a33d.a79ef","f34f48e9.4db618","61d8ddca.c94404"]]},{"id":"c7d8b911.c91578","type":"change","z":"64c93c11.da56f4","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1640,"wires":[["a2ae3543.970d78"]]},{"id":"e5492fd4.0c91a","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"led","format":"json","data":"default","qos":0,"name":"IBM IoT - led","service":"registered","x":730,"y":1700,"wires":[]},{"id":"a2ae3543.970d78","type":"change","z":"64c93c11.da56f4","name":"blue led payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"d\":{\"target\":\"blue\",\"action\":payload}}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":1640,"wires":[["e5492fd4.0c91a"]]},{"id":"cc0aba61.493bd8","type":"change","z":"64c93c11.da56f4","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1680,"wires":[["a2ae3543.970d78"]]},{"id":"f34f48e9.4db618","type":"function","z":"64c93c11.da56f4","name":"Roll","func":"let prop = Number(msg.payload.roll)\nif (prop < -10.0 || 10.0 < prop) return [msg, null]\nreturn [null, msg]","outputs":2,"noerr":0,"x":310,"y":1660,"wires":[["c7d8b911.c91578"],["cc0aba61.493bd8"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
- Node-RED v3
[{"id":"ac925d31.51e3a","type":"comment","z":"64c93c11.da56f4","name":"Accelerometer Event V3","info":"","x":160,"y":1840,"wires":[]},{"id":"7c68edf.ec1e514","type":"ibmiot in","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","inputType":"evt","logicalInterface":"","ruleId":"","deviceId":"240AC423BFF8","applicationId":"","deviceType":"badge2018","eventType":"accel","commandType":"","format":"json","name":"IBM IoT - accel","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":false,"allLogicalInterfaces":"","allEvents":false,"allCommands":"","allFormats":"","qos":0,"x":140,"y":1880,"wires":[["8f931173.7a976"]]},{"id":"8f931173.7a976","type":"change","z":"64c93c11.da56f4","name":"Acceleration","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.d","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1880,"wires":[["5e84d78.0bf3528"]]},{"id":"2c2048a9.d0a228","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.roll","x":720,"y":1880,"wires":[]},{"id":"a04233f7.6b611","type":"change","z":"64c93c11.da56f4","name":"BLACK","rules":[{"t":"set","p":"payload","pt":"msg","to":"black","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":2000,"wires":[["7baf35ef.72ee1c","81d654fd.e372c8"]]},{"id":"fd450ef1.e4219","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"color","format":"json","data":"default","qos":0,"name":"IBM IoT - color","service":"registered","x":740,"y":2060,"wires":[]},{"id":"4328bc4f.60b654","type":"change","z":"64c93c11.da56f4","name":"color payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"d\":{\"color\":payload}}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":2000,"wires":[["fd450ef1.e4219"]]},{"id":"88860678.965308","type":"change","z":"64c93c11.da56f4","name":"RED","rules":[{"t":"set","p":"payload","pt":"msg","to":"red","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":2040,"wires":[["7baf35ef.72ee1c","81d654fd.e372c8"]]},{"id":"cedafecc.57ee9","type":"switch","z":"64c93c11.da56f4","name":"Pitch","property":"payload.pitch","propertyType":"msg","rules":[{"t":"btwn","v":"-10.0","vt":"num","v2":"10.0","v2t":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":310,"y":2020,"wires":[["a04233f7.6b611"],["88860678.965308"]]},{"id":"5e84d78.0bf3528","type":"function","z":"64c93c11.da56f4","name":"roll & pitch","func":"let X = msg.payload.acceleration_x\nlet Y = msg.payload.acceleration_y\nlet Z = msg.payload.acceleration_z\n\nmsg.payload.roll = Math.atan2(Y, Z) * 180/Math.PI;\nmsg.payload.pitch = Math.atan2(X, Math.sqrt(Y*Y + Z*Z)) * 180/Math.PI;\n\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":1940,"wires":[["2c2048a9.d0a228","d2da0b6d.8ff4f8","cedafecc.57ee9"]]},{"id":"e5a21ede.ec7c7","type":"change","z":"64c93c11.da56f4","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":2140,"wires":[["3439e0f7.cfe67","6c7743dc.87dd3c"]]},{"id":"f86e267.c71b2d8","type":"ibmiot out","z":"64c93c11.da56f4","authentication":"apiKey","apiKey":"a4331e4b.25022","outputType":"cmd","deviceId":"240AC423BFF8","deviceType":"badge2018","eventCommandType":"led","format":"json","data":"default","qos":0,"name":"IBM IoT - led","service":"registered","x":730,"y":2200,"wires":[]},{"id":"7cc1774d.4b8708","type":"change","z":"64c93c11.da56f4","name":"blue led payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"d\":{\"target\":\"blue\",\"action\":payload}}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":2140,"wires":[["f86e267.c71b2d8"]]},{"id":"ac8ee3.8d06a12","type":"change","z":"64c93c11.da56f4","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":2180,"wires":[["3439e0f7.cfe67","6c7743dc.87dd3c"]]},{"id":"d2da0b6d.8ff4f8","type":"function","z":"64c93c11.da56f4","name":"Roll","func":"let prop = msg.payload.roll\nif (prop < -10.0 || 10.0 < prop) return [msg, null]\nreturn [null, msg]","outputs":2,"noerr":0,"x":310,"y":2160,"wires":[["e5a21ede.ec7c7"],["ac8ee3.8d06a12"]]},{"id":"3439e0f7.cfe67","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":570,"y":2280,"wires":[]},{"id":"7baf35ef.72ee1c","type":"debug","z":"64c93c11.da56f4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":610,"y":1940,"wires":[]},{"id":"81d654fd.e372c8","type":"function","z":"64c93c11.da56f4","name":"check previous color","func":"let key = `status-${msg.deviceId}`\nvar status = flow.get(key)\nif (status) {\n if (status.color === msg.payload) {\n return\n }\n status['color'] = msg.payload\n} else {\n status = {\n 'color': msg.payload\n }\n}\nflow.set(key, status)\n\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":2000,"wires":[["4328bc4f.60b654"]]},{"id":"6c7743dc.87dd3c","type":"function","z":"64c93c11.da56f4","name":"check previous blue led","func":"let key = `status-${msg.deviceId}`\nvar status = flow.get(key)\nif (status) {\n if (status.blue === msg.payload) {\n return\n }\n status['blue'] = msg.payload\n} else {\n status = {\n 'blue': msg.payload\n }\n}\nflow.set(key, status)\n\nreturn msg;","outputs":1,"noerr":0,"x":690,"y":2140,"wires":[["7cc1774d.4b8708"]]},{"id":"a4331e4b.25022","type":"ibmiot","z":"","name":"ua3ev8","keepalive":"60","serverName":"ua3ev8.messaging.internetofthings.ibmcloud.com","cleansession":true,"appId":"","shared":false}]
그럼,
공유합니다.
728x90
'개발 이야기 > IoT 이야기' 카테고리의 다른 글
IOT용 펌웨어 코드를 작성하는 더 나은 방법 (0) | 2022.07.14 |
---|---|
바램펫, 반려동물 스마트 음수케어 ‘웰리’ 정식 론칭 (0) | 2022.05.30 |
IoT로 반려견 활동량 분석·자동급식 (0) | 2022.05.30 |
IoT디바이스를 위한 다양한 프레임워크 소개 (0) | 2021.01.26 |
STM32보드 / AWS IoT에 연결해보기 (0) | 2020.12.28 |