Linki bezpośrednie

Sebo_18
Posty: 1
Rejestracja: wt lut 04, 2020 8:04 pm

wt lut 04, 2020 8:16 pm

Można skorzystać z bezpośrednich linków do urządzeń:
1. Logujecie się do swojego konta SUPLA na https://cloud.supla.org
2. Klikacie Automatyka -> linki bezpośrednie -> Utwórz nowy link bezpośredni
3. Wybieracie dostępne akcje: Odczyt Włącz Wyłącz
4. Kopiujecie wygenerowany link i klikacie zapisz
5. tera testy:
- z przeglądarki wchodzicie na adresy:
https://svr.supla.org/direct/xxx/xxxxxx/read
https://svr.supla.org/direct/xxx/xxxxxx/turn-on
https://svr.supla.org/direct/xxx/xxxxxx/turn-off
Wchodząc na te linki można włączać i wyłączać urządzenia.

Chodzi o napisanie programu, za pomocą którego korzystając z tych linków
można będzie sterować urządzeniami (można skorzystać z biblioteki curl).


Proszę o pomoc!
Mam za zadanie napisać taki program, ale nie mam pojęcia jak się za to zabrać, od czego zacząć itd ponieważ jestem noga z programowania a sprawa jest że tak powiem gardłowa. Mam nadzieję że ktoś mi pomoże to przezwyciężyć bo jest mi to bardzo ale to bardzo potrzebne.
Awatar użytkownika
pzygmunt
Posty: 9401
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

wt lut 04, 2020 8:19 pm

Jeśli egzamin na AGH to tu lepiej nie pytaj ;)
szym3k
Posty: 209
Rejestracja: pn maja 15, 2017 10:32 am

wt lut 04, 2020 8:21 pm

pzygmunt pisze:
wt lut 04, 2020 8:19 pm
Jeśli egzamin na AGH to tu lepiej nie pytaj ;)
:lol: :lol: :lol: :lol:

W jakim języku? Tak na prawdę tu nie trzeba nic pisać wystarczy parę buttonów w html i będzie działało w każdej przeglądarce.
Awatar użytkownika
shimano73
Posty: 1169
Rejestracja: ndz lut 28, 2016 12:27 pm
Lokalizacja: Orzesze

śr lut 05, 2020 3:58 am

Albo excela odpalić 🤣
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Jak się dziś oddycha https://schimano73.aqi.eco/
https://github.com/shimano73
Awatar użytkownika
lesny8
Posty: 1261
Rejestracja: pn gru 11, 2017 9:43 pm

śr lut 05, 2020 2:28 pm

pzygmunt pisze:
wt lut 04, 2020 8:19 pm
Jeśli egzamin na AGH to tu lepiej nie pytaj ;)
😂🤣
Sebo_18 pisze:
wt lut 04, 2020 8:16 pm
...
Proszę o pomoc!
Mam za zadanie napisać taki program, ale nie mam pojęcia jak się za to zabrać, od czego zacząć itd ponieważ jestem noga z programowania a sprawa jest że tak powiem gardłowa. Mam nadzieję że ktoś mi pomoże to przezwyciężyć bo jest mi to bardzo ale to bardzo potrzebne.
Nie napisałeś w jakim języku ma być ten program?
Niemniej jednak gotowca się nie spodziewaj bo jeśli jest tak jak @pzygmunt napisał wyżej to nie zaliczysz ;)
Awatar użytkownika
Xoggo
Posty: 163
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

pn maja 04, 2020 9:53 pm

Panowie, ja nie jestem z AGH tylko z SGGW:) 8-)
Ale tak na poważnie i w temacie mam prośbę, czy moglibyście mnie trochę nakierować?

Kod: Zaznacz cały

#include <SPI.h> 
#include <SuplaDevice.h> 
#include <supla/network/esp_wifi.h>
          Supla::ESPWifi wifi("xxxx", "xxxx");  
#include <WiFiClientSecure.h>
          const char* host = "svr31.supla.org";
          const int httpsPort = 443;
          String url = "";
          byte a=0;
          char Link_1[40]="/direct/xxx/xxx/toggle";

void setup() {
   Serial.begin(115200);
   char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {xxxx}; 
   char GUID[SUPLA_GUID_SIZE] = {yyyyC};
   char SERVER[] = "svr31.supla.org";
   char EMAIL[] = "xxx@gmail.com";     

   pinMode(5, INPUT_PULLUP); 

   SuplaDevice.setName("D-LINK TEST");                                     
   WiFi.softAPdisconnect(true);                                                
   SuplaDevice.begin(GUID, SERVER, EMAIL, AUTHKEY); 

   while ((!(WiFi.status() == WL_CONNECTED))){
   delay(500);
   Serial.print(".");}
   Serial.println("Połączony z WiFi");  
 }

void loop() {
   SuplaDevice.iterate();
 //-----------------------------------
   if ( digitalRead(5) == HIGH){
   a=0; 
   }
   if ( digitalRead(5) == LOW && a==0)  {
    url = Link_1;
    direct_Link() ;
     a=1; 
    } 
   //-----------------------------------
}
 
void direct_Link() {

  WiFiClientSecure client;
  Serial.print(" connecting to ");
  Serial.println(host);
  if (!client.connect(host, httpsPort)) {
    Serial.println("connection failed");
    return;
  }
  Serial.print("requesting URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: BuildFailureDetectorESP8266\r\n" +
               "Connection: close\r\n\r\n");

  Serial.println("request sent");
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      Serial.println("headers received");
      break;
    }
  }
  String line = client.readStringUntil('}');
  line = line + "}";
  Serial.println("reply was:");
  Serial.println("==========");
  Serial.println(line);
  Serial.println("==========");
  Serial.println("closing connection");
} 
Po "aktywowaniu" GPIO5 wypluwa, że "connection failed".

D-Link.JPG
D-Link.JPG (171.39 KiB) Przejrzano 875 razy
Ostatnio zmieniony wt maja 05, 2020 5:42 am przez Xoggo, łącznie zmieniany 1 raz.
piomar2
Posty: 368
Rejestracja: pt kwie 26, 2019 5:32 pm
Lokalizacja: Bukowice

wt maja 05, 2020 5:07 am

Po prawidłowych wpisach w kodzie program działa prawidłowo (nie sądzę, że to wina serwera).
ok.jpg
ok.jpg (102.03 KiB) Przejrzano 859 razy
Awatar użytkownika
Xoggo
Posty: 163
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

wt maja 05, 2020 5:22 am

piomar2 pisze:
wt maja 05, 2020 5:07 am
Po prawidłowych wpisach w kodzie
Hmm, więc co w moim (Twoim) kodzie jest nieprawidłowego? :?
piomar2
Posty: 368
Rejestracja: pt kwie 26, 2019 5:32 pm
Lokalizacja: Bukowice

wt maja 05, 2020 5:30 am

Coś źle wpisujesz...
Pobrałeś: char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {xxxx};
char GUID[SUPLA_GUID_SIZE] = {yyyyC};
???
Awatar użytkownika
Xoggo
Posty: 163
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

wt maja 05, 2020 5:31 am

Tak, no przecież urządzenie mi się poprawnie rejestruje w Cloudzie, tylko wywołanie samego linka nie chce się posłuchać.
ODPOWIEDZ

Wróć do „Pomoc”