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.