Comandare Shelly da remoto

Richieste varie sugli SHELLY.
linuxman74
Messaggi: 14
Iscritto il: lunedì 4 gennaio 2021, 10:23

venerdì 8 gennaio 2021, 9:32

Buongiorno.
sto cercando il modo per accendere e spegnere una lampada da remoto.
In sintesi vorrei fare questo: http://indirizzo_server_cloud/relay/0?turn=toggle&auth_key=xxxxx&id=xxxxxx
Ma ottengo questa risposta:

{"isok":false,"errors":{"wrong_channel":"Could not control this relay channel!"}}

Come mai?
linuxman74
Messaggi: 14
Iscritto il: lunedì 4 gennaio 2021, 10:23

venerdì 8 gennaio 2021, 9:40

Eppure la documentazioen dice proprio così:

POST link: https://[server location link]/device/relay/control/
Keys:
channel=[channel number] - you can check the channel from Settings->Device informationkey
turn=[command]
id=[deviceID] - you can check the channel from Settings->Device informationkey
auth_key=[auth_key]
Mala
Messaggi: 2397
Iscritto il: martedì 1 ottobre 2019, 22:21

venerdì 8 gennaio 2021, 11:48

A hai dimenticato di mettere :
...\device\...
linuxman74
Messaggi: 14
Iscritto il: lunedì 4 gennaio 2021, 10:23

venerdì 8 gennaio 2021, 12:22

Non capisco... in che senso?
linuxman74
Messaggi: 14
Iscritto il: lunedì 4 gennaio 2021, 10:23

venerdì 8 gennaio 2021, 12:23

Io lancio questo:

http://shelly-22-eu.shelly.cloud/device ... x&turn=off

E lui mi risponde

{"isok":false,"errors":{"wrong_channel":"Could not control this relay channel!"}}
Mala
Messaggi: 2397
Iscritto il: martedì 1 ottobre 2019, 22:21

venerdì 8 gennaio 2021, 13:13

Ok si ma devi mettere l’IP di rete dello shelly non il nome.
Mala
Messaggi: 2397
Iscritto il: martedì 1 ottobre 2019, 22:21

venerdì 8 gennaio 2021, 13:15

Non penso che tu riesca a farlo tramite il cloud shelly
linuxman74
Messaggi: 14
Iscritto il: lunedì 4 gennaio 2021, 10:23

venerdì 8 gennaio 2021, 15:04

Ho scoperto il motivo.
Riporto dalla documentazione delle API di Shelly:
"Each resource may also accept a list of Parameters which should be supplied either as query-string in the URL or as application/x-www-form-urlencoded POST payload."

Quando lancio la URL da un browser sto facendo una richiesta GET e non POST. Quindi per funzionare devo fare una richista POST su https://shelly-<qualcosa>/device/relay/control
E tutti i parametri vanno passati nel body.

Infatti passando tutto sulla chiamata GET otteniamo subito dal server un bel HTTP/1.1 400 Bad Request semplicemente perchè non processa i dati che gli arrivano.

Risolto l'arcano. Quindi mi basta usare curl passando i parametri con -d ".." e funziona tutto alal perfezione.

p.s.
Per chi mi ha risposto che devo passare l'IP dello Shelly non ha capito che questa cosa non sto cercando di farla in locale, quindi niente IP, sto usando infatti il server cloud con auth_key
Mala
Messaggi: 2397
Iscritto il: martedì 1 ottobre 2019, 22:21

venerdì 8 gennaio 2021, 18:30

Ok ho capito dopo quello che volevi fare.
Io sono passato su Home Assistant e quindi li comando direttamente da lì eventualmente anche da esterno
rikypittiz07
Messaggi: 1
Iscritto il: mercoledì 12 maggio 2021, 17:18

mercoledì 12 maggio 2021, 17:20

linuxman74 ha scritto:
venerdì 8 gennaio 2021, 15:04
Ho scoperto il motivo.
Riporto dalla documentazione delle API di Shelly:
"Each resource may also accept a list of Parameters which should be supplied either as query-string in the URL or as application/x-www-form-urlencoded POST payload."

Quando lancio la URL da un browser sto facendo una richiesta GET e non POST. Quindi per funzionare devo fare una richista POST su https://shelly-<qualcosa>/device/relay/control
E tutti i parametri vanno passati nel body.

Infatti passando tutto sulla chiamata GET otteniamo subito dal server un bel HTTP/1.1 400 Bad Request semplicemente perchè non processa i dati che gli arrivano.

Risolto l'arcano. Quindi mi basta usare curl passando i parametri con -d ".." e funziona tutto alal perfezione.

p.s.
Per chi mi ha risposto che devo passare l'IP dello Shelly non ha capito che questa cosa non sto cercando di farla in locale, quindi niente IP, sto usando infatti il server cloud con auth_key
Quindi non è proprio possibile creare un url senza passare per un componente di multirichiesta?
grazie
Rispondi