use Dussolved_oxygen_sensor_on_wifi
Dependencies: watersenor_and_temp_code MQTT NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed
Fork of DS1820_IDW01M1 by
Diff: main.cpp
- Revision:
- 5:42113ea1b319
- Parent:
- 4:3642f63079ec
- Child:
- 6:54965cdc7955
- Child:
- 7:8eaef8890eee
--- a/main.cpp Sat Nov 04 00:14:23 2017 +0800 +++ b/main.cpp Mon Nov 06 15:04:43 2017 +0000 @@ -10,18 +10,17 @@ #define MQTT_MAX_PACKET_SIZE 250 #define MQTT_MAX_PAYLOAD_SIZE 300 //Configuration value needed to connect Red-node -#define BROKER_URL "192.168.20.116"; +#define BROKER_URL "192.168.1.110"; #define MQTT_PORT 1883 //MQTT use Topic -#define TOPIC1 "1" -#define TOPIC2 "3" +#define TOPIC "1" #define SUB_TOPIC "LED" //Wifi network -#define SSID "tnta" -#define PASSW "tnta2355818" - +#define SSID "18-2F" +#define PASSW "062432779" +Serial serial(USBTX, USBRX); DigitalOut myled(LED1); //BME280 bmpSensor; int connack_rc = 0; // MQTT connack return code @@ -35,18 +34,11 @@ int retryAttempt = 0; char subscription_url[MQTT_MAX_PAYLOAD_SIZE]; - - -Serial serial(USBTX, USBRX); -DS1820 ds1820(PA_8); // substitute PA_9 with actual mbed pin name connected to the DS1820 data pin - +MQTT::Message message; +MQTTString TopicName={TOPIC}; +MQTT::MessageData MsgData1(TopicName, message); - -MQTT::Message message; -MQTTString TopicName1={TOPIC1}; -MQTTString TopicName2={TOPIC2}; -MQTT::MessageData MsgData1(TopicName1, message); -MQTT::MessageData MsgData2(TopicName2, message); +BME280 BME280; void subscribe_LED(char* msg){ int value = atoi(msg); @@ -86,8 +78,7 @@ LOG("Nucleo IP ADDRESS: %s\n\r", WiFi.get_ip_address()); LOG("Nucleo MAC ADDRESS: %s\n\r", WiFi.get_mac_address()); LOG("Server Hostname: %s port: %d\n\r", hostname, MQTT_PORT); - LOG("Topic1: %s\n\r", TOPIC1); - LOG("Topic2: %s\n\r", TOPIC2); + LOG("Topic1: %s\n\r", TOPIC); //need subscrie LOG("=====================================\n\r"); netConnecting = true; @@ -150,13 +141,13 @@ wait(timeout); } } -int publish (MQTT::Client<MQTTWiFi, Countdown, MQTT_MAX_PACKET_SIZE>* client,MQTTWiFi* ipstack,int data){ +int publish(MQTT::Client<MQTTWiFi, Countdown, MQTT_MAX_PACKET_SIZE>* client,MQTTWiFi* ipstack,int data){ MQTT::Message message; - char *pubTopic = TOPIC1; + char *pubTopic = TOPIC; char buf[MQTT_MAX_PAYLOAD_SIZE]; - printf("Temp = %d\n", data); + printf("Dissolved oxygen = %d\n", data); sprintf(buf,"%d",data); message.qos = MQTT::QOS0; message.retained = false; @@ -168,6 +159,37 @@ return client->publish(pubTopic, message); } +int ASCIIChangeInteger(int datain) +{ + int databuffer1; + if(datain >= 0x30) + { + if(datain >= 0x3A) + { + serial.printf("ASCIIChangeInteger datain too big \n"); + } + else + { + databuffer1 = datain - 0x30; + } + } + else + { + serial.printf("ASCIIChangeInteger datain too small \n"); + } + serial.printf("ASCIIChangeInteger databuffer1 : %d \n", databuffer1); + return databuffer1; +} + +int Conversionfunction(int Tensdigit, int Digits, int TheFirstDecimalPlace, int TheSecondDecimalPlace) +{ + int databuffer; + serial.printf("dataTensdigit: %d\n",Tensdigit); + serial.printf("Digits: %d\n",Digits); + databuffer = ASCIIChangeInteger(Tensdigit)*10 + ASCIIChangeInteger(Digits); + serial.printf("datanumber: %d\n",databuffer); + return databuffer; +} int main() { myled =0; @@ -189,24 +211,22 @@ printf("ip: %s\n",ipstack.getWiFi().get_ip_address() ); MQTT::Client<MQTTWiFi, Countdown, MQTT_MAX_PACKET_SIZE> client(ipstack); - attemptConnect(&client, &ipstack); - + attemptConnect(&client, &ipstack); + sensor.format(8,Serial::None,1); int count = 0; - int databuffer=0; + int databuffer3 = 0; // tyeld.start(); while (true){ - if(!ds1820.begin()) - return -1; - else - ds1820.startConversion(); - + BME280.receive(); + serial.printf("data 1 : %d\n",BME280.datareadfuiction(0)); + serial.printf("data 2 : %d\n",BME280.datareadfuiction(1)); + serial.printf("data 3 : %d\n",BME280.datareadfuiction(2)); + serial.printf("data 4 : %d\n",BME280.datareadfuiction(3)); + serial.printf("data 5 : %d\n",BME280.datareadfuiction(4)); + databuffer3 = Conversionfunction(BME280.datareadfuiction(3),BME280.datareadfuiction(4),BME280.datareadfuiction(0),BME280.datareadfuiction(1)); if (++count == 3) { // Publish a message every second - serial.printf("temp = %3.1f\r\n", ds1820.read()); // read temperature - databuffer = ds1820.read(); - ds1820.startConversion(); // start temperature conversion - wait(1.0); // let DS1820 complete the temperature conversion - if (publish(&client, &ipstack,databuffer) != 0) + if (publish(&client, &ipstack,databuffer3) != 0) { attemptConnect(&client, &ipstack); // if we have lost the connection } @@ -220,4 +240,4 @@ //client.yield(10); // allow the MQTT client to receive messages // printf ("tyeld: %d\n\r",tyeld.read_ms()-start); } -} \ No newline at end of file +}