Alex
Товарищи,пытаюсь отойти от ардуиновской иде. Набросал простую реализацию без ивентов sta с отправкой пакетов на свой локальный комп. И вроде получалось даже присоединиться к точке доступа , но когда я попытаюсь вызвать функцию с 2 файла, он ну ни в какую не хочет коннектиться и падает с соответствующим логом. Предполагаю, что есть место повторному вызову функций, которые уже используются либой esp_wifi.
Alex
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_flash.h"
#include "esp_wifi.h"
#include "esp_log.h"
#include "nvs_flash.h"
#include "esp_netif.h"
#include <string.h>
#include "client.c"
static const char *TAG = "wifi_station";
wifi_config_t wifi_config={
.sta={
.ssid="Apple", .password="12345678" ,.threshold.authmode = WIFI_AUTH_WPA2_PSK,},
};
void app_main(void)
{
esp_err_t ret = nvs_flash_init();
ESP_ERROR_CHECK(ret);
ESP_LOGI(TAG, "ESP_STA");
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_start());
ESP_ERROR_CHECK(esp_wifi_connect());
socketclient();
}
и соответственно сама реализация сокета #include "esp_log.h"
#include "nvs_flash.h"
#include "esp_netif.h"
#include "esp_wifi.h"
#include <string.h>
#include "lwip/sockets.h"
static char *tags= "Socket client";
void socketclient(void)
{
int sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ESP_LOGI(tags,"socket: rc:%d",sock);
struct sockaddr_in *serverAddress;
serverAddress->sin_family=AF_INET;
inet_pton(AF_INET,"192.168.22.115",serverAddress->sin_addr.s_addr);
serverAddress->sin_port=htons(80);
int rc=connect(sock, (struct sockaddr*) &serverAddress, sizeof(struct sockaddr_in));
ESP_LOGI(tags, "connect rc: %d", rc);
char *data = "Hello world";
while (true)
{
rc = send(sock, data, strlen(data), 0);
ESP_LOGI(tags, "send: rc: %d", rc);
rc = close(sock);
ESP_LOGD(tags, "close: rc: %d", rc);
vTaskDelay(500);
}
vTaskDelete(NULL);
}
Andrey
Подскажите, пожалуйста, есть кондиционер, в котором стоит какая-то esp. При переходе по ip кондиционера http://ip:80 получаю текст This URI does not exist. Все остальные порты закрыты. Какую полезную информацию через вебсервер могу получить? Хочу понять могу ли я как-то кондиционером управлять локально. Ожидаю, что с сервера он управляется по websocket