본문 바로가기
mindsphere, mendix, postman

라즈베리파이, mindsphere node-red 연동

by clean_h 2021. 8. 26.
728x90

라즈베리파이, mindsphere node-red 연동

라즈베리파이에서 mindsphere로 데이터를 보내고 싶을 때 node-red를 사용하여 데이터를 보낼 수 있다.

2021.08.26 - [아두이노] - 아두이노, 라즈베리파이 / node-red 시리얼 통신

이전에 아두이노와 라즈베리파이의 시리얼 통신으로 데이터를 확인하였다.

이 데이터를 mindsphere로 보내도록한다. 

 

mindshpere

mindconnect 노드 설치

일단 mindshpere을 사용하기 위해 node를 설치해주어야한다.

[팔렛트관리] [설치가능한 노드] -> mindconnect 검색 -> [설치]

 

설치를 완료하면 mindconnect라는 노드가 생성된다. 

이를 이용하여 mindshpere와 연결을 해보도록한다.

 

플로우 생성

플로우를 다음과 같이 생성한다. 

각 노드는 세팅을 해주어야한다. 

세팅 완료.

 

serial 노드 설정

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

 

raspberry_server asset 생성 완료

 

  • raspberrypi(asset type)

asset type을 하나 새로 생성한다. Name : raspberrypi

Variables에 int형 move_int와 string형 move_string을 생성한다. (저장하고자 하는 데이터의 Data type을 생성한다.)

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

 

@mindconnect/node-red-contrib-mindconnect

node red mindconnect node using mindconnect-nodejs library.

flows.nodered.org

https://opensource.mindsphere.io/docs/node-red-contrib-mindconnect/

 

MindConnect Node-RED Node - Overview

MindSphere Open Source Documentation

opensource.mindsphere.io

 

728x90

'mindsphere, mendix, postman' 카테고리의 다른 글

mendix(멘딕스) / mendix 시작. 설치하기  (1) 2021.07.28

댓글