Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IoT MQTT Tests #966

Merged
merged 11 commits into from
Dec 22, 2017
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 8 additions & 26 deletions iot/api-client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,17 @@ Google Cloud IoT Core platform.

## Quickstart

1. Install the gCloud CLI as described in [the Cloud IoT Core documentation](https://cloud.google.com/iot/docs/how-tos/getting-started#set_up_the_google_cloud_sdk_and_gcloud).
2. Create a PubSub topic:

gcloud beta pubsub topics create projects/my-iot-project/topics/device-events

3. Add the special account `[email protected]` with the role `Publisher` to that
PubSub topic from the [Cloud Developer Console](https://console.cloud.google.com)
or by using the helper script in the [/scripts](./scripts) folder.

4. Create a registry:

gcloud beta iot registries create my-registry \
--project=my-iot-project \
--region=us-central1 \
--event-pubsub-topic=projects/my-iot-project/topics/device-events

5. Use the [`generate_keys.sh`](generate_keys.sh) script to generate your signing keys:
1. From the [Google Cloud IoT Core section](https://console.cloud.google.com/iot/)
of the Google Cloud console, create a device registry.
2. Use the [`generate_keys.sh`](generate_keys.sh) script to generate your signing keys:

./generate_keys.sh

6. Create a device.
3. Add a device using the file `rsa_cert.pem`, specifying RS256_X509 and using the
text copy of the public key starting with the ----START---- block of the certificate.

gcloud beta iot devices create my-java-device \
--project=my-iot-project \
--region=us-central1 \
--registry=my-registry \
--public-key path=rsa_cert.pem,type=rs256
cat rsa_cert.pem

7. Connect a sample device using the sample app in the [`mqtt_example`](./mqtt_example) folder.
8. Learn how to manage devices programatically with the sample app in the
`manager` folder.
4. Connect a device using the HTTP or MQTT device samples in the [manager](./manager) folder.

5. Programmattically control device configuration and using the device manager sample in the [manager](./manager) folder.
53 changes: 53 additions & 0 deletions iot/api-client/manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,3 +211,56 @@ To publish state messages, run the sample as follows:
gcloud beta pubsub subscriptions pull --auto-ack \
projects/my-iot-project/subscriptions/my-subscription
```

# Cloud IoT Core Java MQTT example
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems very long not to put an index at the top?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acknowledged, I'll have to clean up a few other things in the sample folder soon, I'll split up the READMEs when I do this.


This sample app publishes data to Cloud Pub/Sub using the MQTT bridge provided
as part of Google Cloud IoT Core.

Note that before you can run the sample, you must configure a Google Cloud
PubSub topic for Cloud IoT Core and register a device as described in the
[parent README](../README.md).

## Setup

Run the following command to install the dependencies using Maven:

mvn clean compile

## Running the sample

The following command summarizes the sample usage:

mvn exec:java \
-Dexec.mainClass="com.example.cloud.iot.examples.MqttExample" \
-Dexec.args="-project_id=my-iot-project \
-registry_id=my-registry \
-device_id=my-device \
-private_key_file=rsa_private_pkcs8 \
-algorithm=RS256"

For example, if your project ID is `blue-jet-123`, your service account
credentials are stored in your home folder in creds.json and you have generated
your credentials using the [`generate_keys.sh`](../generate_keys.sh) script
provided in the parent folder, you can run the sample as:

mvn exec:java \
-Dexec.mainClass="com.example.cloud.iot.examples.MqttExample" \
-Dexec.args="-project_id=blue-jet-123 \
-registry_id=my-registry \
-device_id=my-device \
-private_key_file=../rsa_private_pkcs8 \
-algorithm=RS256"

## Reading the messages written by the sample client

1. Create a subscription to your topic.

gcloud beta pubsub subscriptions create \
projects/your-project-id/subscriptions/my-subscription \
--topic device-events

2. Read messages published to the topic

gcloud beta pubsub subscriptions pull --auto-ack \
projects/my-iot-project/subscriptions/my-subscription
5 changes: 5 additions & 0 deletions iot/api-client/manager/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@
</properties>

<dependencies>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
Expand Down
32 changes: 16 additions & 16 deletions iot/api-client/manager/resources/rsa_cert.pem
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC+DCCAeCgAwIBAgIJAMLUy4Aee8f0MA0GCSqGSIb3DQEBCwUAMBExDzANBgNV
BAMMBnVudXNlZDAeFw0xNzEyMTIyMDQ3MTNaFw0xODAxMTEyMDQ3MTNaMBExDzAN
BgNVBAMMBnVudXNlZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN1a
GQVrF7J5cp7ZJral+7MgYfmOaK4Or5sROZVFIxG40vejWHLEwAf49yHWHzJdpxYu
qvCDiBKct+hJEhUJtPKMHyaJpsJnQiEscbgGz7djPYF/iw2I1BTdnryaRQEw9DGD
y2VglH/Er3CdC/XiMXSUaqoE7cj0+7oAc3g+kECeizs8gzwHaYsMWSW2+hnHT9Jr
3IiaTTVGU7RAaGQ1LrQBd0Pw9BloT3hvkvkDW/s+pVSbKpBdAco7gFqeI05z3Mxe
DsSSVhZKk5FUr0TFhXsgCj/cbynjVweKbdC4pvEAAQS3QJ3vObW/1bQ9AtINRwJo
53sNY78fAYUXb3PzY1kCAwEAAaNTMFEwHQYDVR0OBBYEFMPDOmjBcDsco3k72yae
xlKoSWBQMB8GA1UdIwQYMBaAFMPDOmjBcDsco3k72yaexlKoSWBQMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHP3R+K2GJRroODe+sQseqh3EiS6
ykb8celznOrEan5VvGGgwxvtDcumh1hmAtgxDFs2IZJMz4RPWmmssQrPtew41s8y
Hxi2843EsUfTpj41LxXWOyTIf8yrnXKqnwVcEWjTN4XdBdJdHM0K6B9v8VruR6bj
PJcN/fhP1oT29HBPfgEeJeHJP+lpTlXOAkdSR+GhIrbg2HNIdhXkKxWtqc5bmcmH
NI65zGFn96gPGwYiKM8zb/muJDu6oOsmtwLuaHdxiNy18bzG7dlA9/FNyMSTCPLr
KxTNeE+hz+PEl9C0TCuFMh++0xU/raZdGhEugdg3vAB37lqzfsqBrO1LLms=
MIIC+DCCAeCgAwIBAgIJAOmoDZglgYpiMA0GCSqGSIb3DQEBCwUAMBExDzANBgNV
BAMMBnVudXNlZDAeFw0xNzEyMjAyMDAyMTRaFw0yMDA5MTUyMDAyMTRaMBExDzAN
BgNVBAMMBnVudXNlZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNp
Z6xhps0Xko/KEx+vMEe+VlqMgcszHsT2HBTFJBG8C+rchuYS4fVGx+oFO4bnNCyW
hCU1w0YReHE6/nonLCZ/M0zmRWZ/1kHkHY3o7Yr00qY78FywVHlPo8NA08Bk/Nd9
PsGlCj75YSHhLuXMdBSUnLwvZfNz2bzrpehNu+pLKjWTDKXZM6f/WIYlsChDv7SO
MpmpmZo7H/4IiU6Pevv35/up163AA1S8DPpKsqLPm2X+Jr0s+JUDD0HZ/ZbzY/is
YkTCloU40zALaRM5v7qdYkss018ZLVQuSeNhTW2kGup9/+jJ5QsAgNPYK9v+VN44
1f2WkcaGyO7Xb1gTTVsCAwEAAaNTMFEwHQYDVR0OBBYEFHnyjc53ia/A1m++Sfvp
fck8S39bMB8GA1UdIwQYMBaAFHnyjc53ia/A1m++Sfvpfck8S39bMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAF0X7ZIejJTZANQL+EoaBg3kcqwS
Ccmp+9pC7YnWL3JFLT3r5aGzv9SAHulJONylMUS70uw8ptN5KRRHZqEtEdZ3bYQN
t5jPhnsEQ3fiuIaE3+M8vKpq/kvgI6JBNymuYM2F9g3RUfc9WyDKKa9pBhyj0/nc
a8bY+mg3emC70S8xHLdFZozEm4mofQ3ag4S15CQKZG28PSB5ayCdIySxw8KVjghS
nao01pCZuUOaZEWWJKUF0XkSMmEY+h32AQFgQQpRBCsain2XRJvfGm0Aa5akmvfJ
cDZqe/pJ3fktbh1+HTkFC+tnfu3AhBPcL+sNVOQWn1+osBjVx51mIY6s4Ks=
-----END CERTIFICATE-----
52 changes: 26 additions & 26 deletions iot/api-client/manager/resources/rsa_private.pem
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdWhkFaxeyeXKe
2Sa2pfuzIGH5jmiuDq+bETmVRSMRuNL3o1hyxMAH+Pch1h8yXacWLqrwg4gSnLfo
SRIVCbTyjB8miabCZ0IhLHG4Bs+3Yz2Bf4sNiNQU3Z68mkUBMPQxg8tlYJR/xK9w
nQv14jF0lGqqBO3I9Pu6AHN4PpBAnos7PIM8B2mLDFkltvoZx0/Sa9yImk01RlO0
QGhkNS60AXdD8PQZaE94b5L5A1v7PqVUmyqQXQHKO4BaniNOc9zMXg7EklYWSpOR
VK9ExYV7IAo/3G8p41cHim3QuKbxAAEEt0Cd7zm1v9W0PQLSDUcCaOd7DWO/HwGF
F29z82NZAgMBAAECggEBAKMHcfhQqRJ1apteWqoZ1ClZR2/zmFviSypN5HhxhGPQ
Gen0b/ePu9PjZbmRKEcDPUYUNyiP58+1h6pY7y15icE+vM64gY8bWFRwlI0yzxhF
yo4vby4XwgRgOkK06O/4q1IwvMS8/oKgTYsG0EFYSI6RpYH1wWDKNwEGxgUhJ0O/
YxTlFpEObuBg+aILeEemU6+QoULwNgfCqVUEkbSZFy5Z9D66PdRoiLum6FmwICBd
rChr06ACqCxuiFhMb1VoHPinIvJNZeLClUGShi9R/hgUZfZxddpNKDtEjZGFWgNw
dVpDFbpVLsqiV+B2TlfX10u9RnWoVi5r8Iv3gMdpqqUCgYEA82c9rm/fEi7fp03U
Y5C1z1YX/7UP+bbsOEZi6BsnJOSptbnBt0g4Ph0TRIbWsAAjd9psU3rSK73U8kso
6xCRe05RzhXWbnl80TUGQpLFcAlZd7R6eXe9kESGu+sheIXGcRJnzM6CFykerkhV
nGp29t/sQBVggqBm7/o8oJg1cLcCgYEA6M608xHaMr1Xw+hEdYqAnxJ4nLwG5Gja
T5NyeGyuJnPP9ullza/n2mOm6ujznzD3JGLqhixR4TI3h2vQ7oMDtkbytRFmishW
rrW59OM3hohvdd0GMfI4boNCyEBMc1s1855nqHprpje+l3S9HuPUHYI4KXlQzz4o
fqCoWHSonG8CgYEAjYhO2Yu7jnsrGcGr6mlPDszlD49dRrsTCHYFNSn0zQMZm83z
0ntwGM4XUhWF6Llr5llf+/rDEyRDGtCRbn4n2idkcg1Irtx9s7i9dyCZJdiJ6Y1M
Wi1CUQ1HuyWyRL6k8ULekLzT8Fu8t2LgRR+zJUJ3wZusjshuksRTVJ6tFGkCgYBl
VxWNeYfx7ln1/XVPdSroE7JNB8w4QSxG13hM04I7Ws58PL0D/D6A4kAWobDq6vWp
8SUFouVBkgp5+ITKTl2fSuL7zsdEQlD5XEHGR+IzvdBHDh9UPowyDxFS+ipNTLb/
hUS6IhAaGsnsQ/TPLX14Guc3pod2rygRdv3RA3ciIQKBgEhWmdwDjB3c8/7c/vhV
gU+OYziQPHJb7IYrvCxAMym+lM6SVAR62vDSkGBwZdgnr4X1LwO9/qbV+eOR07hv
KhDQ9AX10y1t7FHybZMatvr0l283/BVanXonq7ihzrWjDnZU97N05gIj6Ew4EHy7
EGgOLKa63rYJQK4WLwP4mMEF
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzaWesYabNF5KP
yhMfrzBHvlZajIHLMx7E9hwUxSQRvAvq3IbmEuH1RsfqBTuG5zQsloQlNcNGEXhx
Ov56JywmfzNM5kVmf9ZB5B2N6O2K9NKmO/BcsFR5T6PDQNPAZPzXfT7BpQo++WEh
4S7lzHQUlJy8L2Xzc9m866XoTbvqSyo1kwyl2TOn/1iGJbAoQ7+0jjKZqZmaOx/+
CIlOj3r79+f7qdetwANUvAz6SrKiz5tl/ia9LPiVAw9B2f2W82P4rGJEwpaFONMw
C2kTOb+6nWJLLNNfGS1ULknjYU1tpBrqff/oyeULAIDT2Cvb/lTeONX9lpHGhsju
129YE01bAgMBAAECggEAdA0CWqbv1kohK5FyvVP8zut3wCqS6nWuuYjYsTa0FiSl
MM5lE/2y241lUyL/VkvHm+/gmpEkNvamCdg3M5yTGnO9I0jwK1UVqpl75Id+4Btt
BspOuCX2/mFddLdCQXkRc/I33dp7vjBhfCDEzTBrBcT7fV7Le6a8eU+Uiad+nhXa
9kIZxQdavaFtHUW8ltuJHfG0BCsQ7saQlmTTV7JS3gPd3VgftDZslM+4a1ac1Uoc
+ADDTURCdkIiari168bWBE060T5O3FLFo+H4W3cTuylUQwPEmOOVqj3MP1oRM8CV
IXARL2KRi6TT4oXcm2ntEZxtiN3Oo9icqV0/FlzhAQKBgQDkAXfHHpAr23DxVEpP
uSIYM7ASFETC+w7IX2qcjAQX1uTUG/2sRuzpaoZe9VoaUZNdnXgQXOBhNkQlgHgm
8LQhN+CFlQZAbqvLvj46UjNwBxwISQW4Qd904VuJuC4ew+OsA8ZxWe/BrbDU8zHM
Vu1eSu89BrQB15CNQmkDkhIACwKBgQDJcI+zcPV0Lcf5JnA2LrttqosFMJ0XAlvV
+KLLNG13oGuPWW2sROvtpHiPFO/FzX9hR3NSocNjwj0Y7QlULr7KfPK1nLHBa1Os
DFnKVLb9UUIqDsMCAzupY3zc4fh7Jw9FfIveLYf0nDjSuTeyp8Mt93m4bmLhFgBs
dKs9546p8QKBgCE+AYubbiOmy9Gzm14CPPFQX+RS5i+TUPVvy+hlFZewMg6mwhZj
BNmHOW4Q0YEy0Yx9j+q6z8/8jHT3RQ1QXMLXFboEHzQ3rn53DzWLlIpJzxF6LAZQ
PFcbIDB1FOxRXRlQN5eBKE6Rl02E44bKSbNMs5KvLoFyP1YJD6yAmHU/AoGAe6dz
Lu26XvTzeogT/c62E13LNQZgiA1UnoagOCkYwYRiQn7dChDM2vZJY1uwzDWXafnY
WvMd5BEKPFDVly2SxO3qd32WyGq/1C9ItyFFqz7EZNjm8EdXymVd8qFsTPzvLPKF
UX+Vo5x6bTBxdmPxNjhiKcrpO86rt+fubnPEaaECgYBn2dFS/G7kUs0ybH2JZTp3
Y68lnY3mzfQCX4J83I81aAXU+IhHK7n1hegVGP47dVZ2iizaib+ubX0JCaa0pwHe
K/geI+vcK7WNa3LKXL70OmZO0ToscdUC5jVKFCohmDo9+oecOndQ8OkjLkZMiBDG
oOwoxIvf1KkQ7VyFYgnOBA==
-----END PRIVATE KEY-----
Binary file modified iot/api-client/manager/resources/rsa_private_pkcs8
Binary file not shown.
Loading