Aquaponic balkong GARDEN (12 / 15 steg)
Steg 12: IoT kontrollen skiss--aquaponic balkong trädgård församling
Denna skiss kräver användning av flera saker:
Arduino YUN
Temboo konto
Twilio konto
MicroSoft Power BI-konto.
VARFÖR TEMBOO:
Utan Temboo är strömmande data och SMS-meddelanden mycket svårt att åstadkomma. Denna del av att ha en IoT ansökan är extremt komplicerat för icke-tekniska byggare av dessa trädgårdar. Temboo är en produkt som genererar kod för användare och sedan specifika koden sensor och automation segment kan sättas in för att utföra aktiviteter. Temboo har utmärkt teknisk hjälp och bra dokumentation för att hjälpa användare siffror hur man använder denna produkt.
Här är basen skiss som tillåter textmeddelanden och strömmande Data med hjälp av Temboo plattformen:
* Beskrivning:
* EventFuse exempel visar kontroll av
* flera oberoende bytte utgångar. Varje
* utgång kan konfigureras med oberoende
* till och från varaktigheter med minst 1 sekund
* och högst ca 1100 timmar (2 ^ 32 mS).
*
* < /p >< p > / ventil timer bibliotek
#include < EventFuse.h >< eventfuse.h >
#include < MsTimer2.h >< mstimer2.h >< /mstimer2.h >< /eventfuse.h >< /p >< p > / / bibliotek för Temboo
#include < Bridge.h >< bridge.h >
#include < Temboo.h >< temboo.h >
#include "TembooAccount.h" / / innehåller Temboo kontoinformation - måste vara i fliken < /temboo.h >< /bridge.h >< /p >< p > #define OUTPUT_COUNT 1
#define OFF_TIME 0
#define ON_TIME 1
#define OUTPUT_PIN 2 < /p >< p > / / ställa in data till ström var 30 sekunder.
int streamInterval = 30000; Streaming intervall i millisekunder
uint32_t lastStreamRunTime = millis() - streamInterval; lagring av tidpunkten för den senaste stream write < /p >< p > / / Set variabel att utlösa SMS.
flyktiga bool sendText = true; < /p >< p > / / utgångar matrisen definierar hur länge varje utgång kommer
stängas av, på, och vilken PIN-kod du använder för att utdata.
Off och värden finns i enheter av "fästingar". Längd
av en fästing styrs av inställningarna för MsTimer2.
iväg på pin
byte utgångar [OUTPUT_COUNT] [3] = {{1, 5, 2}, / / utgång A
}; Utgång D
void OutputHandler (FuseID fuseID, int & outputID) {
Slå upp PIN-koden är associerade med denna utgång.
byte pin = utgångar [outputID] [OUTPUT_PIN];
Trigger SMS.
sendText = sant;
Få och Invertera dagens pin och skriva
tillbaka till hamnen att Invertera dagens pin.
int state = 1 & ~ digitalRead(pin);
digitalWrite (pin, statligt);
Återställa en fuse längd med ett nytt intervall. Det aktuella läget
i PIN-koden används för att avgöra vilket intervall ska användas.
EventFuse::fuses [fuseID] .fuseLen = utgångar [outputID] [staten].
} < /p >< p > void setup() {
Ställ in och init alla utgångar till off.
Serial.BEGIN(9600);
tag (!. Seriell);
Bridge.BEGIN();
för (byte jag = 0; jag < output_count; i ++) {= "" = "" pinmode (= "" utgångar [i] [output_pin], = "" output); = "" digitalwrite (= "" låg = ""); < = "" p = "" >< / output_count; >< /p >< p > / / ställa upp en händelse säkring för denna utgång.
EventFuse::newFuse (i, utgångar [i] [OFF_TIME], INF_REPEAT, OutputHandler);
}
Ange MsTimer2 för en minut per fästing.
MsTimer2::set (60000, EventFuse::burn);
MsTimer2::start();
} < /p >< p > void loop() {
Stream data.
uint32_t nu = millis(); kontrollera aktuell tid
om (nu - lastStreamRunTime > = streamInterval) {
lastStreamRunTime = nu;
När du är redo att integrera streaming till Power BI, avkommentera stream(); på raden.
Stream();
}
Skicka SMS.
IF(sendText) {
runSendSMS();
sendText = false;
}
} < /p >< p > / / funktion för att skicka ett SMS via Temboo och Twilio
void runSendSMS() {
TembooChoreo SendSMSChoreo; < /p >< p > / / åberopa Temboo klienten
SendSMSChoreo.begin(); < /p >< p > / / Ange Temboo kontoautentiseringsuppgifter
SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT);
SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
SendSMSChoreo.setAppKey(TEMBOO_APP_KEY); < /p >< p > / / Set profil att använda för verkställighet.
Observera att detta förutsätter att du har sparat din Twilio profil som "MyTwilio".
SendSMSChoreo.setProfile("MyTwilio");
Identifiera den koreografiska att köra
SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS"); < /p >< p > / / Kör koreografiska
unsigned int returkod = SendSMSChoreo.run(); < /p >< p > / / läsa och skriva ut felmeddelandet
samtidigt (SendSMSChoreo.available()) {
char c = SendSMSChoreo.read();
Serial.Print(c);
}
Serial.println();
SendSMSChoreo.close();
} < /p >< p > / / funktion för strömmande data till Power BI
void stream() {
TembooChoreo ström; < /p >< p > / / åberopa Temboo klienten
Stream.BEGIN(); < /p >< p > / / Ange Temboo kontoautentiseringsuppgifter
stream.setAccountName(TEMBOO_ACCOUNT);
stream.setAppKeyName(TEMBOO_APP_KEY_NAME);
stream.setAppKey(TEMBOO_APP_KEY); < /p >< p > / / identifiera koreografiska att köra
stream.setChoreo("/Library/Util/StreamSensorData"); < /p >< p > / / Ställ in Streaming profil att använda.
Observera att detta förutsätter att du använder en profil som kallas "MyPowerBI."
stream.setProfile("MyPowerBI"); < /p >< p > / / generera sensordata till ström.
Observera att detta förutsätter att du direktuppspelar data från stift 8 till ett Power BI fält kallas "Temperatur."
Sträng pinData = "{";
pinData += "\"Temperature\":" + String(digitalRead(8));
pinData += "}"; < /p >< p > / / Lägg till sensordata som indata till den strömmande koreografiska
stream.addInput ("SensorData", pinData);
Obs: för felsökning inställd på "Async" false (tyder på att ett svar ska returneras)
stream.addInput ("Async", "false"); < /p >< p > / / strömma data. När resultaten är tillgängliga, skriva ut dem till seriell
Stream.Run(); < /p >< p > while(stream.available()) {
char c = stream.read();
Serial.Print(c);
}
Stream.Close();
}