tgaweda pisze: ↑pn maja 14, 2018 8:09 am
Możesz użyć adresu wymagającego autoryzacji i wywołać go dodając nazwę użytkownika:hasło@ przed supla.fracz.com
Kod: Zaznacz cały
https://username:password@supla.fracz.com/api/scenes/execute/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Nieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee! Nie przesyłajcie swojego hasła w URLu nigdy nigdzie nikomu. Po to dałem tam możliwość wygenerowania adresu URL z autoryazcją by było to po ludzku.
Używasz opcji "Wygeneruj cURL z kluczem dostępu" i dostajesz takie coś:
Kod: Zaznacz cały
curl https://supla.fracz.com/api/scenes/execute/e8e0f78d-ec97-44aa-ad6d-f82baf357171 -X GET -m 10000 -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnQiOnsiaWQiOiJlNzg2MzNiNy01ZmJjLTQyODMtYjE2Zi0wNjc0ZmI0MDI2ODcifSwiaXNzIjoiaHR0cHM6XC9cL3N1cGxhLmZyYWN6LmNvbSIsImlhdCI6MTUyNjMxMDEwMSwibmJmIjoxNTI2MzEwMTAxLCJleHAiOjE2ODM5OTAxMDF9._cqiEMNAGz6Gsap7KDlLW2p0MRsY81K7jUpAGgVYfo4"
Twój kod musi naśladować dokładnie to co robi wywołanie cURL, czyli do requestu musi dodać header
gdzie XXX jest wygenerowanym, podpisanym cyfrowo przez serwer "biletem wstępu" do danej sceny. Można sobie go usunąć w panelu. Można nawet zobaczyć przez kogo i dla kogo jest wystawiony na stronie
https://jwt.io/
W Twoim kodzie powinno być tak:
Kod: Zaznacz cały
client.println(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: SuplaButtonESP8266\r\n" +
"Authorization: Bearer XXX\r\n" +
"Connection: close\r\n\r\n");
i ma śmigać. Możesz w swoim programie pozwolić na wklejanie pełnej komendy cURL kopiowaną ze skryptów (wygląda zawsze tak samo) i regexem wyciągać adres URL i token autoryzujący.
BTW, uprzedziliście mnie. Ja obecnie dłubię w wolnych chwilach supla button, ale oparty o przycisk RF i odbiornik na rpi
https://botland.com.pl/moduly-radiowe/3 ... results=45
Ale jeszcze mi daleko do filmiku
Natomiast takie rozwiązanie nie powinno powodować żadnych opóźnień na komunikację bo malina czuwa cały czas i nie musi na żądanie łączyć się z wifi.