oukene / smartthings_customize

10 stars 7 forks source link

unique_id와 entity_id를 다르게 구성 #18

Closed clipman closed 1 year ago

clipman commented 1 year ago

init.py 에서 unique_id와 entity_id를 다르게 구성했습니다. unique_id는 복잡한 기본설정으로 하고 entity_id는 기존처럼 사용자정의로 합니다. 이렇게 하는 이유는 always_reset_entity: false로 설정한 경우이거나 통합구성요소에서 "다시 읽어오기"를 하더라도 기존에 존재하는 동일한 unique_id의 entity를 다시 생성하지 않기 위해서입니다.

이렇게 하면 사용자가 각각의 구성요소 설정화면을 통하여 구성요소 ID를 수정하거나 이름을 수정한 후에 다시 읽어오더라도 변경된 사항이 리셋되지 않고 동일한 entity를 다시 만들지 않습니다.

따라서 리셋이 꼭 필요한 경우에만 always_reset_entity: true 이렇게 설정하고 재시작하거나 다시읽어오기를 수행합니다.

oukene commented 1 year ago

init.py 에서 unique_id와 entity_id를 다르게 구성했습니다. unique_id는 복잡한 기본설정으로 하고 entity_id는 기존처럼 사용자정의로 합니다. 이렇게 하는 이유는 always_reset_entity: false로 설정한 경우이거나 통합구성요소에서 "다시 읽어오기"를 하더라도 기존에 존재하는 동일한 unique_id의 entity를 다시 생성하지 않기 위해서입니다.

이렇게 하면 사용자가 각각의 구성요소 설정화면을 통하여 구성요소 ID를 수정하거나 이름을 수정한 후에 다시 읽어오더라도 변경된 사항이 리셋되지 않고 동일한 entity를 다시 만들지 않습니다.

따라서 리셋이 꼭 필요한 경우에만 always_reset_entity: true 이렇게 설정하고 재시작하거나 다시읽어오기를 수행합니다.

저는 수정해서 올려주신걸로는 똑같이 작동을 해서 다르게 수정해서 처리해놨으니 테스트 좀 해보고 올려볼께요 async_generate_entity_id 가 좀 묘하네요, 이 엔티티 id 생성 하는걸 call 을 sensor.py, switch.py 등에서 하게 되면 기존의 엔티티가 있다고 판단되서 뒤에 넘버링 하지 않고 지나가는데, 다른 파일에서 call 하게 되면 꼭 이러네요

그냥 async_generate_entity_id 없앴습니다. 어차피 명명 규칙을 컴포넌트 자체적으로 정해놔서 안써도 될것 같아요

always_reset_entity 는 이제 말씀하신 용도로 사용하면 될것 같습니다.

clipman commented 1 year ago

/config/.storage/core.entity_registry 파일에 보면 삭제되지 않은 수많은 아래의 내용을 포함하는 항목들이 존재하네요. 통합구성요소를 삭제할 때 자동으로 삭제가 안되는 현상때문일까요? 한번 확인해 보세요. "platform": "smartthings_customize"

==> 확인해 보니 자주 변경한 unique_id와 관련이 있네요. unique_id는 사용자가 변경이 불가능해야 할듯 합니다.

clipman commented 1 year ago

수정한 소스에 버그가 있었네요. self._unique_id = self.entity_id 수정한 아랫부분에 이거 제거하였습니다.

oukene commented 1 year ago

수정되었어요~