Created
February 2, 2018 10:16
-
-
Save jnogues/af6c0be3fcc5fb3312d8c089056e1ca2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//file IoT-nodemcu-2nCFGS-2018.ino | |
//Internet of Things, Institut Rambla Prim | |
//Jaume Nogues jnogues@gmail.com | |
//rprimtech.iot.tk | |
//http://vps249990.ovh.net/grav2/ | |
//http://jnogues.org | |
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space | |
//DS18B20 | |
//#include <OneWire.h> | |
#include <DallasTemperature.h> | |
#define ONE_WIRE_BUS 10//GPIO10, potser GPIO9 en algunes nodeMCU | |
OneWire oneWire(ONE_WIRE_BUS); | |
DallasTemperature DS18B20(&oneWire); | |
//configuracio wifi | |
#include <ESP8266WiFi.h> | |
#include <BlynkSimpleEsp8266.h> | |
char ssid[] = "ssid"; //xarxa wifi | |
char pass[] = "password"; //password wifi | |
char auth[] = "elTeuToken"; | |
char vpsServer[] = "vps249990.ovh.net"; | |
//IPAddress ipServer (192, 168, 1, 222);//Servidor local | |
BlynkTimer timer; // Create a Timer object called "timer"! | |
WidgetTerminal terminal(V1);//Terminal | |
boolean state16=0; | |
boolean stateQ0=0; | |
boolean prevStateQ0=0; | |
boolean stateQ2=0; | |
boolean prevStateQ2=0; | |
boolean stateI4=0; | |
boolean prevStateI4=0; | |
boolean stateI5=0; | |
boolean prevStateI5=0; | |
boolean stateI12=0; | |
boolean prevStateI12=0; | |
boolean stateQ13=0; | |
boolean prevStateQ13=0; | |
boolean stateI14=0; | |
boolean prevStateI14=0; | |
boolean stateQ15=0; | |
boolean prevStateQ15=0; | |
int blynkIsDownCount=0; | |
unsigned int tempC=0; | |
void setup() | |
{ | |
pinMode(5, INPUT); | |
pinMode(4, INPUT); | |
pinMode(14, INPUT); | |
pinMode(12, INPUT); | |
pinMode(0,OUTPUT); | |
pinMode(2,OUTPUT); | |
pinMode(13,OUTPUT); | |
pinMode(15,OUTPUT); | |
pinMode(16,OUTPUT);//built in led | |
digitalWrite(0,HIGH); | |
digitalWrite(2,HIGH); | |
digitalWrite(13,LOW); | |
digitalWrite(15,LOW); | |
digitalWrite(16,HIGH); | |
Serial.begin(115200); | |
Serial.println("Comencem.."); | |
DS18B20.begin(); | |
Blynk.begin(auth, ssid, pass, vpsServer);//servidor rPrim | |
//Blynk.begin(auth, ssid, pass, ipServer);//servidor local amb IP | |
//Blynk.begin(auth, ssid, pass);//servidor cloud blynk | |
timer.setInterval(300L, checkInputsOutputs); | |
timer.setInterval(30000L, reconnecting); | |
timer.setInterval(33000L, publishA0); | |
timer.setInterval(35000L, publishTemperatureDS18B20); | |
timer.setInterval(37000L, publishUpTime); | |
} | |
void loop() | |
{ | |
if (Blynk.connected()) | |
{ | |
Blynk.run(); | |
} | |
timer.run(); | |
} | |
BLYNK_CONNECTED() | |
{ | |
Blynk.syncAll(); | |
Serial.println(".");//per debug | |
} | |
void reconnecting() | |
{ | |
if (!Blynk.connected()) | |
{ | |
blynkIsDownCount++; | |
BLYNK_LOG("blynk server is down! %d times", blynkIsDownCount); | |
Blynk.connect(5000); | |
} | |
} | |
void checkInputsOutputs() | |
{ | |
digitalWrite(16,state16); | |
state16=!state16; | |
stateQ0=digitalRead(0); | |
if (stateQ0!=prevStateQ0) | |
{ | |
if (stateQ0==0) Blynk.virtualWrite(V0,255); | |
if (stateQ0==1) Blynk.virtualWrite(V0,0); | |
} | |
prevStateQ0=stateQ0; | |
stateQ2=digitalRead(2); | |
if (stateQ2!=prevStateQ2) | |
{ | |
if (stateQ2==0) Blynk.virtualWrite(V2,255); | |
if (stateQ2==1) Blynk.virtualWrite(V2,0); | |
} | |
prevStateQ2=stateQ2; | |
stateI12=digitalRead(12); | |
if (stateI12!=prevStateI12) | |
{ | |
if (stateI12==0) Blynk.virtualWrite(V12,0); | |
if (stateI12==1) Blynk.virtualWrite(V12,255); | |
} | |
prevStateI12=stateI12; | |
stateQ13=digitalRead(13); | |
if (stateQ13!=prevStateQ13) | |
{ | |
if (stateQ13==0) Blynk.virtualWrite(V13,0); | |
if (stateQ13==1) Blynk.virtualWrite(V13,255); | |
} | |
prevStateQ13=stateQ13; | |
stateQ15=digitalRead(15); | |
if (stateQ15!=prevStateQ15) | |
{ | |
if (stateQ15==0) Blynk.virtualWrite(V15,0); | |
if (stateQ15==1) Blynk.virtualWrite(V15,255); | |
} | |
prevStateQ15=stateQ15; | |
stateI5=digitalRead(5); | |
if (stateI5!=prevStateI5) | |
{ | |
if (stateI5==0) Blynk.virtualWrite(V5,0); | |
if (stateI5==1) | |
{ | |
Blynk.virtualWrite(V5,255); | |
Blynk.notify("I5 activat");//notificacio via app | |
} | |
} | |
prevStateI5=stateI5; | |
stateI4=digitalRead(4); | |
if (stateI4!=prevStateI4) | |
{ | |
if (stateI4==0) Blynk.virtualWrite(V4,0); | |
if (stateI4==1) | |
{ | |
Blynk.virtualWrite(V4,255); | |
Blynk.email("elTeuMail@gmail.com", "Alerta I4", "I4 Activat!");//notificacio via mail | |
} | |
} | |
prevStateI4=stateI4; | |
stateI14=digitalRead(14); | |
if (stateI14!=prevStateI14) | |
{ | |
if (stateI14==0) Blynk.virtualWrite(V14,0); | |
if (stateI14==1) Blynk.virtualWrite(V14,255); | |
} | |
prevStateI14=stateI14; | |
} | |
//Terminal virtual | |
BLYNK_WRITE(1) | |
{ | |
if (String("q15tog")==param.asStr()) | |
{ | |
digitalWrite(15, !digitalRead(15)); | |
terminal.println(F("q15tog")); | |
} | |
if (String("q13tog")==param.asStr()) | |
{ | |
digitalWrite(13, !digitalRead(13)); | |
terminal.println(F("q13tog")); | |
} | |
terminal.flush(); | |
} | |
void publishA0() | |
{ | |
int A0value=analogRead(A0); | |
A0value=map(A0value, 500, 0, 0, 100); | |
A0value=random(0,100);//Comentar si tinc connectat el senssor | |
BLYNK_LOG("il.lum= %d ", A0value); | |
Blynk.virtualWrite(V10,A0value); | |
} | |
void publishTemperatureDS18B20() | |
{ | |
DS18B20.requestTemperatures(); | |
float t = DS18B20.getTempCByIndex(0); | |
tempC=int(t); | |
tempC=random(10,50);//Comentar si tinc connectat el senssor | |
Blynk.virtualWrite(V24,tempC); | |
//Serial.println(t); | |
BLYNK_LOG("tDS= %d ", tempC); | |
} | |
void publishUpTime() | |
{ | |
unsigned long m=millis()/1000L; | |
Blynk.virtualWrite(V11,m); | |
BLYNK_LOG("millis()= %d ", m); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment