Vote Controller IOT

Dependencies:   MQTT

Fork of PGO6_VoteController_template by Jens de hoog

Revision:
3:b2c9de2f45c7
Parent:
2:5b7d055dbc91
--- a/main.cpp	Tue Oct 31 09:01:56 2017 +0000
+++ b/main.cpp	Mon Nov 06 14:18:21 2017 +0000
@@ -9,7 +9,18 @@
 #include "MQTTmbed.h"
 #include "MQTTClient.h"
 
-char* topic;
+using namespace MQTT;
+char* topic = "dansvloerVincent/votes";
+char buf[100];
+
+
+volatile bool button1_pressed;   // Used in the main loop
+volatile bool button1_enabled = true;   // Used for debouncing
+volatile int multiclick_state;   // Counts how many clicks occured in the time slot, used in main loop
+volatile bool button1_busy;      // Informs the mainloop that the user is clicking the button
+volatile bool countSecond = false;
+volatile bool readyClick = false;
+int arrivedcount = 0;
 
 /**
     TODO
@@ -41,8 +52,78 @@
             sendMessage(&client, topic, buf, qos, retained, duplicate)
 */
 
+void messageArrived(MQTT::MessageData& md)
+{
+    MQTT::Message &message = md.message;
+    printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
+    printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
+    ++arrivedcount;
+}
+
 int main(int argc, char* argv[])
 {
+     printf("Starting program \r\nConnecting...\r\n");
+     EthernetInterface eInterface;
+     //eInterface.set_network("192.168.0.95","255.255.255.0","192.168.0.1");
+     eInterface.connect();
+     
+     
+     //const char *ip = eInterface.get_ip_address();
+    printf("IP address is: %s\r\n", eInterface.get_ip_address());
+     
+     //________________________________________________________________
+     NetworkInterface *network = &eInterface;
+    if (!network) {
+        return -1;
+    }
+
+    MQTTNetwork mqttNetwork(network);
+
+    MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
+
+    const char* hostname = "143.129.39.151";
+    //const char* hostname = "broker.mqttdashboard.com";
+    int port = 1883;
+    printf("Connecting to %s:%d\r\n", hostname, port);
+    int rc = mqttNetwork.connect(hostname, port);
+    if (rc != 0)
+        printf("rc from TCP connect is %d\r\n", rc);
+
+    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+    data.MQTTVersion = 3;
+    data.clientID.cstring = "kjell";
+    data.username.cstring = "smartcity";
+    data.password.cstring = "smartcity";
+    if ((rc = client.connect(data)) != 0)
+        printf("rc from MQTT connect is %d\r\n", rc);
+  
+    MQTT::Message message;
+    message.qos = MQTT::QOS1;
+     InterruptIn button(USER_BUTTON);
+     button.fall(button1_onpressed_cb);
+     while(multiclick_state < 4){
+        if(readyClick){
+            printf("TimesClicked %d \r\n" , multiclick_state);
+                                   
+            if(multiclick_state == 1){                
+            sprintf(buf,"likeKjell\n");  
+            }else if(multiclick_state == 2 || multiclick_state == 3){
+            sprintf(buf,"dislikeKjell\n");
+            }
+            printf("buf : %s\r\n" ,buf);
+            message.payload = (void*)buf;
+            message.payloadlen = strlen(buf)+1;
+            rc = client.publish(topic, message);
+                        
+            readyClick = false;          
+        }
+    }
+
+    if ((rc = client.disconnect()) != 0)
+        printf("rc from disconnect was %d\r\n", rc);
+        
+    mqttNetwork.disconnect();
+    printf("exiting program...\r\n");   
 
     return 0;
 }