【mbed OS5対応バージョン】データの保存、更新、取得ができるWebサービス「milkcocoa」に接続し、データのプッシュ、送信、取得ができるライブラリです。 https://mlkcca.com/

Dependents:   mbed-os-example-wifi-milkcocoa MilkcocoaOsSample_Eth MilkcocoaOsSample_ESP8266 MilkcocoaOsSample_Eth_DigitalIn

Revision:
12:6eafbe763882
Parent:
9:5c195c1036da
--- a/Milkcocoa.cpp	Thu Sep 07 01:26:48 2017 +0000
+++ b/Milkcocoa.cpp	Mon Feb 05 23:32:22 2018 +0000
@@ -88,6 +88,15 @@
 	return(json_msg);
 }
 
+Milkcocoa::Milkcocoa(NetworkInterface* nif){
+	ipstack = new MQTTInterface(nif);
+	client = new MClient(ipstack);
+	
+	for (int i=0; i<MILKCOCOA_SUBSCRIBERS; i++) {
+		milkcocoaSubscribers[i] = NULL;
+	}
+}
+
 Milkcocoa::Milkcocoa(NetworkInterface* nif, const char *host, uint16_t port, const char *_app_id, const char *client_id){
 	ipstack = new MQTTInterface(nif);
 	client = new MClient(ipstack);
@@ -138,6 +147,15 @@
 	return new Milkcocoa(nif, host, port, _app_id, client_id, session);
 }
 
+void Milkcocoa::set_network_settinng(const char *host, uint16_t port, const char *_app_id, const char *client_id){
+	strcpy(servername,host);
+	portnum = port;
+	strcpy(app_id,_app_id);
+	strcpy(_clientid,client_id);
+	strcpy(username,"sdammy");
+	strcpy(password,app_id);
+}
+
 void Milkcocoa::connect() {
 
 	if(client->isConnected())
@@ -238,26 +256,34 @@
 
 void Milkcocoa::loop() {
 	connect();
+#ifndef __MILKCOCOA_THREAD
+	send_massage();
+#endif
 	client->yield(1);
+}
 
-#ifndef __MILKCOCOA_THREAD
-	osEvent evt = message_box.get(0);
-	if (evt.status == osEventMail) {
-		milkcocoa_message_t *message = (milkcocoa_message_t*)evt.value.p;
-		MQTT::Message mq_message;
-		if(message != NULL) {
-			mq_message.qos = MQTT::QOS0;
-			mq_message.retained = 0;
-			mq_message.dup = false;
-			mq_message.payload = (void*)message->message;
-			mq_message.payloadlen = strlen(message->message);
-		
-			client->publish(message->topic, mq_message);
-			
-			message_box.free(message);
+void Milkcocoa::send_massage(){
+	while(1){
+		osEvent evt = message_box.get(0);
+		if (evt.status == osEventMail) {
+			milkcocoa_message_t *message = (milkcocoa_message_t*)evt.value.p;
+			MQTT::Message mq_message;
+			if(message != NULL) {
+				mq_message.qos = MQTT::QOS0;
+				mq_message.retained = 0;
+				mq_message.dup = false;
+				mq_message.payload = (void*)message->message;
+				mq_message.payloadlen = strlen(message->message);
+				printf("milkcocoa send\r\n");
+				client->publish(message->topic, mq_message);
+				
+				message_box.free(message);
+			}
+		}
+		else{
+			break;
 		}
 	}
-#endif
 }
 
 bool Milkcocoa::on(const char *path, const char *event, GeneralFunction cb) {