'인터넷'에 해당되는 글 2건

  1. 2020.08.11 Software | Blynk 사용해 보기
  2. 2020.07.25 Wowza | AWS 에 Wowza 설치해 보기

Software | Blynk 사용해 보기

|

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

https://blynk.io/





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

https://examples.blynk.cc/


접속하면, 아래처럼 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


And

Wowza | AWS 에 Wowza 설치해 보기

|

오랜만에 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
And
prev | 1 | next