라즈베리파이, mindsphere node-red 연동
라즈베리파이에서 mindsphere로 데이터를 보내고 싶을 때 node-red를 사용하여 데이터를 보낼 수 있다.
2021.08.26 - [아두이노] - 아두이노, 라즈베리파이 / node-red 시리얼 통신
이전에 아두이노와 라즈베리파이의 시리얼 통신으로 데이터를 확인하였다.
이 데이터를 mindsphere로 보내도록한다.
mindshpere
mindconnect 노드 설치
일단 mindshpere을 사용하기 위해 node를 설치해주어야한다.
[팔렛트관리] [설치가능한 노드] -> mindconnect 검색 -> [설치]
설치를 완료하면 mindconnect라는 노드가 생성된다.
이를 이용하여 mindshpere와 연결을 해보도록한다.
플로우 생성
플로우를 다음과 같이 생성한다.
각 노드는 세팅을 해주어야한다.
세팅 완료.
serial 노드 설정
라즈베리와 아두이노는 블루투스를 이용하여 시리얼 통신하고 있다.(/dev/rfcomm0)
serial port를 "/dev/rfcomm0"로 설정해준다.
mindconnect 설정
다음과 같이 설정해준다.
다음과 같이 설정하기 위해서 mindsphere에 업로드하기 위해서 mindsphere에는 asset과 type을 생성해주어야 한다.
asset, type 생성
데이터를 업로드할 asset(raspberry_server), 데이터가 보여질 asset(raspberry_server_dataview), type(raspberrypi)을 생성해야한다.
- raspberry_server(asset, type : MindConnectLib)
asset을 새로 생성한다. type : MindConnectLib, Name : raspberry_server
- raspberrypi(asset type)
asset type을 하나 새로 생성한다. Name : raspberrypi
Variables에 int형 move_int와 string형 move_string을 생성한다. (저장하고자 하는 데이터의 Data type을 생성한다.)
Type 생성 완료.
- raspberry_server_dataview(asset, type : raspberrypi)
데이터가 보여질 asset을 하나 생성한다.
type : raspberrypi 선택.
Name : raspberry_server_dataview 생성.
raspberry_server_dataview 생성 완료.
다시 node-red로 돌아가 mindsphere 설정을 완료해본다.
raspberry_server asset에서 Connectivity의 화살표 부분을 클릭한다.
asset을 onboarding key를 입력받아 node-red에서 mindconnect 노드에 키를 입력하여 onboard 시켜주어야한다.
[Generate onboarding key] [Copy to clipboard] // onboarding key 복사
node-red의 mindconnect 노드에 다음과 같이 저장 후 배포한다.
배포하면 mindconnect 노드는 mindsphere의 raspberry_server asset과 연결이 완료된다.
데이터를 확인할 수 있는 asset과 연결을 해주어야한다. (raspberry_server -> raspberry_server_dataview)
Agent Configuration을 클릭하면 내 mindsphere에서 생성되어있는 모든 asset list들을 확인 가능하다.
asset 중 raspberry_server_dataview와 연결한다.
agent information을 확인해보면 다음과 같이 연결되어있는 것이 확인 가능하다.
mindconnet 노드 설정이 완료되었다.
function 설정
function을 mindsphere에 업로드 할 데이터에 맞게 구성해주어야한다.
function 코드
if(msg.payload[0] == "1"){
msg.payload = [
{
"dataPointId": "DP-move_int",
"qualityCode": "0",
"value" : "1"
},
{
"dataPointId": "DP-move_string",
"qualityCode": "0",
"value" : "go"
}
];
}
if(msg.payload[0] == "2"){
msg.payload = [
{
"dataPointId": "DP-move_int",
"qualityCode": "0",
"value" : "2"
},
{
"dataPointId": "DP-move_string",
"qualityCode": "0",
"value" : "Turning left"
}
];
}
if(msg.payload[0] == "3"){
msg.payload = [
{
"dataPointId": "DP-move_int",
"qualityCode": "0",
"value" : "3"
},
{
"dataPointId": "DP-move_string",
"qualityCode": "0",
"value" : "Turning right"
}
];
}
if(msg.payload[0] == "0"){
msg.payload = [
{
"dataPointId": "DP-move_int",
"qualityCode": "0",
"value" : "0"
},
{
"dataPointId": "DP-move_string",
"qualityCode": "0",
"value" : "Turning around"
}
];
}
msg._time = new Date();
return msg
mindsphere에서 dataPointId를 확인하여 넣어주고, data type에 맞게 알맞은 value를 넣어주어야 한다.
mindsphere에 올리기 위해 may.payload에는 dataPointId, qualityCode, value값이 포함되어있어야 한다.
이전 아두이노 코드에서 2021.08.26 - [아두이노] - 아두이노(arduino) / 자율주행 자동차 코딩하기
앞에 장애물이 없을때: "1 go"
오른쪽에 장애물이 있을 때 : "2 Turning left"
왼쪽에 장애물이 있을 때 : "3 Turning right"
양쪽에 장애물이 있을 때 : "0 Turning around"
다음이 출력되므로 serial에서 입력받은 payload에 따라 value값이 달라지도록 올라가도록 하였다.
여기서 value값에 변수값을 넣고 싶었는데 그렇게는 되지 않는것 같다...
결과화면
mindsphere에서 [fleet manager][raspberry_server_dataview]를 확인하면 move_int가 그래프로 나오는 것이 확인가능하다.(stirng형은 그래프로 표현이 불가능하기 때문에 보여지지 않는다.) 아두이노에서 실시간으로 데이터가 라즈베리파이로 보내지고 라즈베리파이에서 mindsphere로 업로드된다.
참고 자료
https://flows.nodered.org/node/@mindconnect/node-red-contrib-mindconnect
https://opensource.mindsphere.io/docs/node-red-contrib-mindconnect/
'mindsphere, mendix, postman' 카테고리의 다른 글
mendix(멘딕스) / mendix 시작. 설치하기 (1) | 2021.07.28 |
---|
댓글