kritzero
(Komkris)
1
ผมอยากให้ Nb-iot (arduino UNO) ส่งข้อมูลเข้า Blynk ได้ เลยไปพบ ว่ามีคนตั้ง server เพื่อใช้เป็นทางผ่านให้ส่งได้
แต่ตัวผมเขียน code อย่างไรก็ส่งข้อมูลได้เพียงแค่ 4 key ( coap.iSYNC_POST ) เท่านั้น พอเพิ่มตัวที่ 5 เข้าไป โปรแกรมจะ เพี้ยน ทุกครั้ง ( freeze บ้าง , restart บ้าง ) อยากจะส่งได้หลาย ๆ key พอจะมีคำแนะนำบ้างมั้ยครับ
ถ้าไม่เกี่ยวข้องขออภัยด้วยนะครับ
1 Likes
kritzero
(Komkris)
2
code นะครับ
#include <BC95.h>
#include <BC95Udp.h>
#include <CoAP.h>
#include <Dns.h>
#include <NTPClient.h>
#include <settings.h>
#include <Arduino.h>
#include <AltSoftSerial.h>
#include "BC95Udp.h"
#include "CoAP.h"
#include <DHT.h>;
#define DHTTYPE DHT22
#define DHTPIN 7
String status1;
String status2;
String Pin5;
String Pin6;
int P5;
int P6;
DHT dht(DHTPIN, DHTTYPE);
AltSoftSerial bc95serial;
BC95UDP udp;
Coap coap(udp);
#define iSYNC_KEY "5c5d82fa3860984ee2a93ba3"
void responseHandler(CoapPacket *packet, IPAddress remoteIP, int remotePort) {
char buff[6];
Serial.println("#iSYNC -> NBIoT");
Serial.print("#[");
sprintf(buff, "%d.%02d", packet->code >> 5, packet->code & 0b00011111);
Serial.print(buff);
Serial.print("]-> DATA : ");
for (int i=0; i< packet->payloadlen; i++)Serial.print((char) (packet->payload[i]));
Serial.println();
Serial.println("#----------------------------");
}
void setup() {
pinMode(5, INPUT_PULLUP); // sets the digital pin 5 as input
pinMode(6, INPUT_PULLUP); // sets the digital pin 6 as input
bc95serial.begin(9600);
BC95.begin(bc95serial);
BC95.reset();
Serial.begin(9600);
Serial.println(F("Starting..."));
while (!BC95.attachNetwork()) {
Serial.println("...");
delay(1000);
}
Serial.println(F("NB-IOT attached.."));
coap.response(responseHandler);
coap.start();
dht.begin();
}
long lasttime = millis();
void loop() {
coap.loop();
if(millis()-lasttime > 30000){
lasttime = millis();
float h = dht.readHumidity();
float t = dht.readTemperature();
String Temperature=String(t);
String Humidity=String(h);
String Pin5=String(digitalRead(5));//run
String Pin6=String(digitalRead(6));//alarm
//check status
if (digitalRead(5) == LOW)
{
status1 = String("1");
}
else
{
status1 = String("0");//V3
}
if (digitalRead(6) == LOW)
{
status2 = String("1");
coap.iSYNC_POST("5c697fd9f0a80317c5ceab10","alarm");//line alarm
}
else
{
status2 = String("0");//V4
}
//String payload="{\"Temperature\":"+Temperature+",\"Humidity\":"+Humidity+"}";
coap.iSYNC_POST("5c697ad7f0a80317c5cea404",Temperature);//V1
coap.iSYNC_POST("5c697c61f0a80317c5cea61c",Humidity);//V2
coap.iSYNC_POST("5c697cadf0a80317c5cea681",status1);//V3 run
//coap.iSYNC_POST("5c697cdbf0a80317c5cea6c1",status2);//V4 alarm
//coap.iSYNC_POST("5c6fa6a189a6d26444c924ff",Pin5);//pin5
//coap.iSYNC_POST("5c6fa80489a6d26444c92636",Pin6);//pin6
//delay(2000);
/*Serial.println(Pin5);
Serial.println(Pin6);
Serial.println(status1);
Serial.println(status2);
*/
//coap.iSYNC_POST("5c697fd9f0a80317c5ceab10","test");//V5 line
}
}
Remy_Martin
(Permpol Thanapunnamas)
3
เว็บไม่ได้จำกัดเนื้อหาอะไร มีอะไรก็ลองเอามาปรึกษา ได้ ถ้ารู้จะตอบให้นะครับ
ที่นี้มาถึงเรื่องที่ถามมา ส่วนตัวไม่เคยใช้ NB-iot เลยก็เลยไม่ค่อยแน่ใจแต่ก็พอจะจับทางมองภาพออกอยู่บ้าง เรื่องที่ว่า พอใส่คำสั่ง post ที่ 5 ลงไปแล้วเกิด restart ผมว่ามันทำงานไม่ทันรึป่าว ถ้าเรา เบิ้นคำสั่งมากไปบอร์ดส่งดาต้าไม่ทัน ก็ทำให้ เกิน การ restart หรือ wdt ทำงานได้ใน esp8266 ครับ เบื้องต้นลอง วาง delay สัก 100 ระหว่าง บรรทัด post ดูเพื่อไม่ให้บอร์ดมันทำงานกระชั้นชิดเกินไปครับ
1 Likes
kritzero
(Komkris)
4
ขอบคุณมากครับ เดี๋ยวจะลองดูครับ