Skip to content

Instantly share code, notes, and snippets.

@jnogues
Created February 2, 2018 10:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jnogues/af6c0be3fcc5fb3312d8c089056e1ca2 to your computer and use it in GitHub Desktop.
Save jnogues/af6c0be3fcc5fb3312d8c089056e1ca2 to your computer and use it in GitHub Desktop.
//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