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

Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

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_
Posty: 43
Rejestracja: pn wrz 28, 2020 5:49 am

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?
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

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_
Posty: 43
Rejestracja: pn wrz 28, 2020 5:49 am

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
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

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
    skrypty-id.png (59.45 KiB) Przejrzano 1108 razy
  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

    Kod: Zaznacz cały

    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:

    Kod: Zaznacz cały

    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
    webhook-success.png (28.72 KiB) Przejrzano 1108 razy
  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.
bob_
Posty: 43
Rejestracja: pn wrz 28, 2020 5:49 am

No i elegancko. Wieczorem zapuszczę, dam znać :-)
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

fracz pisze: czw lut 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.

Kod: Zaznacz cały

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_
Posty: 43
Rejestracja: pn wrz 28, 2020 5:49 am

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.
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Kawałek logu z supla-server

Kod: Zaznacz cały

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/
ODPOWIEDZ

Wróć do „SUPLA Scripts”