삼성,엘지 가전에는 AutoDr이라는 개념이 있다.
전기소비를 줄이라는 캠페인(DR)이 한국전력거래소(KPX)에서 발령이 되면,
해당 발령을 공공데이터포털의 OpenApi를 통해 이벤트를 받을수도있고, 관련한 제휴업체들은 직접 이벤트를 받을수도있다.
이 이벤트를 받았을때,
가전제품 특히 전기를 많이 먹는 에어콘, 온풍기등을 Off하거나, 온도를 조절하는등으로 전기사용량을 제어를 하면,
전기소비를 줄일수있다.
요즘은 삼성,엘지 가전에서는 삼성스마트띵스, 엘지띵큐등으로 가전을 제어할수있는 API를 사용자에게 오픈하고 있다.
DR이벤트를 받을수있고, API를 사용하여, 가전의 제어를 할수있다면, AUTODR (자동으로 전력소비를 줄이는 행위)를 할수있다.
여기서 중요한건, 해당 API를 서버에서 날리는 방법보다는, 앱에서 호출을 하면 서버가 필요없다는 큰 장점이 있다.
(서버 비용, API 호출량 회피, 아이피 블록등)
앱에서 호출을 한다면 넘어야하는 이슈가 하나있다.
일반적으로는 앱이 활성화/실행된상태라면, API를 호출할수가 있겠지만,
앱을 종료한 상태, 스마트폰이 잠긴상태로 있는경우는 DR이벤트를 받을수도, 제어 API를 호출할수도없다.
앱이 활성화가 되지않았기 때문이다.
이런 이슈에 대해서 해결할수있는 방법을 생각했다.
일명 '하이브리드 작전' 이랄까?
실버 불릿은 없다 라는 명언이 있지...
100% 한방에 해결할수있는 방법을 찾기는 쉽지않다.
방법마다의 문제가 있기에, 해당 방법들을 잘 조합하여, 그 문제를 보완해나가는 방법을 사용하여야 한다.
우선 생각한 방법은 아래와 같다.
(우선 Android앱 위주로 설명한다. 비슷한 기능이 IOS앱에도 있다)
1) WorkManager라는 기능을 활용한다.
- 해당 기능은 안드로이드에 일정 주기로 동작하는 스케줄러를 등록할수있다.
(해당 스케줄러를 등록하고 해당 스케줄러에서 API호출을 하는 방식으로 기기를 제어한다)
- 단, 정확하게 해당 스케줄러가 동작한다는 보장은 100%없다.
2) Data Notification기능을 활용한다.
- 앱푸시로 아래와 같이 data 필드를 전달하면,
{
"to": "<FCM_TOKEN>",
"data": {
"type": "DR_START",
"eventId": "12345",
"startTime": "2026-07-09T20:00:00"
}
}
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(message: RemoteMessage) {
val data = message.data
val type = data["type"]
val eventId = data["eventId"]
if (type == "DR_START") {
// DR 이벤트 처리
// 삼성,엘지 가전 제어 API 호출!!!
}
}
}
위와같이 푸시 이벤트가 스마트폰으로 수신될때, onMessageReceived함수로 이벤트를 받을수있다.
따라서 해당 함수안에서 삼섬,엘지 가전 제어 API를 호출하면 된다.
- 단, 이 방법 또한, 정확하게 해당 스케줄러가 동작한다는 보장은 100%없다.
3) 1,2번이 모두 실패시, 마음편하게 서버에서 가전제어 API를 호출한다.
위 3가지 방법을 조합하면, 100%로 가전을 제어할수있는 기능을 구현할수있다.
흐름은 아래와 같다.
WorkManager --> 실패시 ---> Data Notification ---> 실패시 ---> 서버에서 API호출.
나름 좋은 아이디어 방법인듯하다.
가전 제어기능을 제공하는 사업체에서는 서버에서의 API호출을 줄일수있고, 사용자의 앱에서 제어가 대부분 이루어지게 할수있기에,
보안적 측면과 사업적 측면에서도 큰 장점이 될수있는 방법으로 보인다.
현재 위 방법으로 샘플앱을 하나 만들어서, 테스트중인데, 예상한대로 잘 동작한다...(흐믓하구나...ㅋ)
아래 스샷은 만들어본 샘플앱으로써,
앱을 껴두고, 백그라운드에서 자동으로 가전제어 API를 호출하고 해당 결과를 로그로 쌓아서, 볼수있게 앱을 간단히 만들었다.
15분 간격으로 API를 호출하게 만들었는데, 나름잘동작한다.
물론, WorkManager가 정확히 개발자가 설정한 시간(15분등)으로 동작을 보장해주지는 않는다.
따라서, 2번, 3번 방법으로 해당 단점을 보완 하여야하는것이다.

'MY아이디어' 카테고리의 다른 글
| [아이디어] 16년된 게임개발 아이디어... (0) | 2026.05.11 |
|---|---|
| [아이디어] 스크래핑 내재화에 도전하다 (5) | 2026.05.05 |
| [아이디어] 테슬라 데이터 수집 - 테슬라가 빌런이다. (4) | 2026.04.25 |
| [아이디어] javafx로 OsTray영역에 텍스트 넣기 (0) | 2026.04.19 |
| [아이디어] 복잡한 로직은 GraalVM JavaScript엔진을.. (0) | 2026.04.13 |
