본문 바로가기

SmartHome. IoT/SmartHome 기본

HA 2021.6 이후버전 에서 커스텀 컴포넌트 동작 안 될때.

728x90
반응형

안녕하세요~ 레이군 입니다.

Home Assistant가 2021.6 버전으로 업데이트가 되면서 변경된 점이 발생하였습니다..

https://www.home-assistant.io/blog/2021/06/02/release-20216/#other-breaking-changes

업데이트 내용중에, 다음과 같은 부분이 있습니다.

Custom integrations (custom_components)

As mentioned in every release since 2021.3, custom integrations will require a version key in their manifest file.

As of this release, if that version key is missing in the manifest, the custom integration will no longer be loaded.

For more details see our developer blog about it

(@ludeeus - #49916)

커스텀 컴포넌트가 동작하기 위해 필요한 내용중 manifest 파일에 version 키가 권장사항 이었는데

이제 필수사항으로 바뀌었습니다.

HACS로 올린것들은 대부분 해당 키가 있어서 문제 없지만, 따로 쓰고있는 커스텀 컴포넌트 2개에서 문제가 생겼네요.

에너톡(Enertalk) / Smart IR 이렇게 2가지 커스텀 컴포넌트가 동작이 되지 않았습니다.

해결방법은 간단합니다.

파일에디터를 열고 -> 동작 안되는 커스텀 컴포넌트의 manifest.json 파일을 열어서

맨 아래쪽에 적당히 version 키를 넣어주면 됩니다.

 

적당한 위치에 "version": "1.0.0" 등으로 넣어주시면 되고,

json파일의 규칙때문에 바로 윗칸의 마지막엔 ,(컴마) 를 넣어주셔야 오류가 나지 않습니다.

각 항목의 마지막에 컴마가 있는걸 보시면 되겠죠

이렇게 수정하고, 저장하면 완성!

 

Smart IR도 마찬가지의 과정을 거쳐서 수정해 주시면 됩니다.

처음에 Smart IR의 manifest 파일을 봤을땐, 어 version 항목이 있는데 왜 안되지? 생각했는데...

잘 보니, 여기의 version은 updater 라는 항목 하위에 위치한 값이기 때문에 다르게 인식되는거였어요.

그러므로 "version": "1.16.0", 을 updater 항목 위에 넣어줬습니다.

에너톡과 버전이 다른건, 에너톡은 버전을 몰라서 그냥 임의로 넣은거고, SmartIR은 써있으니 똑같이 넣어줬어요.

그리고, version 키의 마지막 부분에 ,(컴마) 를 반드시 넣어주셔야 합니다.

그래야 해당 줄이 끝났다는걸 인지시킬 수 있어요.

자 이렇게 하고 HA를 재시작 해주시면 완성....!

그런데 전 재시작이 안 되네요....?

구성하기-서버제어 항목에서 구성 내용 확인을 누르면 오류가 나왔습니다.

sensor.enertalk 항목과 climate.smartir 항목의 오류였어요.

위 캡쳐는 enertalk은 이미 처리해서 smartir 관련 오류만 남아있네요

이 오류가 발생하는 요인은 다음과 같습니다.

HA의 2021.6 업데이트

-> 커스텀 컴포넌트의 version키가 없으면 로드되지 않음

-> 위 조건으로 enertalk과 smartIR 커스텀 컴포넌트가 로드되지 않음

-> 해당 컴포넌트가 필요한 sensor.enertalk과 climate.smartir도 동작되지 않음

-> 구성내용을 검사하면, 커스텀 컴포넌트가 동작되지 않는데 sensor와 climate가 구성되어 있으므로 오류가 남

처리 방법은 2가지 입니다.

물론 처리가 아니라 정석대로 한다면 HA업데이트 이전에 커스텀 컴포넌트의 manifest.json 파일에

version 키를 넣어주는게 맞지만.... 원래 업뎃하고 뭐가 안되니까 찾아보는것 아니겠습니까?

1. 문제가 있는 항목을 제거(주석처리) 한 다음 재부팅 해서 커스텀 컴포넌트 활성화 -> 이후 항목 활성화

 

안정적인 방법이죠. 문제가 되는 항목(예시는 sensor.enertalk) 을 전부 주석처리 한 다음,

HA를 재시작 하면 version키가 추가된 enertalk 커스텀 컴포넌트가 정상적으로 로딩될테고

그 다음에 주석처리한걸 해제하면, 로드된 커스텀 컴포넌트에 대한 센서를 추가하는거니 구성 내용 확인을 통과할겁니다.

단점은, 커스텀 컴포넌트에 version항목을 수정하고 HA재시작 -> 주석처리한거 해제하고 HA재시작...

두번 해야해요...

2. 강제로 HA재시작

SSH에 접속해서 HA를 재시작 해주던가 아예 HA가 돌아가는 호스트를 재부팅 해주시면 됩니다.

SSH에 접속해서 재시작 하신다면, sudo docker restart homeassistant 명령을 입력해주시면 되고

호스트 재부팅을 하시려면, supervisor -> 시스템 -> 호스트 재부팅하기 를 진행하면 됩니다.

위 방법은 재시작 한번으로 빠르게 처리할 수 있지만,

뭔가 오타가 나거나 했다면 어차피 또 다시 수정하고 재시작을 해줘야 해서...

가능하면 오류가 난 부분을 주석처리 해서 제대로 올라오는지 보고, 풀어나가는게 좋습니다.

전 수정할곳이 총 3군데(sensor.enertalk 1개, climate.smartir 2개) 이어서 다 수정하기도 귀찮고

뭐 때문에 오류가 난건지 알고있으니(라고 믿고) 재시작을 하는게 편했지만요...

자 오늘 내용은 여기까지!!

다음에 또 올께요~

728x90
반응형