Programowanie ESPa

PrzemexPL
Posts: 23
Joined: Fri May 01, 2020 2:14 pm

Post

Witam, czy taki kod ma prawo działać?
Mam taki problem, że ESP nawet nie łączy mi się do wifi.. Raz tylko wystawił własne. Jednak usunąłem te wszystkie html'e ponieważ nie chcę go konfigurować w ten sposób. Chcę mieć hardcoded opcję. Wgrywam -> Ma działać.

Code: Select all

#include "secrets.h"
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi(WIFI_SSID, WIFI_PASSWORD);
#include <supla/network/esp_web_server.h>
Supla::EspWebServer suplaServer;
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom;
#include <supla/storage/littlefs_config.h>
Supla::LittleFsConfig configSupla(2048);
#include <supla/device/supla_ca_cert.h>

void setup() {
	char GUID[SUPLA_GUID_SIZE] = {MyGUID};
	char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {MyAUTHKEY};
	SuplaDevice.setName("TestEsp");
	SuplaDevice.setSuplaCACert(suplaCACert);
	SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
	SuplaDevice.begin(GUID, SUPLA_SERVER, SUPLA_EMAIL, AUTHKEY);
}
void loop() {
	SuplaDevice.iterate();
}
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Nie pamiętam dokładnie, ale wydaje mi się, że jeśli używasz klasy typu Config (LittleFsConfig), to wtedy jest używana konfiguracja z Configa.

Możesz te hardcode'owana parametry ustawić do Configa i powinno działać. Albo wyrzuć Configa i WebServer. Tylko wtedy kanały zależne od Configa nie będą poprawnie działać. Ale w sumie nie napisałeś co dalej chcesz z tym zrobić...
Najlepsze suple dla Twojego domu :mrgreen:
PrzemexPL
Posts: 23
Joined: Fri May 01, 2020 2:14 pm

Post

No ogólnie mam jeszcze tylko dodany stan jednego wejścia.

Muszę mieć includy web servera i littlefs bo pluje błędy. Nie wiem dlaczego to jest wymagane. Skoro mam przykłady na githubie i bez tego :/
Mam urządzonko które mi działało.. nagle przestało odpowiadać. Zaprogramowałem na czysto w ten sposób nowego espa.. i nic się nie dzieje..

EDIT:

Dodam jeszcze, że widzę przykłady gdzie mam czysty begin a mam też zadeklarowane GUID i AUTHKEY.
Więc na potrzeby hardcode dodałem te parametry.
Chociaż pierwszy kod wyglądał tak, że miałem zdefiniowane SUPLA_SERVER / SUPLA_EMAIL oraz config etc. I wszystko weszło od razu.. Uszkodziłem jakoś espa czy co

EDIT2:
Odkryłem, że problem leży w bibliotece, ponieważ stricte kod dla podłączenia wifi czystego arduino działa.
A z biblioteki dostaje:

Code: Select all

WiFi station disconnected
Warning: network is not ready (40 s)
WiFi station disconnected
Warning: network is not ready (50 s)
WiFi station disconnected
Warning: network is not ready (60 s)
Network layer restart requested. Trying to setup network interface again
WiFi: resetting WiFi connection
WiFi: establishing connection with SSID: "moja_siec"
WiFi station disconnected
WiFi station disconnected
Warning: network is not ready (70 s)
WiFi station disconnected
Warning: network is not ready (80 s)
WiFi station disconnected
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Wydaje mi się że te hardcode'owane rzeczy nie będą działać razem z klasą Config.
Usuń ją i sprawdź bez niej.
Zachowanie może być różne zależnie od zawartości flasha, także jeśli chcesz sprawdzać w tych samych warunkach, to zrób pełne czyszczenie flasha
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

W drugiej części tego posta viewtopic.php?p=174572#p174572
jest przykład jak ustawiać te parametry gdy używa się configa
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Bania
Posts: 107
Joined: Wed Jul 24, 2024 5:03 pm
Location: Bielsko-Biała
Has thanked: 5 times
Been thanked: 5 times

Post

Cześć, moim zdaniem przekombinowany kod. Jeżeli chcesz ręcznie wprowadzać GUID i AUTHKEY zamieszczam kod:

Code: Select all

#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>

Supla::ESPWifi wifi("your_wifi_ssid", "your_wifi_password");

void setup() 
{
    Serial.begin(115200);

    // Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
    char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

    // Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
    char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

    SuplaDevice.begin(GUID, // Global Unique Identifier
            "svr1.supla.org", // SUPLA server address
            "email@address", // Email address used to login to Supla Cloud
            AUTHKEY); // Authorization key
}

void loop() 
{
    SuplaDevice.iterate();
}
Kod który działa z automatu (dodanie urządzenia z aplikacji):

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/button.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/esp_wifi.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/storage/eeprom.h>
#include <supla/storage/littlefs_config.h>

#define PINOUT_BUTTON 0

Supla::Eeprom eeprom;
Supla::ESPWifi wifi;
Supla::EspWebServer suplaServer;
Supla::LittleFsConfig configSupla;

auto suplaButtonCfg = new Supla::Control::Button(PINOUT_BUTTON, true, true);

void setup() 
{
  suplaButtonCfg->configureAsConfigButton(&SuplaDevice);
	
  new Supla::Html::DeviceInfo(&SuplaDevice);
  new Supla::Html::WifiParameters;
  new Supla::Html::ProtocolParameters;

  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);

  SuplaDevice.begin();
}

void loop()
{
  SuplaDevice.iterate();
}
Z poziomu Arduino IDE zaznacz opcję pełnego czyszczenia FLASH
https://github.com/anarhbania/Supla
PrzemexPL
Posts: 23
Joined: Fri May 01, 2020 2:14 pm

Post

Okej. Działa. PlatformIO wypluwa mi błędy gdy nie mam includów WebServer/Littlefs/Eeprom. Z definicją klas wchodzi w tryb wystawiania własnej sieci. Bez natomiast łączy się bez problemu.
Mój cały kod:

Code: Select all

#include "secrets.h"
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/network/esp_web_server.h>
#include <supla/storage/eeprom.h>
#include <supla/storage/littlefs_config.h>
#include <supla/sensor/normally_open.h>
Supla::ESPWifi wifi(WIFI_SSID, WIFI_PASSWORD);
#define PIR_SENSOR_PIN 14
auto sensor = new Supla::Sensor::NormallyOpen(PIR_SENSOR_PIN, false, true);
void setup() {
	Serial.begin(115200);
	pinMode(PIR_SENSOR_PIN, INPUT);
	char GUID[SUPLA_GUID_SIZE] = {MyGUID};
	char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {MyAUTHKEY};
	SuplaDevice.setName("EspTest");
	SuplaDevice.begin(GUID, SUPLA_SERVER, SUPLA_EMAIL, AUTHKEY);
	Serial.println("Czujnik ruchu gotowy!");
}
void loop() { SuplaDevice.iterate(); }
Czyszczenie flash pomogło. Czasem człowiek się zapędzi :lol:

Return to “Pomoc”