Nie można uruchomić Google IoT Core


10

Czy ktoś znalazł przykład w szybkim uruchomieniu do pracy? Podają kod NodeJS do połączenia z mostem MQTT, ale dla mnie to nie działa:

[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] },

(tysiące linii śledzenia stosu) i brak aktywności w pulpicie nawigacyjnym Google IoT Core, ani żadnych wiadomości w żadnej subskrypcji pull.

Mosquitto_pub zwraca dziwny błąd:

% ./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.

Najwyraźniej komunikaty wygenerowane przez ich aplikację NODEJS zajęły trochę czasu, aby dostać się do subskrypcji. Ale mosquitto_pub nadal nie działa.
Wsparcie Gambit

Dodanie argumentu -P do mosquitto_pub za pomocą hasła JWT utworzonego przez ich aplikacje NODEJS nie pomaga.
Wsparcie Gambit

Odpowiedzi:


5

Ten błąd występuje, gdy występuje niezgodność protokołu w żądaniu wysyłanym do Google MQTT API.

Używasz portu 8883 dla MQTT przez SSL. Moim zdaniem adres, do którego dzwonisz, jest normalnym adresem http (bez https i http domyślnie jest to http), który użyłby 1883, portu zwykłego MQTT.

Jeśli zamierzasz używać protokołu 8883 i SSL, zadzwoń na adres, używając protokołu https. Jeśli wcale nie miałeś na myśli MQTT przez SSL, ustaw port na 1883.


To nie pomaga. WYMAGAJĄ portu 8883, czego używa ich przykład NODEJS.
Wsparcie Gambit

Cóż, jest to najbardziej oczywisty powód niedopasowania protokołu, ale błąd może się również zdarzyć wewnątrz komunikatów mqtt, na przykład zbyt długich komunikatów w porównaniu z podanymi. Trudno powiedzieć, co powoduje problem w twoim przypadku.
mico

1
Prawidłowa odpowiedź to spojrzeć na wireshark. Doszedłem do wniosku, że mosquitto_pub nie wysyła zaszyfrowanej wiadomości, nawet jeśli --tls-version jest dodany do oryginalnego wiersza poleceń, ponieważ wiadomość tekstowa znajduje się w PCAP.
Wsparcie Gambit
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.