From 45dd3e3188e68b50e94ee59092c476339bdde0f7 Mon Sep 17 00:00:00 2001 From: kevinbuck-temboo Date: Sun, 12 Mar 2017 19:21:54 -0400 Subject: [PATCH] release1.2.1 --- .../TembooDeviceConfig.ino} | 2 +- .../TembooDeviceConfig/TembooDeviceConfig.ino | 99 +++++++++++++++++++ library.properties | 2 +- src/Temboo.cpp | 28 ++++++ src/Temboo.h | 33 +++++-- src/TembooMQTTEdgeDevice.h | 2 +- src/TembooMonitoring.cpp | 2 +- src/TembooYunShield.h | 7 +- src/utility/TembooGPIO.c | 4 - src/utility/TembooWebSocketRequestHandles.h | 2 + 10 files changed, 163 insertions(+), 18 deletions(-) rename examples/ArduinoYun/{CloudControlsConfig/CloudControlsConfig.ino => TembooDeviceConfig/TembooDeviceConfig.ino} (98%) create mode 100644 examples/YunShield/TembooDeviceConfig/TembooDeviceConfig.ino diff --git a/examples/ArduinoYun/CloudControlsConfig/CloudControlsConfig.ino b/examples/ArduinoYun/TembooDeviceConfig/TembooDeviceConfig.ino similarity index 98% rename from examples/ArduinoYun/CloudControlsConfig/CloudControlsConfig.ino rename to examples/ArduinoYun/TembooDeviceConfig/TembooDeviceConfig.ino index 2e96df2..2e87579 100644 --- a/examples/ArduinoYun/CloudControlsConfig/CloudControlsConfig.ino +++ b/examples/ArduinoYun/TembooDeviceConfig/TembooDeviceConfig.ino @@ -1,4 +1,4 @@ -// Copyright 2016, Temboo Inc. +// Copyright 2017, Temboo Inc. #include diff --git a/examples/YunShield/TembooDeviceConfig/TembooDeviceConfig.ino b/examples/YunShield/TembooDeviceConfig/TembooDeviceConfig.ino new file mode 100644 index 0000000..22d55f7 --- /dev/null +++ b/examples/YunShield/TembooDeviceConfig/TembooDeviceConfig.ino @@ -0,0 +1,99 @@ +// Copyright 2017, Temboo Inc. + +#include + +void setup() { + // initialize the Bridge + Bridge.begin(); + Serial.begin(9600); + Process p; + + //intro message + Serial.println("**** Temboo Cloud Controls ****\n"); + + // update the package list + Serial.print("Updating package listings..."); + p.runShellCommand("opkg update"); + int returnCode = p.exitValue(); + if (returnCode == 0) { + Serial.println("Success!"); + } else { + Serial.println("Failed. Make sure your device is connected to the internet properly."); + while(p.available()) { + char c = p.read(); + Serial.print(c); + } + return; + } + Serial.println(); + // upgrade the Temboo package + Serial.print("Updating Temboo..."); + p.runShellCommand("opkg install http://downloads.arduino.cc/openwrtyun/1/packages/temboo_1.3.1-1_ar71xx.ipk --force-depends"); + returnCode = p.exitValue(); + if (returnCode == 0) { + Serial.println("Success!"); + } else { + Serial.println("Failed."); + Serial.println("Error number: " +String(returnCode)); + while(p.available()) { + char c = p.read(); + Serial.print(c); + } + return; + } + Serial.println(); + + // install python openssl to allow for for ssl connections + Serial.print("Installing python-openssl..."); + p.runShellCommand("opkg install python-openssl"); + returnCode = p.exitValue(); + if (returnCode == 0) { + Serial.println("Success!"); + } else { + Serial.println("Failed."); + while(p.available()) { + char c = p.read(); + Serial.print(c); + } + return; + } + Serial.println(); + + // Installing twisted web to work with CoAP gateway + Serial.print("Installing twisted-web..."); + p.runShellCommand("opkg install http://downloads.arduino.cc/openwrtyun/1/packages/twisted-web_2.5.0-1_ar71xx.ipk --force-depends"); + returnCode = p.exitValue(); + if (returnCode == 0) { + Serial.println("Success!"); + } else { + Serial.println("Failed."); + while(p.available()) { + char c = p.read(); + Serial.print(c); + } + return; + } + Serial.println(); + + // Configuring zope + Serial.print("Configuring zope..."); + p.runShellCommand("opkg install http://downloads.arduino.cc/openwrtyun/1/packages/zope-interface_2.5.0-1_ar71xx.ipk --force-depends"); + returnCode = p.exitValue(); + if (returnCode == 0) { + p.runShellCommand("touch /usr/lib/python2.7/site-packages/zope/__init__.py"); + Serial.println("Success!"); + } else { + Serial.println("Failed."); + while(p.available()) { + char c = p.read(); + Serial.print(c); + } + return; + } + + Serial.println("Update Complete - your Yun is ready for Cloud Controls!"); +} + +void loop() { + // do nothing +} diff --git a/library.properties b/library.properties index 44486fc..54bfb0e 100644 --- a/library.properties +++ b/library.properties @@ -6,5 +6,5 @@ paragraph=Use this library to connect your Arduino or Genuino board to Temboo, m category=Communication url=http://www.temboo.com/arduino architectures=* -version=1.2.0 +version=1.2.1 core-dependencies=arduino (>=1.5.0) \ No newline at end of file diff --git a/src/Temboo.cpp b/src/Temboo.cpp index 4df1950..ebae3a8 100644 --- a/src/Temboo.cpp +++ b/src/Temboo.cpp @@ -156,6 +156,18 @@ void TembooChoreo::addInput(const String& inputName, const char* inputValue) { m_inputs.put(inputName.c_str(), inputValue); } +void TembooChoreo::addInputWithSensor(const String& inputName, const String& inputValue) { + m_expressions.put(inputName.c_str(), inputValue.c_str()); +} + +void TembooChoreo::addInputWithSensor(const char* inputName, const String& inputValue) { + m_expressions.put(inputName, inputValue.c_str()); +} + +void TembooChoreo::addInputWithSensor(const char* inputName, const char* inputValue) { + m_expressions.put(inputName, inputValue); +} + void TembooChoreo::addInputExpression(const String& inputName, const String& inputValue) { m_expressions.put(inputName.c_str(), inputValue.c_str()); } @@ -168,6 +180,22 @@ void TembooChoreo::addInputExpression(const char* inputName, const char* inputVa m_expressions.put(inputName, inputValue); } +void TembooChoreo::addSensorValue(const char* sensorName, int sensorValue, const char* conversion) { + m_sensors.put(sensorName, sensorValue, conversion, NULL, NULL, NULL, NULL, NULL); +} + +void TembooChoreo::addSensorValue(const char* sensorName, int sensorValue) { + m_sensors.put(sensorName, sensorValue, NULL, NULL, NULL, NULL, NULL, NULL); +} + +void TembooChoreo::addSensorValue(const char* sensorName, int sensorValue, const char* conversion, const char* calibrationValue) { + m_sensors.put(sensorName, sensorValue, conversion, NULL, NULL, NULL, NULL, calibrationValue); +} + +void TembooChoreo::addSensorValue(const char* sensorName, int sensorValue, const char* rawLow, const char* rawHigh, const char* scaleLow, const char* scaleHigh) { + m_sensors.put(sensorName, sensorValue, NULL, rawLow, rawHigh, scaleLow, scaleHigh, NULL); +} + void TembooChoreo::addSensorInput(const char* sensorName, int sensorValue, const char* conversion) { m_sensors.put(sensorName, sensorValue, conversion, NULL, NULL, NULL, NULL, NULL); } diff --git a/src/Temboo.h b/src/Temboo.h index 62a1fff..47c5579 100644 --- a/src/Temboo.h +++ b/src/Temboo.h @@ -53,10 +53,15 @@ class TembooChoreo : public Process { void setSettingsFileToRead(const String& filePath) { addParameter("-r" + filePath);} void setGatewayAddress(const String& addr) { addParameter("-s" + addr);} void addInputExpression(const String& inputName, const String& inputValue) { addParameter("-f" + inputName + ":" + inputValue);} + void addInputWithSensor(const String& inputName, const String& inputValue) { addParameter("-f" + inputName + ":" + inputValue);} void addSensorInput(const String& sensorName, long sensorValue, const String& conversion) {addParameter("-n" + sensorName + ":" + String(sensorValue) + ":" + conversion);} void addSensorInput(const String& sensorName, long sensorValue) {addParameter("-v" + sensorName + ":" + String(sensorValue));} void addSensorInput(const String& sensorName, long sensorValue, const String& conversion, const String& calibrationValue) {addParameter("-b" + sensorName + ":" + String(sensorValue) + ":" + conversion + ":" + calibrationValue);} void addSensorInput(const String& sensorName, long sensorValue, const String& rawLow, const String& rawHigh, const String& scaleLow, const String& scaleHigh) {addParameter("-m" + sensorName + ":" + String(sensorValue) + ":" + rawLow+ ":" + rawHigh+ ":" + scaleLow+ ":" + scaleHigh);} + void addSensorValue(const String& sensorName, long sensorValue, const String& conversion) {addParameter("-n" + sensorName + ":" + String(sensorValue) + ":" + conversion);} + void addSensorValue(const String& sensorName, long sensorValue) {addParameter("-v" + sensorName + ":" + String(sensorValue));} + void addSensorValue(const String& sensorName, long sensorValue, const String& conversion, const String& calibrationValue) {addParameter("-b" + sensorName + ":" + String(sensorValue) + ":" + conversion + ":" + calibrationValue);} + void addSensorValue(const String& sensorName, long sensorValue, const String& rawLow, const String& rawHigh, const String& scaleLow, const String& scaleHigh) {addParameter("-m" + sensorName + ":" + String(sensorValue) + ":" + rawLow+ ":" + rawHigh+ ":" + scaleLow+ ":" + scaleHigh);} void setDeviceName(const String& deviceName) {addParameter("-d" + deviceName);} void setDeviceType(const String& deviceType) {addParameter("-t" + deviceType);} }; @@ -112,12 +117,12 @@ class TembooChoreo : public Stream { void setAppKey(const String& appKey); void setAppKey(const char* appKey); - // sets the name of the choreo to be executed. + // Sets the name of the choreo to be executed. // (required) void setChoreo(const String& choreoPath); void setChoreo(const char* choreoPath); - // sets the name of the saved inputs to use when executing the choreo + // Sets the name of the saved inputs to use when executing the choreo // (optional) void setSavedInputs(const String& savedInputsName); void setSavedInputs(const char* savedInputsName); @@ -134,25 +139,35 @@ class TembooChoreo : public Stream { void setDeviceName(const String& deviceName); void setDeviceName(const char* deviceName); - // sets an input to be used when executing a choreo. + // Sets an input to be used when executing a choreo. // (optional or required, depending on the choreo being executed.) void addInput(const String& inputName, const String& inputValue); void addInput(const char* inputName, const char* inputValue); void addInput(const char* inputName, const String& inputValue); void addInput(const String& inputName, const char* inputValue); + // Sets a Choreo input that contains a sensor value to be converted by Temboo + void addInputWithSensor(const String& inputName, const String& inputValue); + void addInputWithSensor(const char* inputName, const String& inputValue); + void addInputWithSensor(const char* inputName, const char* inputValue); + // Keeping legacy methods void addInputExpression(const String& inputName, const String& inputValue); void addInputExpression(const char* inputName, const String& inputValue); void addInputExpression(const char* inputName, const char* inputValue); - // sets in input that is using a sensor value. Different parameters are needed depending + // Sets in input that is using a sensor value. Different parameters are needed depending // on the type of sensor being used. + void addSensorValue(const char* sensorName, int sensorValue, const char* conversion); + void addSensorValue(const char* sensorName, int sensorValue); + void addSensorValue(const char* sensorName, int sensorValue, const char* conversion, const char* calibrationValue); + void addSensorValue(const char* sensorName, int sensorValue, const char* rawLow, const char* rawHigh, const char* scaleLow, const char* scaleHigh); + // Keeping legacy methods void addSensorInput(const char* sensorName, int sensorValue, const char* conversion); void addSensorInput(const char* sensorName, int sensorValue); void addSensorInput(const char* sensorName, int sensorValue, const char* conversion, const char* calibrationValue); void addSensorInput(const char* sensorName, int sensorValue, const char* rawLow, const char* rawHigh, const char* scaleLow, const char* scaleHigh); - - // sets an output filter to be used to process the choreo output + + // Sets an output filter to be used to process the choreo output // (optional) void addOutputFilter(const char* filterName, const char* filterPath, const char* variableName); void addOutputFilter(const String& filterName, const char* filterPath, const char* variableName); @@ -163,12 +178,12 @@ class TembooChoreo : public Stream { void addOutputFilter(const char* filterName, const String& filterPath, const String& variableName); void addOutputFilter(const String& filterName, const String& filterPath, const String& variableName); - // run the choreo using the current input info + // Run the choreo using the current input info int run(); - // run the choreo with a user specified timeout + // Run the choreo with a user specified timeout int run(uint16_t timeoutSecs); - // run the choreo on the Temboo server at the given IP address and port + // Run the choreo on the Temboo server at the given IP address and port int run(IPAddress addr, uint16_t port); int run(IPAddress addr, uint16_t port, uint16_t timeoutSecs); diff --git a/src/TembooMQTTEdgeDevice.h b/src/TembooMQTTEdgeDevice.h index 06976ed..4c4d0a3 100644 --- a/src/TembooMQTTEdgeDevice.h +++ b/src/TembooMQTTEdgeDevice.h @@ -1,7 +1,7 @@ /* ############################################################################### # -# Temboo MQTT edge device library +# Temboo MQTT Edge Device library # # Copyright (C) 2017, Temboo Inc. # diff --git a/src/TembooMonitoring.cpp b/src/TembooMonitoring.cpp index 7bc820c..fa400d1 100644 --- a/src/TembooMonitoring.cpp +++ b/src/TembooMonitoring.cpp @@ -23,7 +23,7 @@ #include #include -#ifdef ARDUINO_ARCH_SAMD +#if defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM) #include "avr/dtostrf.h" #endif #include "utility/TembooGlobal.h" diff --git a/src/TembooYunShield.h b/src/TembooYunShield.h index 4ce3993..e952a83 100644 --- a/src/TembooYunShield.h +++ b/src/TembooYunShield.h @@ -52,10 +52,15 @@ class TembooYunShieldChoreo : public Process { void setSettingsFileToRead(const String& filePath) { addParameter("-r" + filePath);} void setGatewayAddress(const String& addr) { addParameter("-s" + addr);} void addInputExpression(const String& inputName, const String& inputValue) { addParameter("-f" + inputName + ":" + inputValue);} + void addInputWithSensor(const String& inputName, const String& inputValue) { addParameter("-f" + inputName + ":" + inputValue);} void addSensorInput(const String& sensorName, long sensorValue, const String& conversion) {addParameter("-n" + sensorName + ":" + String(sensorValue) + ":" + conversion);} void addSensorInput(const String& sensorName, long sensorValue) {addParameter("-v" + sensorName + ":" + String(sensorValue));} - void addSensorInput(const String& sensorName, long sensorValue, const String& rawLow, const String& rawHigh, const String& scaleLow, const String& scaleHigh) {addParameter("-m" + sensorName + ":" + String(sensorValue) + ":" + rawLow+ ":" + rawHigh+ ":" + scaleLow+ ":" + scaleHigh);} void addSensorInput(const String& sensorName, long sensorValue, const String& conversion, const String& calibrationValue) {addParameter("-b" + sensorName + ":" + String(sensorValue) + ":" + conversion + ":" + calibrationValue);} + void addSensorInput(const String& sensorName, long sensorValue, const String& rawLow, const String& rawHigh, const String& scaleLow, const String& scaleHigh) {addParameter("-m" + sensorName + ":" + String(sensorValue) + ":" + rawLow+ ":" + rawHigh+ ":" + scaleLow+ ":" + scaleHigh);} + void addSensorValue(const String& sensorName, long sensorValue, const String& conversion) {addParameter("-n" + sensorName + ":" + String(sensorValue) + ":" + conversion);} + void addSensorValue(const String& sensorName, long sensorValue) {addParameter("-v" + sensorName + ":" + String(sensorValue));} + void addSensorValue(const String& sensorName, long sensorValue, const String& conversion, const String& calibrationValue) {addParameter("-b" + sensorName + ":" + String(sensorValue) + ":" + conversion + ":" + calibrationValue);} + void addSensorValue(const String& sensorName, long sensorValue, const String& rawLow, const String& rawHigh, const String& scaleLow, const String& scaleHigh) {addParameter("-m" + sensorName + ":" + String(sensorValue) + ":" + rawLow+ ":" + rawHigh+ ":" + scaleLow+ ":" + scaleHigh);} void setDeviceName(const String& deviceName) {addParameter("-d" + deviceName);} void setDeviceType(const String& deviceType) {addParameter("-t" + deviceType);} }; diff --git a/src/utility/TembooGPIO.c b/src/utility/TembooGPIO.c index 1e0ba81..4424a92 100644 --- a/src/utility/TembooGPIO.c +++ b/src/utility/TembooGPIO.c @@ -76,8 +76,6 @@ void tembooDigitalGPIOInit(TembooGPIOConfig* sensorConfig, TembooSensor* tembooS tembooDigitalWrite(sensorConfig, defaultValue); tembooSensor->write = tembooDigitalWrite; } else { - // probably don't need to do this, but best go on and set it - // TODO: remove /comment after review sensorConfig->currentValue = tembooDigitalRead(sensorConfig); tembooSensor->write = NULL; } @@ -99,8 +97,6 @@ void tembooAnalogGPIOInit(TembooGPIOConfig* sensorConfig, TembooSensor* tembooSe tembooAnalogWrite(sensorConfig, defaultValue); tembooSensor->write = tembooAnalogWrite; } else { - // probably don't need to do this, but best go on and set it - // TODO: remove /comment after review sensorConfig->currentValue = tembooAnalogRead(sensorConfig); tembooSensor->write = NULL; } diff --git a/src/utility/TembooWebSocketRequestHandles.h b/src/utility/TembooWebSocketRequestHandles.h index 081e306..04a0372 100644 --- a/src/utility/TembooWebSocketRequestHandles.h +++ b/src/utility/TembooWebSocketRequestHandles.h @@ -61,6 +61,8 @@ typedef struct TembooSensor{ int defaultValue; } TembooSensor; +typedef TembooSensor TembooActuator; + void addWebSocketPinData(int pin, int pinVal, bool requestResponse); void updateIntervalTime(int intervalTime);