본문 바로가기

SmartHome. IoT/SmartHome 응용

HA의 db파일 용량 다이어트 팁(DB 사용량 확인)

728x90
반응형

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

어제 HomeAssistant의 DB용량 관련 내용을 포스팅 했었습니다.

[IoT/HomeAssistant] - HA 사용시 db용량 다이어트 하기, Recorder / History / Logbook 에 관하여..

그런데, 뭘 빼야할지 감이 잘 안오실듯 하여...

DB를 까보는 방법을 알려드릴께요.

기본 DB 내용 확인하기(Maria DB는 아래 따로 기재)

SQLite Web 애드온 설치하기

자 오늘 해볼 내용은, SQLite Web 이라는 애드온을 사용하는 것 입니다.

이 애드온은, HA의 기본 DB 저장방식인 SQLite의 데이터를 불러와서 웹에서 확인할 수 있게 해주는데요

가장 간단하게 DB의 내용을 확인할 수 있습니다.

먼저 좌측 하단의 설정 - 애드온 항목으로 이동 후

우측 하단의 애드온 스토어로 진입합니다.

상단의 Search 부분에 sql 이라고 입력하면, Home Assistant Cummunity Add-ons 항목에

SQLite Web 이라는 항목이 보이실겁니다.

설치하고, 실행을 하시면 됩니다.

HA를 구동하는 장치에 따라 설치/실행 속도는 다를 수 있으니 적당히 기다려 주세요

실행이 완료되면, 우측 하단의 웹 UI 열기를 실행합니다.

혹시 502 bad gateway 가 뜬다면, 아직 애드온 실행이 잘 안된것이니 조금 기다렸다가 다시 해보세요.

그래도 안 된다? 상단의 로그 항목을 가보세요. 뭔가 에러가 떠있을 수 있습니다.

아마 DB파일을 열 수 없을때 에러가 뜰것 같네요.

실행이 완료되면, 위와 같은 화면을 보실 수 있습니다.

DB파일의 용량은 Size 항목에서 확인이 가능합니다.

전 아무 장치도 없는 서브HA라서 DB용량이 매우 작네요.

좌측에 있는 항목을 클릭 후, 우측 창의 Content 를 누르면 해당 항목에 포함된 내용이 표시됩니다.

전 event_data를 봤는데 277줄의 데이터가 쌓여있네요.

하나씩 눌러보면서 어디가 많이 쌓여있는지 체크를 해주시구요

주로 가장 많은 공간을 차지하는건 states 부분일겁니다.

동일한 기간동안 event_data의 20배가 넘는 데이터가 쌓였네요.

MariaDB 애드온으로 DB를 사용하는 경우, 다음 내용을 참조하시면 됩니다.

애드온 스토어 에서 php 라고 찾으면, phpMyAdmin 이라는 애드온이 보입니다.

이걸 설치하고 실행을 해주세요.

실행 완료 후 웹 UI 열기 누르시고

homeassistant 항목을 누르시면, 우측에 DB내용이 보입니다.

전 총 500만개의 데이터가 있고, 용량은 1.3GB네요.

states가 가장 크고, statistics가 그 다음을 따르고 있습니다.

states 항목에 들어가면 이런식으로 내용이 보입니다!

여기에서 어떤 장치가 주로 데이터를 쌓고 있는지 확인하실 수 있습니다.

개발자도구-이벤트 청취하기 부분에선 너무 순식간에 호로록 지나가기 때문에 보기가 어렵겠지만

여기서 보면 차분하게 체크할 수 있어서 향후 행보를 결정하기가 더 편할거예요.

단시간 내에 매우 많은 데이터가 오가는 장치(블루투스 스캔 이라던가) 가 있다면 데이터 양이 많아질겁니다.

이런 장치들은 기록할 필요가 없다면 빼고, 인터벌 조절 기능이 있다면 조금 조절해서 쓰면 적절해 지겠죠.

 

기록량 높은 순으로 정렬하기

 

 

쿼리를 통해 states의 사용량을 높은 순으로 정렬할 수 있습니다.

 

SELECT distinct `a`.`entity_id`,
(SELECT count(`b`.`entity_id`) from `states` b where `b`.`entity_id` = `a`.`entity_id`) cnt
FROM `states` a
order by cnt desc

 

쿼리는 위 내용이며, 사용방법은 다음과 같습니다.

 

 

SQLite Web

 
 

Content 항목이 아닌 그 옆에 Query 항목으로 이동 후

위 쿼리문을 붙여넣기 합니다.(기존의 내용은 지우면서)

이후 Execute를 누르면, 시간이 걸리고 기다리면 하단에 내용이 표시됩니다.

저는 sun.sun 이 가장 많은 공간을 차지하고 있네요.(연결된 장치가 없는 HA라서 그렇습니다)

 

phpMyAdmin

phpMyAdmin 은 데이터베이스 보기 항목에 보면 쿼리가 지정되어 있습니다.

인라인 편집을 누른 다음, 쿼리문을 붙여넣기 하고(기존 입력된 문구는 제거) 실행을 눌러주세요.

그러면 이런식으로 가장 많은 사용량 순으로 정렬됩니다.

음... sensor.trash_device_temperature 저건 안 쓰는건데.. 지워야겠네요!

 

 

어제와 오늘 내용으로 여러분의 HA가 조금 더 쾌적할 수 있길 바랍니다!

오늘 내용은 여기까지! 다음에 또 재미난거 들고올께요~

728x90
반응형