2016-07-19 7 views
0

현재 Sparkfun esp2866 Wifi Shield를 사용하여 Arduino Uno를 통해 메시지를 보내려고합니다. Twilio와 Temboo 계정을 이미 설정했습니다. Temboo 및 Sparkfun esp2866 방패 라이브러리를 사용하여 아래의 모든 개인 정보를 추출한 코드를 생성했습니다.Esp8266 Sparkfun Wifi 방패와 Arduino가있는 SMS를 보내려면 어떻게해야합니까?

내 모든 Temboo 계정 정보를 포함하는 다른 파일을 내 코드에 포함시키지 않았습니다.

프로그램을 실행하려고하면 방패가 내 Wi-Fi 네트워크에 연결되지만 휴대 전화로 문자 메시지를 보내지 않습니다. 나는 IOT 장치로 일하는 데 많은 경험이 없으며 누군가가 도울 수 있는지 궁금해하고있었습니다. 모든 입력을 부탁드립니다!

미리 감사드립니다.

#include <SoftwareSerial.h> 
#include <SparkFunESP8266WiFi.h> 
#include <Temboo.h> 
#include "TembooAccount.h" 

const char mySSID[] = "ssid "; 
const char myPSK[] = " password"; 

ESP8266Client client; 


int numRuns = 1; // Execution count, so this doesn't run forever 
int maxRuns = 10; 

void setup() 
{ 
    // Serial Monitor is used to control the demo and view 
    // debug information. 
    Serial.begin(9600); 
    Serial.println("Serial started"); 
    serialTrigger(F("Press any key to begin.")); 

    // initializeESP8266() verifies communication with the WiFi 
    // shield, and sets it up. 
    initializeESP8266(); 

    // connectESP8266() connects to the defined WiFi network. 
    connectESP8266(); 

    // displayConnectInfo prints the Shield's local IP 
    // and the network it's connected to. 
    displayConnectInfo(); 


} 

void loop() 
{ 
    if (numRuns <= maxRuns) { 
    Serial.println("Running SendSMS - Run #" + String(numRuns++)); 
    delay(1000); 
    TembooChoreo SendSMSChoreo(client); 

    // Invoke the Temboo client 
    SendSMSChoreo.begin(); 

    // Set Temboo account credentials 
    SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT); 
    SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME); 
    SendSMSChoreo.setAppKey(TEMBOO_APP_KEY); 

    // Set Choreo inputs 
    String AuthTokenValue = ""; 
    SendSMSChoreo.addInput("AuthToken", AuthTokenValue); 
    String ToValue = ""; 
    SendSMSChoreo.addInput("To", ToValue); 
    String FromValue = ""; 
    SendSMSChoreo.addInput("From", FromValue); 
    String BodyValue = "Hello World"; 
    SendSMSChoreo.addInput("Body", BodyValue); 
    String AccountSIDValue = ""; 
    SendSMSChoreo.addInput("AccountSID", AccountSIDValue); 

    // Identify the Choreo to run 
    SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS"); 

    // Run the Choreo; when results are available, print them to serial 
    SendSMSChoreo.run(); 
    Serial.println("DONE!"); 
    while(SendSMSChoreo.available()) { 
     char c = SendSMSChoreo.read(); 
     Serial.print(c); 
    } 
    SendSMSChoreo.close(); 
    } 

    Serial.println("\nWaiting...\n"); 
    delay(30000); // wait 30 seconds between SendSMS calls 
} 


void initializeESP8266() 
{ 
    // esp8266.begin() verifies that the ESP8266 is operational 
    // and sets it up for the rest of the sketch. 
    // It returns either true or false -- indicating whether 
    // communication was successul or not. 
    // true 
    int test = esp8266.begin(); 
    if (test != true) 
    { 
    Serial.println(F("Error talking to ESP8266.")); 
    errorLoop(test); 
    } 
    Serial.println(F("ESP8266 Shield Present")); 
} 

void connectESP8266() 
{ 
    // The ESP8266 can be set to one of three modes: 
    // 1 - ESP8266_MODE_STA - Station only 
    // 2 - ESP8266_MODE_AP - Access point only 
    // 3 - ESP8266_MODE_STAAP - Station/AP combo 
    // Use esp8266.getMode() to check which mode it's in: 
    int retVal = esp8266.getMode(); 
    if (retVal != ESP8266_MODE_STA) 
    { // If it's not in station mode. 
    // Use esp8266.setMode([mode]) to set it to a specified 
    // mode. 
    retVal = esp8266.setMode(ESP8266_MODE_STA); 
    if (retVal < 0) 
    { 
     Serial.println(F("Error setting mode.")); 
     errorLoop(retVal); 
    } 
    } 
    Serial.println(F("Mode set to station")); 

    // esp8266.status() indicates the ESP8266's WiFi connect 
    // status. 
    // A return value of 1 indicates the device is already 
    // connected. 0 indicates disconnected. (Negative values 
    // equate to communication errors.) 
    retVal = esp8266.status(); 
    if (retVal <= 0) 
    { 
    Serial.print(F("Connecting to ")); 
    Serial.println(mySSID); 
    // esp8266.connect([ssid], [psk]) connects the ESP8266 
    // to a network. 
    // On success the connect function returns a value >0 
    // On fail, the function will either return: 
    // -1: TIMEOUT - The library has a set 30s timeout 
    // -3: FAIL - Couldn't connect to network. 
    retVal = esp8266.connect(mySSID, myPSK); 
    if (retVal < 0) 
    { 
     Serial.println(F("Error connecting")); 
     errorLoop(retVal); 
    } 
    } 
} 

void displayConnectInfo() 
{ 
    char connectedSSID[24]; 
    memset(connectedSSID, 0, 24); 
    // esp8266.getAP() can be used to check which AP the 
    // ESP8266 is connected to. It returns an error code. 
    // The connected AP is returned by reference as a parameter. 
    int retVal = esp8266.getAP(connectedSSID); 
    if (retVal > 0) 
    { 
    Serial.print(F("Connected to: ")); 
    Serial.println(connectedSSID); 
    } 

    // esp8266.localIP returns an IPAddress variable with the 
    // ESP8266's current local IP address. 
    IPAddress myIP = esp8266.localIP(); 
    Serial.print(F("My IP: ")); Serial.println(myIP); 
} 



// errorLoop prints an error code, then loops forever. 
void errorLoop(int error) 
{ 
    Serial.print(F("Error: ")); Serial.println(error); 
    Serial.println(F("Looping forever.")); 
    for (;;) 
    ; 
} 

// serialTrigger prints a message, then waits for something 
// to come in from the serial port. 
void serialTrigger(String message) 
{ 
    Serial.println(); 
    Serial.println(message); 
    Serial.println(); 
    while (!Serial.available()) 
    ; 
    while (Serial.available()) 
    Serial.read(); 
} 

답변

1

나는 Temboo에서 작동합니다.

공식적으로 ESP8266을 지원하지는 않지만 사람들이 Temboo와 ESP8266을 함께 사용할 수있는 몇 가지 포럼 게시물을 발견했습니다. 이 방법으로 문제가 해결되지 않으면

http://www.esp8266.com/viewtopic.php?p=24019

https://forum.arduino.cc/index.php?topic=337186.0

Temboo Support 연락 주시기 바랍니다 우리는 당신을 위해함으로써 문제의 원인이 무엇인지 파악하기 위해 최선을 다하겠습니다 : 여기 당신은 간다. 당신은이 파일에서 "AVR/pgmspace.h"모든 차례 나오는 수정해야

\Arduino\libraries\Temboo\src\Temboo.cpp 

\Arduino\libraries\Temboo\src\utility\ 
--ChoreoInputFormatter 
--ChoreoOutputFormatter 
--ChoreoPresetFormatter 
--TembooSession 
--tmbhmac 
--tmbmd5 

:

당신이 알고 있어야 할 정보의 주요 부분은 다음과 같은 Temboo 라이브러리 파일을 수정해야한다는 것입니다 "pgmspace.h"로 변경하십시오.

+1

감사합니다. 귀하의 의견을 바탕으로 원래 답변을 업데이트했습니다. –

관련 문제