Wiznet W750Sr Mqtt , IFTT to Voice control your fish tank from anywhere in the world

Dependencies:   MQTT WIZnetInterface mbed-src

Committer:
Fady
Date:
Sun Jul 29 00:41:10 2018 +0000
Revision:
0:9819f8dd48ac
V1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Fady 0:9819f8dd48ac 1 #include "mbed.h"
Fady 0:9819f8dd48ac 2 #include "MQTTEthernet.h"
Fady 0:9819f8dd48ac 3 #include "MQTTClient.h"
Fady 0:9819f8dd48ac 4 #include <sstream>
Fady 0:9819f8dd48ac 5 #include <string>
Fady 0:9819f8dd48ac 6
Fady 0:9819f8dd48ac 7 Serial s(PA_13,PA_14); // Communication with the Arduino Board
Fady 0:9819f8dd48ac 8
Fady 0:9819f8dd48ac 9 Serial out(USBTX,USBRX); // Debuging through USB
Fady 0:9819f8dd48ac 10
Fady 0:9819f8dd48ac 11 void messageArrived(MQTT::MessageData& md)
Fady 0:9819f8dd48ac 12 {
Fady 0:9819f8dd48ac 13 MQTT::Message &message = md.message;
Fady 0:9819f8dd48ac 14 out.printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
Fady 0:9819f8dd48ac 15 out.printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
Fady 0:9819f8dd48ac 16 s.printf("%.*s\n", message.payloadlen, (char*)message.payload);//To send serial data to arduino
Fady 0:9819f8dd48ac 17 int i = atoi((char*)message.payload);
Fady 0:9819f8dd48ac 18 switch(i) {
Fady 0:9819f8dd48ac 19 case 0: //start servo to feed the fish
Fady 0:9819f8dd48ac 20 out.printf("Feeding");
Fady 0:9819f8dd48ac 21 s.printf("Feed");
Fady 0:9819f8dd48ac 22 break;
Fady 0:9819f8dd48ac 23 case 1: //turn lights on
Fady 0:9819f8dd48ac 24 out.printf("Lights on");
Fady 0:9819f8dd48ac 25 s.printf("ON");
Fady 0:9819f8dd48ac 26
Fady 0:9819f8dd48ac 27 break;
Fady 0:9819f8dd48ac 28 case 2: //turn lights off
Fady 0:9819f8dd48ac 29 out.printf("Lights off");
Fady 0:9819f8dd48ac 30 s.printf("OFF");
Fady 0:9819f8dd48ac 31
Fady 0:9819f8dd48ac 32 break;
Fady 0:9819f8dd48ac 33 case 3: //turn Dancing led strip on
Fady 0:9819f8dd48ac 34 out.printf("Led Flashing");
Fady 0:9819f8dd48ac 35 s.printf("Dance");
Fady 0:9819f8dd48ac 36
Fady 0:9819f8dd48ac 37 break;
Fady 0:9819f8dd48ac 38 case 4: //turn Dancing led strip off
Fady 0:9819f8dd48ac 39 out.printf("Led Not Flashing");
Fady 0:9819f8dd48ac 40 s.printf("NoDance");
Fady 0:9819f8dd48ac 41
Fady 0:9819f8dd48ac 42 break;
Fady 0:9819f8dd48ac 43
Fady 0:9819f8dd48ac 44 }
Fady 0:9819f8dd48ac 45 }
Fady 0:9819f8dd48ac 46
Fady 0:9819f8dd48ac 47 void baud(int baudrate)
Fady 0:9819f8dd48ac 48 {
Fady 0:9819f8dd48ac 49
Fady 0:9819f8dd48ac 50 s.baud(baudrate);
Fady 0:9819f8dd48ac 51 }
Fady 0:9819f8dd48ac 52
Fady 0:9819f8dd48ac 53
Fady 0:9819f8dd48ac 54
Fady 0:9819f8dd48ac 55
Fady 0:9819f8dd48ac 56 int main(void)
Fady 0:9819f8dd48ac 57 {
Fady 0:9819f8dd48ac 58
Fady 0:9819f8dd48ac 59 char* topic1 = "******/feeds/welcome-feed";
Fady 0:9819f8dd48ac 60 // char* topic2 = "******/feeds/lights"; //****** type your username on IFTT instead of the stars
Fady 0:9819f8dd48ac 61 //char* topic3 = "******/feeds/dance";
Fady 0:9819f8dd48ac 62
Fady 0:9819f8dd48ac 63 printf("starting...\n");
Fady 0:9819f8dd48ac 64
Fady 0:9819f8dd48ac 65
Fady 0:9819f8dd48ac 66 MQTTEthernet ipstack = MQTTEthernet();
Fady 0:9819f8dd48ac 67
Fady 0:9819f8dd48ac 68 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
Fady 0:9819f8dd48ac 69
Fady 0:9819f8dd48ac 70 char* hostname = "io.adafruit.com";//your MQTT broker host
Fady 0:9819f8dd48ac 71 int port = 1883; // broker port number
Fady 0:9819f8dd48ac 72
Fady 0:9819f8dd48ac 73 int rc = ipstack.connect(hostname, port);
Fady 0:9819f8dd48ac 74
Fady 0:9819f8dd48ac 75 out.printf("rc from TCP connect is %d\n", rc);
Fady 0:9819f8dd48ac 76
Fady 0:9819f8dd48ac 77 if (rc != 0)
Fady 0:9819f8dd48ac 78 out.printf("rc from TCP connect is %d\n", rc);
Fady 0:9819f8dd48ac 79
Fady 0:9819f8dd48ac 80 char MQTTClientID[30];
Fady 0:9819f8dd48ac 81 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
Fady 0:9819f8dd48ac 82 data.MQTTVersion = 3;
Fady 0:9819f8dd48ac 83 sprintf(MQTTClientID,"WIZwiki-%d",rand()%1000);
Fady 0:9819f8dd48ac 84
Fady 0:9819f8dd48ac 85 data.clientID.cstring = MQTTClientID;
Fady 0:9819f8dd48ac 86 data.username.cstring = "*******"; //****** type your username on IFTT instead of the stars
Fady 0:9819f8dd48ac 87 data.password.cstring = "************************"; //****** type your Password on IFTT instead of the stars
Fady 0:9819f8dd48ac 88 if ((rc = client.connect(data)) != 0)
Fady 0:9819f8dd48ac 89 printf("rc from MQTT connect is %d\n", rc);
Fady 0:9819f8dd48ac 90
Fady 0:9819f8dd48ac 91
Fady 0:9819f8dd48ac 92 if ((rc = client.subscribe(topic1, MQTT::QOS0, messageArrived)) != 0) {
Fady 0:9819f8dd48ac 93 out.printf("rc from MQTT subscribe is %d\n", rc);
Fady 0:9819f8dd48ac 94
Fady 0:9819f8dd48ac 95
Fady 0:9819f8dd48ac 96 }
Fady 0:9819f8dd48ac 97
Fady 0:9819f8dd48ac 98 while (true) {
Fady 0:9819f8dd48ac 99
Fady 0:9819f8dd48ac 100
Fady 0:9819f8dd48ac 101
Fady 0:9819f8dd48ac 102 client.yield(6);
Fady 0:9819f8dd48ac 103
Fady 0:9819f8dd48ac 104 }
Fady 0:9819f8dd48ac 105 }