2022-10-20
#2 [Edge-Computing] EdgeX - 온습도 데이터 수집 및 전송
2022-10-20
Tasks

EdgeX - 온습도 데이터 수집 및 전송#

그림.drawio.png


1. Docker & Docker-compose 설치 - PEC에서 진행#

  • cccr 교육자로 git을 다운받으신 후 docker-install.sh 파일을 실행합니다.
$ git clone -b 221021 http://112.217.198.156:9000/%EC%97%91%EC%84%B8%EC%8A%A4%EB%9E%A9/CCCR_Lecture

$ cd ~/CCCR_Lecture/221020

$ chmod +x docker-install.sh

$ sudo ./docker-install.sh

2. EdgeX 실행 - PEC에서 진행#

EdgeX : https://www.edgexfoundry.org/

  • docker-compose.yml 파일이 있는 위치로 이동 한 후 EdgeX를 실행합니다
$ cd edgex/

$ docker-compose up -d

3. EdgeX에 디바이스 프로필, 엣지 디바이스 등록#

Postman : https://www.postman.com/

  • 라즈베리파이에서 받을 센서데이터 중 습도 데이터 폼을 생성합니다.
    스크린샷, 2022-10-20 12-23-28.png

  • 라즈베리파이에서 받을 센서데이터 중 온도 데이터 폼을 생성합니다.
    스크린샷, 2022-10-20 12-24-09.png

  • 온,습도 데이터 폼이 정상적으로 등록되었는지 확인합니다.
    스크린샷, 2022-10-20 12-24-47.png

  • Postman으로 파일 전송하기 위해 allow reading files 옵션을 활성화 합니다.
    스크린샷, 2022-10-20 15-04-33.png

  • 디바이스 프로필을 업로드 합니다.
    스크린샷, 2022-10-20 15-04-01.png

  • 엣지 디바이스를 등록합니다.
    스크린샷, 2022-10-20 15-10-31.png

  • 등록된 디바이스에 데이터를 전송하여 정상적으로 등록이 되었는지 확인합니다.
    스크린샷, 2022-10-20 15-30-33.png

  • 등록된 디바이스가 가지고 있는 데이터를 확인하여 데이터가 전송되었는지 확인합니다.
    스크린샷, 2022-10-20 15-30-51.png
    스크린샷, 2022-10-20 15-31-09.png


4. 라즈베리파이에서 센서 연결 - Raspberry Pi에서 진행#

  • VCC > 17번 핀, GND > 25번 핀, DATA > 23번 핀에 꽃으시면 됩니다.

스크린샷, 2022-10-20 19-00-44.png


5. 라즈베리파이 - 온습도 센서 라이브러리 설치#

$ sudo apt-get install python3-pip git 

$ git clone -b 221021 http://112.217.198.156:9000/%EC%97%91%EC%84%B8%EC%8A%A4%EB%9E%A9/CCCR_Lecture

$ git clone https://github.com/adafruit/Adafruit_Python_DHT

$ cd Adafruit_Python_DHT/ 

$ sudo python3 setup.py install 

$  sudo vim /usr/local/lib/python3.9/dist-packages/Adafruit_DHT-1.4.0-py3.9-linux-aarch64.egg/Adafruit_DHT/platform_detect.py

> 다음의 내용 추가

    elif match.group(1) == 'BCM2711':
        # Pi 4B
        return 3

스크린샷, 2022-12-01 18-56-27.png

6. 라즈베리파이4 에서 센서데이터 수신 후 EdgeX로 데이터 전송#

  • /CCCR_Lecture/221020/edgex 디렉토리의 Temp_Hum_Sensor.py를 실행하여 센서데이터가 읽히는지 확인합니다.
$ cd ~/CCCR_Lecture/221020/edgex

$ vim Temp_Hum_Sensor.py
> "edgex-ip-address"에 Edgex 서버의 IP를 입력한 후 저장

$ sudo python3 Temp_Hum_Sensor.py

스크린샷, 2022-10-20 17-42-21.png

  • Postman으로 라즈베리파이가 센서데이터를 EdgeX에 전송하는지 확인합니다.
    스크린샷, 2022-10-20 15-48-28.png
    스크린샷, 2022-10-20 15-48-42.png

7. EdgeX에서 MQTT를 통해 외부로 데이터 전송#

7.1 Docker-compose 파일을 수정하여 데이터 전송#

  • EdgeX의 docker-compose.yaml 파일에서 다음의 값을 변경 한 후 다음의 명령어를 실행합니다.
<External-MQTT-Ip> : 센서 데이터를 보낼 외부 MQTT Broker의 IP
<External-MQTT-Port> : 센서 데이터를 보낼 외부 MQTT Broker의 Port
"<TopicName>" : 센서데이터가 보내질 Topic의 이름

$ docker-compose up -d

스크린샷, 2022-10-20 18-34-46.png

  • mosquitto client를 설치 한 후 MQTT 토픽을 구독합니다.
$ sudo apt-get install mosquitto-clients 

$ mosquitto_sub -h <External-MQTT-Ip> -p <External-MQTT-Port> -t <TopicName>

스크린샷, 2022-10-20 17-27-13.png

7.2 Postman을 통하여 외부로 데이터 전송#

  • 데이터를 외부로 전송할 Stream을 생성합니다.
    스크린샷, 2022-10-20 18-10-33.png

  • Steam의 rule을 설정합니다. 설정할 값은 server, topic, username, password, clientID 입니다.
    스크린샷, 2022-10-20 18-22-09.png

  • mosquitto client로 MQTT 토픽을 구독합니다.

$ mosquitto_sub -h <External-MQTT-Ip> -p <External-MQTT-Port> -t <TopicName> -u <username> -P <password> -i <clientID> -t <TopicName>

스크린샷, 2022-10-20 18-25-53.png

Comment 0

Add a comment