라즈베리파이4 용 SSD 외장디스크 백업 방법에 대한 고찰

 기존에 SD 카드 이미지를 백업해서 사용했습니다. SD 카드의 느린 속도와 내구성 때문에 한번 씩 문제가 생기면 복구하는데 너무 오랜시간이 소요됩니다. 그래서, SSD로 부팅하고 SSD 장치를 백업하는 방법을 찾아 보았습니다.

  Re: How to make a full backup of Rpi with large SSD?

 

 위 링크 마지막 부분에 macrium reflect 소프트웨어를 추천을 해서 제일 먼저 테스트를 해보았습니다.

 

1. Macrium Reflect

 결론: USB-SSD 백업이 가능하지만, 다시 USB-SSD 장치로 쓰기에서 액서스 거부 증상이 발생

 macrium reflect 8.x

 macrium reflect 7.x

  테스트 한 2개의 버전 모두 동일한 증상

복원시 오류발생 화면

   다른 노트북에서 Macrium Refect 복원하면 정상적으로 복원 작업이 이루어 지지만,복제된 SSD 로 부팅중 중단됨.

 

2. EaseUS Todo
 라즈베리파이의 linux ex4 파티션 인식 못함.

 백업 사용불가

 

3. Acronis Ture Image

기존에 사용하던 2018 버전에서 ex4 파이션 인식을 하지만, 사용량이 0Kb 로 나온다. 2018버전의 오류로 검색된다.

 2020 버전 이후 ex4 파티션 인식문제가 개선되었다고 해서, 최근 버전 2021 버전을 사용한 결과 정상적으로 백업과 복원이 됩니다. SD 카드로 이미지 만들고 복원하는데는 1시간 넘게 걸리는데, 5분도 안걸립니다. 

 하지만, SSD 복제 후 복제된 SSD로 부팅이 되지 않습니다.

 

소프트웨어 받고 테스트 하고 꼬박 24시간 걸려서 찾아낸 결과입니다.

 

결론 :

 라즈베리파이 부팅용으로 사용할 SSD의 경우 윈도우용 백업소프트웨어 Macrium Reflect, EaseUS Todo, Acronis Ture Image 등으로는 정상적인 백업과 복원이 불가능.

 이유는 알수 없습니다. HDMI 모니터로 연결해서 로그를 확인해야 하지만, 현재 HDMI 연결할 모니터가 없다. 로그를 확인해서 메시지를 확인하다 해도, 해결방법도 없을 것 같습니다.

timealarm v0.92 제작했습니다.

 

python 공부중에 제작했습니다.

개인적으로 

수업, 실습에 꼭 있었으면 하는 프로그램입니다.

처음으로 제작한 프로그램이라서 2달 동안 몇시간 밤새 만들었습니다.

 

pyside6 버그가 있어서, 한글 쌍자음 입력이 않되는 문제가 있습니다. pyside6 업그레이를 기다려야 할 것 같습니다.

 

 

tistory 의 첨부파일 용량 제한인 20MB 이라서 못 올리고 있습니다.

38MB 정도 되는데, 올리는 방법을 찾아서.. 조만간 올리도록 하겠습니다.

1. 기본 외부 프레임 구조

 

2. 프로파일 조립 도면

  -우측면, 좌측면 2개를 먼저 조립후, 정면 후면을 결합합니다.

  

 

 

 

3. 우측면, 좌측면 프로파일 결합방법

             

 결합방법 사진

부품이름 

부품사진 

설명 

빨간색

 

 

 

 직각 이너 브라켓 (너트 불필요)

 

 * 주의 사항 : 

- 우측면, 좌측면 프레임의 가장 상단 부분을 조립할때

  무두볼트를 빼내어 뒤집어 넣어야지만 조립이 가능하다. 

- 상단 사각 프레임 공간에 연마봉 및 폴리를고정하는 부품이

  들어갈 공간 확보하기 위함.

 

 

회색

 

 

 

 

 알미늄 브라켓 (20용) 

 

 

 

 

 

  둥근머리 M5x8mm  나사로 결합

 

 

 

 짧은 쪽 : 사각너트 205 3t

 

 긴쪽 : 인서트 너트 205

 

 

 

프로파일 120mm, 70mm 간격을 맞추어 조립하기 위해서 지그(jig) 를 만들어 보았습니다.

 *[용어] 지그(jig) : 네이버 사전 - 기계 기계의 부품을 가공할 때에 그 부품을 일정한 자리에 고정하여 칼날이 닿을 위치를 쉽고 정확하게 정하는 데에 쓰는 보조용 기구.

 

 

Jig_120mm.stl
0.41MB
Jig_70mm_2.stl
0.30MB

'HyperCube Evolution 제작' 카테고리의 다른 글

현재까지 설계변경 2018. 11. 08  (0) 2019.09.05

2018. 11. 08 현재 설계 변경상황

 

원본 출처: 

HyperCube Evolution https://www.thingiverse.com/thing:2254103 )

HYPERCUBE EVO Ngen ( https://www.thingiverse.com/thing:3018572 )

Anet Evolution ( https://www.thingiverse.com/thing:2786292 )

 

위 2가지 모델을 기본으로 하여

 2020 프로파일용으로 프레임 및 부품들을 수정하였습니다. HyperCube Evolution이 3030프로파일용 으로 설계되어 있어서 2020프로파일로 치수만 변경하면 될줄 알았는데, 치수 변경후 운동기구들 간에 다양한 간섭문제를 해결하는데 많은 시간이 소모되었습니다.

 

 원본 소스가 공개된 파일은 어렵지 않게 구조를 변경 가능(아무리 작은 변경도 부품 간의 상호작용 때문에 2~4시간은 소요 됩니다.) 하지만, 소스가 제공되지 않고 STL파일만 공개된 파일은 치수 측정과 스케치 그리기의 과정을 수십번 반복하는 역설계를 통해서 마음에 들지 않는 부분의 설계를 변경하는 중입니다.(부품하나에 몇일에서 몇주가 걸린 것도 있습니다.)

 

주로 솔리드웍스를 사용하지만, 인벤터와 사용법에 차이가 있어서 인벤터에 적응하면서 5개월 정도의 수정과 개선작업을 반복한 결과입니다. 설계 전문가가 아니다 보니 여기까지만으로도 200시간 정도 소요되었습니다. 솔리드웍스, 인벤터를 함께 비슷하지만 다른 소프트웨어를 동시에 사용할려니 사용법이 헛갈려서 이제는 다른 메뉴에서 기능을 찾아 헤매는 경우가 종종 발생합니다. 

 

 

'HyperCube Evolution 제작' 카테고리의 다른 글

1. HyperCube 프레임 조립(1)  (0) 2019.09.05

국내 처음으로 실시하는 1회 국가인증 "3D 프린터 산업기사", "3D 프린터 운용기능사" 자격증 접수기간입니다. 별 쓸때없는 자격증 중에 하나를 국가에서 만들었습니다.

원서접수기간 : 2018년 수시 기사, 기능사 1회 필기2018년 11월 23일(금) ~ 2018년 11월 29일(목)

3D 프린터 개발산업기사를 준비할려고 도서를 주문했습니다.

 

CJ대한통운 택배 파업사태로 몇일째 도착하지 않아서 애태웠습니다.

다행히 발송 4일만인 오늘 수령했습니다.

 

책 수령 후기

1. 책이 너무 가볍고 얇아서 놀랬습니다. 114페이지 중에서 문제는 약 60 페이지 정도될까요. 페이지당 4문제 정도

2. 이론은 전무 합니다. 그냥.. 문제에 해설같지도 않은 답만 있습니다.  이러면, 문제집이라고 판매해야지 해야 할 것 같습니다.

3. 이론적 내용이 없다보니, 공부할 것도 없습니다. 문제도 3D 프린터를 좀 다루어본 사람이면 조금만 찾아보면 풀수 있는 상식적인 수준입니다.

5. 이 정도면, 내가 책을 쓰겠다 라는 수준입니다.

*6. 최종적으로 책을 받고 사기 당한 느낌입니다.

 

처음 실시하는 1회 시험이라서 다른 수험서를 구매할 대안이 될만한 도서가 없습니다.

울며 겨자 먹기로 이거라도 참고하는 방법 밖에는 없습니다.

 

이 책을 구매하면 50만원짜리 온라인 수강을 25만원에 할수 있다고 하는 것을 보니

"KBS미디어평생교육원" KBS 공영방송이고 수신료를 받아가서 그래도 믿어볼까했는데, 장사꾼이네요.

 

책이 이정도면 온라인 강의 수준도 기대못하겠네요.

https://cafe.naver.com/englishjins 카페에 올라온 "3D보이"님이 올리신 자료가 몇배는 수준이 있습니다.

 

그냥, 혼자 자료수집해서 공부하는게 더 많은 공부가 될것 같네요..

오늘 부터 열심히 공부할까 계획했지만, 공부할것도 별로 없고, 자료도 없고..

 

공부할 의욕이 바닦난 상태입니다.

 

이상 비싼 종이 구매 후기 입니다. 

사실, 전자,정보통신 관련분야에 실무 5년 경력이상되는 중급 기술자 입니다. 하지만, 전혀 기술분야가 아닌 교육 분야로 이직하여 기술관련 자격증은 전혀 필요없습니다. 관련 기사 자격증만 3~4개 되는 듯 합니다. 

 

 전기기사와 같은 경우는 정말 산업현장에서 소유한 사람이 공사, 어느 정도 인력을 보유해야만 공사 참여가 가능합니다. 그래서, 가치가 높고 항상 수요가 있죠. 

 Q-net에 들어가니 조회하니 저도 전기 공사, 전기 기사 시험에 응시는 가능하다고 나오지만, 배운 전공도 아니고시험은 어렵도 은퇴후 60대에 누가 경력도 없는 연장자를 취업시켜 줄 것 같지도 않습니다.

 저는 통신 분야에서 근무하였지만, 통신도 유사하기는 하지만, 전기보다는 시장도 좁고 공사 규모도 적다보니 유용한 가치를 못 느낍니다.

 

 3D 프린터 자격증에 대한 개인적인 생각은

전기, 토목, 건축 이러한 자격증은 해당 분야의 자격증알 가지고 있는 인력을 가지고 있어야만, 입찰이나 공사에 참여할 수 있는 분야가 있습니다. 즉, 회사가 운영되기 위해서는 필수적인 강제적 법규가 마련된 자격증입니다.

 

 하지만, 3D 프린터 자격증(기능사, 계발산업기사)은 의미 없는 워드, 엑셀 자격증 정도 수준 밖에 대우를 못 받을 뻔한 자격증입니다. 그낭 워드프로세서 정도의 가치라고 생각합니다. 노력에 비해 가치를 인정 받기 어려운 자격증이라 해야 할 것 같습니다.

 

 취업을 준비하는 학생이라면, 다른 자격증과 스펙을 쌓기를 추천합니다.

 

 아마도, 세계에서 유일한 자격증이 아닐까요? 가장 쓸때없는

 

 필요한 민간의 학원 강사나 교육분야에 종사하기 위한, 이력서의 한줄 정도에 도움이 될 것 같습니다.

  

3D 프린팅 취업분야..

말은 4차 산업혁명 어쩌고 하지만, 개발하는 일부 메이저 회사를 제외하고는 그냥 취업할 곳도 없다고 생각합니다.

 

저도 취업할 일은 없을 것 같습니다.

네이버 포탈에서 온간 감언이설로 유망하고는 분야라고 떠들지만, 취득하고 나면 취업할 곳 없을 것 입니다.

3D 프린팅은 기계, 전자 또는 메카트로닉와 같은 분야에서 보면 제품 개발에 극히 일부 분야이고, 필요한 도구일 뿐입니다.

 

그럼에도 저는

그냥 취미로 그냥 취득할려고 합니다.

2015년 부터 3D 프린터를 다루어 왔고, 3D프린터 부품이나 설계를 취미로 하고 있어, 한번 도전해 보고 싶습니다.

 

 

 

Clone S270 개조 파일 공개 (1) 보우덴 방식( https://gdot.tistory.com/8 ) 파일에서

 

 커버와 브라켓, 케이블 고정 부분을 Titan Extruder를 사용하는 직결 방식으로 사용할 수 있도록 하였습니다.

  아래 렌더링 이미지에는 익스트루더를 포함하지 않았지만, 정확히 연결됩니다. 다만, 익스트루더와 노즐블럭과 거리를 줄이는 방법이 없어서 테브론 튜브로 연장해서 사용해야만 합니다.

 

Titan Extruder Mount.STL
0.20MB
XYcarriage_Cover_Cable_Ring_V3.STL
0.13MB
XYcarriage_Cover_V3.STL
0.48MB

2018.11.10 추가 :

  - 제가 사용하는 설계 프로그램의 X,Y,Z 축과 3D 프린터 인쇄시 X, Y, Z 축 방향이 서로 달라서 그대로 인쇄하시면 않됩니다.

    X축 또는 Y축 방향으로 적절히 회전(90도 또는 180도 단위)시켜서 출력하셔야 합니다. 설계프로그램에서 출력 좌표계를 변경하는 방법이 있었지만,

    변경하는 게 귀찮아서 그냥 STL로 저장했습니다. Cura, Simplify3D 에서 회전시키는게 더 편합니다.

  - 반드시 ABS로 출력하세요. 연마봉은 열처리된 것으로 하지 않으면 나중에 부싱 베어링 때문에 연마봉 마모가 발생합니다.

  - 사용된 모든 나사는 M3 와 M3용 너트들 입니다. 

  - 조립 동영상 수정 업데이트 하였습니다.

  - Clone S270 Titan Extruder 직결 방식 ( https://gdot.tistory.com/9 ) 파일도 공개합니다.

 

 

2018.11.09 작성 :

 급하게 공개하느라 설명이 많이 부족합니다. 현재 글의 내용을 시간을 두고 조금씩 수정중입니다.

 다른 곳에 퍼가시며 않됩니다. 자료 다운 받으실때 작은 댓글 하나가 저에게 큰 힘이 됩니다.

 누락된 파일이 있으면 알려주세요.

 

시험출력 게시글 https://cafe.naver.com/makerfac/46637

 

지긋 지긋한 Clone S270의 고질적인 문제점을 해결하고자 개조작업을 시작한지 1년여 만에 설계을 완성했습니다.

 

* 설계 변경안

  1. 보우덴 방식 적용

  2. 기존의 S270 베드 출력 사이즈를 그대로 유지 

  3. 프레임, 스탭모터, 베어링, 폴리 부분 파트를 그대로 활용

  4. BLtouch 적용

 

 프레임, 폴리, 베어링, 모터를 제외하고 전부 새롭게 디자인하여 만들어야만 했습니다.

 

- 이밖에도 MKS gen 1.4 보드 TMC2100 등올 전부 교체했습니다.

- 전면 LCD 패널이 기존의 RAMPS, MKS GEN 보드와 핀배열이 완전히 달라서 호환이 되지 않습니다.

- 전면의 LCD 패널을 교체할려니 전면 철판을 새로 만들어야 하는 문제가 생겨서, MKS gen 보드에 연결하는 방법을 택하였습니다. 기존 메인보드에서 MPU 핀에서 직접 핀배열을 찾아서 핀맵을 작성한후 Marlin 펌웨어에서 해당 핀을 수정하는 작업을 해야 합니다.  이 작업 하느라 2주 날밤을 새웠는데, 마음 아프게도 MKS gen 핀맵과 펌웨어 설정 파일을 모두 날려 먹었습니다. 2주 동안 백업 NAS, 외장하드를 찾아봐도 보이지 않습니다.

* 이 자료는 사라져서 공개할 방법이 없는 것 같습니다. 다시 손대기도 싫습니다.

 

앞으로 절대로 기존 프린터 개조는 하지 않을 생각입니다. 이정도 시간과 노력이면 3D 프린터 5대는 충분히 설계 제작할  노력과 시간이 소요된 것 같습니다. 대충 800시간 정도 걸린 것 같습니다. 개조과정에서 필라멘트 8Kg (4롤)를 구조변경에 따른 실패를 거듭한 끝에 완성되었습니다.

 

 

Clone S270 개조에 사용되는 STL 출력 파일은 20개도 않되지만

솔리드웍스 프로그램에서 130개중에서 80여개의 부품 파일은 미치도록 직접 그려야만 했습니다. (볼트와 너트를 제외하고 사용된 부품이 130개가 된다고 나오네요 )

 

 

1. 최종 전체 렌더링 이미지

< 상단 뷰 >

 

< 하단 뷰 >

 

 

2. X-carriage와 헤드 노즐 파트

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Y축 구동부분의 파트

   폴리와 베어링 금속 부분은 그대로 사용했습니다.

 

 

 

 

 

 

 

4. 주의 사항

 아직 사진을 첨부하지 못했지만, Y축 연마봉을 고정하는 "알루미늄 고정대" 앞쪽은 철판 구멍을 뚫어야 합니다. 뒷쪽의 "알루미늄 고정대"는 사진처럼 프로파일과의 사이에 빨간색의 밑판으로 높이을 맞추어야 합니다. ( 첨부 Linear Rail Shaft Guide_Support_보조밑판.STL

4020 Blower fan Mount4.STL
0.72MB
belt top clip.STL
0.08MB
belt top clip2.STL
0.15MB
HotEnd_clip_v2.STL
0.28MB
Hotend_Mout_V2.STL
0.77MB
Join_part.STL
0.86MB
Linear Rail Shaft Guide_Support_보조밑판.STL
0.03MB
XYCarrage_Base_part2.STL
0.33MB
XYcarriage_Cover.STL
0.92MB
XYcarriage_Cover_Cable_Clip.STL
0.35MB
XYcarriage_Cover_Cable_Ring.STL
1.34MB
대칭 복사측면가이드 분할1.STL
0.29MB
대칭 복사측면가이드 분할2.STL
0.16MB
대칭 복사측면가이드 분할3.STL
0.20MB
측면가이드 분할1.STL
0.26MB
측면가이드 분할2.STL
0.14MB
측면가이드 분할3.STL
0.20MB

처음으로 3D 프린터를 접한  모델입니다. 

현재는 대부분의 부품을 완전 개조하고 아직도 보유하고  잘 사용하고 있는 모델입니다.

 

2015년에 구입한 Clone 사에서 나온 S270 입니다.

요즘에는 프루사 방식의 20만원도 안되는 프린터도 판매하지만,

출력 사이즈 240x270의 사이즈에 2015년에는 100만원 정도의 파격적으로 저렴한 가격이었습니다.

 

현재는 당연히 단종되로 다른 모델이 판매되고 있습니다.

 

3D 프린터에서 전혀 무지한 상태에서 구입한 것이라 인쇄 품질, 상태 등을 전혀 알지 못했습니다.

그냥, 인쇄되는 자체만으로도 신기했을 뿐입니다.

 

* 현재는 개조되어 처음 구입당시 사진이 없어서 사진을 구글링하여 찾아보았습니다.

 

 

사진첩을 찾아 보니 2015년 구입당시 시도해 보았던 몇장의 사진이 남아 있습니다.

 

     

 

 

장점 1. 구입당시 넓은 배드에 저렴한 가격

       2. 튼튼한 프로파일과 2t의 두꺼운 철판 프레임

       3. 내구성이 뛰어나 별다른 고장이 없음

 

단점 1. 심각한 설계 결함이 있음

       2. 30~40Kg의 엄청난 무게 (2017년 옮기다가 허리 디스크 재발하여 3개월 병원다니며 고생했습니다.)

       3. 챔버라고 하는 덮개가 없고, 벨트가 노출되어 있어 아크릴 챔버(덮개) 제작이 어려운 구조

       4. 출력시 엄청난 소음과 진동. 소음과 진동 때문에 가정용으로는 사용이 불가능합니다.

       5. 와블 현상(출력물의 Z축 물결무늬)

       6. 제어보드가 일반적인 아두이노와 호환이 되지 않아서 USB 펌웨어 업데이트 불가

         ( 이후 개선된 모델에서는 아두이노 호환 USB 업데이트 개선됨 )

 

 

단점 부분의 특별한 설명이 필요없지만,  1. 심각한 설계 결함 부분은 추가 설명합니다.

 

나중에 안 사실이지만, X,Y축을 이동하는 레일 부분이 가구용 서랍에 같은 곳에 사용하는 레일이 었습니다.

FDM 또는 FFF 방식이라고 부르는 프린터 자체가 그렇게 정밀함을 요구하는 것이 아니기 때문에 책상서랍 레일 정도 사용해도 문제가 없겠지만,

정말 심각한 것은 이 레일이 무한 반복할 수 없는 레일입니다. X, Y축 방향으로 계속 운동하다보면, 가동 범위가 좁아집니다.

예를 들어 240x270 가로, 세로 출력 범위이지만, 3시간 정도 출력과정을 거치면  200x230 정도로 이동범위가 줄어 듭니다.

시간이 길어질수록 더욱 줄어 들어서 조금 커지면, 결국 장시간 출력하는 출력물은 탈조가 발생합니다. 

 

이것 때문에 욕도 많이 먹은 모델입니다.

 

* 아래 사진은 X축을 진동을 방지하기 위해서 조금 개조한 것이고, 쇠구슬이 보이는 부분이 Y축 서랍용 레일 입니다.

 

 

 

심각한 이 문제 때문에 결국 설계프로그램을 공부하고 개조를 시작하게 되었습니다.

6개월 정도 구상하고, 지우고, 다시 구상하고를  수십번 반복하고.. 완전 개조를 마치는데는 1년 정도 걸렸습니다.

 

다음 글에는 설계과정에 대해서 글을 올리겠습니다.

 

MouseHouse 벽스위치 모델이 가장 yaml설정이 가장 까다롭습니다. 그래서 다른 회사 제품은 아래의 yaml 내용에서 LED 라인 정도 삭제하고 포트만 수정하면 전부 동작이 가능할 것입니다.

ESPHome 설치방법은 https://techclass.tistory.com/1 을 참고하세요.

 

 

[더니즈]님의 글은 ESPHome의 기본 개념을 잡는데 정말 훌륭한 글이었습니다. 오랜 시행착오의 과정을 걱은 노하우까지 전수해 주는 주옥같은 글입니다. ESPHome 에 입문하는데 필독서입니다.

 > esphome 강좌 :  https://cafe.naver.com/stsmarthome/10417 [더니즈] ESPHome Tips #1~

 

- 벽스위치 yaml 스크립트 작성에 [레이군][민쇼] 두분의 글에 매우 많은 도움을 받았습니다.  

다시 한번 감사드립니다.

 > 설정에 도움되는 글 :  https://cafe.naver.com/stsmarthome/10897 [민쇼]님 글

                             https://cafe.naver.com/stsmarthome/10852 [레이군]님 님 글

 > ESPHome 레퍼런스 : https://esphome.io/guides/automations.html

 

 

판매자 링크 : https://www.aliexpress.com/item/32857299145.html?spm=a2g0s.9042311.0.0.27424c4dyDlaNd

 

US $14.24 55% OFF|Wifi Smart Wall Touch Switch Glass Panel Mobile APP Remote Control No Hub Required work with Amazon Alexa Goog

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

우선,

 다른 스위치는 일반적으로 AC릴레이를 동작시키면 LED가 동작하기 때문에 gpio 포트도 찾기 쉽고 간단하게 제어가 됩니다.

 

 이제품은 다른 벽스위치와 다르게, LED와 AC 전원을 제어하는 릴레이 포트가 별도로 되어있습니다. 그래서, 스크립트 작성에 좀 어려웠습니다. 포트를 쉽게 찾게 해준 글이 바로 [민쇼], [레이군] 두분의 글이 었습니다.

 

쓸때 없는 설명을 대신해서, 설정파일을 그냥 올립니다. 

주석을 달아 놓았으니 아래 내용을 잘 분석하시면, 다른 장치 설정에도 도움이 될 것 같습니다.

 

나머지 부족한 부분은 검색을 통해서 채우셨으면 합니다.

 

 

 

1. "ESPHome > 장치 선택 > Edit"

   저는 공유기에서 자동IP를 할당받는 방법을 사용했습니다. 고정IP 설정하고 싶으신분은 [더니즈]님 강좌를 보시고 수정하시면 됩니다.  필요한 부분 수정해서 붙여 넣으시면 됩니다.

 

 1) 1gang 벽스위치

## MoseHouse 1touch switch
## 아빠방

substitutions:
  node_name: mosehouse01_1touch
  device_name: MoseHouse01 1Touch

esphome:
  name: ${node_name}
  platform: ESP8266
  board: esp01_1m
  on_boot:
    priority: -50
    then:      
      - delay: 10s
      - homeassistant.service:
          service: notify.theniz_telegram
          data:
            message: "Esphome ${device_name}이(가) 시작 되었습니다."

wifi:
  ssid: # WiFi SSID 기록
  password: # WiFi 암호 기록

logger:

api:

ota:

time:
  - platform: sntp
    timezone: UTC-9
    servers:
      - time.bora.net
      - 0.pool.ntp.org
      - 1.pool.ntp.org

sensor:
  - platform: wifi_signal
    name: "${device_name} Wifi Signal"
    id: wifi_sig
    internal: true
    update_interval: 60s
  - platform: template
    name: "${device_name} Wifi Quality"
    icon: "mdi:wifi"
    update_interval: 60s
    unit_of_measurement: '%'
    accuracy_decimals: 0
    lambda: !lambda |-
      if (id(wifi_sig).state < -92.0) {
        return 100.0;
      } else if (id(wifi_sig).state > -21.0) {
        return 1.0;
      } else {
        return round(( -0.0154 * id(wifi_sig).state * id(wifi_sig).state )-( 0.3794 * id(wifi_sig).state ) + 98.182 );
      }

# 입력장치 정의
binary_sensor:
  # touch 1st
  #- platform: gpio
  #  internal: true
  #  pin:
  #    number: GPIO12
  #    mode: INPUT
  #    inverted: True
  #  name: "touch1"
  #  on_press:
  #    - switch.toggle: button1
  
  # touch 2st
  - platform: gpio
    internal: true
    pin:
      number: GPIO3
      mode: INPUT
      inverted: True
    name: "touch2"
    on_press:
      - switch.toggle: button2
  
  # touch 3st
  #- platform: gpio
  #  internal: true
  #  pin:
  #    number: GPIO5
  #    mode: INPUT
  #    inverted: True
  #  name: "touch3"
  #  on_press:
  #    - switch.toggle: button3

# 동작버튼 = 출력장치 정의
switch:
  # Button 1 / Relay 1st
  #- platform: gpio
  #  name: ${device_name} Button1"
  #  pin: GPIO13
  #  id: button1
  #  icon: "mdi:lightbulb"
  #  on_turn_on:
  #    - switch.turn_on: led1
  #  on_turn_off:
  #    - switch.turn_off: led1
  
  # Button 2 / Relay 2st
  - platform: gpio
    name: ${device_name} Button1"  # <-- RENAME
    pin: GPIO4
    id: button2
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led2
    on_turn_off:
      - switch.turn_off: led2
  
  # Button 3 / Relay 3st
  #- platform: gpio
  #  name: ${device_name} Button3"
  #  pin: GPIO15
  #  id: button3
  #  icon: "mdi:lightbulb"
  #  on_turn_on:
  #    - switch.turn_on: led3
  #  on_turn_off:
  #    - switch.turn_off: led3
  
  # LED 정의
  # LED 1st
  #- platform: gpio
  #  internal: true
  #  name: "LED1"
  #  pin: GPIO16
  #  id: led1
  
  # LED 2st
  - platform: gpio
    internal: true
    name: "LED2"
    pin: GPIO14
    id: led2
  
  # LED 3st
  #- platform: gpio
  #  internal: true
  #  name: "LED3"
  #  pin: GPIO2
  #  id: led3

# 상태ED 정의
status_led:
  pin:
    number: GPIO0
    # inverted: yes

 

 

 2) 2gang 벽스위치

## MoseHouse 2touch switch
## 딸아이방

substitutions:
  node_name: mosehouse02_2touch
  device_name: MoseHouse02 2Touch

esphome:
  name: ${node_name}
  platform: ESP8266
  board: esp01_1m
  on_boot:
    priority: -50
    then:      
      - delay: 10s
      - homeassistant.service:
          service: notify.theniz_telegram
          data:
            message: "Esphome ${device_name}이(가) 시작 되었습니다."

wifi:
  ssid: # WiFi SSID 기록
  password: # WiFi 암호 기록

logger:

api:

ota:

time:
  - platform: sntp
    timezone: UTC-9
    servers:
      - time.bora.net
      - 0.pool.ntp.org
      - 1.pool.ntp.org

sensor:
  - platform: wifi_signal
    name: "${device_name} Wifi Signal"
    id: wifi_sig
    internal: true
    update_interval: 60s
  - platform: template
    name: "${device_name} Wifi Quality"
    icon: "mdi:wifi"
    update_interval: 60s
    unit_of_measurement: '%'
    accuracy_decimals: 0
    lambda: !lambda |-
      if (id(wifi_sig).state < -92.0) {
        return 100.0;
      } else if (id(wifi_sig).state > -21.0) {
        return 1.0;
      } else {
        return round(( -0.0154 * id(wifi_sig).state * id(wifi_sig).state )-( 0.3794 * id(wifi_sig).state ) + 98.182 );
      }

# 입력장치 정의
binary_sensor:
  # touch 1st
  - platform: gpio
    internal: true
    pin:
      number: GPIO12
      mode: INPUT
      inverted: True
    name: "touch1"
    on_press:
      - switch.toggle: button1
  
  # touch 2st
  #- platform: gpio
  #  internal: true
  #  pin:
  #    number: GPIO3
  #    mode: INPUT
  #    inverted: True
  #  name: "touch2"
  #  on_press:
  #    - switch.toggle: button2
  
  # touch 3st
  - platform: gpio
    internal: true
    pin:
      number: GPIO5
      mode: INPUT
      inverted: True
    name: "touch3"
    on_press:
      - switch.toggle: button3

# 동작버튼 = 출력장치 정의
switch:
  # Button 1 / Relay 1st
  - platform: gpio
    name: ${device_name} Button1"
    pin: GPIO13
    id: button1
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led1
    on_turn_off:
      - switch.turn_off: led1
  
  # Button 2 / Relay 2st
  #- platform: gpio
  #  name: ${device_name} Button2"
  #  pin: GPIO4
  #  id: button2
  #  icon: "mdi:lightbulb"
  #  on_turn_on:
  #    - switch.turn_on: led2
  #  on_turn_off:
  #    - switch.turn_off: led2
  
  # Button 2 / Relay 3st
  - platform: gpio
    name: ${device_name} Button2"  # <-- rename
    pin: GPIO15
    id: button3
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led3
    on_turn_off:
      - switch.turn_off: led3
  
  # LED 정의
  # LED 1st
  - platform: gpio
    internal: true
    name: "LED1"
    pin: GPIO16
    id: led1
  
  # LED 2st
  #- platform: gpio
  #  internal: true
  #  name: "LED2"
  #  pin: GPIO14
  #  id: led2
  
  # LED 3st
  - platform: gpio
    internal: true
    name: "LED3"
    pin: GPIO2
    id: led3

# 상태ED 정의
status_led:
  pin:
    number: GPIO0
    # inverted: yes

 

 

 3) 3gang 벽스위치

## MoseHouse 3touch switch
## 거실

substitutions:
  node_name: mosehouse04_3touch
  device_name: MoseHouse04 3Touch

esphome:
  name: ${node_name}
  # platform: ESP8266
  # board: d1_mini
  platform: ESP8266
  board: esp01_1m
  on_boot:
    priority: -50
    then:      
      - delay: 10s
      - homeassistant.service:
          service: notify.theniz_telegram
          data:
            message: "Esphome ${device_name}이(가) 시작 되었습니다."

wifi:
  ssid: # WiFi SSID 기록
  password: # WiFi 암호 기록

logger:

api:

ota:

time:
  - platform: sntp
    timezone: UTC-9
    servers:
      - time.bora.net
      - 0.pool.ntp.org
      - 1.pool.ntp.org

sensor:
  - platform: wifi_signal
    name: "${device_name} Wifi Signal"
    id: wifi_sig
    internal: true
    update_interval: 60s
  - platform: template
    name: "${device_name} Wifi Quality"
    icon: "mdi:wifi"
    update_interval: 60s
    unit_of_measurement: '%'
    accuracy_decimals: 0
    lambda: !lambda |-
      if (id(wifi_sig).state < -92.0) {
        return 100.0;
      } else if (id(wifi_sig).state > -21.0) {
        return 1.0;
      } else {
        return round(( -0.0154 * id(wifi_sig).state * id(wifi_sig).state )-( 0.3794 * id(wifi_sig).state ) + 98.182 );
      }

# 입력장치 정의
binary_sensor:
  # touch 1st
  - platform: gpio
    internal: true
    pin:
      number: GPIO12
      mode: INPUT
      inverted: True
    name: "touch1"
    on_press:
      - switch.toggle: button1
  # touch 2st
  - platform: gpio
    internal: true
    pin:
      number: GPIO3
      mode: INPUT
      inverted: True
    name: "touch2"
    on_press:
      - switch.toggle: button2
  # touch 3st
  - platform: gpio
    internal: true
    pin:
      number: GPIO5
      mode: INPUT
      inverted: True
    name: "touch3"
    on_press:
      - switch.toggle: button3

# 동작버튼 = 출력장치 정의
switch:
  # Button 1 / Relay 1st
  - platform: gpio
    name: ${device_name} Button1"  # Relay1
    pin: GPIO13
    id: button1
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led1
    on_turn_off:
      - switch.turn_off: led1
  # Button 2 / Relay 2st
  - platform: gpio
    name: ${device_name} Button2"  # Relay2
    pin: GPIO4
    id: button2
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led2
    on_turn_off:
      - switch.turn_off: led2
  # Button 3 / Relay 3st
  - platform: gpio
    name: ${device_name} Button3"  # Relay3
    pin: GPIO15
    id: button3
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led3
    on_turn_off:
      - switch.turn_off: led3
  
  # LED 정의
  # LED 1st
  - platform: gpio
    internal: true
    name: "LED1"
    pin: GPIO16
    id: led1
  # LED 2st
  - platform: gpio
    internal: true
    name: "LED2"
    pin: GPIO14
    id: led2
  # LED 3st
  - platform: gpio
    internal: true
    name: "LED3"
    pin: GPIO2
    id: led3

# 상태ED 정의
status_led:
  pin:
    number: GPIO0
    # inverted: yes

 

 

 4) 2gang 전등/환풍기 벽스위치 (환풍기 8분 타이머) - 화장실용

## MoseHouse 2touch switch
## 화장실2/환풍기

substitutions:
  node_name: mosehouse08_2touch
  device_name: MoseHouse08 2Touch

esphome:
  name: ${node_name}
  platform: ESP8266
  board: esp01_1m
  on_boot:
    priority: -50
    then:      
      - delay: 10s
      - homeassistant.service:
          service: notify.theniz_telegram
          data:
            message: "Esphome ${device_name}이(가) 시작 되었습니다."

wifi:
  ssid: # WiFi SSID 기록
  password: # WiFi 암호 기록

logger:

api:

ota:

time:
  - platform: sntp
    timezone: UTC-9
    servers:
      - time.bora.net
      - 0.pool.ntp.org
      - 1.pool.ntp.org

sensor:
  - platform: wifi_signal
    name: "${device_name} Wifi Signal"
    id: wifi_sig
    internal: true
    update_interval: 60s
  - platform: template
    name: "${device_name} Wifi Quality"
    icon: "mdi:wifi"
    update_interval: 60s
    unit_of_measurement: '%'
    accuracy_decimals: 0
    lambda: !lambda |-
      if (id(wifi_sig).state < -92.0) {
        return 100.0;
      } else if (id(wifi_sig).state > -21.0) {
        return 1.0;
      } else {
        return round(( -0.0154 * id(wifi_sig).state * id(wifi_sig).state )-( 0.3794 * id(wifi_sig).state ) + 98.182 );
      }

# 입력장치 정의
binary_sensor:
  # touch 1st
  - platform: gpio
    internal: true
    pin:
      number: GPIO12
      mode: INPUT
      inverted: True
    name: "touch1"
    on_press:
      - switch.toggle: button1
  
  # touch 2st
  #- platform: gpio
  #  internal: true
  #  pin:
  #    number: GPIO3
  #    mode: INPUT
  #    inverted: True
  #  name: "touch2"
  #  on_press:
  #    - switch.toggle: button2
  
  # touch 3st
  - platform: gpio
    internal: true
    pin:
      number: GPIO5
      mode: INPUT
      inverted: True
    name: "touch3"
    on_press:
      - switch.toggle: button3

# 동작버튼 = 출력장치 정의
switch:
  # Button 1 / Relay 1st
  - platform: gpio
    name: ${device_name} Button1"
    pin: GPIO13
    id: button1
    icon: "mdi:lightbulb"
    on_turn_on:
      - switch.turn_on: led1
    on_turn_off:
      - switch.turn_off: led1
      - if:
          condition:
            switch.is_on: button3
          then:
            - delay: 480s
            - switch.turn_off: button3
  
  # Button 2 / Relay 2st
  #- platform: gpio
  #  name: ${device_name} Button2"
  #  pin: GPIO4
  #  id: button2
  #  icon: "mdi:lightbulb"
  #  on_turn_on:
  #    - switch.turn_on: led2
  #  on_turn_off:
  #    - switch.turn_off: led2
  
  # Button 2 / Relay 3st
  - platform: gpio
    name: ${device_name} Button2"  # <-- rename
    pin: GPIO15
    id: button3
    icon: "mdi:fan"  #<-- FAN icon
    on_turn_on:
      - switch.turn_on: led3
      #환풍기FAN 동작시
      - if:  # button 1 off 인 경우
          condition:
            switch.is_off: button1
          then:
            - delay: 480s                  # 480s=60s*8분
            - switch.turn_off: button3   # 버튼 OFF
    on_turn_off:
      - switch.turn_off: led3
  
  # LED 정의
  # LED 1st
  - platform: gpio
    internal: true
    name: "LED1"
    pin: GPIO16
    id: led1
  
  # LED 2st
  #- platform: gpio
  #  internal: true
  #  name: "LED2"
  #  pin: GPIO14
  #  id: led2
  
  # LED 3st
  - platform: gpio
    internal: true
    name: "LED3"
    pin: GPIO2
    id: led3

# 상태ED 정의
status_led:
  pin:
    number: GPIO0
    # inverted: yes

 

mosehouse01_1touch.yaml
0.00MB
mosehouse02_2touch.yaml
0.00MB
mosehouse04_3touch.yaml
0.00MB
mosehouse08_2touch.yaml
0.00MB

 

 

 

 

2. "Home Assistant 설정 > 통합 구성요소 > (+)버튼 >ESPHome > IP를 등록(공유기에서 확인)"

    IP를 등록하면 아래와 같이 등록됩니다.

  

 

+ Recent posts