'인터넷'에 해당되는 글 2건
- 2020.08.11 Software | Blynk 사용해 보기
- 2020.07.25 Wowza | AWS 에 Wowza 설치해 보기
Arduino 나 ESP8266 을 사용하면서, sensor 로부터 받은 데이터를 표현해주는 방법이 몇 가지 있습니다.
일전에는 ThingSpeak 라는 것을 사용해 봤었죠.
* Software | ThingSpeak 등록하여 IoT 데이터 펼처보기
- https://chocoball.tistory.com/entry/Software-ThingSpeak-IoT-monitoring
어느 분께서 댓글 달아 주시길, Blynk 도 좋다고 합니다. 사용해 봤습니다.
1. Blynk 란?
Data 는 있지만, 그 값들을 이해하기 쉬운 방법으로 표시해 주고 모니터링 해주는 어플리케이션 이죠.
클라우드 펀딩으로 시작한 솔루션 입니다.
* Blynk - build an app for your Arduino project in 5 minutes
- https://www.kickstarter.com/projects/167134865/blynk-build-an-app-for-your-arduino-project-in-5-m
Arduino project 를 5분만에 시작할 수 있다고 하지만, 숙련된 사람 이야기 이고, 학습하는 시간이 필요합니다.
다만, 각 프로젝트에 따른 예시나 모듈이 잘 되어 있어서, 하다 보면, 아니... 이렇게 쉽게? 라는 생각이 잠시 드는 때도 있습니다.
KickStarater 클라우드 펀딩을 성공적으로 마무리 하고, 아래 사이트에서 정식 런칭하였습니다.
* Blynk Inc
2. Library 설치
저는 Arduino / ESP8266 에서 받은 값을 전달할 목적이므로, Arduino IDE 에서 모듈을 인스톨 합니다.
Tools > Manage Libraries > Blynk
모듈이 인스톨 되면, Arduino > libraries 에 등록 되어 있는 것을 확인 할 수 있습니다.
자동으로 설치해 주는 방법 외에도, 수동으로 파일을 받아서 설치 할 수도 있습니다.
* Blynk Arduino Library
- https://github.com/blynkkk/blynk-library/releases/latest
3. App 설치
프로그래밍을 위한 환경이나 라이브러리가 설치되었으면, 실제로 그 값들을 모니터링 하고 확인할 수 있는 인터페이스가 필요합니다.
Blynk 는 모바일 환경에 최적화가 되어 있으므로, 스마트폰에 관련 어플을 설치합니다.
평점이 좋네요.
4. Project 시작하기
모바일앱에서 어플을 시작하면, 등록이 나옵니다.
Facebook 계정 연동으로 시작해도 되나, 저는 그냥 email 로 사용자 등록 하였습니다.
계정을 만들고 로그인 합니다.
New Project 를 선택합니다. My Apps 메뉴를 이용해서, 개인 전용앱 처럼 꾸밀 수도 있다고 합니다.
시작할 새로운 Project 는 주로 어떤 IoT 기기와 연결될 것 인지를 선택합니다.
저는 ESP8266 을 이용하여, WiFi 연결 뿐만 아니라, arduino 처럼 처리도 시킬 것이기 때문에, ESP8266 을 선택 했습니다.
포름알데히드 센서를 이용한 그래프 모니터링용 이니, 그에 맞게 Title / Device / Connection Type 을 선택해 줍니다.
저는 Formaldehyde / ESP8266 / WiFi 를 선택 했습니다.
Create Project 를 최종적으로 누르면, 새로 생성한 project 에 대한 전용 인증 코드가 생성됩니다.
이 코드는 project 마다 유니크 하며, 메일로도 알려 줍니다.
계정 생성시 사용 했던 email 로 관련된 정보가 왔습니다.
Auth Token
5. 소스코드 생성
누가 5분만에 가능하다 했나... 5분은 여기까지 오느라 훨씬 지났습니다.
다만, 코딩을 쉽게 도와주기 위해 "Sketch generator" 라는 메뉴가 준비되어 있어요.
* Sketch generator
접속하면, 아래처럼 Board (Device) / Connection 방법 / Auth Token 및 예시를 선택하면 소스코드를 만들어 줍니다!
이 페이지에서 만들어준 기본 코드에, 포름알데히드 측정에 사용되었던 코드를 살짝 추가 하였습니다.
Blynk 사용하지 않은 코드
#include "ze08_ch2o.h" #include "SoftwareSerial.h" // Instantiate a serial port, whatever Stream you have // SoftwareSerial ch2oSerial(4, SW_SERIAL_UNUSED_PIN); // RX, TX SoftwareSerial ch2oSerial(14, 14); // RX, TX // Instantiate a sensor connected to the previous port Ze08CH2O ch2o{&ch2oSerial}; void setup() { ch2oSerial.begin(9600); ch2oSerial.listen(); Serial.begin(115200); // Serial Monitor } void loop() { Ze08CH2O::concentration_t reading; if (ch2o.read(reading)) { Serial.print("New value: "); Serial.println(reading); } }
Blynk 기능을 입힌 코드
#include "ze08_ch2o.h" #include "SoftwareSerial.h" SoftwareSerial ch2oSerial(14, 14); // RX, TX Ze08CH2O ch2o{&ch2oSerial}; int sensorData; /* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #include "ESP8266WiFi.h" #include "BlynkSimpleEsp8266.h" // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "XXXXXXXXXXXX"; char pass[] = "YYYYYYYYYYYYYYYYYYY"; BlynkTimer timer; // This function sends Arduino's up time every second to Virtual Pin (5). // In the app, Widget's reading frequency should be set to PUSH. This means // that you define how often to send data to Blynk App. void myTimerEvent() { // You can send any value at any time. // Please don't send more that 10 values per second. Ze08CH2O::concentration_t reading; if (ch2o.read(reading)) { Serial.print("ZE08-CH2O : "); Serial.println(reading); sensorData = reading; } Blynk.virtualWrite(V5, sensorData); } void setup() { // Debug console Serial.begin(115200); ch2oSerial.begin(9600); ch2oSerial.listen(); Blynk.begin(auth, ssid, pass); // You can also specify server: //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80); //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080); // Setup a function to be called every second timer.setInterval(5000L, myTimerEvent); } void loop() { Blynk.run(); timer.run(); // Initiates BlynkTimer }
위의 Before / After 를 비교해 보면, "Sketch generator" 코드에서 자동으로 만들어준 소스에, 원래 소스를 살짝 입히기만 했습니다.
참 쉽죠?! 제가 작업한 것은 다음 세 가지 뿐 입니다.
- 기본 소스 코드 생성 (이것 마저도 인터넷에서 따옴)
- Sketch generator 이용하여 Blynk 연결 소스 만듬
- Auth Token / WiFi 접근 SSID / Password 적용
가장 눈여겨 들여다 봐야 할 부분은 아래 코드 부분입니다.
Blynk.virtualWrite(V5, sensorData);
Blynk 는 ESP8266 / ESP32 등에서 받는 data 값 들을, 가상의 Pin 으로 보내는 기능이 있습니다.
Analog / Digital 값들이 다양한 Pin 들을 통해 들어온다 하여도, Blynk 로 보낼 때에는 하나의 가상 Pin 으로 고정해서 보낼 수 있습니다.
이렇게 되면, Device 가 변경되더라도 Blynk 앱에서는 변경을 하지 않아도 됩니다. 자세한 내용은 아래 링크를 참고해 보세요.
* What is Virtual Pins
- http://help.blynk.cc/en/articles/512061-what-is-virtual-pins
* How to display ANY sensor data in Blynk app
- http://help.blynk.cc/en/articles/512056-how-to-display-any-sensor-data-in-blynk-app
6. ESP8266 에서 실행
ESP8266 에 소스를 입히고 실행시키면, 다음과 같은 화면이 Serial Monitor 에 출력 됩니다.
[5220] Connected to WiFi [5221] IP: 192.168.1.90 [5221] ___ __ __ / _ )/ /_ _____ / /__ / _ / / // / _ \/ '_/ /____/_/\_, /_//_/_/\_\ /___/ v0.6.1 on ESP8266 [5227] Connecting to blynk-cloud.com:80 [5586] Ready (ping: 125ms). ZE08-CH2O : 66 ZE08-CH2O : 112 ZE08-CH2O : 114 ZE08-CH2O : 117 ZE08-CH2O : 116 ZE08-CH2O : 114 ...
ASCII code 를 이용하여 Blynk 문자를 잘 만들었네요 :-)
Library 는 Heartbeat 를 통한 연결상태 확인도 해주는 군요. 잘 만들어져 있습니다.
여기까지 진행하면 ESP8266 에서 할 것은 이제 다 했습니다.
7. Blynk 모바일앱에서 설정
Blynk 로 데이터는 들어오고 있으니, 받을 수 있도록 연동 설정하면 됩니다.
데이터를 표현해주는 방법은 여러 가지가 있으나, 대략 Gauge / SuperChart 로 해결 됩니다.
스마트 폰에서 Create Project 후에 나오는 빈 화면 아무곳을 터치하면, Widget Box 가 아래처럼 뜹니다.
건전지 아이콘에 2000 크레딧이 미리 충전 (무료) 되어 있습니다.
이걸 다 쓰면, 돈을 충전해서 사용해야 합니다. 각 메뉴 추가시 크레딧이 차감되니 신중하게 위젯을 만들어야 합니다.
처음에 멋도 모르고 "Value Display" 를 설정 했더랬습니다. 그냥 조금하게 값만 표시됩니다.
역시 데이터 값 표현은 차트죠. SuperChart 만들어 봅니다.
PIN 정보는 항상 "Virtual 5 PIN" 으로 했습니다만, 다른 Pin 들도 다이렉트로 사용할 수 있나 봅니다.
만들어진 위젯에 손가락을 잠깐 동안 올려 놓으면, 위치를 이동 시킬 수 있습니다.
이제 센서 값들의 모니터링은 일상으로 사용하는 스마트폰에서 바로바로 확인이 가능하게 됩니다.
웹페이지를 띄울 필요도 없고, 인증을 걸 필요도 없이, 하나의 앱 처럼 사용할 수 있어서 편하긴 합니다.
FIN
'Software' 카테고리의 다른 글
Software | Google Adsense 적립금 타기 (0) | 2021.01.18 |
---|---|
Software | AWS Certified 자격증 취득기 - 5 (3) | 2020.12.18 |
Java | OpenJDK 업데이트 및 선택 변경 (0) | 2020.07.24 |
Software | Windows 10 Pro 와 Office 2019 (0) | 2020.06.28 |
Software | AWS Certified 자격증 취득기 - 4 (8) | 2020.06.17 |
오랜만에 Wowza 를 linux 환경에 설치해 봤습니다.
1. AWS Marketplace
클라우드 중에서 요즘 대세인 AWS 의 instance 에 설치해 봅니다.
그냥 EC2 instance 에 linux 를 깔고, Wowza 파일 받아서 설치할 수도 있으나, AWS 서비스에서 제공하는 3rd party 솔루션 제공 방법인 Marketplace 를 사용해 봅니다. 돈은 조금 더 들지만, 편합니다.
아무래도 Wowza 는 License 지불을 해야 하므로, Marketplace 에서는 "구독" 으로 취급됩니다.
한달에 기본 사용료 15 USD + EC2 시간당 사용으로 과금됩니다.
License 사용료가 한달에 15 USD 인 셈이군요.
2. Wowza 시작
Marketplace 를 통해 설치한 Wowza 인스턴스는 5분정도 있으면 생성이 됩니다.
맙소사... 너무 편해. 물리적인 서버도 필요 없고, OS 설치도 없었을 뿐더러, Wowza 어플리케이션 설치도 하지 않았지만, 생겼습니다.
EC2 Instance URL 로 접속하면, 위의 시작 페이지가 뜹니다. Next 눌러 줍니다.
처음 시작했으니, admin 의 이름과 암호를 넣으라고 합니다.
ID 는 wowza 이고, 비번은 instance ID 입니다.
EC2 instance 관리 화면에서 Wowza 서버의 Instance ID 를 카피해, 암호로 넣으면 됩니다.
Live 를 사용할 것이라면 게시지점을 넣으라고 합니다. URI 정보입니다만, 나중에 설정하면 되니, 과감하게 패스.
10여분만에 Wowza 한대 추가요~.
응?!!! 4.8.5 버전으로 업데이트가 공개되었다고 뜨네요. 지금 설치된 버전은 4.8.0.
3. Update 파일 다운로드
우선 OS 를 최신으로 update
$ sudo yum upgrade
저 위의 화면에 떠 있는 "Download" 를 누르면 될 것 같은데, 궂이 힘들게 해 봅니다.
Wowza 웹사이트에 가서, 회원 가입 > My Downloads 에서 4.8.5 버전 다운로드.
개인 PC 에 파일을 다운로드 받았으면, FTP 를 이용하든 해서 서버에 파일을 다운로드 받아 놓습니다.
저는 그냥 편하게 S3 사용 했습니다. (점점 AWS 로 대동단결)
4. 설치 파일 구성
먼저, 서비스를 내립니다.
$ sudo service WowzaStreamingEngine stop $ sudo service WowzaStreamingEngineManager stop
Wowza 가 설치된 하위 directory 중에 updates 폴더 권한을 모두 읽을 수 있게 한 뒤, 다운로드 파일을 updates 에 모두 옮깁니다.
$ unzip WowzaStreamingEngine-Update-4.8.5.zip $ sudo chmod -R 777 /usr/local/WowzaStreamingEngine-4.8.0/updates/ $ sudo mv * /usr/local/WowzaStreamingEngine-4.8.0/updates/
압축을 풀어서 updates 디렉토리에서 linux 용 명령어를 실행합니다.
최종적으로는 아래와 같은 depth 를 가지게 됩니다.
/usr/local/WowzaStreamingEngine-4.8.0/updates/WowzaStreamingEngine-4.8.5/linux
$ cd /usr/local/WowzaStreamingEngine-4.8.0/ $ cd updates/ $ cd WowzaStreamingEngine-4.8.5/linux/ $ pwd /usr/local/WowzaStreamingEngine-4.8.0/updates/WowzaStreamingEngine-4.8.5/linux $ sudo chmod +x *.sh $ sudo ./update.sh
오잉?!!!! Java 9 이상이 설치되어야 한다고 하네요. 기본으로 Java 8 이 깔려 있었습니다.
어쩔 수 있나요, Java 9 및 Java 13 도 깔아 줍니다. 자세한 설명은 아래 포스트를 참조해 주세요.
* Java | OpenJDK 업데이트 및 선택 변경
- https://chocoball.tistory.com/entry/Java-OpenJDK-update-change
5. update.sh
Java 환경을 만들어 주면, 문제 없이 설치가 시작됩니다. sudo ./update.sh !!!
응 업데이트 하셈.
기존 설정은 backup 으로 옮기고 업데이트가 끝납니다. 요즘은 서버 성능이 좋은지라, 예전 보다 엄청 빨라졌네요.
(거의 10여년 전에 회사 최초로 linux 상에서 Wowza 깔아봤었슴)
다시, 서비스 올려 줍니다.
$ sudo systemctl daemon-reload $ sudo service WowzaStreamingEngine start $ sudo service WowzaStreamingEngineManager start
6. 4.8.5
Management UI 에서 버전 확인해 봅니다.
오늘도 알찬 하루였습니다.
FIN
'Cloud' 카테고리의 다른 글
AWS | Lightsail 과 Outline 이용하여 VPN 만들어 보기 (9) | 2020.07.26 |
---|