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?
Comandare Shelly da remoto
-
- Messaggi: 14
- Iscritto il: lunedì 4 gennaio 2021, 10:23
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]
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]
-
- Messaggi: 14
- Iscritto il: lunedì 4 gennaio 2021, 10: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!"}}
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!"}}
-
- Messaggi: 14
- Iscritto il: lunedì 4 gennaio 2021, 10:23
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
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
-
- Messaggi: 1
- Iscritto il: mercoledì 12 maggio 2021, 17:18
Quindi non è proprio possibile creare un url senza passare per un componente di multirichiesta?linuxman74 ha scritto: ↑venerdì 8 gennaio 2021, 15:04Ho 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
grazie