{"id":19767063,"url":"https://github.com/birdra1n/espconnect","last_synced_at":"2025-02-28T04:18:03.406Z","repository":{"id":203856844,"uuid":"710554549","full_name":"BirdRa1n/ESPConnect","owner":"BirdRa1n","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-28T17:36:23.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T00:23:10.100Z","etag":null,"topics":["arduino","esp8266","iot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BirdRa1n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-27T00:07:30.000Z","updated_at":"2023-10-28T16:32:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"d89aeb38-7692-475c-b9b3-8fffa20965ba","html_url":"https://github.com/BirdRa1n/ESPConnect","commit_stats":null,"previous_names":["birdra1n/espconnect"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirdRa1n%2FESPConnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirdRa1n%2FESPConnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirdRa1n%2FESPConnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirdRa1n%2FESPConnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BirdRa1n","download_url":"https://codeload.github.com/BirdRa1n/ESPConnect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241099968,"owners_count":19909630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","esp8266","iot"],"created_at":"2024-11-12T04:27:40.049Z","updated_at":"2025-02-28T04:18:03.388Z","avatar_url":"https://github.com/BirdRa1n.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Resumo\n\nO 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.\n\n## Pré-requisitos\n\nAntes de utilizar este código, é necessário ter as seguintes bibliotecas instaladas em seu ambiente Arduino IDE:\n\n- Wire.h\n- ESP8266WiFi.h\n- ESP8266HTTPClient.h\n- WiFiClient.h\n- ArduinoJson.h\n- ESP8266WebServer.h\n- EEPROM.h\n\n## Variáveis Globais\n\n- `ssid`: O SSID da rede Wi-Fi à qual o dispositivo deve se conectar.\n- `passphrase`: A senha da rede Wi-Fi à qual o dispositivo deve se conectar.\n- `host`: O host da API do GitHub.\n- `localIP`: Uma string que armazena o endereço IP local do dispositivo.\n- `connectedNetwork`: Uma string que armazena o nome da rede Wi-Fi à qual o dispositivo está conectado.\n- `st`: Uma string usada para armazenar informações temporárias.\n- `content`: Uma string usada para armazenar o conteúdo da resposta do servidor.\n\n## Funções\n\n- `testWifi()`: Esta função verifica se o dispositivo está conectado a uma rede Wi-Fi especificada.\n- `launchWeb()`: Inicializa um servidor web para configuração da rede Wi-Fi.\n- `setupAP()`: Configura um ponto de acesso (AP) se a conexão Wi-Fi não puder ser estabelecida.\n- `setup()`: A função `setup` inicializa a conexão Wi-Fi e chama outras funções de acordo com a situação.\n- `loop()`: A função `loop` é chamada repetidamente e lida com a lógica do servidor web.\n- `createWebServerCO()`: Configura rotas para obter informações da rede Wi-Fi conectada.\n- `createWebServer()`: Configura rotas para obter informações sobre redes Wi-Fi disponíveis e permite a configuração da rede.\n- `getDeviceInfo()`: Obtém informações do dispositivo ESP8266, como MAC, IP, versão do SDK, entre outras.\n\n## Rotas\n\n### Rota \"/networkinfo\"\n\nEsta 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).\n\nExemplo de resposta JSON:\n```json\n{\n  \"ssid\": \"NomeDaRedeWiFi\",\n  \"rssi\": -60\n}\n```\n\n### Rota \"/networks\"\n\nEsta 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.\n\nExemplo de resposta JSON:\n```json\n{\n  \"networks\": [\n    {\n      \"ssid\": \"Rede1\",\n      \"rssi\": -70,\n      \"encryption\": 2\n    },\n    {\n      \"ssid\": \"Rede2\",\n      \"rssi\": -80,\n      \"encryption\": 4\n    }\n  ]\n}\n```\n\nO campo \"encryption\" representa o tipo de criptografia da rede:\n- 0: Sem criptografia\n- 2: WPA_PSK\n- 4: WPA2_PSK\n- 7: WEP\n\n### Rota \"/setting\"\n\nEsta 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.\n\nO status da resposta HTTP depende do sucesso da operação:\n- 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.\n- Se a configuração falhar (por exemplo, parâmetros em falta ou incorretos), o dispositivo retornará um status 404 com uma mensagem de erro.\n\nExemplo de solicitação POST (via cURL):\n```bash\ncurl -X POST \"http://ESP8266-IP-ADDRESS/setting?ssid=MyNetwork\u0026pass=MyPassword\"\n```\n\nExemplo de resposta JSON bem-sucedida:\n```json\n{\n  \"message\": \"defined wifi network\",\n  \"ssid\": \"MyNetwork\"\n}\n```\n\nExemplo de resposta JSON com falha:\n```json\n{\n  \"msg\": \"wifi network not defined\"\n}\n```\n\n### Rota \"/deviceinfo\"\n\nEsta 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.\n\nExemplo de resposta JSON:\n```json\n{\n  \"macAddress\": \"XX:XX:XX:XX:XX:XX\",\n  \"localIP\": \"192.168.0.100\",\n  \"chipID\": 12345678,\n  \"flashChipID\": 87654321,\n  \"flashChipSize\": 4096,\n  \"sdkVersion\": \"3.0.0-dev(c55c24f)\",\n  \"firmwareVersion\": \"ABC123\",\n  \"voltage\": 3.34,\n  \"gatewayIP\": \"192.168.0.1\",\n  \"dnsIP\": \"8.8.8.8\"\n}\n```\n\nEssas 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.\n\n## Uso\n\n1. Carregue o código em um dispositivo ESP8266 usando a plataforma Arduino IDE ou outra compatível com ESP8266.\n2. Certifique-se de que as bibliotecas necessárias estejam instaladas.\n3. Conecte o ESP8266 à alimentação.\n4. 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.\n\n5. 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.\n\n## Avisos\n\n- Certifique-se de manter as informações de rede Wi-Fi seguras, pois elas são armazenadas na EEPROM do dispositivo.\n- 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.\n\nLembre-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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbirdra1n%2Fespconnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbirdra1n%2Fespconnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbirdra1n%2Fespconnect/lists"}