2017年11月30日 星期四

使用Linkit7697 手動上傳數據至MCS

因為想用聯發科的MCS來Debug

發現MCS其實做的還不錯,可以玩的跟ThingSpeak有得拚

這篇是這MTK官網修改而來,請看這兒


首先呢! 需要註冊一個帳號,如果有了,就直接輸入吧!

然後選prototypeCreate


想先試一下從遠端控制Linkit7697



選擇Controller



再選擇Create test device



然後就得到了DeviceidDevicekeychannel id





完整的Code在此


#include <LWiFi.h>

#include "MCS.h"

char _lwifi_ssid[] ="家用AP的帳號";
char _lwifi_pass[] ="家用AP的密碼";

MCSDevice mcs("Deviceid", "Devicekey");
MCSControllerOnOff MySwitch("channel id");



void setup()

{

Serial.begin(9600);



mcs.addChannel(MySwitch);

Serial.println("Wi-Fi Start Connecting...");

while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }

Serial.println("Wi-Fi Connect Success");

while(!mcs.connected()) { mcs.connect(); }

Serial.println("MCS Connect Success");

Serial.begin(115200);

pinMode(LED_BUILTIN, OUTPUT);

}



void loop()

{

while (!mcs.connected()) {

mcs.connect();

if (mcs.connected()) { Serial.println("MCS Reconnect"); }

}

mcs.process(100);



if (MySwitch.updated()) {

Serial.print("Channel Update :");

Serial.println(MySwitch.value());



if (MySwitch.value()) {

digitalWrite(LED_BUILTIN, HIGH);



} else {

digitalWrite(LED_BUILTIN, LOW);

}

}

delay(1000);

}


Switch變化的時候,Linkit7697會收到一個”1”



這樣就變成”0”


原來是這樣啊!!! 相當的容易

這可以做什麼呢? Smart home SecuritySmart plugSmart bulb light!

想到的遠端控制系列全都可以做!

接下來就是主題了,這裡做Serial輸入整數上傳至MCS!



選擇Add

使用Display



Data Type的部份,MTK包山包海,還能送Video Stream,這樣讓我想做Video Doolbell! MTK你不要這麼專業好不好!?







最後我是選others,因為還想丟其他資料試試




抄下DeviceidDevicekeychannel id




太有趣啦! 就這麼成功了!

因為沒有溫度感測器,就手動輸入吧!


完整的Code在此
#include <LWiFi.h>
#include "MCS.h"
//#include "DHT.h"

int t;
int h;

char _lwifi_ssid[] = "家用AP的帳號";
char _lwifi_pass[] = "家用AP的密碼";

MCSDevice mcs("Deviceid", "Devicekey");
MCSDisplayInteger temp ("Devicechannel ");

void setup()
{
  Serial.begin(115200);

  mcs.addChannel(temp);
  Serial.println("Wi-Fi Start Connecting...");
  while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
  Serial.println("Wi-Fi Connect Success");
  while(!mcs.connected()) { mcs.connect(); }
  Serial.println("MCS Connect Success");
}

void loop()
{

   int switchStatus = digitalRead(2);
    String s = "";
 
    while (Serial.available()) {
    char c = (char) Serial.read();
        if(c!='\n')
        {
            s += c;
        }
        delay(1); 
    }
 
  while (!mcs.connected()) {
    mcs.connect();
    if (mcs.connected()) { Serial.println("MCS Reconnect"); }
  }
  mcs.process(100);

  temp.set(s.toInt());

  Serial.print("input value : ");
  Serial.println(s.toInt());


  delay(1000);
}


!!! 沒有溫度感測器也能玩MCS!

然後再修改一下Code如下,看Library最快能到多快丟一串資料



#include <LWiFi.h>
#include "MCS.h"
#include "DHT.h"

int t;
int h;

char _lwifi_ssid[] = "家用AP的帳號";
char _lwifi_pass[] = "家用AP的密碼";

MCSDevice mcs("Deviceid", "Devicekey");
MCSDisplayInteger Devicechannel("Devicechannel ");

void setup()
{
  Serial.begin(9600);

  mcs.addChannel(temp);
  Serial.println("Wi-Fi Start Connecting...");
  while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
  Serial.println("Wi-Fi Connect Success");
  while(!mcs.connected()) { mcs.connect(); }
  Serial.println("MCS Connect Success");
  Serial.begin(9600);
}

void loop()
{

  while (!mcs.connected()) {
    mcs.connect();
    if (mcs.connected()) { Serial.println("MCS Reconnect"); }
  }

  temp.set(j);

  Serial.print("input value : ");
  Serial.println(j);

j++;

if(j==100)

   j=0;

}

唉喲! 不錯哦! Debug有一點FU了!

Linkit7697應該是每半秒丟一次到MCS上

而MCS的前端數據也好端端的顯示出來




這代表Firmware要修正一些,MQTT不要丟這麼快,需要限制時間

Back_end的部份也有一些問題要修正(再多串聯幾個Linkit7697試試!)


社群接下來想導入Video Doorbell !


What!? 你也想玩!? 那快來一起呀! 社群內神人愈來愈多了!

註:發現有舊版的Linkit7697如果沒有更新Firmware,在連MCS的時候會先出現連線成功,然後再一直無限的Reconnect,這個時候代表要更新Firmware --> 參考這個



加入我們吧!



FB設定搶先看的方式

設定搶先看的兩種方式 A1. 先到我家的日常粉絲團按下 …( 紅框處 ) A2. 按下追蹤中 ( 紅框處 ) A3. 按下搶先看 ( 紅框處 ) A4. 完成!!! 另一種方式 ...