Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/birdra1n/espconnect
https://github.com/birdra1n/espconnect
arduino esp8266 iot
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/birdra1n/espconnect
- Owner: BirdRa1n
- License: mit
- Created: 2023-10-27T00:07:30.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-28T17:36:23.000Z (about 1 year ago)
- Last Synced: 2024-04-24T05:59:29.414Z (9 months ago)
- Topics: arduino, esp8266, iot
- Language: TypeScript
- Homepage:
- Size: 85.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Resumo
O código é projetado para inicializar uma conexão Wi-Fi no ESP8266, recuperar informações sobre a rede Wi-Fi conectada e permitir a configuração de redes Wi-Fi por meio de um servidor web. Ele também fornece informações sobre o dispositivo ESP8266, como o endereço MAC, o endereço IP local e outros detalhes.
## Pré-requisitos
Antes de utilizar este código, é necessário ter as seguintes bibliotecas instaladas em seu ambiente Arduino IDE:
- Wire.h
- ESP8266WiFi.h
- ESP8266HTTPClient.h
- WiFiClient.h
- ArduinoJson.h
- ESP8266WebServer.h
- EEPROM.h## Variáveis Globais
- `ssid`: O SSID da rede Wi-Fi à qual o dispositivo deve se conectar.
- `passphrase`: A senha da rede Wi-Fi à qual o dispositivo deve se conectar.
- `host`: O host da API do GitHub.
- `localIP`: Uma string que armazena o endereço IP local do dispositivo.
- `connectedNetwork`: Uma string que armazena o nome da rede Wi-Fi à qual o dispositivo está conectado.
- `st`: Uma string usada para armazenar informações temporárias.
- `content`: Uma string usada para armazenar o conteúdo da resposta do servidor.## Funções
- `testWifi()`: Esta função verifica se o dispositivo está conectado a uma rede Wi-Fi especificada.
- `launchWeb()`: Inicializa um servidor web para configuração da rede Wi-Fi.
- `setupAP()`: Configura um ponto de acesso (AP) se a conexão Wi-Fi não puder ser estabelecida.
- `setup()`: A função `setup` inicializa a conexão Wi-Fi e chama outras funções de acordo com a situação.
- `loop()`: A função `loop` é chamada repetidamente e lida com a lógica do servidor web.
- `createWebServerCO()`: Configura rotas para obter informações da rede Wi-Fi conectada.
- `createWebServer()`: Configura rotas para obter informações sobre redes Wi-Fi disponíveis e permite a configuração da rede.
- `getDeviceInfo()`: Obtém informações do dispositivo ESP8266, como MAC, IP, versão do SDK, entre outras.## Rotas
### Rota "/networkinfo"
Esta rota é usada para obter informações da rede Wi-Fi à qual o dispositivo ESP8266 está atualmente conectado. Quando você acessa essa rota, o dispositivo responde com um JSON contendo o SSID da rede e a intensidade do sinal (RSSI).
Exemplo de resposta JSON:
```json
{
"ssid": "NomeDaRedeWiFi",
"rssi": -60
}
```### Rota "/networks"
Esta rota é usada para obter informações sobre as redes Wi-Fi disponíveis no ambiente. O dispositivo faz uma varredura das redes Wi-Fi ao redor e retorna os resultados em formato JSON. As informações incluem o SSID da rede, a intensidade do sinal (RSSI) e o tipo de criptografia da rede.
Exemplo de resposta JSON:
```json
{
"networks": [
{
"ssid": "Rede1",
"rssi": -70,
"encryption": 2
},
{
"ssid": "Rede2",
"rssi": -80,
"encryption": 4
}
]
}
```O campo "encryption" representa o tipo de criptografia da rede:
- 0: Sem criptografia
- 2: WPA_PSK
- 4: WPA2_PSK
- 7: WEP### Rota "/setting"
Esta rota permite configurar a rede Wi-Fi à qual o dispositivo se conectará. Você pode enviar parâmetros via uma solicitação HTTP POST para esta rota. Os parâmetros incluem "ssid" (SSID da rede Wi-Fi) e "pass" (senha da rede Wi-Fi). Se os parâmetros forem fornecidos corretamente, o dispositivo armazena essas informações na EEPROM e reinicia.
O status da resposta HTTP depende do sucesso da operação:
- Se a configuração for bem-sucedida, o dispositivo retornará um JSON com status 200 e uma mensagem de sucesso. Após isso, o dispositivo reiniciará para aplicar as novas configurações.
- Se a configuração falhar (por exemplo, parâmetros em falta ou incorretos), o dispositivo retornará um status 404 com uma mensagem de erro.Exemplo de solicitação POST (via cURL):
```bash
curl -X POST "http://ESP8266-IP-ADDRESS/setting?ssid=MyNetwork&pass=MyPassword"
```Exemplo de resposta JSON bem-sucedida:
```json
{
"message": "defined wifi network",
"ssid": "MyNetwork"
}
```Exemplo de resposta JSON com falha:
```json
{
"msg": "wifi network not defined"
}
```### Rota "/deviceinfo"
Esta rota retorna informações gerais sobre o dispositivo ESP8266. Ela fornece detalhes como o endereço MAC, o endereço IP local, o ID do chip, a versão do SDK, a versão do firmware, a tensão de alimentação e os endereços de gateway e DNS.
Exemplo de resposta JSON:
```json
{
"macAddress": "XX:XX:XX:XX:XX:XX",
"localIP": "192.168.0.100",
"chipID": 12345678,
"flashChipID": 87654321,
"flashChipSize": 4096,
"sdkVersion": "3.0.0-dev(c55c24f)",
"firmwareVersion": "ABC123",
"voltage": 3.34,
"gatewayIP": "192.168.0.1",
"dnsIP": "8.8.8.8"
}
```Essas rotas permitem controlar e configurar o dispositivo ESP8266 por meio de uma interface web. Certifique-se de entender a funcionalidade de cada rota antes de utilizá-las em seu projeto.
## Uso
1. Carregue o código em um dispositivo ESP8266 usando a plataforma Arduino IDE ou outra compatível com ESP8266.
2. Certifique-se de que as bibliotecas necessárias estejam instaladas.
3. Conecte o ESP8266 à alimentação.
4. O dispositivo tentará se conectar à rede Wi-Fi especificada no `ssid` e `passphrase`. Se a conexão for bem-sucedida, o dispositivo fornecerá informações sobre a rede através de uma API web.5. Se o botão de reset for pressionado durante a inicialização, o dispositivo iniciará um servidor web para a configuração da rede Wi-Fi. Nesse modo, você pode acessar as rotas `/networks` para visualizar redes disponíveis e `/setting` para configurar a rede Wi-Fi.
## Avisos
- Certifique-se de manter as informações de rede Wi-Fi seguras, pois elas são armazenadas na EEPROM do dispositivo.
- O uso deste código implica que o dispositivo permitirá a configuração de redes Wi-Fi sem autenticação, o que pode representar um risco de segurança. Certifique-se de que a segurança seja tratada adequadamente no contexto do seu projeto.Lembre-se de que esta é uma documentação básica do código fornecido. Dependendo do seu projeto, você pode precisar de mais informações sobre as funções específicas e como utilizá-las. Certifique-se de revisar e ajustar o código para atender aos requisitos do seu projeto e garantir que a segurança seja tratada adequadamente.