Paso 12: IoT CONTROL bosquejo--aquaponic balcón jardín conjunto
Este esquema requiere el uso de varias cosas:
Arduino YUN
Cuenta Temboo
Twilio cuenta
Cuenta MicroSoft potencia BI.
POR QUÉ TEMBOO:
Sin Temboo transmisión de datos y mensajes de texto son muy difíciles de lograr. Esta parte de tener una aplicación de Internet es muy complicada para los no técnicos constructores de estos jardines. Temboo es un producto que genera código para los usuarios y luego específico Código sensor y pueden insertar segmentos de la automatización para lograr las tareas. Temboo tiene excelente ayuda técnica y figuras de gran documentación para ayudar a los usuarios cómo utilizar este producto.
Aquí es boceto base que permite mensajes de texto y transmisión de datos utilizando la plataforma Temboo:
* Descripción: * control de EventFuse ejemplo * múltiples independientes cambiar salidas. Cada * salida puede configurarse con independiente * encendido y apagado de duración con un mínimo de 1 segundo * y un máximo de 1100 horas (2 ^ 32 mS). ** < /p >< p > #include < EventFuse.h >< eventfuse.h > #include < MsTimer2.h >< mstimer2.h >< /mstimer2.h >< /eventfuse.h >< /p >< p > las bibliotecas temporizador de válvula / / librerías para Temboo #include < Bridge.h >< bridge.h > #include < Temboo.h >< temboo.h > #include "TembooAccount.h" / / Temboo contiene información de la cuenta - debe estar en la ficha < /temboo.h >< /bridge.h >< /p >< p > #define OUTPUT_COUNT 1 #define det TIEMPO 0 #define ON_TIME 1 #define OUTPUT_PIN 2 < /p >< p > / / conjunto de datos para transmitir cada 30 segundos. int streamInterval = 30000; transmisión intervalo en milisegundos uint32_t lastStreamRunTime = millis() - streamInterval; almacenar el tiempo de la última escritura corriente < /p >< p > / / Set variable para activar SMS. sendText volátiles bool = true; < /p >< p > / / la matriz de salidas define cuánto de cada salida voluntad / / desactivarse, y qué utilizar para esa salida. Los y valores están en unidades de 'pasos'. La longitud / / de una garrapata es controlada por la configuración de MsTimer2. apagado en pin byte salidas [OUTPUT_COUNT] [3] = {{1, 5, 2}, / / salida}; Salida D void OutputHandler (fuseID FuseID, int & outputID) {/ / buscar el pin asociado con este pin de bytes de salida. = salidas [outputID] [OUTPUT_PIN]; / / activar SMS. sendText = true; / / conseguir invertir el actual estado de pin y escribir / / volver al puerto a invertir el pin estado. int estado actual = 1 & ~ digitalRead(pin); digitalWrite (pin, estado); / / restablecer la longitud del fusible con un nuevo intervalo. El estado actual / del perno se utiliza para determinar que intervalo debe ser utilizado. EventFuse::fuses [fuseID] .fuseLen = salidas [outputID] [Estado]; } < /p >< p > void setup() {/ / configurar y init todas las salidas OFF. Serial.Begin(9600); mientras)! Serie); Bridge.Begin(); para (byte i = 0; i < output_count; i ++) {= "" = "" pinmode (= "" salidas [i] [output_pin], = "" salida); = "" digitalwrite (= "" bajo = ""); < = "" p = "" >< / output_count; >< /p >< p > / instalado un fusible de evento para esta salida. EventFuse::newFuse (i, salidas [i] [OFF_TIME], INF_REPEAT, OutputHandler); } / / Set MsTimer2 por un minuto por garrapatas. MsTimer2::set (60000, EventFuse::burn); MsTimer2::start(); } < /p >< p > void loop() {/ / flujo de datos de uint32_t ahora = millis(); / / comprobar la hora actual si (ahora - lastStreamRunTime > = streamInterval) {lastStreamRunTime = ahora; / cuando estés listo para integrar el streaming a BI energía, quite el comentario de stream(); en la siguiente línea. / / stream();} / / enviar SMS. if(sendText) {runSendSMS(); sendText = false;}} < /p >< p > / / función para enviar un SMS a través de Temboo y Twilio void runSendSMS() {TembooChoreo SendSMSChoreo; < /p >< p > / / invocar el cliente Temboo SendSMSChoreo.begin(); < /p >< p > / / Set Temboo cuenta credenciales SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT); SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME); SendSMSChoreo.setAppKey(TEMBOO_APP_KEY); < /p >< p > / / perfil a utilizar para la ejecución. Tenga en cuenta que esto supone que ha guardado su perfil de Twilio como "MyTwilio". SendSMSChoreo.setProfile("MyTwilio"); Identificar la coreo para ejecutar SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS"); < /p >< p > / / ejecutar la coreo returnCode unsigned int = SendSMSChoreo.run(); < /p >< p > / leer e imprimir el mensaje de error mientras (SendSMSChoreo.available()) {char c = SendSMSChoreo.read(); Serial.Print(c); } Serial.println(); SendSMSChoreo.close(); } < /p >< p > / / función para la transmisión de datos para BI energía void stream() {TembooChoreo corriente; < /p >< p > / / invocar el Temboo cliente stream.begin(); < /p >< p > / / Set Temboo cuenta credenciales stream.setAccountName(TEMBOO_ACCOUNT); stream.setAppKeyName(TEMBOO_APP_KEY_NAME); stream.setAppKey(TEMBOO_APP_KEY); < /p >< p > / / identificar la coreo para ejecutar stream.setChoreo("/Library/Util/StreamSensorData"); < /p >< p > / ajustar el perfil de Streaming a la uso. / Nota que este asume que usted está usando un perfil llamado "MyPowerBI." stream.setProfile("MyPowerBI"); < /p >< p > / / generar datos del sensor a corriente. Tenga en cuenta que esto supone que usted está transmitiendo datos de pin 8 a un campo de energía BI que se denomina "Temperatura." Cadena pinData = "{"; pinData += "\"Temperature\":" + String(digitalRead(8)); pinData += "}"; < /p >< p > / / Añadir datos de los sensores como un insumo para la stream.addInput coreo streaming ("SensorData", pinData); Nota: para la depuración set "Async" a false (lo que indica que debe devolver una respuesta) / / stream.addInput ("Async", "false"); < /p >< p > / / corriente de los datos; cuando hay resultados, imprimirlos a stream.run() serial; < /p >< p > while(stream.available()) {char c = Stream.Read; Serial.Print(c); } stream.close(); }