Controllo locale

Il controllo locale permette all’app Sinric Pro di comunicare con i tuoi dispositivi direttamente tramite il tuo Wi-Fi, senza passare dal cloud Sinric Pro.

È utile in due situazioni:

Local Control


Cosa ti serve

Il controllo locale è integrato nell’SDK ed è attivo per impostazione predefinita. Non c’è nulla da configurare nel portale.

SDK Versione minima
Arduino (ESP8266 / ESP32 / RP2040) 5.0.0
ESP-IDF 1.3.0
Raspberry Pi Pico W (C SDK) 2.0.0
Python 6.0.0
Node.js 6.0.0
MicroPython 3.0.0

Ti serve anche una versione recente dell’app Sinric Pro, e il telefono deve essere sulla stessa rete Wi-Fi del dispositivo. Il controllo locale non funziona con la rete dati mobile né da fuori casa.


Come funziona

Trovare il dispositivo

Prima di poter comunicare con un dispositivo, l’app deve sapere a quale indirizzo si trova. Prova, nell’ordine:

  1. mDNS. I dispositivi annunciano _sinricpro._udp.local. sulla rete. È la via più rapida e trova tutti i dispositivi con una sola interrogazione.
  2. Una richiesta broadcast firmata. Se mDNS non restituisce nulla — molti router bloccano il multicast — l’app invia una richiesta firmata all’indirizzo di broadcast locale. Risponde solo il dispositivo a cui appartiene l’ID, e la risposta ne rivela l’indirizzo.
  3. L’ultimo indirizzo noto, memorizzato l’ultima volta che il dispositivo era online.

Il risultato viene messo in cache, quindi la ricerca avviene una volta sola e non a ogni tocco.

Inviare un comando

I comandi vengono inviati alla porta UDP 3333 del dispositivo. Il messaggio è esattamente lo stesso involucro firmato usato dal cloud:

{
  "header":    { "payloadVersion": 2, "signatureVersion": 1 },
  "payload":   { "action": "setPowerState", "deviceId": "...", "value": { "state": "On" } },
  "signature": { "HMAC": "..." }
}

Il dispositivo verifica la firma, esegue la stessa callback che eseguirebbe per una richiesta dal cloud e risponde al telefono. Il tuo sketch non cambia: un dispositivo che gestisce onPowerState da Alexa lo gestisce anche dalla LAN.


Sicurezza


Disattivarlo

Il controllo locale è abilitato per impostazione predefinita. Per disattivarlo:

Arduino

#define SINRICPRO_NOMDNS   // keep local control, drop the mDNS announcement

ESP-IDF — in menuconfig, sotto SinricPro:

CONFIG_SINRICPRO_ENABLE_LOCAL_CONTROL=n

Python

config = SinricProConfig(app_key=..., app_secret=..., local_control=False)

Node.js

await SinricPro.begin({ appKey: ..., appSecret: ..., localControl: false });

MicroPython

sinricpro.start(APP_KEY, APP_SECRET, local_control=False)

Risoluzione dei problemi

L’app dice “No devices found on this Wi-Fi network”

Funziona, poi smette dopo il riavvio del router

Probabilmente l’indirizzo IP del dispositivo è cambiato. Apri la schermata Local Control e trascina verso il basso per aggiornare, oppure riserva un indirizzo fisso per il dispositivo nel router.

I comandi sono lenti o intermittenti

Lascia al dispositivo qualche secondo dopo l’avvio. Su ESP32 ed ESP8266 la connessione sicura iniziale al cloud impegna la radio, e le risposte locali possono arrivare in ritardo finché non si stabilizza.

mDNS non trova mai nulla

È un caso comune e non è un guasto. Molti router domestici scartano il traffico multicast. L’app ripiega automaticamente su una richiesta broadcast, quindi la ricerca funziona comunque.