Nie działa automatyczne wykonywanie scen w oparciu o zmianę stanu kanałów

User avatar
fracz
Posts: 2260
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

Aktualnie temat webhooków po sieci lokalnej musi chwilę poczekać. Są dwa powody:
  1. Cloud obecnie nie umożliwia rejestracji webhooków dla klientów, którzy nie są OAuth
  2. Server odmawia wysyłania hooków na adres bez SSL
Postaramy się to zmienić na następne wydanie (2.3.37) tak aby w dockerach była możliwa rejestracja hooka dla http i dla adresu niewidzianego z zewnątrz.

Na tę chwilę musisz skonfigurować połączenie OAuth Skrypty-Cloud, czyli wystawić obydwie aplkacje po HTTPS na zewnątrz.
bob_
Posts: 43
Joined: Mon Sep 28, 2020 5:49 am

Post

Szkoda :-(
W każdym razie dzięki za info, przynajmniej wiem na czym stoję...

Pozdrawiam
ps. A na ten moment zainstalowanie certyfikatów wg metody wcześniej podanej cokolwiek da, czy bez wystawienia na zewnątrz nie ma sensu?
User avatar
fracz
Posts: 2260
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

Wydaje mi się, że jest to teoretycznie możliwe, ale w praktyce się zagrzebiesz. Jeśli supla-server wymaga połączenia HTTPS, to musiałbyś w kontenerze skonfigurować Twój self-signed certyfikat jako zaufany... Raczej nie chcesz tego robić ;-)
bob_
Posts: 43
Joined: Mon Sep 28, 2020 5:49 am

Post

Zdecydowanie nie :-)
Dzięki za potwierdzenie. Mam nadzieję, że uda się w nowej edycji to zmienić. Trzymam kciuki i schładzam piwo, będzie czekać :D :D :D
User avatar
fracz
Posts: 2260
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

User avatar
fracz
Posts: 2260
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

No to jedźmy z testami. Ewoluuje pewnie z tego prosty poradnik, ale potrzebuję od Was testów "w terenie".

Rozwiązujemy nastepujący problem: skrypty i supla są uruchomione jako kontenery dockerowe działające w tej samej sieci dockerowej (w plikach .yml jest wskazanie na tę samą sieć, np. webproxy). Logujesz się do skryptów za pomocą Personal Access Tokenu, bez konfiguracji OAuth. Do tej pory nie było możliwe, by bez zewnętrznej domeny webhooki powiadomiły skrypty o zmianach stanu kanałów. Od wersji Clouda v2.3.37 staje się to możliwe.
  1. Zaloguj się w skryptach i w swoim koncie znajdź swój identyfikator użytkownika.
    skrypty-id.png
  2. Ustal swoje hasło do hooków i zahashuj je za pomocą SHA1 (http://www.sha1-online.com/ wpisz jakieś hasło, mogą być totalnie przypadkowe znaki, ale zapamiętaj je na chwilę, kliknij HASH, dostaniesz 40-znakowy ciąg, który zaraz będzie potrzebny);
  3. Przejdź do linii komend gdzie uruchomione są dockery, przejdź do katalogu supla-scripts/docker i wykonaj poniższe polecenie, podmieniając TWOJE_HASLO_PRZED_HASHOWANIEM oraz TWOJ_ID_UZYTKOWNIKA

    Code: Select all

    source .env
    docker exec suplascripts-db mysql -u suplascripts --password=$DATABASE_PASSWORD suplascripts -e "UPDATE users SET webhookToken='TWOJE_HASLO_PRZED_HASHOWANIEM' WHERE id='TWOJ_ID_UZYTKOWNIKA'"
    
  4. Przejdź do katalogu supla-docker i wykonaj tam polecenie:

    Code: Select all

    docker-compose exec -u www-data supla-cloud php bin/console supla:user:webhook
    
  5. W interaktywnej komendzie podaj kolejno: twój adres e-mail z Clouda, adres http://suplascripts/api/state-webhook, a jako access token podaj 40-znakowy hash uzyskany wcześniej. Powinna pojawić się informacja o sukcesie.
    webhook-success.png
  6. Zaloguj się w skryptach tak jak do tej pory, przejdź do historii kanałów. Włącz/wyłącz jakieś urządzenie za pomocą aplikacji SUPLA, odśwież logi. Jeśli wpis w historii się pojawi - to znaczy że działa.
Jak udowodnimy, że działa, to kroki 2 i 3 będą bardziej zautomatyzowane.

Dawajcie znać, co nie działa.
You do not have the required permissions to view the files attached to this post.
bob_
Posts: 43
Joined: Mon Sep 28, 2020 5:49 am

Post

No i elegancko. Wieczorem zapuszczę, dam znać :-)
User avatar
lukfud
Posts: 2114
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

fracz wrote: Thu Feb 17, 2022 9:23 am Dawajcie znać, co nie działa.
W logach i historii kanałów pusto, nic się nie pojawiło. Nowa instalacja skryptów, autoryzacja przez token.

Code: Select all

pi@raspi:~ $ docker network inspect supla_default 
[
    {
        "Name": "supla_default",
        "Id": "0b84fbff3a901d4ad872c1435cec27b00b0f9509143a33d10073e371aafc5c01",
        "Created": "2020-12-06T13:43:05.287385412Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "3877ea0be61320fd10a9a6f2e01695011668e1bc74463230fab642b4d82f3fdb": {
                "Name": "supla-cloud",
                "EndpointID": "28998a8adf07bf1f14483412d40d344a2d78a372181319362e3476e052693187",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "7b86cb864ef83e425c269ebc9c125e9bd8f2423d9955e60e1d672ff730df607f": {
                "Name": "suplascripts",
                "EndpointID": "f8ebd1b95f23a639680d7f7b567eed7b18c37de37ac6f82c93062628029bd97f",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            },
            "9150832aa99bd972f43f3a87fdfdd983aad67ab794477a3763bcc79feb0a9ce7": {
                "Name": "suplascripts-db",
                "EndpointID": "0dd2e0befb9d22f49d6c9731f44bf071771265990545e55dc19abcc1e4e6126f",
                "MacAddress": "02:42:ac:12:00:06",
                "IPv4Address": "172.18.0.6/16",
                "IPv6Address": ""
            },
            "b21d893a02f66b352dcf84cebba0f95720a7afbea9665a30590f673a04bc6e9a": {
                "Name": "supla-db",
                "EndpointID": "6600783f4c12534a56917713c969baed7e9a7395e57dfb07fb37e1843969d09e",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "fa7db3f436ccb7fa902043d567d627a7d82b50d7f9cfe7700252db17af02dde3": {
                "Name": "supla-server",
                "EndpointID": "b19b8a062457e3214c9ec6778386221377c39612e8d3906419b55097d19e2598",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "default",
            "com.docker.compose.project": "supla",
            "com.docker.compose.version": "1.27.4"
        }
    }
]
https://www.facebook.com/groups/supladiy/
bob_
Posts: 43
Joined: Mon Sep 28, 2020 5:49 am

Post

Cała procedura przebiegła pomyślnie, efekt niestety taki sam - historia kanału pusta (po odświeżeniu), logi to samo.
Podobnie jak kolega wyżej postawiłem skrypty od zera.
User avatar
lukfud
Posts: 2114
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

Kawałek logu z supla-server

Code: Select all

ERR[1645798876.856890] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798893.587256] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798893.591756] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798893.591791] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798897.11937] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798897.16681] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798897.16717] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798916.814475] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798916.818443] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798916.818475] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798936.816139] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798936.819077] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798936.819103] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798956.821348] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798956.824567] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798956.824592] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798976.822520] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798976.825749] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798976.825778] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798993.555263] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798993.558768] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798993.558795] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645798996.867070] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645798996.870352] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645798996.870380] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645799016.830117] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645799016.834798] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645799016.834828] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645799023.598541] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645799023.601242] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645799023.601268] Http request - No data was received. Method: POST, resource: /api/state-webhook
ERR[1645799036.839088] Can't verify server certificate! Code: 20: unable to get local issuer certificate
ERR[1645799036.841510] Http request - send_recv failed. Method: POST, resource: /api/state-webhook
ERR[1645799036.841534] Http request - No data was received. Method: POST, resource: /api/state-webhook
https://www.facebook.com/groups/supladiy/

Return to “SUPLA Scripts”