Impossibile far funzionare Google IoT Core


10

Qualcuno ha ottenuto l'esempio nella sua guida rapida per funzionare? Forniscono il codice NodeJS per connettersi al proprio bridge MQTT, ma per me non funziona:

[root@centos7 google-iot-mqtt]# node cloudiot_mqtt_example_nodejs.js \
>     --project_id=curious-furnace-181313 \
>     --registry_id=my-registry \
>     --device_id=mimic1 \
>     --private_key_file=./rsa_private.pem \
>     --algorithm=RS256
Google Cloud IoT Core MQTT example.
connect { '0': {},
   '1': 
   { [Function: require]
 resolve: [Function: resolve],
 main: 
  Module {
    id: '.',
    exports: {},
    parent: null,
    filename: '/home/tmp/uwe/google-iot-mqtt/cloudiot_mqtt_example_nodejs.js',
    loaded: true,
    children: [Object],
    paths: [Object] },

(altre migliaia di righe di stack stack) e nessuna attività nella dashboard di Google IoT Core, né alcun messaggio in nessun abbonamento pull.

Un mosquitto_pub restituisce uno strano errore:

% ./mosquitto_pub -d -h mqtt.googleapis.com -p 8883 -i projects/curious-furnace-181313/locations/us-central1/registries/my-registry/devices/mimic1 -u unused --key ~/mimic/scripts/mqtt/google-iot/rsa_private.pem --cert ~/mimic/scripts/mqtt/google-iot/rsa_cert.pem -t /devices/mimic1/events -m hello --insecure
Client projects/curious-furnace-181313/locations/us-central1/registries/my-registry/devices/mimic1 sending CONNECT
Error: Unrecognised command 16

Error: A network protocol error occurred when communicating with the broker.

Apparentemente i messaggi generati dalla loro app NODEJS hanno impiegato un po 'di tempo per arrivare agli abbonamenti. Ma mosquitto_pub continua a non funzionare.
Gambit Support,

L'aggiunta dell'argomento -P a mosquitto_pub con una password JWT come quella creata dalle loro applicazioni NODEJS non aiuta.
Gambit Support,

Risposte:


5

Questo errore si verifica in caso di mancata corrispondenza del protocollo nella richiesta inviata all'API MQTT di Google.

Si utilizza la porta 8883 per MQTT su SSL. Ai miei occhi l'indirizzo che chiami è un normale indirizzo http (senza https né http il valore predefinito è http), che userebbe 1883, la porta del semplice MQTT.

Se si intende utilizzare 8883 e SSL, effettuare una chiamata all'indirizzo utilizzando https. Se non intendevi affatto MQTT su SSL, fissa la porta su 1883.


Questo non aiuta. RICHIEDONO la porta 8883, che è ciò che usa il loro esempio NODEJS.
Gambit Support,

Bene, questa è la ragione più ovvia per la mancata corrispondenza del protocollo, ma l'errore può verificarsi anche all'interno dei messaggi mqtt, ad esempio un messaggio troppo lungo rispetto a quanto specificato. Difficile dire cosa generi problemi nel tuo caso.
mico,

1
La risposta giusta è guardare WireShark. Ho capito che mosquitto_pub non invia messaggi crittografati anche quando --tls-version viene aggiunto alla riga di comando originale, perché il messaggio in chiaro è nel PCAP.
Supporto Gambit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.