Tuya 기반 장치의 로컬 처리를 위한 홈어시스턴트 사용자 정의 통합입니다.
이 맞춤형 통합은 폴링 대신 업데이트 푸시를 통해 장치 상태를 업데이트하므로 상태 업데이트가 빠릅니다(수동으로 작동하는 경우에도). 통합은 장치의 정보 및 local_key 검색을 위해 Tuya IoT Cloud API도 지원합니다.
참고: Cloud API 계정 구성은 필수는 아니지만(LocalTuya는 그것 없이도 작동할 수 있음) local_keys의 쉬운 검색(및 장치를 다시 페어링한 후 자동 업데이트)을 위해 강력히 권장됩니다. Cloud API 호출은 시작 시와 local_key 업데이트가 필요할 때만 수행됩니다.
현재 다음 Tuya 장치 유형이 지원됩니다.
호환 장치에 대해 에너지 모니터링(전압, 전류, 와트 등)이 지원됩니다.
현재 3.1부터 3.4까지의 Tuya 프로토콜이 지원됩니다.
이 저장소의 개발은 @NameLessJedi, @mileperhour 및 @TradeFace의 코드로 시작되었습니다. 그런 다음 해당 코드는 홈어시스턴트 환경과의 적절한 통합을 제공하고 구성 흐름 및 기타 기능을 추가하기 위해 심층적으로 리팩터링되었습니다. 아래의 "감사합니다" 섹션을 참조하세요.
HACS를 사용하는 경우 가장 쉬운 방법은 HACS를 통해 LocalTuya를 설치하는 것입니다.
수동 설치의 경우 localtuya 폴더와 해당 내용을 모두 홈어시스턴트의 custom_comComponents 폴더에 복사하세요. 이 폴더는 일반적으로 /config
폴더 안에 있습니다. Hass.io를 실행 중인 경우 SAMBA를 사용하여 폴더를 복사하세요. Home Assistant Supervised를 실행 중인 경우 custom_comComponents 폴더는 /usr/share/hassio/homeassistant
에 있을 수 있습니다. custom_components
폴더를 생성한 다음 localtuya 폴더와 모든 내용을 여기에 복사해야 할 수도 있습니다.
참고: LocalTuya를 사용하려면 Tuya 장치의 키와 ID가 있어야 합니다. 가장 쉬운 방법은 통합에서 Cloud API 계정을 구성하는 것입니다. 이를 수행하지 않기로 선택한 경우 환경과 소유한 장치에 따라 local_keys를 얻을 수 있는 여러 가지 방법이 있습니다. 정보를 얻기 시작하기에 좋은 곳은 https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md 또는 https://pypi.org/project/tinytuya/입니다.
참고 2: 인터넷이 있고 인터넷 액세스를 차단하는 네트워크에 이러한 장치를 통합하려는 경우 DNS 요청(로컬 DNS 서버, 예: 192.168.1.1)도 차단해야 합니다. 아웃바운드 인터넷만 차단하면 장치는 좀비 상태가 됩니다. 로컬 키와의 연결을 거부하거나 응답하지 않습니다. 따라서 먼저 활성 인터넷 연결로 장치를 연결하고, 각 장치의 로컬 키를 잡고, 블록을 구현해야 합니다.
참고: v4.0.0부터 YAML 파일을 사용한 구성은 더 이상 지원되지 않습니다. 통합은 구성 흐름을 통해서만 구성할 수 있습니다.
통합 구성을 시작하려면 설정 - 통합 페이지에서 "+통합 추가" 버튼을 누르고 드롭다운 메뉴에서 LocalTuya를 선택하세요. Tuya IoT 플랫폼 계정 자격 증명을 입력하도록 요청하는 Cloud API 구성 페이지가 나타납니다.
Tuya IoT 플랫폼 계정을 설정하고 그 안에 프로젝트를 설정하려면 공식 Tuya 통합 지침을 참조하십시오: https://www.home-assistant.io/integrations/tuya/ 클라이언트 ID와 비밀을 찾을 수 있는 위치는 다음과 같습니다. 이 링크("인증 키 받기" 단락)에 설명되어 있으며, 사용자 ID는 클라우드 프로젝트 내의 "Tuya 앱 계정 연결" 하위 탭에서 찾을 수 있습니다.
참고: 위 링크에 명시된 대로 이미 계정과 IoT 프로젝트가 있는 경우 해당 프로젝트가 2021년 5월 25일 이후에 생성되었는지 확인하세요(Tuya 2.0용 클라우드에 도입된 변경 사항으로 인해). 그렇지 않으면 새 프로젝트를 만들어야 합니다. 프로젝트 생성 날짜를 확인할 수 있는 위치는 다음 스크린샷을 참조하세요.
제출 버튼을 누르면 첫 번째 설정이 완료되고 통합이 추가됩니다.
참고: Cloud API 자격 증명을 입력하는 것이 필수는 아닙니다. "Cloud API 계정을 구성하지 않음" 버튼을 선택하면 통합이 추가됩니다.
통합이 설정된 후 통합 페이지에서 구성 버튼을 눌러 장치를 추가하고 구성할 수 있습니다.
구성 메뉴는 다음과 같습니다.
이 메뉴에서 "클라우드 API 계정 재구성"을 선택하여 Tuya Cloud 자격 증명 및 설정이 변경되었거나 통합이 v.3.xx 버전에서 마이그레이션된 경우 이를 편집할 수 있습니다.
그런 다음 Tuya 장치 추가 또는 편집을 진행할 수 있습니다.
"장치 추가 또는 편집"을 선택하면 감지된 장치 목록이 포함된 드롭다운 메뉴가 나타납니다(추가를 선택한 경우 자동 검색 사용, 편집을 선택한 경우 이미 구성된 장치 목록 사용). 이들 중 하나를 선택하거나 "..." 옵션을 선택하여 모든 매개변수를 수동으로 입력하십시오.
참고: 다음 단계가 안정적으로 작동하려면 장치의 tuya 앱을 닫아야 합니다.
하나의 항목을 선택한 경우 장치의 식별 이름과 localKey만 입력하면 됩니다. Cloud API 계정을 구성한 경우 이러한 값은 자동으로 검색되며, 그렇지 않으면 수동으로 입력해야 합니다.
스캔 간격 설정은 선택 사항이며, 기본적으로 에너지/전력 값이 자주 업데이트되지 않는 경우에만 필요합니다. 10초 미만의 값은 안정성 문제를 일으킬 수 있습니다.
'추가할 수동 DPS' 설정은 선택 사항이며, 엔터티가 적절하게 초기화될 때까지 장치가 DPS를 올바르게 광고하지 않는 경우에만 필요합니다. 이 설정은 먼저 Tuya 앱으로 장치를 연결/초기화한 다음 앱을 닫고 통합에 장치를 추가하면 피할 수 있는 경우가 많습니다. 참고: 이 옵션을 사용하여 추가된 모든 DPS는 설정 중에 -1 값을 갖게 됩니다.
'RESET 명령으로 보낼 DPID' 설정은 선택 사항입니다. 전원을 껐다가 켠 후 장치가 Tuya 명령에 응답하지 않지만 (좀비 상태) 연결될 수 있는 경우에 사용됩니다. 이 시나리오는 주로 장치의 인터넷 액세스가 차단되었을 때 발생합니다. DPids는 장치마다 다르지만 일반적으로 "18,19,20"이 사용됩니다. 여기에 잘못된 항목을 추가하면 장치가 좀비 상태에서 나오지 않을 수 있습니다. 일반적으로 여기에는 센서 DPID만 입력됩니다.
"제출"을 누르면 모든 것이 제대로 작동하는지 확인하기 위해 연결이 테스트됩니다.
그런 다음 엔터티를 추가할 차례입니다. 이 단계는 여러 번 수행됩니다. 먼저 드롭다운 메뉴에서 엔터티 유형을 선택하여 설정합니다. 필요한 엔터티를 모두 정의한 후 "엔티티를 더 추가하지 않음" 확인란을 선택된 상태로 둡니다. 이렇게 하면 절차가 완료됩니다.
각 엔터티에 대해 연결된 DP를 선택해야 합니다. DP를 선택하는 데 필요한 모든 옵션은 쉽게 식별할 수 있도록 장치에서 발견된 사용 가능한 모든 DP(현재 상태!!)를 보여주는 드롭다운 메뉴를 제공합니다.
참고: 장치가 작동하기 위해 엔터티에 초기화 값을 보내기 위해 LocalTuya가 필요한 경우 '수동 엔터티' 옵션을 통해 지원되는 엔터티에서 이를 구성할 수 있습니다. 선택적으로 전송할 초기화 값을 지정할 수 있습니다.
각 엔터티 유형에는 구성할 수 있는 옵션이 다릅니다. 다음은 "switch" 엔터티에 대한 예입니다.
엔터티를 구성하면 절차가 완료됩니다. 이제 홈어시스턴트의 영역과 장치를 연결할 수 있습니다
v3.xx 이하에서 LocalTuya를 업그레이드하면 구성 항목이 자동으로 새 설정으로 마이그레이션됩니다. 통합 탭에는 LocalTuya 상자 내에 그룹화된 여러 통합 대신 하나의 LocalTuya 통합(구성된 장치 및 엔터티 수 표시)만 표시된다는 사실을 제외하고 모든 것이 업그레이드 전과 같이 작동해야 합니다. 이는 YAML 파일을 사용하고 구성 흐름을 사용하여 이전 구성을 수행한 경우 모두 발생합니다. 마이그레이션한 후에는 Tuya IoT 계정 자격 증명을 입력하여 Cloud API에 대한 지원을 활성화할 수 있습니다(그리고 local_key 검색 및 자동 업데이트의 이점을 누릴 수 있습니다). 구성 메뉴를 참조하세요.
YAML 파일을 사용하여 LocalTuya를 구성한 경우 YAML 파일 내에서 모든 참조를 삭제할 수 있습니다. 더 이상 고려되지 않아 혼란을 가져올 수 있기 때문입니다(물론 로거 구성 부분만 유지하면 됩니다. 물론 디버깅 참조).
두 가지 방법으로 에너지 모니터링(전압, 전류)을 얻을 수 있습니다.
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
히터, 온도 조절기, AC 등 다양한 Tuya 기반 기후가 있습니다. 모든 것이 서로 다른 방식으로 통합된 것으로 보이며 공통 DP 매핑을 찾기가 어렵습니다. 다음은 현재 작동 중인 DP와 제품 매핑의 표입니다. 자신의 매핑을 위한 지침으로 이를 사용하고 가능하다면 목록에 기여해 주십시오.
DP | 모에스 BHT 002 | Qlima WMS S + SC52 (AB;AF) | 아바토 |
---|---|---|---|
1 | ID: 켜기/끄기 {참, 거짓} | ID: 켜기/끄기 {참, 거짓} | ID: 켜기/끄기 {참, 거짓} |
2 | 목표온도 정수, 스케일링: 0.5 | 목표온도 정수, 스케일링 1 | 목표온도 정수, 스케일링 1 |
3 | 현재온도 정수, 스케일링: 0.5 | 현재온도 정수, 스케일링: 1 | 현재온도 정수, 스케일링: 1 |
4 | 방법 {0, 1} | 방법 {"더운", "바람", "습한", "추운", "자동"} | ? |
5 | 에코 모드 ? | 팬 모드 {"강함", "높음", "중간", "낮음", "자동"} | ? |
15 | 지원되지 않음 | 지원됨, 알 수 없음 {참, 거짓} | ? |
19 | 지원되지 않음 | 온도 단위 {"c", "f"} | ? |
23 | 지원되지 않음 | 지원됨, 알 수 없음 정수, 예: 68 | ? |
24 | 지원되지 않음 | 지원됨, 알 수 없음 정수, 예: 64 | ? |
101 | 지원되지 않음 | 실외 온도 정수. 스케일링: 1 | ? |
102 | 외부 센서의 온도 정수, 스케일링: 0.5 | 지원됨, 알 수 없음 정수, 예: 34 | ? |
104 | 지원됨, 알 수 없음 {참, 거짓(?)} | 지원되지 않음 | ? |
Moes BHT 002 Avatto 온도 조절기
버그 보고서를 작성할 때마다 디버그 로그를 직접 포함하면 큰 도움이 됩니다(그렇지 않으면 우리가 요청해 시간이 더 오래 걸릴 것입니다). 따라서 다음과 같은 디버그 로그를 활성화하고 문제에 포함시키십시오.
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
그런 다음 문제가 나타나는 장치를 편집하고 "이 장치에 대해 디버깅 활성화" 버튼을 선택하세요.
전력뿐만 아니라 이를 기반으로 에너지(kWh)에 대한 (좋고 정확한) 센서(카운터)를 만듭니다. 아이디어: 사용: https://www.home-assistant.io/integrations/integration/ 및 https://www.home-assistant.io/integrations/utility_meter/
#15에 나열된 모든 것
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant 및 mileperhour https://github.com/mileperhour/localtuya-homeassistant는 영감의 주요 소스이며 스위치 코드는 실질적으로 변경되지 않았습니다.
TradeFace는 표지와의 통신을 위한 올바른 코드를 제공하는 유일한 업체입니다(특히 상태에 대한 0x0a 대신 0x0d 명령 및 이중 응답 수신과 같은 관련 요구 사항): https://github. com/TradeFace/tuya/
sean6541 - Tuya 장치용으로 작동하는 (표준) Python 핸들러용.
프로토콜 3.4를 사용하여 장치와 통신하기 위해 코드를 가져올 수 있는 TinyTuya 프로젝트의 경우 jasonacox입니다.
postlund는 리팩토링의 95%를 코딩하고 이 저장소의 품질을 상상하기 어려운 수준으로 향상시키고(적어도 저는) 홈어시스턴트에서 작동하는 방식에 대해 많은 것을 가르쳐주었습니다.