---
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