![HDC Icontrols](http://www.icontrols.co.kr/assets/img/company/incon_ci_ko.png)

# Info

여러개의 플랫폼 연동 서비스를 제공하기 위한 이벤트 수신 및 전달 전용 브릿지

  - Java Application 으로 개발 하였습니다.
  - export한 jar 파일을 서비스 등록하여 배포합니다.
  - 서비스 등록을 위해서는 `application.dat` 파일이 존재해야 합니다.

# 라이브러리 등록
이 프로젝트는 Maven 혹은 gradle 프로젝트가 아니기 때문에 dependency를 등록할 수 가 없습니다.
buildpath를 통해 라이브러리를 등록하세요.

# 지원하는 월패드 이벤트

| 이벤트명 | 이벤트 설명 |
| ------ | ------ |
| msg_device_event | 디바이스의 상태 변경 이벤트 |
| msg_home_devices_status_event | 디바이스 상태 주기보고 이벤트 |
| msg_ararm_event | 방범 알림 이벤트 (외출, 재중|
| msg_visitor_event |  방문자 알림 이벤트|
| msg_notice_event | 공지사항 알림 이벤트 |
| msg_car_inout_event | 입차 알림 이벤트 |
| msg_box_event | 택배 알림 이벤트 |
| msg_energy_event | 에너지 검침 이벤트 |
| unsubscription | 월패드 구독 해지 이벤트 |
# 지원하는 플랫폼 서비스
https://hdc.dooray.com/project/posts/3006349487509329798

| 서비스명 | Event 포트 |
| ------ | ------ |
| KAKAO | 2222 |
| GOOGLE | 2223 |
| KT | 2224 |
| UPLUS | 2225 |
| LGE | 2226 |
| SKT | 2227 |
| AMAZON | 2228 |
| APPLE | 2229 |

# 서비스 등록
## Linux
1. `/service/bridge` 에 export한 `bridge.jar` 파일과 `application.dat` 파일을 업로드 합니다.
2. 서비스를 등록합니다.
    ```sh
    $ cd /etc/systemd/system
    $ sudo vi bridge.service
    ```
    ```sh
    [Unit]
    Description=Event Bridge

    [Service]
    Type=simple
    User=valley
    ExecStart=/usr/bin/java -jar /service/bridge/bridge.jar
    WorkingDirectory=/service

    [Install]
    WantedBy=multi-user.target
    ```
3. 서비스 데몬을 새로고침 합니다. 
    ```sh
    $ sudo systemctl daemon-reload
    ```
4. 서비스를 시작합니다.
    ```sh
    $ sudo systemctl start bridge.service
    ```

## Windows

- 추후 작성예정

## 설정파일

- application.dat 파일을 통해 이벤트를 받을 플랫폼 서비스 정보를 추가해야 해당 플랫폼 서비스에서 이벤트를 수신할 수 있습니다.
- application.dat 파일은 프로젝트의 `COMMON_INFO.java` 에 정의된 경로에 존재해야 합니다. 


```sh
    public static final String LINUX_PROPERTIES_DIR = "/service/bridge/application.dat";
    public static final String WINDOWS_PROPERTIES_DIR = "D:\\temp\\bridge_jar\\application.dat";
```

 - application.dat 파일의 내용은 JSON 으로 작성 되었습니다. JSON 규격에 맞게 작성하여야 합니다.
 - 아래는 작성 예시입니다.

```sh
{
"name" : "UPLUS",
"address" : "10.0.1.1",
"port":	2225, 
"events" : [
            "msg_device_event",
            "msg_ararm_event",
            "msg_visitor_event",
            "msg_notice_event",
            "msg_car_inout_event",
            "msg_box_event",
            "unsubscription"
           ] 
}
```
 - 각 Field 정보
 
| Field 명 | Type | Description |
| ------ | ------ | ------ |
| name | String | 플랫폼 명 |
| address | String | IP Address |
| port | Integer | 이벤트 수신 용 Port |
| events | list of String | 수신받을 이벤트 목록 |

