Supla Button

Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

Lucas pisze: pn maja 14, 2018 7:24 am @Duch__ świetny pomysł. Już kiedyś wspominałem o potrzebie takiego rozwiązania, m.in. do uruchamiania scen tutaj

Tylko mając wszystko oparte o clouda i nie posiadając własnego serwera Supla Scripts rozumiem, że Twoje rozwiązanie się nie sprawdzi?
Sprawdzi się jak najbardziej, to co widzisz na filmie oparte jest o zewnętrzny oficjalny CLOUD i zewnętrzny oficjalny serwer kolegi FRACZ.
tgaweda pisze: pn maja 14, 2018 8:09 am
Duch__ pisze: ndz maja 13, 2018 4:57 pm Kolejną bolączką tego rozwiązania jest brak Autoryzacji i konieczność wykorzystania publicznych adresów.
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
Testowałem to rozwiązanie. Niestety w Arduino to tak łatwo nie działa. Na obecną chwilę musi działać bez autoryzacji.
Obrazek
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

Jeszcze jedna kwestia o której nie napisałem, a jest istotna.

W celu zapewnienia niskiego poboru energii przez moduł ESP-01 konieczne jest uśmiercenie czerwonej diody LED zainstalowanej fabrycznie na module która sygnalizuje obecność zasilania, nam jest nie potrzebna.
ESP8266 Pins2.png
ESP8266 Pins2.png (546.92 KiB) Przejrzano 4809 razy
Obrazek
Awatar użytkownika
wojtas567
Posty: 2214
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

A co z GPIO16?
Powinien być podpięty do resetu, 01 go nie ma wyprowadzonego ale możliwe do wykonania 😉
Pozdrawiam
Wojtek
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

A po co Ci GPIO16? On do szczęścia nie jest potrzebny.
Obrazek
Awatar użytkownika
wojtas567
Posty: 2214
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

Do deep sleepa
Ale zapomniałem, że tu wybudzany jest z przycisku a nie sam OK 😀
Pozdrawiam
Wojtek
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

Dokładnie tak jak piszesz. Wybudzenie następuje poprzez naciśnięcie przycisku RESET. Procesor sam ma "zakaz" samo-restartu, bo inaczej non stop wykonywałby program - sterował urządzeniem. Nadmienię tylko że już myślę nad wersją MULTI-FUNKCJONALNĄ tj. jedne przycisk i klika kliknięć w zależności od wybranej sceny, ale to w wolnych chwilach po pracy.
Obrazek
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

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

Kod: Zaznacz cały

Authorization: Bearer XXXXXXX
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.
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

Działa!!! No to teraz już pełne bezpieczeństwo!!! Dzięki FRACZ!!!

A i obudowa już jest. Jeszcze tylko napis PARTY na przycisku i można odwalić scenę w domu :D :D :D :D
IMG_20180514_190408.jpg
IMG_20180514_190408.jpg (2.8 MiB) Przejrzano 4747 razy
Obrazek
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

Zauważyłem jedną przypadłość w kodzie który muszę poprawić. Mianowicie układ przewoziłem między miejsce produkcji, a docelowym i przez przypadek nacisnąłem. Przez 20 min szukał docelowego WIFI. Muszę wprowadzić w kodzie timeout.
Obrazek
ODPOWIEDZ

Wróć do „Projekty użytkowników”