forked from sborsay/AWS-IoT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmqtt-client2.ino
88 lines (69 loc) · 2.42 KB
/
mqtt-client2.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <WioLTEforArduino.h>
#include <WioLTEClient.h>
#include <PubSubClient.h> // https://github.com/SeeedJP/pubsubclient
#include <stdio.h>
#define APN "soracom.io"
#define USERNAME "sora"
#define PASSWORD "sora"
#define MQTT_SERVER_HOST "beam.soracom.io"
#define MQTT_SERVER_PORT (1883)
#define ID "WioLTE"
#define OUT_TOPIC "outTopic"
#define IN_TOPIC "inTopic"
#define INTERVAL (60000)
WioLTE Wio;
WioLTEClient WioClient(&Wio);
PubSubClient MqttClient;
void callback(char* topic, byte* payload, unsigned int length) {
SerialUSB.print("Subscribe:");
for (int i = 0; i < length; i++) SerialUSB.print((char)payload[i]);
SerialUSB.println("");
}
void setup() {
delay(200);
SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyLTE(true);
delay(500);
SerialUSB.println("### Turn on or reset.");
if (!Wio.TurnOnOrReset()) {
SerialUSB.println("### ERROR! ###");
return;
}
SerialUSB.println("### Connecting to \""APN"\".");
if (!Wio.Activate(APN, USERNAME, PASSWORD)) {
SerialUSB.println("### ERROR! ###");
return;
}
SerialUSB.println("### Connecting to MQTT server \""MQTT_SERVER_HOST"\"");
MqttClient.setServer(MQTT_SERVER_HOST, MQTT_SERVER_PORT);
MqttClient.setCallback(callback);
MqttClient.setClient(WioClient);
if (!MqttClient.connect(ID)) {
SerialUSB.println("### ERROR! ###");
return;
}
MqttClient.subscribe(IN_TOPIC);
SerialUSB.println("### Setup completed.");
}
void loop() {
//If you need to increase buffer size, you need to change MQTT_MAX_PACKET_SIZE in PubSubClient.h
char fakeData[128];
//choose your own number of variables and data types, but avoid data buffer size overload
float var1 = random(55,77); //fake number range, adjust as you like
float var2 = random(77,99);
sprintf(fakeData, "{\"uptime\":%lu,\"variable1\":%f,\"variable2\":%f}", millis() / 1000, var1, var2);
SerialUSB.print("Publish:");
SerialUSB.print(fakeData);
SerialUSB.println("");
MqttClient.publish(OUT_TOPIC, fakeData);
err:
unsigned long next = millis();
while (millis() < next + INTERVAL)
{
MqttClient.loop();
}
}