HA 자체가 오픈 소스 기반 이기 때문에 여러 개발자 분들이 만들어 주신 기능들을
센서 형태로 추가가 가능 합니다
이건 그 중에 서울 버스 API를 이용한 기능 인데요
miumida/seoul_bus: Seoul Bus Sensor for Home Assistant #HA (github.com)
우선 출처는 위의 링크 입니다
HA에 적용 하기 전에
- 우선 HAOS 기준 입니다 애드온이나 HACS를 사용하기 위해서 HAOS 설치를 권장 합니다
- 서울 버스 API를 사용하기 때문에 API 사용 신청을 해야 합니다 적용 되는데 몇 시간 걸립니다
- 당연하겠지만 서울 버스만 가능 합니다
우선 서울 버스 API부터 신청을 하겠습니다
위의 링크로 가서 가입이나 로그인 하시고 API 활용 신청을 하시면 됩니다
자동 승인이기 때문에 바로 승인은 되는데 API키가 적용 되는데 시간이 조금 걸리더라고요
저 같은 경우 그냥 네이버 로그인으로 진행 했는데 문제 없었습니다

승인이 되면 이런 식으로 마이페이지 – API신청 에 표시가 됩니다
클릭 해보시면

이런 화면이 뜹니다 인증키가 두 종류인데 다른 곳에서 사용할 때 둘 중 하나를 쓰면 됩니다
HA에 등록 할 때는 인코딩 인증키를 사용 합니다
아래에 보시면 사용 가능한 기능들이 보이는데요 우측에 보시면 일일 트래픽이 있습니다
네… 개인용으로 하루 1000번 만 조회 가능하니 적절히 사용하시면 됩니다
위에서도 이야기 했지만 승인은 자동인데 적용이 느립니다
내 API키가 활성화 됐냐 아니냐를 확인 하는 방법은 아래 기능 목록 우측 확인을 눌러 줍니다

저는 2번으로 확인을 합니다만 그냥 1번 정류소 명칭 검색으로 하셔도 됩니다
정류소 번호 확인은 여러 지도앱에서도 가능하고
버스정보 | 서울 버스정보시스템(BIS) (bus.go.kr)
에서도 검색이 가능하니 편한대로 사용 하시면 됩니다
- 이 정류소 번호는 HA에 설정할 때도 필요합니다
저는 강남역을 검색 해보겠습니다
강남역 12번 출구 정류장 번호는 23814 네요
입력 후 미리보기 하시면

정상 처리 메시지와 함께 이런 화면이 보이면 API키가 활성화 됐다는 뜻입니다
활성화가 아직이면 에러 메시지가 보입니다
위 화면에 보시면 이 정류장을 경유하는 버스 노선 번호와 아이디가 보이실 겁니다
- 버스 노선 아이디는 HA에 등록 할 때 사용 하기도 합니다
어쨌든 이제 API키 발급은 끝났고 기다리는 일만 남았습니다
이제 HA에 커스텀 컴포넌트를 설치해야 하는데요
방법은 두 가지 입니다
- 수동으로 깃허브에서 컴포넌트 파일을 다운 받아서 HA 커스텀 컴포넌트 폴더에 업로드 하거나
- HACS를 이용해 커스텀 리포지토리를 등록해서 자동으로 설치 하거나 입니다
우선 수동 설치는 miumida/seoul_bus: Seoul Bus Sensor for Home Assistant #HA (github.com)
링크로 가셔서

zip파일로 다운 받으시고 보시면 custom_components 폴더에 파일들이 있습니다

그 파일들을 HA의 config – custom_components – seoul_bus 폴더에 업로드 하시면 됩니다
애드온 중에 파일 에디터 설치하시면 바로 보일 겁니다
두 번째는 HACS를 이용한 방법입니다
HACS 설치가 됐다면


커스텀 리포지토리 등록을 해줍니다

리포지토리 주소 넣으시고 인터그레이션 선택 하신 후 추가 누르시면 서울버스 컴포넌트가 보일 겁니다
다운로드 하시면 자동 설치 됩니다
이제 커스텀 컴포넌트는 추가가 끝났습니다

HAOS를 재시작 해주세요
재시작 버튼은 개발자 도구에 있습니다
재시작 하셨으면 이제 컴포넌트를 기반으로 센서 형태로 추가해 줘야 HA에서 사용이 가능합니다
센서 형태로 추가가 되기 때문에 여러 자동화 트리거라든지 러브레이스에 추가라던지 사용이 가능 하겠죠
출처의 깃허브에도 잘 설명이 되어있지만
sensor:
– platform: seoul_bus
api_key: ‘input your api key’
api_issued_date: ‘input your api issued date’
view_type: ‘M’
stations:
– station_id: ‘03198’
name: ‘서울역’
update_time:
– start_time: ’07:40′
end_time: ’08:30′
– station_id: ‘24131’
name: ‘잠실중학교’
update_time:
– start_time: ’21:40′
end_time: ’22:00′
include_buses:
– bus_id: ‘100100237’
exclude_buses:
– bus_id: ‘100100237’
이 코드가 베이스 입니다
이 코드를 configuration.yaml에 추가 해주시면 됩니다
이 것 역시 파일 에디터를 이용하면 간단 합니다
코드 설명을 좀 드리자면
sensor:
– platform: seoul_bus
api_key: ‘input your api key’ #’안에 인코딩 API키를 넣어주시면 됩니다
api_issued_date: ‘input your api issued date’ #이건 API기간이 얼마 남았나 를 확인할 수 있는 API센서 입니다 2023-07-12 형식으로 본인이 API 발급 받은 날짜를 넣어주시면 됩니다
view_type: ‘M’ # 이건 출처 깃허브 설명을 확인 해주세요
stations:
– station_id: ‘03198’ #테스트 할 때 확인 했던 버스 정류장 번호입니다
name: ‘서울역’ #버스 정류장 이름 입니다
update_time: #하루 1000회라는 제한이 있기 때문에 시간을 지정 해서 그 시간에만 조회를 합니다. 아래는 시작 시간과 종료 시간이겠죠 대략 출퇴근 시간 정해져 있으니 그 쯤으로 설정한 예시 입니다.
– start_time: ’07:40′
end_time: ’08:30′
– station_id: ‘24131’
name: ‘잠실중학교’
update_time:
– start_time: ’21:40′
end_time: ’22:00′
include_buses: #깃허브에 설명된 대로 아래 등록 된 버스 노선 아이디만 보여줍니다
– bus_id: ‘100100237’
exclude_buses: #아래 등록 된 버스 노선 아이디 만 제외하고 보여줍니다
– bus_id: ‘100100237’
뭐 대략 이런 식이네요
원하는 대로 수정을 하시고 configuration.yaml 맨 아래에 추가하시고
개발자 도구 가셔서 문법 문제 없나 확인 후 재시작 하시면 끝입니다
그런데 API 활성화가 아직 안 되셨으면 HA에서 에러로 표시되니 활성화 후 HA재시작 다시 해주셔야 합니다

완료가 되면 깃허브에 있는 위 화면 처럼 러브 레이스에서 카드 추가나
기타 자동화에서 트리거나 이런저런 설정에 센서로 사용가능 하니
여기저기 활용하시면 될 거 같습니다
참고로 서울 버스가 아니지만 서울 버스 정류장을 경유하는 버스는 검색이나 사용이 됩니다
기존에 다른 게시판에 적었던 글은 옮길 수가 없네요
https://svrforum.com/iot/862240

위 링크 글은 HA로 PC 컨트롤 하는 내용의 글입니다
서버포럼 글 주소 붙여넣기 하면 URL을 분석 중입니다라고 뜨고 붙여넣기가 안되네요

