Supla Button 2.0 i kolejne wersje...

cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Thu Aug 08, 2019 11:31 am

Jaką płytkę ustawiles? Jakie parametry wgrywania?
User avatar
Duch__
Posts: 506
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Sat Aug 10, 2019 11:42 am

Pod tym wątkiem kolejna wersja SUPLA BUTTON: viewtopic.php?f=9&t=5153#p46754
Aktualnie na budowie: 8x SRW-01, 1x ROW-02, SUPLA BUTTON V2.0, 16 x DS na ESP (GUI), Sonoff S20 jak kontroler CWU, Ping IP Socket.

Przydatne linki:
viewtopic.php?f=9&t=4160
search.php?keywords=
Pawele
Posts: 84
Joined: Tue Sep 05, 2017 5:59 pm

Tue Aug 13, 2019 6:37 pm

cino111 wrote:
Thu Aug 08, 2019 11:31 am
Jaką płytkę ustawiles? Jakie parametry wgrywania?
Jeszcze nic nie ustawiałem.. Po prostu wkleiłem kod i próbowałem użyć opcji "zweryfikowania" kodu.
newada890
Posts: 8
Joined: Sat Sep 02, 2017 6:40 pm

Fri Sep 13, 2019 6:00 pm

Witam na jakich ustawieniach w arduino ide wgrac suple button na esp 01 bo zadna wersja nie wykonuje sceny czy blad tkwi w cudzyslowiach maja byc czy nie ???
String url_1 = "/api/scenes/execute/XXXXXXX-XXXXXXXXXX-XXXXXXXXX"; //Adres PUBLICZNY SCENY 1
String Klucz_dostepu_1 = "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
CrazyPonkeyMen
Posts: 11
Joined: Tue Sep 05, 2017 8:31 pm

Tue Sep 17, 2019 4:24 pm

Z tego co ustaliłem to żadna z wymienionych wersji oprogramowania nie będzie działać (przynajmniej na najnowszych bibliotekach) z powodu braku ustalonego fingerprint'a certyfikatu serwera.
Po linijce
WiFiClientSecure client;
w każdej wersji oprogramowania należy dodać
client.setFingerprint("finterprint certyfikatu");
Przykładowe zastosowanie w przypadku wersji 2.0 wrzucam w załączniku, użyty certyfikat jest do strony supla.fracz.com. Implementacja wygląda tak samo w przypadku każdej wersji oprogramowania, którą widziałem.

Potencjalnie problem naprawi również wyłączenie trybu HTTPS, do tego wystarczy zamienić linijkę
WiFiClientSecure client;
na
WiFiClient client;
Nie sprawdzałem na kontrolerze, ale w teorii również powinno zadziałać, polecam wtedy użyć publicznego linku niewymagającego autoryzacji. Myślę że może to również pomóc w usunięciu części opóźnienia.
Attachments
SUPLA_BUTTON_FINGERPRINT.zip
(3.4 KiB) Downloaded 31 times
Rem125
Posts: 30
Joined: Mon Mar 26, 2018 3:00 pm

Tue Sep 24, 2019 6:20 pm

Może pytanie banalne ale jest to mój pierwszy kontakt z arduino więc proszę wybaczcie

witam mam pytanie odnośnie przycisku "Supla Button JSON ROLLER SHUTTER" próbuję wgrać do mudułu ESP 01 8266 v2 i przy wgrywaniu czepia się "#include <ArduinoJson.h>" brak pliku lub katalogu.

nie wiem czy muszę wpisać w to miejsce jakąś swoją ścieżkę dostępu czy też zmienić nazwę pliku lub nazwę Katalogu
Rem125
Posts: 30
Joined: Mon Mar 26, 2018 3:00 pm

Sat Oct 05, 2019 4:18 pm

Już sobie poradziłem po prostu musiałem wgrać odpowiednią wersję biblioteki
User avatar
QLQ
Posts: 861
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Nov 23, 2019 7:36 pm

CrazyPonkeyMen wrote:
Tue Sep 17, 2019 4:24 pm
Z tego co ustaliłem to żadna z wymienionych wersji oprogramowania nie będzie działać (przynajmniej na najnowszych bibliotekach) z powodu braku ustalonego fingerprint'a certyfikatu serwera.
Po linijce
WiFiClientSecure client;
w każdej wersji oprogramowania należy dodać
client.setFingerprint("finterprint certyfikatu");
Przykładowe zastosowanie w przypadku wersji 2.0 wrzucam w załączniku, użyty certyfikat jest do strony supla.fracz.com. Implementacja wygląda tak samo w przypadku każdej wersji oprogramowania, którą widziałem.

Potencjalnie problem naprawi również wyłączenie trybu HTTPS, do tego wystarczy zamienić linijkę
WiFiClientSecure client;
na
WiFiClient client;
Nie sprawdzałem na kontrolerze, ale w teorii również powinno zadziałać, polecam wtedy użyć publicznego linku niewymagającego autoryzacji. Myślę że może to również pomóc w usunięciu części opóźnienia.
A skąd wziąść fingeprint serwera svr5 ???
za cholerę mi to nie działa :(

Code: Select all

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <DoubleResetDetector.h> //Bilioteka by Stephen Denne

// Number of seconds after reset during which a 
// subseqent reset will be considered a double reset.
#define DRD_TIMEOUT 5

// RTC Memory Address for the DoubleResetDetector to use
#define DRD_ADDRESS 0

DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS);

//********************************************************PARAMETRY KONFIGURACYJNE****************************************************************

const char* ssid = "xxx";
const char* password = "kerxxx9";
const char* WiFi_hostname = "Supla_BUTTON_V2";

byte Adres_z_DHCP = 1;   //1 = DHCP, 0 = Statyczne_IP
IPAddress staticIP(192,168,1,100);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

String url_read = "/direct528/zjGYgji5NWYNx/read";
const char* host = "svr5.supla.org";
String url_1 = "/direct/555/sdfsdfji5NWYNx/turn-off"; //link 1przykładowy 
String url_2 = "/direct/555/zjGYgji5NWYNx/turn-on"; //link 2 przykładowy 

//https://svr5.supla.org/direct/528/zjGYgji5NWYNx/turn-off   - przykładowo link bezpośredni tak wygląda


const int httpsPort = 443; //Port serwera

const unsigned Czas_max_timeout = 40000; //Czas TIMEOUT szukania WIFI w milisekundach = 10 sekund      

const byte debug = 1; //1 = Włączone debugowanie, 0 = Wyłączone

//************************************************************************************************************************************************

byte supla_mode = 0;

void setup()
{
  if (debug == 1){
    Serial.begin(115200);
    Serial.println();
    Serial.println();
    Serial.println();
  }
  if (drd.detectDoubleReset()) {
    supla_mode = 2;
  } else {
    supla_mode = 1;
  }
  
  for (int i=0; i <= 1000; i++){
    delay(1);
    drd.loop();
    if (i == 500){
      WiFi.hostname(WiFi_hostname); 
      WiFi.begin(ssid, password);
      if (Adres_z_DHCP == 0){
        WiFi.config(staticIP, gateway, subnet);
      }
    }
  // Call the double reset detector loop method every so often,
  // so that it can recognise when the timeout expires.
  // You can also call drd.stop() when you wish to no longer
  // consider the next reset as a double reset.
  }
  drd.stop();
}

void loop()
{
  if (debug == 1){
    Serial.print("Supla mode = ");
    Serial.println(supla_mode);
  }
  
  for (unsigned timeout=0; timeout <= Czas_max_timeout; timeout++){
    if (WiFi.status() != WL_CONNECTED){
        delay(1);
    }    
    else
    {
      timeout = Czas_max_timeout;
      if (debug == 1){
        Serial.println("Polaczono z WIFI");
        Serial.print("MAC:");Serial.print(WiFi.macAddress()); 
        Serial.print("     IP:");Serial.print(WiFi.localIP());
        Serial.print("     M:");Serial.print(WiFi.subnetMask());
        Serial.print("     GW:");Serial.println(WiFi.gatewayIP());
        Serial.println(String("GET ") + url_1 + " HTTP/1.1\r\n" +
        "Host: " + host + "\r\n" +
        "User-Agent: SuplaButtonESP8266\r\n" +
        "Connection: close\r\n\r\n");
      }
    }
  }
  if (WiFi.status() == WL_CONNECTED){
    WiFiClientSecure client;
    //client.setFingerprint("???????");         // A SKĄD TO WZIĄŚĆ ???
    if (client.connect(host, httpsPort)) {
      if (debug == 1){
        Serial.print("Poloczono z ");
        Serial.println(host);
        
      }
      if (supla_mode == 1){
        client.println(String("GET ") + url_1 + " HTTP/1.1\r\n" +
        "Host: " + host + "\r\n" +
        "User-Agent: SuplaButtonESP8266\r\n" +
        "Connection: close\r\n\r\n");
      }
      if (supla_mode == 2){
        client.println(String("GET ") + url_2 + " HTTP/1.1\r\n" +
        "Host: " + host + "\r\n" +
        "User-Agent: SuplaButtonESP8266\r\n" +
        "Connection: close\r\n\r\n");
 
      }
      String line = client.readStringUntil('\r');
      if (line == "HTTP/1.1 204 No Content"){
        Serial.println("Wykonano link");
//        error = 0;
       }
    }
    if (debug == 1){
      Serial.println("Koniec polaczenia");
    }
  }
  WiFi.disconnect();
  if (debug == 1){
    Serial.print("Dobranoc");
  }
  ESP.deepSleep(0);
}
Last edited by QLQ on Sat Nov 23, 2019 7:48 pm, edited 1 time in total.
krycha88
Posts: 530
Joined: Fri Nov 16, 2018 7:25 am

Sat Nov 23, 2019 7:44 pm

QLQ wrote:
Sat Nov 23, 2019 7:36 pm
CrazyPonkeyMen wrote:
Tue Sep 17, 2019 4:24 pm
Z tego co ustaliłem to żadna z wymienionych wersji oprogramowania nie będzie działać (przynajmniej na najnowszych bibliotekach) z powodu braku ustalonego fingerprint'a certyfikatu serwera.
Po linijce
WiFiClientSecure client;
w każdej wersji oprogramowania należy dodać
client.setFingerprint("finterprint certyfikatu");
Przykładowe zastosowanie w przypadku wersji 2.0 wrzucam w załączniku, użyty certyfikat jest do strony supla.fracz.com. Implementacja wygląda tak samo w przypadku każdej wersji oprogramowania, którą widziałem.

Potencjalnie problem naprawi również wyłączenie trybu HTTPS, do tego wystarczy zamienić linijkę
WiFiClientSecure client;
na
WiFiClient client;
Nie sprawdzałem na kontrolerze, ale w teorii również powinno zadziałać, polecam wtedy użyć publicznego linku niewymagającego autoryzacji. Myślę że może to również pomóc w usunięciu części opóźnienia.
A skąd wziąść fingeprint serwera svr5 ???
Zamiast setFingerprint() użyj setInsecure() i nie musisz nic więcej podawać
User avatar
QLQ
Posts: 861
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Nov 23, 2019 7:51 pm

krycha88 wrote:
Sat Nov 23, 2019 7:44 pm
QLQ wrote:
Sat Nov 23, 2019 7:36 pm
CrazyPonkeyMen wrote:
Tue Sep 17, 2019 4:24 pm
Z tego co ustaliłem to żadna z wymienionych wersji oprogramowania nie będzie działać (przynajmniej na najnowszych bibliotekach) z powodu braku ustalonego fingerprint'a certyfikatu serwera.
Po linijce w każdej wersji oprogramowania należy dodać

Przykładowe zastosowanie w przypadku wersji 2.0 wrzucam w załączniku, użyty certyfikat jest do strony supla.fracz.com. Implementacja wygląda tak samo w przypadku każdej wersji oprogramowania, którą widziałem.

Potencjalnie problem naprawi również wyłączenie trybu HTTPS, do tego wystarczy zamienić linijkę

na


Nie sprawdzałem na kontrolerze, ale w teorii również powinno zadziałać, polecam wtedy użyć publicznego linku niewymagającego autoryzacji. Myślę że może to również pomóc w usunięciu części opóźnienia.
A skąd wziąść fingeprint serwera svr5 ???
Zamiast setFingerprint() użyj setInsecure() i nie musisz nic więcej podawać

DZIĘKUJĘ - TAKA JEDNA LINIJKA MI ZABRAŁA 2H -
Post Reply