종전에 스마트홈 까페에 올렸던 샤오미 커튼 DTH 이다. 


  •  오픈, 클로즈시 완료타이밍에 맞춰 정확하게 상태반영 인식
  •  수동으로 커튼 조작시에도 ST에 상태 반영
  •  홈킷에서 쉐이드로 인식하여 '열어', '닫아' 등의 명령으로 조작 가능
  •  ST와 홈킷 거의? 완벽 싱크
  •  커튼 열림정도를 1퍼센트 단위로 조절 가능
  •  현재 커튼의 열림상태에따라 Open, Partialy Open, Closed의 세가지 상태로 표시


Smartthings App








Smartthings App 작동영상 



Homekit 작동영상 



Smartthings App  & Homekit 




XiaomiCurtainDTH_V.1.1 (1).txt




ESPCO2_DTH.txt

0. 시작하기 전에


ESP8266을 이용하여 처음 만든건 이산화탄소 농도 측정기이다. 


 사실 Netatmo를 사용하여 이산화탄소농도를 측정해보기 전에는 이산화탄소농도에 대해 중요하게 생각하지 않았다. 

(Netatmo에 대한 자세한 내용은 Makelism님의 글을 참조하면 좋다)



 왜냐하면 우리집은 단독 주택이고 침실에는 4짝으로된 아주 큰 창이 있고 창문을 닫아도 틈이 생각보다 많기 때문에 이산화탄소 농도가 높지 않을것이라고 생각했다. 하지만 Netatmo를 처음 설치하고 내 생각이 아주 잘못되었음을 알게되었다. 


대기중의 이산화탄소농도는 400ppm정도인데 이산화탄소 농도에 따라 아래와 같은 신체 영향을 유발할 수 있다고 한다. 


농도(ppm)

영   향

~450

  건강한 환기 관리가 된 레벨

~700

  장시간 있어도 건강에 문제가 없는 실내 레벨

~1000

  건강 피해는 없지만 불쾌감을 느끼는 사람이 있는 레벨

~2000

  졸림을 느끼는 등 컨디션 변화가 나오는 레벨

~3000

  어깨 결림이나 두통을 느끼는 사람이 있는 등 건강 피해가 생기기 시작하는 레벨

3000~

  두통, 현기증 등의 증상이 나오고, 장시간으로는 건강을 해치는 레벨

*우리나라의 경우 실내환기조건을 1000ppm으로 권고하고 있음


 실제로 침실을 장시간 비웠을때 400ppm 초반으로 낮아지는데 밤에 퇴근후 아내와 함께 방으로 들어가면 창문을 닫아 놓을 경우 불과 30분이면 1200ppm을 넘어서고 잠시후면 1500ppm을 넘어선다. 


 종전에 자고 일어나면 머리가 아픈경우가 종종있고 자고 일어나도 피곤함이 계속 남아있는 느낌이 많았는데 그것이 이산화탄소 농도때문이라고는 전혀 상상하지 못했다. Netatmo를 통해 환기의 중요성을 알고는 창문을 10Cm~20Cm는 항상 열어 놓는다. 그렇게 하면 침실의 이산화탄소 농도가 800ppm내외로 유지된다. 하지만 조금있으면 여름이라 다른 대안을 마련중이다.


 아무튼 실내의 이산화탄소농도를 적절하게 유지하는것은 요즘 이슈가 되는 미세먼지 만큼 중요하다. 그래서 아이들 방에도 이산화탄소 센서를 두고 싶은 마음에 Netatmo 추가 모듈을 구입할까 고민했지만 가격도 비싸고($79-약 9만원/+배송비) 연결성의 문제때문에 고민하고 있다 ST까페의 af님의 글을 통해 ESP8266으로 직접 만들어 보기로 했다. 



아래의 내용을 따르기 전에 먼저 이전에 작성된 아래의 두 글의 내용을 알고 있거나 선행하여야 한다.

ESP8266으로 IOT 시작하기 1 - 필요한것들

ESP8266으로 IOT 시작하기 2 -ESP Easy 설치하기



ST용 센서를 만들기 위한 전체적인 과정은 처음 접하면 어려워 보이지만 사실 아주 간단하다. 좀더 이해를 돕기 위해 전체과정을 요약해보면 다음과 같아. 


ESP8266에 펌웨어설치 - ESP Easy 설정 - ESP8266에 센서연결 - ST에 DTH설치 및 장치생성 - STapp에서 장치 연결




1. ESP Easy 디바이스 설정하기 


ESP Easy를 이용하면 펌웨어에서 지원하는 장치들은 아주 쉽게 연결하고 사용할 수 있다. ESP Easy에 접속하여 Device항목에서 장치를 선택하면 아래 사진 처럼 장치 이름 옆에 "?"가 있고 "?"를 클릭하면 해당 장치와 연결방법등 자세한 내용을 확인할 수 있다. 



1-1. 이산화탄소 센서 설정하기


먼저 이산화탄소 센서를 연결하기 위한 정보를 확인해 보자. Device에서 Gases-CO2 MH-Z19를 선택하면 아래와 같은 화면을 볼수있다.

그럼 위와 같이 설정을 한다. 1st GPIO와 2nd GPIO는 아래 센서의 TX, RX와 연결할 핀을 선택하는 부분이다. 위 처럼 선택하면 된다. 그리고 아래 이산화탄소 센서의 Tx, Rx부분에 연결하면 된다.  

아래로 스크롤하여 아래부분 처럼 설정하면된다. 


참고로 Formula부분은 센서의 값을 보정하는 수식을 넣을수 있는 곳이다. 예를 들어 이산화탄소농도가 대기중에 노출했을때 450ppm이 나온다면 이값을 0.9를 곱하거나 50을 빼서 400ppm으로 맞추어 줄수있다. 




1-2. 조도 센서 설정하기


이산화탄소외에 조도센서도 필요하여 조도센서도 연결하였다. 조도센서가 있다면 아래와 같이 설정하면 된다. 



조도 센서의 경우 작동 전압이 3.3V이기 때문에 
VCC는 ESP8266의 3.3V 핀에 연결하고 
GND는 ESP8266의 GND핀에 연결하면 된다. 그리고 
SCL은 ESP8266의 D1핀에 연결하고
SDA는 ESP8266의 D2핀에 연결하면 된다. 



위와 같이 설정하고 Close를 누르고 나오면 아래와 같이 두개의 장치가 등록된 화면을 볼 수 있다. 




2. 브레드보드에 ESP와 센서 연결하기 


 브레드보드를 이용하여 ESP8266과 장치를 연결하기위한 가장 흔한 방법은 점프 선을 이용하는 것이다. 점프선은 보통 이전 글에서 소개한 두종류가 가장 많이 쓰이는데 조도센서와 이산화탄소는 서로 다른 점프선을 이용하여 연결하여 보았다.


 브레드보드는 아래 첫번째 사진의 설명처럼 가로 5칸이 서로 연결되어있다. 그래서 같은 5칸안에 핀이 꽂히면 점프선을 이용하여 연결해 줄 필요가 없다. 하지만 대부분 다른 곳에 연결되기 때문에 점프선을 이용하여 아래처럼 연결해주어야한다. 

  

 위 사진처럼 조도 센서를 연결하는데 사용한 점프선의 경우 장치를 연결하기 전에 핀번호를 확인하고 미리 꽂아서 사용하는데 깔끔하게 설치할 수 있는 장점이 있다.


  

 아래 사진처럼 이산화탄소센서를 연결한 점프선은 공간을 많이 차지하지만 장치를 미리 배치한 후에 핀을 연결할 수 있기때문에 설치하기가 편한 장점이 있다. 


  



 아래처럼 ESP8266에 OLED 디스플레이를 연결하여 센서에서 측정된 값이나 할당 받은 IP주소등을 직접확인 할 수도 있다. 아니면 LED를 이용하여 특정 농도이상일때 점등하여 상태를 표시할수도 있다.





3. ST와 연결하기



3-1. ST IDE사이트에 장치 추가하기


 ST와 연결은 첨부된 DTH를 다운로드하여 IDE사이트에 추가한 후 아래처럼 My Device항목에서 원하는 이름으로 장치를 추가해주면 된다. 




3-2. ST app에서 ESP8266 연결하기


IDE사이트에서 추가한 장치에 들어가면 아래와 같은 화면을 볼 수 있다. 그럼 우측 상단의 톱니모양의 설정 버튼을 누르면 오른쪽 화면이 나오는데 여기서 ESP8266이 할당받은 IP주소(192.168.31.81)을 입력하고 CO2업데이트 주기를 설정해준다음 Save를 눌러준다. 




설정해주면 아래처럼 측정값들을 ST에서 불러오는 것을 확인할 수 있다.



4. 기성 제품과 비교하기 


4-1. Netatmo와 ESP8266의 이산화탄소 측정결과 비교


 두 말할 필요가 없다. 아래 비교 결과를 보자.  같은 시간대에 어플에 표시된 수치를 비교한 것이다. 평균적으로 ESP8266용 이산화탄소 센서의 농도가 조금더 높다. 어느값이 더 정확한지는 알수가 없다. ㅠㅠ 그리고 ESP8266의 경우 측정값을 임의로 보정해 줄수 있다.




아래의 그래프는 측정값을 그래프로 비교한 것이다. 시각적으로 좀더 비교가 쉬울것 같다. ESP8266의 경우 데이터를 Ubitos에 업로드하여 그래프로 시각화한 것이고 Netatmo의 경우 아이폰에서 가로모드로 변경하였을때 제공하는 그래프를 여러장 캡쳐하여 포토샵을 이용하여 붙인 후 두개의 그래프를 겹친것이다.


사실 어떤 장치가 더 정확한지 알수는 없지만 농도의 증가와 감소를 비교해보면, 그리고 나와 아내의 출입 시간등을 고려해보면 둘다 높은 신뢰도를 보여주는 것으로 유추할 수 있다. 



4-2. 조도 센서 비교하기


 사실 Smartthings를 사용하면 다양한 센서류를 사용가능하다는 장점이 있지만 사실 만족스러운 조도센서를 찾기는 쉽지않다. 왜냐하면 첫째는 리포팅 주기이다. 대부분 조도센서를 포함한 장치들이 조도 리포팅 주기가 빠르지 않은 경우가 많거나 미세한 변화에는 수치가 바뀌지 않거나 리포팅하지 않는 경우가 대부분이다. 


 그리고 두번째는 조도 센서를 이용하여 자동화 하려다 포기한 이유이기도 한데, 바로 저조도에서 분별력이 없다는 것이었다. 

 조금 어두우면 조도값이 무조건 '0'이다. 그래서 휴 취침등이 켜져있으나 꺼져있으나 조도값이 '0'이기 때문에 자동화 자체가 불가능하다. 그럼 ESP8266의 조도 센서는 어떨까? 그래서 에이온 멀티센서의 조도값과 비교해보았다. 비교환경은 아래 사진처럼 침대 헤드보드 위, 휴 벌브 아래에 위치 시켜 휴의 밝기에 따라 변화되는 값을 측정해 보았다. 조도 센서는 최대한 비슷한 위치에 두고 테스트 하였다.




그 결과는 아래 사진을 보면 바로 비교가 될것 같다. 결론 부터 말하면 저조도에서의 분별력은 기성제품보다 훨씬 뛰어나다. 




아래는 휴에서 밝기가 가장 낮은 상태이며 사진은 실제 눈으로 봤을때보다 약간 밝은? 거의 비슷한 정도이다. 에이온 센서의 경우 벌써 조도가 '0'이지만 ESP센서의 경우 3.4lux값이다. 


아래 사진은 방에 모든 등이 꺼진 상태이며 맞은편 벽에 TV가 켜져 있는 상태이다. 에이온은 '0'이지만 ESP센서의 경우 '0.9'의 값으로 빛을 감지한다. 


위의 상태에서 손으로 ESP센서부위를 1Cm정도 위에서 덮으면 조도값이 '0'으로 바뀐다. 




5. 홈킷과 연동


당연히 homebridge-smartthings를 이용하여 홈킷과 연동이 가능하도록 DTH를 만들었다. 홈킷에서는 CO2센서, 온도센서, 조도센서의 3가지 장치로 표시된다. 


홈킷에서는 1200ppm이상이면 경고알림이 뜬다. 




6. 알아야할 것 들


1. ESP8266은 상당히 안정적으로 작동한다. 하지만 WiFi기반이기 때문에 WiFi네트워크에 문제가 있거나 연결이 끊어지면 ST에서 정보를 가져올 수 없다. 


2. ESP8266에서 ST로 정보를 보내는 방식이 안정적이고 좋으나 내가 그 정도의 실력이 되지 않아 현재는 ST에서 ESP8266의 json값을 가져와 상태를 반영하는 방식이다. 그런데 ST의 DTH의 시간 함수 run이 정상적으로 작동하지 않을때가 있는데 그러면 데이터를 가져오지 않을수도 있다.그때는 refresh를 해주어야 한다. 물론 이런 경우는 아주 드물긴하다. 


3. 이산화탄소 센서는 캘리브레이션(보정)이 필요하다. (co2meter.com참조)


3-1. 신선한 야외공기에 장시간 노출하여 이 때값이 400ppm이 되도록 보정하는 방법

이는 주1회나 월1회 정도 신선한 공기에 노출하여 보정해주면 된다.


3-2. ABC (Automatic Baseline Calibration)을 이용하는 방법

 이는 위의 ESP Easy의 이산화탄소센서 설정페이지의 ABC항목에서 선택해주면 된다.

ABC방법은 일반적인 가정 처럼 주기적으로 사람이 없어서 센서가 이산화탄소 농도가 400ppm 인 신선한 공기에 노출된다는 가정하에 센서가 스스로 보정하는 방식이다. 이 방식은 며칠에 한번씩 신선한 공기에 노출된다는 전제하에 별다른 교정이 필요하지 않다.


4. 이산화탄소 농도를 아는것도 중요하지만 농도를 낮추는 방법이 더 중요하다.

이산화탄소 농도가 실내공기질을 평가하는 중요한 요소중의 하나지만 농도가 높을때 낮추는 방법은 일반가정에서는 실외공기를 유입하는 방법이 유일한 방법이다. 


 하지만 창문을 열어 환기를 시키는 것은 또 다른 공기질 저하를 가져온다. 거주지의 주변환경에 따라 다르겠지만 가장 큰 것은 미세먼지이다. 요즘은 꽃가루도 한몫한다. 


그래서 가장 좋은 방법은 전열교환기를 이용하여 필터링된 외부 공기를 실내 공기와 교환해주는 것이다. 최근에 지어진 아파트들은 대부분 전열교환기가 설치되어있는데 많은 사람들이 어떤 용도인지 모르거나 전기가 든다는 이유로 사용하지 않는 경우가 대부분이다. 


나처럼 전열교환기가 설치되어있지 않은 노후한 단독주택은 사실 창문을 여는 방법외에는 딱히 방법이 없다. 그러던 차에 ST까페의 플루님께서 샤오미 공기청정기를 이용해서 외부공기를 필터링하여 유입하는 DIY 도구를 소개해 주셔서 구매를 했는데 기대만큼 효과가 있었으면 좋겠다.


 


7. 다음 프로젝트


위의 장치들을 이용하여 아이들방에 놓을수 있도록 케이스를 만드는것과 아이들이 시각적으로 알수있게 하는것이다. 

  1. 오날두 2018.05.01 23:26 신고

    케이스만 예쁘게 만들면 정말 팔아도 되겠는데요? 케이스까지 만들어서 판매해보세용 ㅎㅎ 카페에서도 많이 살거같아요

    • ShinJjang 2018.05.02 15:29 신고

      안그래도 요즘 부업을 해야겠다 생각중이여서 저도 그래볼까 생각하고 있습니다. ㅎㅎ 근데 과연 살지 궁금하네요^^;

  2. Makelism 2018.05.02 13:56 신고

    완성품만 봤을 때는 제가 할 수 없는 수준이라고 생각하다가 밑에 포스트가 자세해서 저같은 사람도 가능하겠네요.
    변기 자동화와 이산화탄소 센서를 설치하고 싶었는데 눈이 반짝거리기 시작했습니다.

    • ShinJjang 2018.05.02 15:44 신고

      메이크리즘님 안그래도 방금 메이크리즘님의 netatmo글을 보고 왔습니다. 홈킷까지 보면서 반품하셨다고 하셨는데 아닌가? 라고 순간 착각할 정도로 잘되는것 같아 다행이라 생각했었네요.

      재미삼아(메이크리즘님은 재미라고 느끼지 않으실수도 있지만^^;) 한번 만들어보는것도 괜찮을것 같아요.

      위에다 온습도 센서등 필요한 센서를 추가하셔도 되구요. ^^

  3. 어리벙벙7 2018.05.03 14:28

    글을 보고 저도 도전하려고합니다. ^^
    문제는 ST에 붙이지 않고 바로 홈브릿지로 붙일 수도 있을 까 고민이네요. ㅠ

    • ShinJjang 2018.05.03 16:24 신고

      네 저도 어제 테스트해봤는데 홈브릿지에 바로 붙일수 있습니다^^ 기존의 만들어 놓은 homebridge플러그인을 조금 변경해서 지금 테스트중이에요. 테스트 끝나면 글 올리도록 하겠습니다.

    • 어리벙벙7 2018.05.04 12:07

      와우!! 감사합니다^^ 바로 구매 들어 가야겠네요~^^

  4. 어리벙벙7 2018.05.16 12:31

    안녕하세요.

    사용하신 부품의 이름이나 구매처를 알 수 있을까요?

    제작을 위해 구매하려고 보니 빵판 외에는 어디에서 구매를 해야 할지 몰라서요 ㅠ (ESP는 확인 했는데, 조도센서나, CO2센서는 어디서 구매하는지 모르겠네요 ㅠ)

    • ShinJjang 2018.05.17 17:21 신고

      센서류는 알리에서 구매를 했답니다.
      이산화탄소 센서는 MH-Z19 를 검색하시면 되고,
      조도 센서는 TSL2561 로 검색하시면 됩니다^^

    • 어리벙벙7 2018.05.17 19:08

      감사합니다. ^^ 센서류도 구입해야겠네요~^^

      혹시 ESP는 어떤게 좋을까요? 보니깐 Wemos D1 mini와 Node MCU 두개를 다 사용하신거 같은데 처음 쓰기엔 어떤게 좋을까요?

      마지막으로 보드에 전원이 들어가면 좋다고 하셨는데, 최종 만드신거에는 따로 전원을 인가 안하고 ESP에서 바로 전원을 받아서 사용하신거 같은데 그렇게 해도 저 센서류에는 괜찮겠죠??^^

    • ShinJjang 2018.05.18 18:44 신고

      간단하게 사용하시려면 Wemos D1 mini를 사시길 추천드려요. 버전은 V3로 사세요. 특별히 센서류를 많이 연결하지 않는다면 따로 전원은 필요가 없답니다.

  5. 1234 2019.03.10 02:48

    이산화탄소 센서만 구해서 해보고 있는데.... 스마트싱스 앱에 값이 오지를 않네요.ㅠㅜ

이글은 저처럼 ESP8266초보들을 위한 글입니다.^^;



1. ESP8266용 컴퓨터 드라이버 설치하기


ESP8266이 도착하면 가장 먼저해야하는것은 컴퓨터에 연결해서 원하는 펌웨어를 업로드하는 것이다. 


 1편에서 소개한 Wemos D1 mini나 Node MCU는 Micro USB단자가 있어 바로 컴퓨터에 연결이 가능하다. 하지만 케이블을 이용해 처음 컴퓨터에 연결하면 아무런 반응이 없다. 왜냐하면 기본적인 하드웨어 드라이버가 설치되어있지 않기 때문이다.


 물론 기존에 드라이버가 설치되어있거나 ESP8266시리즈 중에 자체적으로 드라이버를 담고 있는 제품도 있기때문에 USB to Serial로 바로 잡힐 수도 있다. 하지만 대부분의 경우 드라이버를 먼저 설치해 줘야 한다. 아래는 드라이버를 다운로드 할수있는 주소 링크이다. 


for Wemose D1 mini


for Node MCU


ESP8266의 종류와 운영체제에 맞게 각각의 드라이버를 다운로드하여 설치한 후에 연결하면 장치관리자에서 아래 사진 처럼 포트 목록에 USB-SERIAL 로 잡히게된다. 이때 반드시 몇번 COM포트에 연결되어있는지 기억해야 한다. 




2. ESP Easy 펌웨어 설치하기


드라이버 설치가 정상적으로 끝나고 위 사진 처럼 COM포트로 정상적으로 연결되면 이제 끝난거나 다름없다. 

이제 몇번 클릭만 하면 ESP Easy 펌웨어를 설치할 수 있기 때문이다. 


먼저 아래 사이트로 이동하여 아래 사진에 체크된 최신 펌웨어 zip파일을 다운로드 하면 된다. 


ESP Easy Release site





다운로드를 완료한 후 압축을 풀면 아래와 같은 파일들이 있다. 



위의 파일들 중에 먼저 우리가 업로드할 펌웨어는 

ESP_Easy_mega-20180429_normal_ESP8266_4096.bin 파일이다. 


파일은 크게 개발자용(dev), 테스트용(test), 안정화용(normal)로 나뉘어지고, 다시 ESP8266의 메모리용량이나 종류에 따라 세부적으로 나뉘어진다. 우리가 일반적으로 사용하는 Wemos D1 mini나 NodeMCU의 경우는 파일명 뒤에 ESP8266_4096인 파일을 사용하면 된다. 


1. 먼저 FlashESP8266.exe를 더블 클릭하여 실행 


2. 아래와 같은 화면이 뜨는데 장치관리자에서 확인한 컴포트번호를 선택하고 업로드하고자 하는 펌웨어를 선택


3. Flash를 클릭하면 아래와 같은 진행화면이 보여진다. 


4. 완료가 되면 아래와 같이 메세지가 뜬다.


5. Micro USB단자를 ESP8266에서 제거하고 재연결하여 재부팅을 해준다.



3. ESP8266 WiFi 설정하기

이제 펌웨어 업로드는 끝이 났고 ESP8266을 사용하기 위한 간단한 WiFi설정을하고 ESP Easy페이지에 접속해보자.


1. 먼저 재부팅 하는 동안 휴대폰으로 WiFi연결에서 AP를 검색한다. 


그럼 아래 처럼 ESP_Easy_0이라는 AP가 보이는데 여기에 접속하면 된다. 


초기 암호는 configesp 이다. 


 



2. WiFi 설정하기 

보통 ESP_Easy_0이라는 AP에 연결되면 바로 WiFi를 설정할수있는 setup화면이 뜨는데 간혹 뜨지 않으면 폰의 브라우저를 이용하여 192.168.4.1에 접속하면 아래와 같이 WiFi설정화면을 볼수있다. 


아래 화면에서 자신의 AP를 선택하고 하단에 Password를 입력하고 연결을 누른다. 

   


 연결을 누르면 좌측과 같은 화면이 뜨고 조금더 기다린 후에 AP에 정상적으로 연결이 되면 우측 처럼 할당 받은 IP주소가 뜨게되는데 반드시 캡쳐하거나 주소를 기록해두도록 한다.


참고로 자신의 공유기 설정항목으로 들어가 ESP에 고정 IP를 할당하도록 하는것이 좋다. 그래야 재부팅되었을때 접속하는데 어려움이 없기때문이다.

   




4. ESP Easy화면에 접속하기 


 위의 마지막 화면에서 표시된 할당받은 ip주소를 컴퓨터나 폰의 브라우저 주소창에 입력한 후 접속하면 아래와 같은 화면을 볼수있다. 


 그럼 먼저 Config화면으로 이동하자.



config 화면으로 이동하면 unit name과 number를 바꿔주자. ESP8266이 하나이면 상관없지만 두개 이상일 경우 네트워크 접속에 문제가 생길수 있기 때문이다. 


그래서 아래처럼 자신이 원하는 이름과 넘버로 설정해준 후 하단의 submit단추를 클릭해준다. 


사진에는 없지만 공유기가 아니라 여기서도 고정IP를 설정할 수 있도록 되어있다. 하지만 공유기에서 해주는 것이 더 안정적이다. 




이제 WiFi접속 유무를 ESP8266의 LED를 통해 알수있도록 설정해보자. 아래 처럼 Hardware항목으로 이동한 후 Wifi Status LED 항목을 아래처럼 수정한 후 submit단추를 클릭해보자.



그럼 아래 우측 사진과 같이 Wemos D1 mini의 LED에 파란 불이 들어오는 것을 확인할 수 있다.


  




이제 IOT 장치를 만들기위한 기본적인 설정이 끝이 났다. 이제 자신이 만들고자 하는 장치들을 연결하여 테스트를 하고 원하는 IOT허브에 연결하여 자신의 IOT환경에 추가하면 된다. 그 과정은 다음편에서 설명하도록 하겠다.



참고로 ESP Easy에 대한 자세한 설명들은 아래 wiki페이지를 통해 알 수 있다.


ESP Easy WiKi Site


ESP Easy에서 지원하는 장치 목록

현재 지원하는 장치목록이며 현재 테스트 중인 장치들까지 합치면 목록의 두배정도 된다.


  1. 오날두 2018.05.01 23:24 신고

    빨리 해보고싶어요. 좋은 포스트 감사드립니다^^

  2. Makelism 2018.05.02 21:04 신고

    정독하면서 영감을 얻었습니다.
    UV 센서 해결할 수 있겠네요.
    감사합니다.

    혹시 지원 목록에 없는 장치도 가능할까요?

  3. mr.sung 2019.01.17 18:20

    아두이노 프로그래밍 연습도하며 여러기능도 쓰고그러면
    개발자 bin을 깔면되겠지요?
    testing sensor pms7003센서를 쓰고 싶은데 안정화bin을 깔았더니 없네요 개발자, 테스트 bin둘다 pms7003을 쓸수있나요?

  4. 밸리1 2019.04.02 17:14

    신짱님의 관련글 다시 정독중입니다. ㅎㅎ. 감사합니다.

아두이노나 ESP8266을 인터넷을 통해 접하긴 했지만 개발자들이나 쓰는 거라 생각했고 나와는 먼 이야기라고 생각했다. 

그러던차에 ST까페에서 af님의 글을 통해서 나의 IOT환경에 접목할 수도 있겠다라는 생각을 하게 되었다. 


ESP8266을 처음 접하는 사람들은 아마 나 처럼 보통사람들이 다루는 물건이 아니라고 생각할지도 모른다. 물론 틀린 말은 아니다. 하지만 제한된 범위안에서 이긴 하지만 많은것들을 할수있다. 그것도 아주 저렴한 비용으로 말이다. 


ESP8266의 장점

  1. 상상하는 모든 IOT가 가능하다. 물론 능력이 필요하다.
  2. 정말 저렴한 비용으로 생각을 현실로 만들수 있다.
  3. 많은 개발자들이 만들어 놓은 예제가 있다.
  4. 연동가능한 장치가 무수히 많다.


위와 같은 기대를 안고 ESP를 구매한지 한달이 훨씬 넘었지만 아직 제대로 할 수 있는게 없다. 프로그램 언어를 모르는 나같은 사람에겐 그림의 떡이다. 그래도 정말 다행인건 나 같은 사람들도 쉽게 쓸수있도록 만들어 놓은 펌웨어가 있다는 것이다.


하지만 처음 ESP8266을 접할때 더 난감한건 어떤 제품을 사야하냐는 것이다. ESP8266으로 검색했을때 너무 많은 제품이 나오기 때문에 어떤것을 구매하는 것이 옳은지 알기가 쉽지 않다. 


ESP8266은 크게 ESP-01, ESP-12, ESP-32로 구분되는 것 같다. 그중에 가장 흔하게 쓰이는 것은 ESP-12시리즈 이고 ESP-32는 블루투스 통신도 가능하다. 자세한 것은 다음 링크를 참조하면 된다.


나는 시험 삼아 세 가지 시리즈에 해당하는 제품을 모두 구매하였는데 결론적으로 나 같은 초보에게 가장 좋은 선택은 ESP8266 12E 기반의 Wemos D1 mini였고 두번째가 Node MCU 였다. 이유는 누구나 쉽게 사용할수 있도록 개발된 펌웨어인 ESP Easy가 ESP8266 12E 기반으로 만들어졌기 때문이다. 


    

Wemos D1 mini                                                                            Node MCU



ESP8266을 사용하기 위해 기본적으로 필요한 것들


ESP8266을 사용하거나 테스트하기 위해서 위에서 말한 ESP8266외에 몇가지 기본적으로 필요한 것들이 있다.


1. 브레드보드(Bread board, 빵판)

위에서 보는것 처럼 ESP8266은 칩형태로 되어있기 때문에 기판에 납땜을 하여 사용하거나 점프케이블을 이용해서 연결해야한다. ESP8266으로 원하는 형태로 만들기위해서는 정형화하기 전에 테스트 과정을 거쳐야하는데 이때 ESP8266을 외부전원이나 장치들과 유동적으로 쉽게 연결가능하게 해주는 것이 베이스가 되는 브레드보드이다. 

 

크기에 따라 여러 종류의 브레드 보드가 있다.



2. 점프 케이블

브레드 보드에서 ESP8266의 핀들과 다른 장치의 핀을 연결해 주는 역할을 하는 점프 케이블이 필요하다. 

점프 케이블도 일반적으로 아래와 같이 2종류가 있다. 

 




3. 전원장치

브레드 보드에 전원을 공급해주는 장치이다. Wemos D1 mini나 NodeMCU의 경우 micro USB를 통해 보드에 전원을 공급하고 장치에 전원을 공급할수있는 핀이 따로 있기 때문에 따로 전원장치가 필요없어도 된다. 하지만 하나의 ESP8266에 여러개의 외부장치나 고전력의 외부장치를 연결하게되면 ESP8266가 다운되거나 외부장치가 제대로 작동하지 않을수 있기 때문에 외부전원을 가지고 있는것이 좋다. 

   

위 사진의 전원장치는 DC6.5~12V 전원을 이용하는 브레드보드 전용 전원장치로 우측 사진처럼 브레드보드 양쪽에 5V전원과 3.3V전원을 각각 공급해준다. 


아래 사진의 전원장치는 AC전원을 이용해 우측사진처럼 5V전원과 3.3V전원을 공급해주며 테스트환경이 아니라 실제 ESP8266과 각종 장치들을 이용하여 기판에 제품화할때 사용가능하다. 물론 점프를 이용하여 브레드보드에도 전원공급이 가능하다.


그 외에는 각자가 만들고자하는 장치에 따라 필요한것 들을 구매하면 된다. 









  1. 오날두 2018.05.01 23:22 신고

    자주 와서 계속 보겠습니다^^

0. 수위센서가 필요하다

집이 오래되다 보니 일반적인 상황에서는 필요없는 것??들이 필요하게 되는 것 같다. 나무 보일러 외출 자동화도 그랬듯이 말이다.


우리집은 보일러도 기름과 나무의 하이브리드? 였듯이 물도 산에서 내려오는 무료 물과 상수도를 통해 공급되는 유료 물, 두 가지를 쓰는 하이브리드이다.


사실 집을 지었을때 상수도가 들어오지 않았기 때문에 산에서(산속 수영장 근처에 수원?이 있다) 집까지 관을 매립해서 식수로 쓰고 있는 상황이었다. 그러다 몇 년 전에 상수도가 마을에 들어오면서 우리집에도 수도가 들어왔는데 수도가 물탱크에 연결되지 못하고 현관문 기둥 옆에 1미터 정도 높이로 돌추되어있는 상황이다. 사실 상수도는 거의 쓰지 않고 있었다. 


그런데 문제가 생겼다. 왠만하면 산에서 내려오는 물 관이 얼지 않는데 이번엔 관 중간에 에어가 찬데다 강추위로 얼어버렸다. 한번 얼면 추운 겨울동안은 녹기가 힘들다고 봐야한다. 그래서 물탱크에 물을 현관문 옆에 돌출된 수도관에서 부터 옥상에 있는 물탱크까지 호스를 연결하여 물을 받아야 한다. 


대충 때를 맞추어 상수도를 틀고 끄고 하면 되지만 때를 잘못 맞추면 와이프나 아이들이 샤워하는 도중에 물이 비게되어 5~10분정도 추위에 떨어야 하는 불상사가 발생한다. 그리고 상수도를 틀어놓고 잠궈야할 타이밍을 놓치면 물탱크에 물이 넘쳐 옥상이 물바다가 된다. 그래서 자동화가 필요하다는 생각이 들었고 실행에 옮겼다.




1. 준비물


1. 방수 케이스

2. PCB기판

3. 220V to 5V&3.3V 

4. 5V릴레이

5. 터미널, 커넥터

6. 샤오미 도어센서

7. 비접촉 수위센서

8. 220V전원공급선

9. 기판용 회로연결용 테프론 와이어, 랜선, 납땜 도구, 절연테이프 등등




2. 도어센서 접점제어용 개조하기


2핀 커넥터와 테프론 와이어, 샤오미 도어센서를 이용하여 아래의 과정으로 개조하면 된다.


테프론 와이어를 적당한 길이로 자르고 끝부분 피복을 벗겨 준비한다.


샤오미 도어센서의 위의 두 지점에 테프론 와이어를 납땜한다.


그리고 드릴을 이용하여 도어센서 케이스의 적당한 부위에 구멍을 뚫어 선을 통과하여 다시 기판을 조립한다.

핀을 테프론 와이어 끝에 크림핑 툴을 이용하여 찍는다. 찍기 전에 살짝 납땜을 하는것도 좋다. 그리고 2핀 커넥트를 꽂아 완성한다.


이전에는 전선을 릴레이에 바로 납땜하여 연결하였는데 재활용이나 테스트등 편의를 위해 커넥트를 이용하였다.




3. PCB기판 조립하기


PCB기판에 회로들을 조립하는 동안 너무 집중해서 하다보니 작업동안 사진을 찍지 못했다. 그래서 결과 사진밖이다.


ㄱ. 3.3V는 센서 전원용으로 포트를 만들었다. 대부분의 도어센서들은 3V수은 전지를 사용하기 때문에 수은 전지를 이용하지 않고 따로 전원을 바로 공급하기 위해 만들었다. 


ㄴ. 수위센서 연결은 랜 선을 이용하였다.


ㄷ. 도어센서 연결은 3핀 커넥트를 이용하여 릴레이의 NO(Normal Open-비전원시 열림), NC(Normal Close-비전원시 닫힘)를 선택적으로 사용할 수 있도록 했다. 수위센서에서도 고수위 센서는 NC포트를 이용하고 저수위 센서는 NO포트를 이용했다.


ㄹ. 아래는 기판 뒷면에 회로연결을 위해 와이어를 연결한 것이다.



수위센서 연결은 사진을 찍지 못했다.




4. 설치하기


센서함은 야외에 설치 할 것이기 때문에 방수 케이스를 조립한다.


딸아이 방에서 전원선을 가져왔고 창틀 상단에 피스를 이용하여 고정하였다.


물탱크 상단부와 하단부에 수위센서를 설치하면 끝이다. 설치는 'ㄱ'자 브라켓 끝부분을 구부리고 브라켓은 물탱크에 거친면용 초강력 양면테이프를 이용하여 붙여주고 몇 시간정도 기다린다. 그런 후 수위센서를 브라켓에 끼워서 물탱크에 부착하면 된다.





5. ST, 홈킷 등록 & 웹코어 이용하여 자동화하기


ST에 고수위, 저수위용 센서 두개를 연결하고 홈킷에도 등록했다. DTH를 수정하거나 홈브릿지 내용을 수정해서 다른 센서로 바꾸고 싶지만 귀찮아서 그만 뒀다. 


그리고 웹코어를 이용하여 수위에 따라 아버지와 내게 문자가 오도록 자동화하였다. 


0. 시작하며

우리집에 있는 전자제품들은 대부분 iot라는 개념이 없던 시절에 나온 제품들이다. 가전의 경우 대부분 10년 이상되었다. 이런 오래된 가전들의 작동상태를 판단할수있는 방법은 현재 크게 아래와 같은 3가지이다.


1. iot 아울렛(소켓)을 이용하여 작동시 전력과 작동하지 않을때 대기전력의 차이를 통해 전원상태를 알수있는 방법

2. TV나 컴퓨터 처럼 USB전원이 있는 제품의 경우 USB에 들어오는 전원을 도어센서와 연결하여 트리거로 이용하는 방법 - 링크 -

3. 에어컨처럼 작동시 하드웨어적으로 이동(송풍구 도어열림닫힘)이있는 제품의 경우 도어센서를 이용하여 전원상태를 알수있는 방법


1번의 경우 소켓이 추가되어 외형적으로 부피를 많이 차지한다. 그리고 대기전력이 거의 없는 세탁기와 같은 제품은 굳이 비싼 플러그를 꽂아두는 것은 의미가 없다. 그리고 무엇보다 세탁기의 경우 플러그가 오작동하면 곤란한 일이 발생하기도 한다.

2,3번의 경우 사용할수 있는 제품이 제한적이고 요즘 나오는 무풍에어컨의 경우 움직이는 도어가 없어 3번이 적용이 불가능하다.


현재 본인의 경우 1, 2, 3을 모두 쓰고 있는데 세탁기의 경우 위의 3가지 중 쓸수있는 방법은 1번 밖에 없는데 위에서 언급한 이유로 사용하지 않고 있었다. 

세탁기의 경우 아내가 돌리고 나면 대부분의 경우 끝났는지 확인하는 것은 나의 몫이다. 그래서 새로운 트리거가 필요하다는 생각을 하다 새롭게 만들어 보았다.


1. 준비물




ㄱ. 조도 릴레이 모듈

ㄴ. 샤오미 도어 센서

ㄷ. USB전원 케이블

ㄹ. 3D프린터한 모듈용박스와 조도센서용 캡(위사진의 박스와 캡은 V.2이고 아래 실제 설치된것은 V.1이라 조금 다르다)

ㅁ. 납땜을 위한 기본 도구들


2. 원리

조도센서를 이용하여 전자제품의 전원 표시 LED의 빛을 감지하여 전자제품의 전원 ON/OFF를 판단하는 원리이다.


전자제품 전원ON -> LED켜짐 -> 조도릴레이 모듈 OFF -> 도어센서 상태 변화 -> ST에 트리거로 작동



3. 센서 캡 씌우기

조도센서 릴레이 모듈은 다이얼을 이용해 작동 역치 밝기를 세팅할수있는데 외부 빛의 영향을 막기 위해 아래와 같은 캡을 만들어 씌웠고 전자제품 부착은 양면테이프를 붙여서 이용하면 된다.


4. 도어 센서연결하기

두가닥의 선을 이용하여 릴레이에 연결한 후 도어센서에 연결한다. 도어센서 작업은 다음 링크를 참조하면 된다.


5. 전자제품에 설치하기

모듈에 USB케이블을 이용해서 전원을 공급한 후 적정한 곳에 부착하여 위 우측사진에 보이는 '+'모양의 다이얼을 이용하여 작동여부를 확인하며 역치 밝기를 적절하게 조절한다.

그리고 모율박스도 보이지 않는 곳에 적절하게 붙인다. 


6. 작동 영상



작동 확인 후 웹코어를 이용해서 문자 알림과 구글미니 음성 알림을 설정하여 마무리 하였다.


  1. 오날두 2018.01.30 14:26 신고

    잘봤습니다 신짱님! 모듈박스같은건 어디서 구입하신거에요?

  2. Makelism 2018.01.31 18:42 신고

    댓글보고 위에 다시 봤습니다.
    이런 포스트 보면 프린터 하나 장만하고 싶네요.
    그나저나 저런 생각은 또 어떻게...대단하세요.

  3. 쿠쿠럴보 2018.02.08 13:55 신고

    리본이 예쁩니다.
    프린터 뿜뿌는 주시면 안됩니다~~~~

많은 분들이 네스트를 통해 난방 자동화를 한다. 나 또한 네스트 디자인이 마음에 들어 너무 하고 싶지만 여건상 그게 불가능하다. 우리집은 나무 보일러를 주 난방용도로 사용하기 때문에 네스트를 통한 정확한 제어 자체가 불가능하다. 


I. 우리집의 현재 상황

1. 난방은 주로 나무보일러가 담당 

2. 온수는 기름보일러와 나무보일러가 함께 담당 

a. 일반적으로 온수 사용은 나무보일러에 저장된 온수 사용 

b. 샤워를 할경우 안정적인 수온을 유지하기 위해 기름보일러를 온수모드로 작동시켜 샤워를 한다. 


1) 문제점

나무보일러의 난방수가 기름보일러를 통과한 후 각방으로 공급되는 것이다. 그래서 온수모드를 작동시켰을대 기름보일러가 온수를 데우지 못하고 나무보일러의 난방수를 데우는 역할을 해버린다. 그래서 기름보일러 온수모드를 키면 나무보일러를 외출모드로 반드시 바꾸어 주어야 한다. 


2) 현재 IOT 상황

현재 기름보일러의 작동은 샤오미 월스위치를 통해 스위치를 켜면 보일러가 온수모드로 작동하고 스위치를 끄면 보일러가 꺼지도록 자동화 되어있다. 또한 욕실에 샤오미 버튼을 이용하여 욕실에서 온수모드를 끄고 켤수 있고 알림등을 통하여 온수모드 작동 여부도 욕실에서 확인가능하다. 

환풍기/기름보일러 온수 제어용 버튼

 

  기름보일러 온수 OFF

  

  기름보일러 온수 ON


현재의 경우 여름에는 문제가 없지만 나무보일러를 가동하는 겨울의 경우 수동으로 외출모드로 바꿔야되다보니 기름보일러 자동화가 큰 의미가 없어 진다. 그래서 오래전 부터 작업하려든것을 미루다 오늘 작업하게 되었다. 


나무보일러의 경우 아래와 같은 컨트롤러이고 외출버튼은 누를 때마다 난방모드와 외출모드로 서로 전환된다.  


보일러 버튼은 대부분 토글형 버튼이거나 모멘터리형 버튼이다. 


토글형은 한번 누르면 접점을 유지하고 또 한번 누르면 접점이 해제된다. 마치 모나미 볼펜의 버튼으로 생각하면된다.

장점: 무선 릴레이를 사용할 경우 ON/OFF신호를 달리하면 신호를 중복하여 송출하여 비교적 정확한 제어가 가능하다.

단점: 릴레이가 접점을 유지하기 위해 지속적으로 전력을 소모해야 한다.


모멘터리형 버튼은 한번누르면 누르는 순간 접점이 되면서 모드가 바뀌고 바로 접점이 해제된다. 마치 샤프펜의 버튼으로 생각하면된다.

장점: 제어 순간에만 전류를 사용하기 때문에 전력소비가 적다.

단점: 무선 릴레이의 신호가 한번 끊기거나 컨트롤러가 제대로 작동하지 않은 경우, 상태가 반대로 될 수있다.


나무 보일러 컨트롤러의 경우 모든 버튼들이 모멘터리형 버튼이다. 




II. 자동화를 위한 설계

기름보일러의 온수모드를 켜면 릴레이를 이용하여 외출모드로 바꾸어 주는 방식으로 자동화를 계획했다.


1. 릴레이 선택

5V IR릴레이는 쿠쿠님께서 무료로 나눔해주셨고, Remotec릴레이는 메이크리즘님께서 너무 예쁘게 포장하여 선물해 주셨다. 두분께 너무 감사드립니다.


1) 첫번째 선택은 A

a. 저렴하다. IR 릴레이는 쿠쿠님이 무료 나눔하신거고 USB충전기는 남아도는거다.

b. 거실에 샤오미 IR리모트가 설치되어 있고 홈킷을 통한 IR신호 송출이 쉽게 가능하다.

c. 이를 위해 이미 IR스위치를 홈킷에 만들어 두었다.


작업시작 

자동차 USB충전기는 나무보일러에 12V DC전원이 공급되고 있고 IR 릴레이의 작동전압이 5V이기 때문에 사용하지 않는 USB충전기를 분해, 개조하여 사용하였다. 


납땜 작업을 포함 2시간에 걸쳐 나무보일러 컨트롤러에 연결 테스트하였다. 그러나 문제가 있다.

a. 5V IR릴레이가 IR신호를 제대로 받아들이지 못하는 경우가 있다.

b. 5V IR릴레이가 토글밖에 되지 않는다. 그보다 더 큰 문제는 토글이라도 순간적으로 켰다 끄면 되는데 스위치가 신호를 받아들이고 다음신호를 받아 반영하는데 최소 3초 이상의 시간이 걸린다. 그렇게 되면 외출 버튼의 접점이 일정시간 이상 유지되면서 모드가 자동으로 계속 바뀌게 된다.


안타깝게도 2시간여의 작업이 물거품이 되었다.


첫번째 선택이 실패하고 B와 C 중에 고민을 했다. 리모텍 스위치를 사용하면 ST와 직접 연결이 되어 원하는 방식으로 제어가 가능하지만 220V DC전원을 공급해야하고(주변에 220V가 없다), 무엇보다  특정 기간(겨울)만 쓰기 위해 비싼 리모텍 스위치를 쓰는 것이 아까웠다.


2) 두번째 선택 B

a. RF 릴레이 작동 전압이 12V라 나무보일러에 공급되는 전원을 그대로 사용할 수 있다

b. RF 릴레이의 경우 작동모드를 고려하여 구매했기 때문에 다양한 모드를 지원한다(Toggle, Momentary, Latching, Time Delay mode)

b. 브로드링크 RM Pro가 있지만 설치 및 사용을 해본적이 없다. 그동안 쓸일이 없었기 때문이다. 그래서 RM pro를 연결하고 홈브릿지를 통해 홈킷에 스위치를 만들어야 한다.

c. RF신호는 IR신호보다 수신률이 높고 안정적이라는 장점이 있다. 하지만 오류 가능성은 여전히 있다.



2. 작업과정


1) 보일러 컨트롤러에 전원선과 외출버튼 접점용 전선 작업 후 RF 릴레이 연결

  

좌측 사진 처럼 전선 납땜 작업후 우측 사진처럼 환기 구멍을 통해 전선을 빼고 다시 케이스를 결합했다. 



   

 전선을 결합하고  RF 리모컨을 이용하여 작동테스트를 한 후에 케이스를 끼운후 양면 테잎을 이용하여 고정하였다.


아래 영상은 릴레이 설치후 정상적으로 작동하는지를 테스트한 영상이다. 




2) 브로드 링크 설치

메뉴얼에 따르면 되므로 따로 설명하지 않아도 될것 같다.


3) 홈브릿지를 통해 브로드 링크를 홈킷과 연결

아래의 사이트를 참조하여 홈브릿지용 플러그인 설치하면 된다.

https://github.com/lprhodes/homebridge-broadlink-rm


4) 홈킷에 자동화를 위한 RF신호 송출용 스위치 만들기

RF신호 송출용 스위치를 만들기 위해서는 먼저 송출하고자 하는 RF 신호의  코드값을 알아야 한다. 

코드값을 만드는 사이트가 있지만 그건 HA용이라 홈브릿지에서는 작동하지 않는다. 그래서 찾아보기 귀찮아 신호 코드를 스캔해서 사용했다.

기본적으로 홈브릿지에  RM용 플러그인을 설치하면 아래 사진처럼 RF신호를 스캔할 수 있는 스위치가 생성된다. 

              

홈브릿지 로그창을 띄운 후 스위치를 켜고 RF리모컨을 브로드링크에 최대한 가까이 가져간 후에 2~3초간 버튼을 누른 후 때면 우측 사진 처럼 스캔된 RF 신호의 Hex code를 확인 할수 있다. 


위의 코드를 이용하여 아래와 같이 config.json 파일에 원하는 유형의 스위치를 만들어 주면 된다. 나의 경우 RF릴레이의 모드를 Momentary로 사용하기 때문에 스위치 타입을 "switch-repeat"로 설정하였다. 이는 홈킷의 스위치를 누르면 켜지면서 한번 신호를 송출한 후에 바로 자동으로 꺼짐으로 돌아간다.


5) 홈킷을 통한 자동화 하기

ST의 웹코어를 이용해서 자동화 하면 좋겠지만 

-RM pro를 ST에 연결하기 위해서는 복잡한 과정을 거쳐야하고 

-샤오미 월 스위치의 경우 얼마전 ST허브 업데이트  이후 부터 연결이 불안정하여 샤오미 게이트웨이로 옮긴 상황이고

-간단한 자동화이기 때문에 홈킷을 통해 아래와 같이 자동화 했다.

  



6) 결과 확인

아래의 영상은 딸아이가 월스위치를 눌러 기름보일러의 온수모드를 켜고 끄고 했을때 찍은 영상이다.

영상을 보면 홈킷에 보일러의 켜짐과 꺼짐이 상태 반영이 되고 켜졌을때는 나무보일러가 외출로 바뀌고 꺼졌을때는 다시 난방모드로 바뀌는 것을 확인할 수 있다. 




7) 자동화 전체 모식도



오랫동안 미뤄왔던 자동화를 새해가 되어서야 했다. 부모님과 함께 살다보니 자동화를 잘못하게 되면 오히려 더 불편해 하시는 경우가 많다. 그리고 사람이 많을수록(부모님 아이들, 우리부부 총 6명이다) 완전한 자동화를 하는것이 더욱 힘들어진다. 그래서 완전한 자동화 보다는 물리적 버튼을 통한 부분적 자동화나, 단순한 자동화, 눈에 보이지 않는 자동화를 하게 되는것 같다. 나에게는 자동화를 계획하는게 무척 힘들고 실행하기는 더 힘든것 같다.

  1. 오날두 2018.01.02 13:10 신고

    역시 신짱님 포스트는 한번 올라올땨마다 퀄리티가 장난이 아니네요. 반성합니다 ㅎㅎ

    저도 자극받아서 오늘 소파 해보려구요..절연장갑을 몇 번 사러 갔었는데 못구해서 마루고 미루다 여기까지 왔네요 ㅎㅎ

    가족이 많으면 자동화가 매우 어려울거같어요. 전 두명뿐인데도 변수따지기가 힘들더라구요.

    • ShinJjang 2018.01.03 14:01 신고

      오날두님 리클라이너 소파 자동화 완전 기대 됩니다.
      근데 자동화는 생각만 하고 현실화 하는게 생각보다 쉽지 않은것 같아요. 그런점에서 메이크리즘님은 참으로 대단하신것 같아요. IOT의 연륜이 느껴지는 부분이 바로 그부분인것 같아요

  2. Makelism 2018.01.02 17:07 신고

    정성스러운 포스트 잘 봤습니다.
    역시 자동화 해법을 찾아가는 과정이 재밌네요.

    • ShinJjang 2018.01.03 14:02 신고

      메이크리즘님의 웹코어 자동화 보면서 항상 감탄하고 나도 언젠가는 따라 해봐야지 생각하는데 쉽지않네요. 항상 많이 배우게해주셔서 감사합니다.^^

스마트싱스의 아울렛류(소켓, 플러그, 콘센트 등)를 Homebridge를 이용하여 홈킷에 등록하면 해당 장치가 스위치로 나온다. 만약 전력량이 리포팅되는 DTH의 경우는 스위치와 콘센트로 2개의 장치로 등록된다. 하지만 홈킷에 등록된 콘센트는 상태반영도 안될뿐 아니라 실제 장치를 제어할 수도 없다. 


물론 홈킷에서 그냥 스위치로 사용하여 장치를 제어하면 되지만 그러면 내 마음이 편하지 않다. 왠지 콘센트로 등록하고 제어해야 마음에 들것 같다. 사실 아래 화면처럼 홈킷에 있는 장치 모양들이 다양해야 장치를 구분하기도 쉽고 보기에도 좋다. 그리고 무엇보다 내 마음을 즐겁고 편하게 한다. 아마 홈킷을 사용하는 대부분의 사용자가 비슷한 마음일것 같다. 그래서 또 어떻게 되지 않을까 하고 homebridge-smartthings를 들여다 봤다. 


코드에 대해 아는거라곤 If, else if밖에 없어 잘은 모르지만 코드상 DTH수정으로는 홈킷에서 콘센트로 제어하는것이 불가능하다는건 알겠더라. 그래서 코드를 살짝 바꿔서 내 나스의 해당파일을 찾아 수정한 파일로 교체했다. 파일하나 교체하는데 3시간 걸렸다. 왜냐하면 숨겨진 파일을 SSH로 접속해서 찾아내고 교체하는 작업을 해본적이 없어 여기저기 찾고 물어본다고 3시간이 걸렸다. 


과연 될까라는 설레이는 마음으로 도커 홈브릿지 이미지를 재시작했다... 이런 젠장. 도커를 사용하면 이미지를 재시작할때 마다 새로 플러그인을 받아 설치하다보니 교체한 파일이 다시 원상복구되어버렸다. ㅠㅠ 3시간에 걸친 파일교체가 의미없게 되버렸다. 


그래서 정말 혹시나해서  github에서 homebridge-smartthings를 fork해서 내 계정으로 가져와 해당 코드부분을 수정하여 

플러그인 주소에 내 아이디를 넣었더니 세상에... 수정된 파일이 설치되는게 아닌가? 스스로 대박을 외치며 홈킷을 열었더니 아래 사진처럼 ST에 등록된 Outlet이 콘센트 하나로 등록될 뿐만 아니라 제어까지 되는걸 확인했다. 무모한 도전이 성공할때의 즐거움과 만족감이 좋은것 같다. 

추가로 펌프를 수도꼭지로 바꾸고 싶어서 도전했지만 실패했다. 가장 큰 문제는 홈브릿지 자체에 수도에 대한 정보가 없다는 것이다. 아쉬운 마음을 뒤로한채 접을수 밖에 없었다.



홈킷에 콘센트로 등록하는 방법


1. DTH수정

먼저 어떤 장치(플러그나 아울렛, 스마트 소켓, 스위치류, HA와 연동된 샤오미 멀티탭 등)도 상관없다.   스위치 형태로 ON/OFF 되는 장치면 된다. 

먼저 아래 처럼 IDE사이트에서 MY Device Handler로 이동하여 원하는 DTH를 클릭하여 코드 페이지로 이동한다.

그리고 사진에 체크박스된 것 처럼 command "Outlet"을 추가한다.


2. HomeBridge Plug-in 수정하기


- 라즈베리 파이에 HomeBridge가 설치된 경우 아래의 주소를 이용하여 homebridge-smartthings플러그인 설치 및 홈브릿지 재시작

npm install -g shin4299/homebridge-smartthings


- 도커에 HomeBridge가 설치된 경우는 istall.sh파일을 열어 아래 주소를 추가한 후에 이미지 재시작

npm install -g shin4299/homebridge-smartthings


3. 홈킷을 열어 확인한 후 기쁜 마음으로 사용^^

위의 간단한 과정이 끝나면 아래 영상에서 보듯이 콘센트로 등록되고 제어도 가능하다.




  1. Makelism 2017.12.13 16:34 신고

    IoT와 전혀 관련 없으시다니...아직도 안 믿어집니다.
    전 가르쳐주신 방법으로 금방 했는데 이런 비하인드 스토리가 있었을 줄이야...
    감사히 사용하겠습니다.

    • ShinJjang 2017.12.15 17:23 신고

      메이크리즘님 알아주셔서 감사합니다. ^^
      정말 아무것도 모르는 제 자신이 화날때도 많답니다. ㅠㅠ

  2. 오날두 2017.12.15 00:40 신고

    정말 감사히 잘 사용하고 있습니다. 콘센트로 표시되는게 생각보다 정말 크게 작용하고 있습니다.
    특히 시리가 음성명령을 잘못 알아듣고 스위치류를 전부 킬 때 전등스위치류만 켜지니 안심도 되구요 ㅎㅎ
    이제 스마트앱만 남았나요^^

    • ShinJjang 2017.12.15 17:27 신고

      오날두님 그런것 같아요. 저도 콘센트로 등록되니까 여러모로 편하더라구요. 그리고 시리가 모든 조명과 스위치를 켰을때의 황당함은 당해본 사람들만 알죠. ㅎㅎ

ST App를 사용하다보면 어느 순간 DTH를 보게되고 자신에게 맞게 조금씩 수정하고 싶은 욕심이 생긴다. 
가장 먼저 생기는 욕심이 아이콘이나 배경색 변경에 대한 것이다.... (사실 다른건 만질 엄두가 안나기 때문이다.ㅎㅎ)

그래서 아이콘 바꾸는법에 대해 간단히 설명하려고 한다. 
그런데 먼저 간단하게 DTH Tile 부분에 대해 간단하게 알아야 한다. 

1. DTH Tile 간단히 알아보기



1) scale  - 격자를 어떻게 배치할 것인가에 대한 것이다. 
(scale: 1)  - 가로 화면 전체를 3개의 격자크기로 사용가능하다. 설정하지 않으면 (1)이다.
(scale: 2)  - 가로 화면 전체를 6개의 격자크기로 사용가능하다. 아래 사진은 (scale: 2) 로 설정했을때 격자가 어떻게 설정되는 지를 보여 준다. 일반적으로 2로 설정한다.

4) width: 2, height: 2  - 정보를 나타내는 타일의 크기를 설정하는 옵션이다. 설정하는 수는 (scale: 1)일때는 최대 width: 가 3이고, (scale: 2)일때는 최대 width: 가 6이된다. 이 수보다 더 크게 설정하면 화면이 잘려서 표시된다.
(scale: 2)이고 width: 2 로 설정되면 위의 타일의 ACTIVE타일, 온도타일, 베터리 타일의 크기로 표시가 된다. 

5) 기타 옵션
canChangeIcon: true(or: false)  - ST App에서 메인타일의 아이콘을 변경할 수 있는 옵션을 제공할것 인지에 대한 옵션이다. true 이면 ST App에서 아이콘 라이버러리에 있는 아이콘 중에 선택하여 변경이 가능하다. 설정하지 않으면 기본이 true 이다.
can ChangeBackground: true(or: false)  - ST App에서 메인타일의 배경이미지를 변경할 수 있는 옵션을 제공할 것인지에 대한 옵션이다. true 이면 ST App에서 폰의 사진첩에 있는 이미지나 사진을 직접 찍어서 변경이 가능하다. 설정하지 않으면 기본이 false 이다. 

하지만 타일 전체에 이미지가 적용되지 않고 아래 처럼 원형으로 적용된다. 


decoration: flat   - 타일에 입체감 있는 동그란 테두리를 할것인지에 대한 설정으로 이 항목을 설정하지 않으면 기본적으로 테두리가 설정되고 싫다면 이 항목을 추가하면 테두리가 없는 타일이 만들어진다. 왼쪽은 설정하지 않았을때, 오른쪽은 설정했을때 이다. 


6) icon: " "  - 이부분은 타일에 사용되는 아이콘을 설정하는 부분이다. 일반적으로 ST 라이버러리의 아이콘이 등록되어 있으며 "  " 안의 항목을 원하는 아이콘으로 바꾸어 주면 된다. 타일의 state에 따라 icon을 변경하여 좀더 역동적이고 미려한 타일을 만들수 있다. 

7) backgroundColor: " "  - 이부분은 타일의 배경색을 설정하는 부분이다. 배경색은 Hex code로 입력하도록 되어있으면 색상별 코드는 아래 사이트를 참조하여 원하는 색상으로 설정하면 된다. 



2. SmartThings 라이버러리를 이용한 아이콘 변경


위 항목에서

icon:"st.switches.switch.off"

icon:"st.switches.switch.on"

이 부분이 'switch'타일을 대표하는 아이콘을 설정하는 부분이다. 아이콘 항목이 두개인 것은 장치의 상태에 따라 서로 다른 아이콘을 표시하기 위함이다. 장치의 상태가 OFF일때는 icon:"st.switches.switch.off" 에 설정된 아이콘이 장치의 상태가 ON일때는 icon:"st.switches.switch.on" 에 설정된 아이콘이 각각 타일에 나타나게 된다. 

아이콘이 마음에 들지 않을때 icon:"st.switches.switch.off" 부분의 icon:"  " 안의 항목을 바꾸어 주면 된다. 

ST 라이버러리 주소는 아래와 같다. 아래에서 마음에 드는 아이콘의 바로가기 경로를 복사해서 붙여넣기만 하면 된다. 



아래 사진은 전등스위치와 보일러 스위치의 아이콘과 배경색 설정을 통해 현재 상태를 한 눈에 알아볼 수 있도록 한것이다.

  


또한 BackgroundColor의 경우 상태 값(value)에 따라 색상을 다르게 설정할 수도 있다. 

아래 영상은 커튼 DTH의 아이콘과 색상등을 변경한 후 작동 영상이다. 참고로 커튼이 닫힌(closed) 상태에서 메인 타일을 탭하면 열리는 동안은 상태가 'opening'이고 완전히 열려야 상태가 'open'으로 바뀌기 때문에 영상이 조금 길다. 처음은 메인 타일을 이용하여 커튼을 열고 닫을때 타일의 변화이고 두번째는 보조 버튼 타일을 이용하여 열고 닫을때 타일의 변화이다. 



3. 타일 아이콘 커스텀 아이콘으로 변경하기
아이콘을 수정하다 보면 라이버러리에서 제공하는 아이콘이 아니라 '나만의 아이콘을 이용할 수는 없을까?' 하는 생각이 든다. 다행히도 그런 생각을 실현 시킬 수 있다. 먼저 자신이 원하는 이미지를 구해야 한다. 물론 포토샵이나 일러스트를 이용하여 자신이 직접 디자인하거나 편집을 통해 생성해도 된다. 

3-1. 링크가 있는 이미지 아이콘으로 등록하기
먼저 인터넷 검색을 통해 아이콘을 구할때 무료 아이콘 사이트를 이용하면 좋다. 
아래의 예는 https://www.shareicon.net/ 사이트를 이용했다.

위의 사이트에서 원하는 이미지를 검색하고 원하는 사이즈를 선택한 후에 우클릭 후 이미지 주소를 복사한다. 


아래처럼 복사한 주소를 icon: "   "사이에  넣으면 된다. 

 icon:"https://www.shareicon.net/data/128x128/2016/10/05/839402_light-bulb_512x512.png" 


반영하면 아래와 같이 타일 아이콘이 변경된것을 확인할 수 있다. 



3-2. 링크가 없는 이미지 파일을 아이콘으로 변경하기

위와 같이 링크가 있다면 간단하게 아이콘 변경이 가능하지만 그렇지 않은 경우는 이미지 파일을 온라인상에 올린 후에 변경할 수 있다. 가장 쉬운 방법 중 하나가 네이버 블로그를 이용하는 방법이다.


우선 이미지 파일을 준비한다.

    


이미지 파일을 네이버 블로그에 글쓰기를 통해 사진을 업로드 한다. 이때 비밀글로 등록해도 상관없다. 

그리고 아래와 같이 이미지를 클릭하여 새창으로 띄운 후 우클릭하여 속성에서 링크를 복사하거나 이미지 주소를 복사해도 된다.


그리고 3-1.과 같은 방법으로 아이콘을 등록하면 된다. 


아래는 메인타일에 커스텀 아이콘을 등록한 화면이다.



마무리하며...

DTH를 수정하다 보면 예기치 않은 변수로 인해 장치 작동에 문제가 생기도 한다. 그렇기 때문에 반드시 수정 전에는 백업을 하고 하는 것이 좋다. 
























  1. Makelism 2017.11.13 15:58 신고

    내용도 좋지만 업데이트되니까 더 반갑네요.
    자주 올려주세요.

    • ShinJjang 2017.12.12 00:55 신고

      항상 관심가져주셔서 감사해요. 메이크리즘님의 관심이 저에게 힘이되네요.ㅎㅎ

  2. 오날두 2017.11.14 00:22 신고

    신짱님 정말 대단하신것 같아요. 불굴의 의지로 모든걸 해결해버리시네요 ㅎㅎ
    저두 샤오미 커튼살걸 그랬어요..ㅋㅋ

    • ShinJjang 2017.12.12 00:56 신고

      오날두님 곧 샤오미커튼 블로그에 올라오기를 기다리고 있겠습니다.^^

  3. 눈먼바람 2017.12.06 01:48 신고

    덕분에 언제일지 모르지만 저도 꼭 바꾸고 말겠습니다. ㅎㅎ

    • ShinJjang 2017.12.12 00:56 신고

      눈먼바람님 샤오미 제품중에 만족도가 아주 높은 제품중 하나가 커튼인것 같아요. 꼭 경험해보시길 바래요.

팝콘이펙트에 대해 알다.


까페에서 아래의 글을 보았다. 

ST의 딜레이 현상 (일명 팝콘 이펙트) 관련   -   http://cafe.naver.com/stsmarthome/469


요약하면 Smartthings(이하 ST)에서 Hue Hub에 연결된 Hue 전구들을 동시에 제어할 때 전구들이 동시에 켜지는것이 아니라 순차적으로 켜지거나 꺼진다(팝콘이펙트)는 이야기이다. 


나의 경우 주등은 샤오미 wall스위치를 이용, 보조등과 알림등으로 휴벌브와 샤오미 전구를 사용하고 있다.

또한 휴벌브는 3개 밖에 없고 휴허브용 스위치나, 시리의 모드와 자동화를 통해 천장등(샤오미 월스위치)과 벽등(휴벌브)을 관리하다보니 까페에서 말하는 팝콘이펙트를 경험해보지 못했다. 


그래서 까페에서 말하는 경우 처럼 코어에서 전구 두 개를 선택하여 자동화해보니 정말 순차적으로 켜지고 순차적으로 꺼지는 것을 알게되었고 더 많은 전구를 자동화 한다면 정말 당황스러울것 같다는 생각이 들었다. 



팝콘이펙트 없이 여러개의 휴 벌브 제어하기


다행히도 ST로 여러개의 휴 벌브들을 팝콘현상없이 제어가 가능하다. 방법은 ST 스마트 어플인 Hue B Smart App를 사용하는 방법이다. 코어나 다른 자동화 어플을 통해 2개의 벌브를 자동화할때 

1. 기존의 방식대로 코어에서 휴벌브 두개를 선택하여 자동화 할때와 

2. Hue B Smart App로 Things로 그룹을 등록한 후 그룹을 이용하여 자동화 했을때

의 차이는 아래의 영상과 같다. 


1. 기존의 방식


2. Hue B Smart App를 통한 그룹제어



Hue B Smart 설치 및 세팅


1. 먼저 ST 등록된 휴벌브와 휴허브를 모두 삭제 한다. 

2. IDE 사이트에서 Smart App탭에서 Settings를 클릭하여 새로운 저장소를 아래와 같이 등록한다


    Owner: tmleafs Name : Hue_B_Smart




3. IDE사이트에서 Update from Repo를 통해 Smart App와 Device Handler를 등록한다.


3-1. My SmartApps 탭에서 Update from Repo에서 Hue_B_Smart 를 선택한 후 아래와 같이 체크한 후 Execute Update를 클릭한다.

3-2. My Device Handlers 탭에서 Update from Repo에서 Hue_B_Smart 를 선택한 후 아래와 같이 체크한 후 Execute Update를 클릭한다.(나는 Lux Bulb가 없기때문에 아래 두개를 체크해제했다.)

4. ST App에서 "+ Add a Thing"를 클릭하여 휴 허브를 검색하면 자동으로 휴허브가 등록되면서 위에서 등록한 DH로 등록된다. 

5. Hue B Smart 어플에서 Bulb와 필요한 Scene, Group을 등록한다. 

      


6. 위와 같이 필요한 벌브와 그룹, 장면을 등록하면 아래와 같이 ST허브에 개별 DH를 가진 Thing(Device)로 등록된다.

아래 그림처럼 벌브와 그룹은 전구처럼 ON/OFF로 동작하며 장면들은 PUSH로 동작하도록 등록된다. 

   



7. 위와 같이 등록하고 나면 Core에서 Piston등록할때 Action에서 아래와같이 그룹을 선택할 수 있으며 그룹을 선택하여 자동화하면 그룹으로 묶여있는 전구들이 팝콘이펙트 없이 동시에 제어가 가능하다. 


Hue B Smart APP사용시 알아둬야할 것들


1. Hue B Smart APP와 전용 DH를 통하더라도 개별 전구를 선택하여 자동화할 경우 기존처럼 팝콘현상이 일어난다.

2. Group 설정은 ST가 아니라 Hue 어플에서 등록된 방을 기준으로 그룹이 만들어 진다. 하여 그룹은 Hue 어플을 통해 설정해야한다.

3. 반드시 기존에 등록된 휴브릿지와 휴전구를 ST허브에서 삭제(IDE또는 ST App에서 삭제)한 후에 설치해야 한다.

4. 기존의 자동화된 피스톤의 condition이나 action에 등록된 휴벌브들은 사라지므로 다시 등록해야 한다.








  1. 2017.09.02 09:01

    비밀댓글입니다

  2. 오날두 2017.09.04 01:18 신고

    촬영 전에 셋팅하려합니다. 감사합니다 ^^

+ Recent posts