---
# System prepended metadata

title: Dokumentasi Protokol Komunikasi ESP8266-Atmega1280-UHFReader

---

---
title: Dokumentasi Protokol Komunikasi ESP8266-Atmega1280-UHFReader 
---

[ToC]

# 1. Protokol Komunikasi ESP8266-Atmega1280
:::info
**Keterangan**
- Komunikasi antara ESP8266 dan Atmega1280 dilakukan secara serial.
  - Pada Atmega1280 digunakan *hardware serial 3* dan ESP8266 digunakan *software serial*
  - *Message* merupakan *array of byte* yang dikirimkan atau diterima oleh Atmega1280 maupun ESP8266
    - *Message* selalu diawali `<` dan diakhiri dengan `>`
    - *Message* memiliki format utama `<[CMD][STS][DAT]>`
      - [CMD] adalah *command*, panjangnya 1 byte
      - [STS] adalah *status*, panjangnya 1 byte
      - [DAT] adalah *data*, panjangnya bervariasi
- *Received Message* merupakan *message* yang dikirimkan Atmega1280 dan diterima ESP8266
- *Response Message* merupakan *message* yang dikirimkan ESP8266 ke Atmega1280 setelah menerima *Received Message*
:::

## 1.1. WIFI COMMAND
- CHECK WIFI CONNECTION STATUS (CMD=0x10)
  - Received Message: `<10 00 00>`
  - Response Message: `<10 [STS] 00>`
      > [STS] = 0 (WL_IDLE_STATUS) when Wi-Fi is in process of changing between statuses
      > [STS] = 1 (WL_NO_SSID_AVAIL)in case configured SSID cannot be reached
      > [STS] = 3 (WL_CONNECTED) after successful connection is established
      > [STS] = 4 (WL_CONNECT_FAILED) if connection failed
      > [STS] = 6 (WL_WRONG_PASSWORD) if password is incorrect
      > [STS] = 7 (WL_DISCONNECTED) if module is not configured in station mode
- SCAN NEARBY VISIBLE SSID (CMD=0x11)
  - Received Message: `<11 00 00>`
  - Return Message:
    - `<11 00 00>` = Selesai mengirimkan semua SSID yang terdeteksi
    - `<11 01 [IDX] [SSID_LEN][SSID][RSSI]>` = Mengirimkan satu SSID wifi yang terdeteksi
      > `[IDX]` = index SSID. Urutan Wifi yang tersedia. Panjangnya 1 byte. 
      > `[SSID_LEN]` = jumlah byte `[SSID]`. Panjangnya 1 byte. 
      > `[SSID]` = *array of byte* untuk nama SSID yang terdeteksi. Panjangnya sesuai jumlah karakter SSID.
      > `[RSSI]` = nilai RSSI dari SSID yang terdeteksi. Panjangnya 1 byte.
- CONNECT TO SSID (CMD=0x12)
  - Received Message `<12 00  [SSID_LEN] [SSID] [PASS_LEN] [PASS]>`
    > `[SSID_LEN]` = jumlah byte `[SSID]`. Panjangnya 1 byte.
    > 
    > `[SSID]` = *array of byte* untuk nama SSID yang ingin di-*connect*. Panjangnya sesuai jumlah karakter SSID yang dituju.
    > 
    > `[PASS_LEN]` = jumlah byte `[PASS]`. Panjangnya 1 byte.
    > 
    > `[PASS]` = *array of byte* berisi password untuk SSID yang ingin di-*connect*. Panjangnya sesuai jumlah karakter password.
  - Return Message
    - `<12 [STS] 00>` 
- DISCONNECT WIFI (CMD=0x13)
  - Received Message `<13 00 00>`
  - Return Message 
    - `<13 01 00>` = Wifi disconnected

## 1.2. OTHER COMMAND
- PING COMMAND (CMD=0x00)
  - Received Message: `<00 00 50 49 4E 47>`
  - Return Message: `<00 00 50 49 4E 47>`

- SENT TAG EPC TO MQTT (CMD=0x01)
  - Received Message: `<01 00 [N][TAG1][TAG2]...[TAGN]>`
      > `[N]` = Jumlah tag yang terbaca oleh UHF Reader
      > `[TAGN]` = Data untuk tag ke-N
    - `[TAGN]` = `[EPC_LEN][EPC_CODE]`
      > `[EPC_LEN]` = jumlah byte `[EPC_CODE]`. Panjangnya 1 byte.
      > `[EPC_CODE]` = *array of byte* untuk EPC. Panjangnya sesuai jumlah byte Tag EPC.
  - Return Message: 
    - `<01 00 00>` = Semua *tag* berhasil dikirimkan ke *database*

- CHANGE LOCATION (CMD=0x02)
  - Received Message: `<02 00 [LOCATION_CODE]`
    > `[LOCATION_CODE]` = Kode lokasi bandara baru. Panjangnya 4 bytes.
  - Return Message: 
    - `02 00 [LOCATION_CODE]` = Location Changed
  