2016-04-29 2 views
0

Я работаю над проектом, в котором я отправляю временную метку и Arduino Yun в Google Spreadsheet. У меня есть датчик PIR, подключенный к Yun. Когда обнаружено движение, я отправляю значение в электронную таблицу. В настоящее время значение идет в один столбец.Данные от Arduino Yun To Google Spreadsheet

enter image description here

Это не идеально, потому что я хочу, чтобы создать таблицу из данных, поэтому я хочу, дату и время, чтобы быть в двух разных колонках. Как образец ниже.

enter image description here

Arduino Sketch

#include <Bridge.h> 
#include <Temboo.h> 
#include "TembooAccount.h" 
#include <Process.h> 

int pir_pin = 8; 

Process date; 
int hours, minutes, seconds; 
int lastSecond = -1; 

const String GOOGLE_CLIENT_ID = ""; 
const String GOOGLE_CLIENT_SECRET = ""; 
const String GOOGLE_REFRESH_TOKEN = ""; 

const String SPREADSHEET_TITLE = ""; 

int numRuns = 1; 
int maxRuns = 100; 

void setup() { 

    Serial.begin(9600); 
    delay(4000); 

    pinMode(pir_pin, INPUT); 

    while (!Serial); 
    Serial.println("Time Check"); 

    if (!date.running()) { 
    date.begin("date"); 
    date.addParameter("+%T %D"); 
    date.run(); 
    } 

    Serial.print("Initializing the bridge... "); 
    Bridge.begin(); 
    Serial.println("Done!\n"); 
} 

void loop() 
{ 
    if (digitalRead(pir_pin) == true) { 

    if (!date.running()) { 
     date.begin("date"); 
     date.addParameter("+%T %D"); 
     date.run(); 
    } 

    while (date.available() > 0) { 
     String timeString = date.readString(); 

     int firstColon = timeString.indexOf(":"); 
     int secondColon = timeString.lastIndexOf(":"); 

     String hourString = timeString.substring(0, firstColon); 
     String minString = timeString.substring(firstColon + 1, secondColon); 
     String secString = timeString.substring(secondColon + 1); 

     hours = hourString.toInt(); 
     minutes = minString.toInt(); 
     lastSecond = seconds; 
     seconds = secString.toInt(); 

     if (numRuns <= maxRuns) { 

     Serial.println("Running AppendRow - Run #" + String(numRuns++)); 

     unsigned long now = millis(); 

     Serial.println("Getting sensor value...");  
     Serial.println("Appending value to spreadsheet...");  

     TembooChoreo AppendRowChoreo; 

     AppendRowChoreo.begin();  
     AppendRowChoreo.setAccountName(TEMBOO_ACCOUNT); 
     AppendRowChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME); 
     AppendRowChoreo.setAppKey(TEMBOO_APP_KEY);  
     AppendRowChoreo.setChoreo("/Library/Google/Spreadsheets/AppendRow"); 

     AppendRowChoreo.addInput("ClientID", GOOGLE_CLIENT_ID); 

     AppendRowChoreo.addInput("ClientSecret", GOOGLE_CLIENT_SECRET); 

     AppendRowChoreo.addInput("RefreshToken", GOOGLE_REFRESH_TOKEN); 

     AppendRowChoreo.addInput("SpreadsheetTitle", SPREADSHEET_TITLE); 

     String rowData = timeString;  
     AppendRowChoreo.addInput("RowData", rowData);   
     unsigned int returnCode = AppendRowChoreo.run();  

     if (returnCode == 0) { 
      Serial.println("Success! Appended " + rowData); 
      Serial.println(""); 
     } else { 

      while (AppendRowChoreo.available()) { 
      char c = AppendRowChoreo.read(); 
      Serial.print(c); 
      } 
     } 
     AppendRowChoreo.close(); 
     } 
     Serial.println("Waiting..."); 
     delay(5000); 
    } 
    } 
} 

Как бы я изменить код для достижения выше.

ответ

0

Я работаю для Temboo.

Вы можете установить несколько столбцов в AppendRow Choreo, разделив каждое значение в rowData запятой. Для вашего случая вы хотите, чтобы ваш rowData выглядел следующим образом: «19: 35: 26,4/22/2016». Вы можете попробовать что-то вроде timeString.replace(" ",",");.

Надеюсь, это поможет. Если у вас есть другие вопросы, не стесняйтесь обращаться к нам по адресу https://temboo.com/support

Смежные вопросы