Arreglos varios y proyecto vs
parent
a6406c785e
commit
eae3647d68
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"Version": 1,
|
||||||
|
"ProjectMap": {
|
||||||
|
"a2fe74e1-b743-11d0-ae1a-00a0c90fffc3": {
|
||||||
|
"ProjectGuid": "a2fe74e1-b743-11d0-ae1a-00a0c90fffc3",
|
||||||
|
"DisplayName": "Archivos varios",
|
||||||
|
"ColorIndex": -1
|
||||||
|
},
|
||||||
|
"c5f80730-f44f-4478-bdae-6634efc2ca88": {
|
||||||
|
"ProjectGuid": "c5f80730-f44f-4478-bdae-6634efc2ca88",
|
||||||
|
"DisplayName": "DomoEsp_v02",
|
||||||
|
"ColorIndex": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NextColorIndex": 1
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"CurrentProjectSetting": "Visual Micro"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"ExpandedNodes": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"SelectedNode": "\\MqttVarManager.h",
|
||||||
|
"PreviewInSolutionExplorer": false
|
||||||
|
}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Visual Micro",
|
||||||
|
"intelliSenseMode": "windows-msvc-x86"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -10,7 +10,7 @@ DomoEspManager::DomoEspManager()
|
||||||
suscrito=false;
|
suscrito=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiClient* espClient, DomoConfig* conf)
|
void DomoEspManager::inicia(WakeOnLan *pwol, LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiClient* espClient, DomoConfig* conf)
|
||||||
{
|
{
|
||||||
mqttclient=mqttClient;
|
mqttclient=mqttClient;
|
||||||
#ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
|
|
@ -27,7 +27,7 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC
|
||||||
//pasar funcion de configuracion de añadir sensores
|
//pasar funcion de configuracion de añadir sensores
|
||||||
|
|
||||||
|
|
||||||
conf->ConfigGen(&sens, &vars, &lcdm, &des);
|
conf->ConfigGen(&sens, &vars, &lcdm, &wol, &des);
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
|
|
@ -78,6 +78,7 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC
|
||||||
Serial.println("iniciado LCD");
|
Serial.println("iniciado LCD");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
wol.inicia(pwol);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -102,6 +103,7 @@ void DomoEspManager::loop()
|
||||||
#if CON_LCD
|
#if CON_LCD
|
||||||
lcdm.suscribe(mqttclient);
|
lcdm.suscribe(mqttclient);
|
||||||
#endif
|
#endif
|
||||||
|
wol.suscribe(mqttclient);
|
||||||
suscrito=true;
|
suscrito=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -121,6 +123,10 @@ void DomoEspManager::OnMqtt(char* topic, char* payload)
|
||||||
lcdm.OnMqtt(topic, payload);
|
lcdm.OnMqtt(topic, payload);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CON_WOL
|
||||||
|
wol.OnMqtt(topic, payload);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
Serial.println("OnMqtt fin");
|
Serial.println("OnMqtt fin");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
#include "MqttSensManager.h"
|
#include "MqttSensManager.h"
|
||||||
#include "MqttDesencadenadorManager.h"
|
#include "MqttDesencadenadorManager.h"
|
||||||
#include "LcdMQTTViewer.h"
|
#include "LcdMQTTViewer.h"
|
||||||
|
#include "MqttWOLManager.h"
|
||||||
|
|
||||||
|
|
||||||
#if CON_LCD
|
#if CON_LCD
|
||||||
//configuracion del lcd--------------------------
|
//configuracion del lcd--------------------------
|
||||||
|
|
@ -30,6 +32,7 @@
|
||||||
class PubSubClient;
|
class PubSubClient;
|
||||||
class WiFiClient;
|
class WiFiClient;
|
||||||
class MqttSensManager;
|
class MqttSensManager;
|
||||||
|
class WakeOnLan;
|
||||||
/*
|
/*
|
||||||
* clase principal
|
* clase principal
|
||||||
*/
|
*/
|
||||||
|
|
@ -66,7 +69,7 @@ class DomoConfig
|
||||||
|
|
||||||
int refresTimeSens;//tiempo de refresco en segundos de los sensores
|
int refresTimeSens;//tiempo de refresco en segundos de los sensores
|
||||||
|
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)=0;
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager *wol, MqttDesencadenadorManager *des)=0;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -93,12 +96,15 @@ class DomoEspManager: public MqttReceiver
|
||||||
SonidoBuzzer buzz;
|
SonidoBuzzer buzz;
|
||||||
|
|
||||||
LcdMQTTViewer lcdm;
|
LcdMQTTViewer lcdm;
|
||||||
|
|
||||||
|
MqttWOLManager wol;
|
||||||
|
|
||||||
bool suscrito;
|
bool suscrito;
|
||||||
|
|
||||||
//PubSubClient client_qqtt(WifiManager::espClient);
|
//PubSubClient client_qqtt(WifiManager::espClient);
|
||||||
DomoEspManager();
|
DomoEspManager();
|
||||||
//PubSubClient client_qqtt(espClient);
|
//PubSubClient client_qqtt(espClient);
|
||||||
void inicia( LiquidCrystal *lcd,PubSubClient *mqttClient, WiFiClient* espClient, DomoConfig* conf);
|
void inicia(WakeOnLan* pwol, LiquidCrystal *lcd,PubSubClient *mqttClient, WiFiClient* espClient, DomoConfig* conf);
|
||||||
void loop();
|
void loop();
|
||||||
|
|
||||||
//funciones auxiliares
|
//funciones auxiliares
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Software basico sersor domotica con esp8266 / esp32 nodemcu
|
* Software basico sersor domotica con esp8266 / esp32 nodemcu
|
||||||
* Controlado por mqtt
|
* Controlado por mqtt
|
||||||
|
|
@ -33,6 +31,7 @@ Y PROBAR RF*/
|
||||||
#include <WiFiUdp.h>
|
#include <WiFiUdp.h>
|
||||||
#include <ArduinoOTA.h>
|
#include <ArduinoOTA.h>
|
||||||
|
|
||||||
|
WiFiUDP UDP;
|
||||||
#include <SimpleDHT.h>
|
#include <SimpleDHT.h>
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
#include <Adafruit_BMP085.h>
|
#include <Adafruit_BMP085.h>
|
||||||
|
|
@ -40,6 +39,10 @@ Y PROBAR RF*/
|
||||||
|
|
||||||
|
|
||||||
#include "DomoEspManager.h"
|
#include "DomoEspManager.h"
|
||||||
|
|
||||||
|
#include "MqttWOLManager.h"
|
||||||
|
#include <WakeOnLan.h>
|
||||||
|
|
||||||
#include "config_rf.h"
|
#include "config_rf.h"
|
||||||
|
|
||||||
//variables globales----------------------------
|
//variables globales----------------------------
|
||||||
|
|
@ -57,6 +60,13 @@ LiquidCrystal *plcd=NULL;
|
||||||
ConfiguracionActual.lcd.d0,ConfiguracionActual.lcd.d1,ConfiguracionActual.lcd.d2,ConfiguracionActual.lcd.d3);
|
ConfiguracionActual.lcd.d0,ConfiguracionActual.lcd.d1,ConfiguracionActual.lcd.d2,ConfiguracionActual.lcd.d3);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
WakeOnLan* pwol=NULL;
|
||||||
|
#if CON_WOL
|
||||||
|
|
||||||
|
WakeOnLan WOL(UDP);
|
||||||
|
//pwol=&WOL;
|
||||||
|
#endif
|
||||||
//funciones principales------------------------
|
//funciones principales------------------------
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
|
|
@ -69,7 +79,10 @@ void setup()
|
||||||
Serial.println("");
|
Serial.println("");
|
||||||
Serial.println("Iniciando");
|
Serial.println("Iniciando");
|
||||||
#endif
|
#endif
|
||||||
domoManager.inicia(plcd,&clienteMqtt,&EspClient,&ConfiguracionActual);
|
#if CON_WOL
|
||||||
|
pwol=&WOL;
|
||||||
|
#endif
|
||||||
|
domoManager.inicia(pwol,plcd,&clienteMqtt,&EspClient,&ConfiguracionActual);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.32112.339
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DomoEsp_v02", "DomoEsp_v02.vcxproj", "{C5F80730-F44F-4478-BDAE-6634EFC2CA88}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {1995B5A1-341C-4B18-B509-04838EC7A212}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="DomoEsp_v02.ino" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="__vm\.DomoEsp_v02.vsarduino.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="config_rf.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="DomoEspManager.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="LcdMQTTViewer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttDefines.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttDesencadenadorManager.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttSensManager.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttUtiles.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttVarManager.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MqttWOLManager.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="DomoEspManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="LcdMQTTViewer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MqttDesencadenadorManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MqttSensManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MqttUtiles.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MqttVarManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MqttWOLManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup />
|
||||||
|
</Project>
|
||||||
|
|
@ -11,16 +11,27 @@
|
||||||
|
|
||||||
void LcdMQTTViewer::envia(char* txt, int pos, int line)
|
void LcdMQTTViewer::envia(char* txt, int pos, int line)
|
||||||
{
|
{
|
||||||
lcd->setCursor(pos, line);
|
char buf[MAXTOPICVAR];
|
||||||
|
|
||||||
int l = strlen(txt);
|
int l = strlen(txt);
|
||||||
if (l < nchar)
|
if (l > nchar)
|
||||||
for (int i = l; i < nchar; i++)
|
l = nchar;
|
||||||
txt[i] = ' ';
|
|
||||||
txt[nchar] = 0;
|
|
||||||
lcd->print(txt);
|
|
||||||
|
for (int i = 0; i < nchar; i++)
|
||||||
|
if (i < l)
|
||||||
|
buf[i] = txt[i];
|
||||||
|
else
|
||||||
|
buf[i] = ' ';
|
||||||
|
|
||||||
|
buf[nchar] = 0;
|
||||||
|
lcd->setCursor(pos, line);
|
||||||
|
lcd->print(buf);
|
||||||
}
|
}
|
||||||
LcdMQTTViewer::LcdMQTTViewer()
|
LcdMQTTViewer::LcdMQTTViewer()
|
||||||
{
|
{
|
||||||
|
panActual = 0;
|
||||||
ivarBuzzer=-1;
|
ivarBuzzer=-1;
|
||||||
topic[0]=0;
|
topic[0]=0;
|
||||||
maxpan = 0;
|
maxpan = 0;
|
||||||
|
|
@ -41,7 +52,7 @@ void LcdMQTTViewer::setTimer(int seg)
|
||||||
void LcdMQTTViewer::envia(int pan)
|
void LcdMQTTViewer::envia(int pan)
|
||||||
{
|
{
|
||||||
char val[16];
|
char val[16];
|
||||||
char buf[32];
|
char buf[MAXTOPICVAR];
|
||||||
for (int i = 0; i < maxtInfo; i++)
|
for (int i = 0; i < maxtInfo; i++)
|
||||||
{
|
{
|
||||||
if (LcdConf[i].pan != pan)
|
if (LcdConf[i].pan != pan)
|
||||||
|
|
@ -112,7 +123,7 @@ int LcdMQTTViewer::OnMqtt(char* top, char* payload)
|
||||||
int i=0;
|
int i=0;
|
||||||
int lin=0;
|
int lin=0;
|
||||||
int n=0;
|
int n=0;
|
||||||
char buf[64];
|
char buf[MAXTOPICVAR*2];
|
||||||
char imelod[12];
|
char imelod[12];
|
||||||
int nmelod=0;
|
int nmelod=0;
|
||||||
bool melodia=false;
|
bool melodia=false;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class MqttVarManager;
|
||||||
struct LcdMQTTInfo
|
struct LcdMQTTInfo
|
||||||
{
|
{
|
||||||
byte ivar;//indice a variable
|
byte ivar;//indice a variable
|
||||||
char formatLCD[32];//formato
|
char formatLCD[MAXTOPICVAR];//formato
|
||||||
byte pan;//pantalla en la que sale
|
byte pan;//pantalla en la que sale
|
||||||
byte line;//linea en la que sale
|
byte line;//linea en la que sale
|
||||||
|
|
||||||
|
|
@ -24,11 +24,11 @@ class LcdMQTTViewer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LiquidCrystal *lcd;
|
LiquidCrystal *lcd;
|
||||||
int nchar;
|
int nchar;//caracteres maximos por linea del lcd
|
||||||
int maxtInfo;
|
int maxtInfo;
|
||||||
int maxpan;
|
int maxpan;//maximo de pantallas configuradas
|
||||||
int panActual = 0;
|
int panActual;//pantalla que esta mostrando actualmente
|
||||||
byte nlineslcd;
|
byte nlineslcd;//lineas maximas del lcd
|
||||||
byte ivarBuzzer;
|
byte ivarBuzzer;
|
||||||
unsigned long tiempo;
|
unsigned long tiempo;
|
||||||
unsigned long incre_t;
|
unsigned long incre_t;
|
||||||
|
|
@ -49,6 +49,6 @@ public:
|
||||||
void setTimer(int seg);
|
void setTimer(int seg);
|
||||||
void envia(char* txt, int pos, int line);
|
void envia(char* txt, int pos, int line);
|
||||||
void envia(int pan);
|
void envia(int pan);
|
||||||
void revisa();
|
//void revisa();
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,14 @@
|
||||||
#define MqttDefinesDef 1
|
#define MqttDefinesDef 1
|
||||||
//generales
|
//generales
|
||||||
#define DEBUG_PS 1
|
#define DEBUG_PS 1
|
||||||
|
#define CON_WOL 0
|
||||||
#define CON_LCD 0
|
#define CON_LCD 0
|
||||||
|
|
||||||
#define MAXTOPICVAR 32//maximo de caracteres de los topic de las variables
|
#define MAXTOPICVAR 32//maximo de caracteres de los topic de las variables
|
||||||
|
|
||||||
//vars--------------------
|
//vars--------------------
|
||||||
#define MAXVAR 24//maximo de variables totales
|
#define MAXVAR 24//maximo de variables totales
|
||||||
#define MAXSTR 1024//maximo de caracteres para str
|
#define MAXSTR 2024//maximo de caracteres para str
|
||||||
|
|
||||||
//sens--------------------
|
//sens--------------------
|
||||||
#define MAXSENS 8
|
#define MAXSENS 8
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ bool MqttDesencadenador::Eval(MqttVarManager *vars, char *oper, char*x, char*y)
|
||||||
vx = atof(x);
|
vx = atof(x);
|
||||||
if (ny <= 0)
|
if (ny <= 0)
|
||||||
vy = 0;
|
vy = 0;
|
||||||
if(y[ny-1]=='}')
|
else if (y[ny - 1] == '}')
|
||||||
vy = GetValue(y, vars);
|
vy = GetValue(y, vars);
|
||||||
else
|
else
|
||||||
vy = atof(y);
|
vy = atof(y);
|
||||||
|
|
@ -124,17 +124,16 @@ void MqttDesencadenador::procesaOper(MqttExeParam *p)
|
||||||
p->estado = 0;
|
p->estado = 0;
|
||||||
p->toper = true;
|
p->toper = true;
|
||||||
p->oper[p->noper] = 0;
|
p->oper[p->noper] = 0;
|
||||||
/* #ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
Serial.print("encontrado oper: ");
|
Serial.print("encontrado oper: ");
|
||||||
Serial.println( p->oper);
|
Serial.println( p->oper);
|
||||||
#endif*/
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p->oper[p->noper++] = expresion[p->i];
|
p->oper[p->noper++] = expresion[p->i];
|
||||||
p->i++;
|
p->i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttDesencadenador::procesaVar(MqttExeParam* p)
|
void MqttDesencadenador::procesaVar(MqttExeParam* p)
|
||||||
|
|
@ -164,19 +163,19 @@ void MqttDesencadenador::procesaVar(MqttExeParam *p)
|
||||||
{
|
{
|
||||||
p->var2[p->nvar2] = 0;
|
p->var2[p->nvar2] = 0;
|
||||||
p->tvar2 = true;
|
p->tvar2 = true;
|
||||||
/* #ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
Serial.print("encontrado var2: ");
|
Serial.print("encontrado var2: ");
|
||||||
Serial.println( p->var2);
|
Serial.println( p->var2);
|
||||||
#endif*/
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p->var1[p->nvar1] = 0;
|
p->var1[p->nvar1] = 0;
|
||||||
p->tvar1 = true;
|
p->tvar1 = true;
|
||||||
/* #ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
Serial.print("encontrado var1: ");
|
Serial.print("encontrado var1: ");
|
||||||
Serial.println( p->var1);
|
Serial.println( p->var1);
|
||||||
#endif*/
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -217,7 +216,7 @@ bool MqttDesencadenador::Exe(MqttVarManager *vars)
|
||||||
p.tcausa = true;
|
p.tcausa = true;
|
||||||
p.toper = false;
|
p.toper = false;
|
||||||
p.noper = 0;
|
p.noper = 0;
|
||||||
|
p.oper[0] = 0;
|
||||||
if (!p.res || !activo)
|
if (!p.res || !activo)
|
||||||
{
|
{
|
||||||
activo = !p.res;
|
activo = !p.res;
|
||||||
|
|
@ -248,6 +247,7 @@ bool MqttDesencadenador::Exe(MqttVarManager *vars)
|
||||||
p.toper = false;
|
p.toper = false;
|
||||||
p.noper = 0;
|
p.noper = 0;
|
||||||
p.esAnd = true;
|
p.esAnd = true;
|
||||||
|
p.oper[0] = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (p.oper[0] == '|')
|
else if (p.oper[0] == '|')
|
||||||
|
|
@ -295,6 +295,7 @@ bool MqttDesencadenador::Exe(MqttVarManager *vars)
|
||||||
p.nvar1 = p.nvar2 = p.noper = 0;
|
p.nvar1 = p.nvar2 = p.noper = 0;
|
||||||
p.var1[0] = 0;
|
p.var1[0] = 0;
|
||||||
p.var2[0] = 0;
|
p.var2[0] = 0;
|
||||||
|
p.oper[0] = 0;
|
||||||
}
|
}
|
||||||
if (expresion[p.i] == ' ')//pasa de los espacios
|
if (expresion[p.i] == ' ')//pasa de los espacios
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ struct MqttExeParam
|
||||||
class MqttDesencadenador
|
class MqttDesencadenador
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
char expresion[MAXSTRDESEN];//{1}=1->!{2}
|
char expresion[MAXSTRDESEN];//"{1}=1 -> !{2} "
|
||||||
bool activo;//se desactivan automaticamente cuando se cumple la condicion y se vuelve activar cuando deja de cumplirse
|
bool activo;//se desactivan automaticamente cuando se cumple la condicion y se vuelve activar cuando deja de cumplirse
|
||||||
|
|
||||||
MqttDesencadenador();
|
MqttDesencadenador();
|
||||||
|
|
@ -53,15 +53,18 @@ class MqttDesencadenador
|
||||||
bool Exe(MqttVarManager *vars);
|
bool Exe(MqttVarManager *vars);
|
||||||
|
|
||||||
//auxiliar----------------
|
//auxiliar----------------
|
||||||
void procesaVar(MqttExeParam *p);
|
void procesaVar(MqttExeParam *p);//recoge expresion de variable o float
|
||||||
void procesaOper(MqttExeParam *p);
|
void procesaOper(MqttExeParam *p);//recoge operador
|
||||||
|
|
||||||
MQTTvalor GetVarValue(char*ivar, MqttVarManager *vars);
|
MQTTvalor GetVarValue(char*ivar, MqttVarManager *vars);
|
||||||
int GetIvar(char*ivar);
|
int GetIvar(char*ivar);
|
||||||
MqttVar* GetVar(char*ivar, MqttVarManager *vars);
|
MqttVar* GetVar(char*ivar, MqttVarManager *vars);
|
||||||
int GetElementosOper( char *oper);
|
int GetElementosOper( char *oper);
|
||||||
|
|
||||||
bool Eval(MqttVarManager *vars, char *oper, char*x, char*y);
|
bool Eval(MqttVarManager *vars, char *oper, char*x, char*y);//evalua operador
|
||||||
void ExeEfecto(MqttVarManager *vars, char *oper, char*x, char*y);
|
|
||||||
|
void ExeEfecto(MqttVarManager *vars, char *oper, char*x, char*y);//ejecuta efecto
|
||||||
|
|
||||||
float GetValue(char *ivar, MqttVarManager *vars);
|
float GetValue(char *ivar, MqttVarManager *vars);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -248,11 +248,12 @@ void MqttSensManager::procesaSensor(int i)
|
||||||
{
|
{
|
||||||
MqttSensor *s=sens.Get(i);
|
MqttSensor *s=sens.Get(i);
|
||||||
MqttVar *v=vars->Get(s->ivar);
|
MqttVar *v=vars->Get(s->ivar);
|
||||||
|
MQTTvalor val;
|
||||||
switch((int)s->tipo)
|
switch((int)s->tipo)
|
||||||
{
|
{
|
||||||
case((int)MqttSensor::SENS_DHT22)://pilla temperatura y humedad
|
case((int)MqttSensor::SENS_DHT22)://pilla temperatura y humedad
|
||||||
{
|
{
|
||||||
MqttVar *vh=vars->Get(s->ie.dht.ivarH);
|
//MqttVar *vh=vars->Get(s->ie.dht.ivarH);
|
||||||
float t,h;
|
float t,h;
|
||||||
for(int i=0; i<4; i++)
|
for(int i=0; i<4; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -261,27 +262,40 @@ void MqttSensManager::procesaSensor(int i)
|
||||||
delay(20);
|
delay(20);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
v->val.f=t;
|
val.f = t;
|
||||||
vh->val.f=h;
|
vars->SetVal(s->ivar, val);
|
||||||
|
//v->val.f=t;
|
||||||
|
val.f = h;
|
||||||
|
vars->SetVal(s->ie.dht.ivarH, val);
|
||||||
|
//vh->val.f=h;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case((int)MqttSensor::SENS_BMP180)://pilla temperatura y humedad
|
case((int)MqttSensor::SENS_BMP180)://pilla temperatura y humedad
|
||||||
{
|
{
|
||||||
MqttVar *vp=vars->Get(s->ie.bmp.ivarP);
|
//MqttVar *vp=vars->Get(s->ie.bmp.ivarP);
|
||||||
MqttVar *va=vars->Get(s->ie.bmp.ivarA);
|
// MqttVar *va=vars->Get(s->ie.bmp.ivarA);
|
||||||
|
val.f = s->ie.bmp.p->readTemperature();
|
||||||
|
vars->SetVal(s->ivar, val);
|
||||||
|
val.f = s->ie.bmp.p->readPressure();
|
||||||
|
vars->SetVal(s->ie.bmp.ivarP, val);
|
||||||
|
val.f = s->ie.bmp.p->readAltitude();
|
||||||
|
vars->SetVal(s->ie.bmp.ivarA, val);
|
||||||
|
/*
|
||||||
v->val.f=s->ie.bmp.p->readTemperature();
|
v->val.f=s->ie.bmp.p->readTemperature();
|
||||||
vp->val.i=s->ie.bmp.p->readPressure();//pascales;
|
vp->val.i=s->ie.bmp.p->readPressure();//pascales;
|
||||||
va->val.f=s->ie.bmp.p->readAltitude();
|
va->val.f=s->ie.bmp.p->readAltitude();
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case((int)MqttSensor::SENS_ANALOG_IN)://pilla temperatura y humedad
|
case((int)MqttSensor::SENS_ANALOG_IN)://pilla temperatura y humedad
|
||||||
{
|
{
|
||||||
if(s->flags & MqttSensor::FLAG_NEG)
|
if(s->flags & MqttSensor::FLAG_NEG)
|
||||||
v->val.f=100.*((float)(1024- analogRead(s->pin)))/1024;
|
val.f =100.*((float)(1024- analogRead(s->pin)))/1024;
|
||||||
else
|
else
|
||||||
v->val.f=100.*((float)(analogRead(s->pin)))/1024;
|
val.f =100.*((float)(analogRead(s->pin)))/1024;
|
||||||
|
vars->SetVal(s->ivar, val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* case((int)MqttSensor::SENS_DIGI_IN):
|
/* case((int)MqttSensor::SENS_DIGI_IN):
|
||||||
|
|
|
||||||
|
|
@ -159,10 +159,10 @@ class MqttSensManager: public MqttOnVarChangeListenner
|
||||||
|
|
||||||
void inicia();
|
void inicia();
|
||||||
void loop();
|
void loop();
|
||||||
int OnMqtt(char* topic, char* payload);//entra trama mqtt devuelve indice a sensor cambiado
|
//int OnMqtt(char* topic, char* payload);//entra trama mqtt devuelve indice a sensor cambiado
|
||||||
|
|
||||||
|
|
||||||
void AddSensor(MqttSensor* sens);
|
//void AddSensor(MqttSensor* sens);
|
||||||
//
|
//
|
||||||
//funcion add sensor
|
//funcion add sensor
|
||||||
//tempe y humedad
|
//tempe y humedad
|
||||||
|
|
|
||||||
|
|
@ -210,8 +210,8 @@ void MqttManager::OnMqtt(char* topic, byte* payload, unsigned int length)
|
||||||
if(Mqttlistener==NULL)
|
if(Mqttlistener==NULL)
|
||||||
return;
|
return;
|
||||||
int i;
|
int i;
|
||||||
char buf[32];
|
char buf[MAXTOPICVAR];
|
||||||
i=30;
|
i= MAXTOPICVAR-1;
|
||||||
if(i>length)
|
if(i>length)
|
||||||
i=length;
|
i=length;
|
||||||
memcpy(buf, payload, i);
|
memcpy(buf, payload, i);
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class MqttManager
|
||||||
void inicia(PubSubClient *mqttClient,char *ideEsp, char *host, int port, MqttReceiver* classReceiver);
|
void inicia(PubSubClient *mqttClient,char *ideEsp, char *host, int port, MqttReceiver* classReceiver);
|
||||||
bool loop();
|
bool loop();
|
||||||
|
|
||||||
void desconecta();
|
//void desconecta();
|
||||||
|
|
||||||
//auxiliar------------------
|
//auxiliar------------------
|
||||||
static void OnMqtt(char* topic, byte* payload, unsigned int length);
|
static void OnMqtt(char* topic, byte* payload, unsigned int length);
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,17 @@ int MqttTopicAttay::Add(char *topic)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
i=n;
|
i=n;
|
||||||
|
if (n >= MAXVAR)
|
||||||
|
return-1;
|
||||||
n=n+1;
|
n=n+1;
|
||||||
ind[i]=nst;
|
ind[i]=nst;
|
||||||
nst=nst+strlen(topic)+1;
|
nst=nst+strlen(topic)+1;
|
||||||
|
if (nst > MAXSTR)
|
||||||
|
{
|
||||||
|
n--;
|
||||||
|
return-1;
|
||||||
|
}
|
||||||
|
|
||||||
strcpy(Get(i), topic);
|
strcpy(Get(i), topic);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
@ -59,6 +67,17 @@ MqttVarArray::MqttVarArray()
|
||||||
|
|
||||||
MqttVar* MqttVarArray::Get(int i)
|
MqttVar* MqttVarArray::Get(int i)
|
||||||
{
|
{
|
||||||
|
if (i < 0 || i >= n)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_PS
|
||||||
|
Serial.print("qttVarArray:: Get var no encontrada: ");
|
||||||
|
Serial.print(i);
|
||||||
|
Serial.print(" n: ");
|
||||||
|
Serial.println(i);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return &(data[i]);
|
return &(data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,6 +93,15 @@ MqttVar* MqttVarArray::GetVar(int itopic)
|
||||||
|
|
||||||
int MqttVarArray::Add(MqttVar* var)
|
int MqttVarArray::Add(MqttVar* var)
|
||||||
{
|
{
|
||||||
|
if (n >= MAXVAR)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_PS
|
||||||
|
Serial.print("MqttVarArray::Add max var alcanzado: ");
|
||||||
|
Serial.println(n);
|
||||||
|
#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
data[n]=*var;
|
data[n]=*var;
|
||||||
n++;
|
n++;
|
||||||
return n-1;
|
return n-1;
|
||||||
|
|
@ -88,7 +116,7 @@ MqttVarManager::MqttVarManager()
|
||||||
nListenner=0;
|
nListenner=0;
|
||||||
for (int i=0; i<nListenner; i++)
|
for (int i=0; i<nListenner; i++)
|
||||||
{
|
{
|
||||||
onChangeListener[2]=NULL;
|
onChangeListener[i]=NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void MqttVarManager::SetTimeRefres(int seg)
|
void MqttVarManager::SetTimeRefres(int seg)
|
||||||
|
|
@ -160,7 +188,7 @@ void MqttVarManager::OnMqtt(char* topic, char* payload)
|
||||||
//comprueba variables
|
//comprueba variables
|
||||||
MqttVar* v;
|
MqttVar* v;
|
||||||
int res=-1;
|
int res=-1;
|
||||||
|
MQTTvalor val;
|
||||||
for(int i=0; i<vars->n; i++)
|
for(int i=0; i<vars->n; i++)
|
||||||
{
|
{
|
||||||
v=vars->Get(i);
|
v=vars->Get(i);
|
||||||
|
|
@ -170,23 +198,21 @@ void MqttVarManager::OnMqtt(char* topic, char* payload)
|
||||||
if(v->flags & MqttVar::FLOAT_VAR)
|
if(v->flags & MqttVar::FLOAT_VAR)
|
||||||
{
|
{
|
||||||
float ff=v->val.f;
|
float ff=v->val.f;
|
||||||
v->val.f=atof(payload);
|
val.f=atof(payload);
|
||||||
if(ff!=v->val.f)
|
|
||||||
res=i;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int ii=v->val.i;
|
int ii=v->val.i;
|
||||||
v->val.i=atoi(payload);
|
val.i=atoi(payload);
|
||||||
if(ii!=v->val.i)
|
|
||||||
res=i;
|
|
||||||
}
|
}
|
||||||
|
SetVal(i, val);
|
||||||
break;//suponemos solo una variable con el mismo topic
|
break;//suponemos solo una variable con el mismo topic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(res>=0)
|
//if(res>=0)
|
||||||
OnChange(res, isSet);
|
// OnChange(res, isSet);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -203,8 +229,8 @@ void MqttVarManager::loop()
|
||||||
|
|
||||||
void MqttVarManager::PublicaVar(int ivar)
|
void MqttVarManager::PublicaVar(int ivar)
|
||||||
{
|
{
|
||||||
char buffer_t[32];
|
char buffer_t[MAXTOPICVAR];
|
||||||
char buffer_p[24];
|
char buffer_p[MAXTOPICVAR];
|
||||||
MqttVar* v=vars->Get(ivar);
|
MqttVar* v=vars->Get(ivar);
|
||||||
if(v->flags & MqttVar::CHANGE_VAR)
|
if(v->flags & MqttVar::CHANGE_VAR)
|
||||||
{
|
{
|
||||||
|
|
@ -215,7 +241,7 @@ void MqttVarManager::PublicaVar(int ivar)
|
||||||
Serial.println(buffer_t);
|
Serial.println(buffer_t);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else//in var
|
||||||
{
|
{
|
||||||
|
|
||||||
sprintf(buffer_t, "%s/get",topics->Get(v->topic));
|
sprintf(buffer_t, "%s/get",topics->Get(v->topic));
|
||||||
|
|
@ -243,11 +269,9 @@ void MqttVarManager::PublicaVars()
|
||||||
{
|
{
|
||||||
v=vars->Get(i);
|
v=vars->Get(i);
|
||||||
if(v->flags & f)
|
if(v->flags & f)
|
||||||
{
|
|
||||||
PublicaVar(i);
|
PublicaVar(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
void MqttVarManager::inicia(PubSubClient* client_mqtt)
|
void MqttVarManager::inicia(PubSubClient* client_mqtt)
|
||||||
{
|
{
|
||||||
client_qqtt=client_mqtt;
|
client_qqtt=client_mqtt;
|
||||||
|
|
@ -256,7 +280,7 @@ void MqttVarManager::inicia(PubSubClient* client_mqtt)
|
||||||
void MqttVarManager::Suscribe()
|
void MqttVarManager::Suscribe()
|
||||||
{
|
{
|
||||||
//suscribe a mqtt------------
|
//suscribe a mqtt------------
|
||||||
char buffer_t[32];
|
char buffer_t[MAXTOPICVAR];
|
||||||
MqttVar* v;
|
MqttVar* v;
|
||||||
for(int i=0; i<vars->n; i++)
|
for(int i=0; i<vars->n; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -355,6 +379,7 @@ void MqttVarManager::ResetVolatileVar()
|
||||||
MqttVar* v=vars->Get(i);
|
MqttVar* v=vars->Get(i);
|
||||||
if(v->flags& MqttVar::VOLATILE_VAR)
|
if(v->flags& MqttVar::VOLATILE_VAR)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(v->flags & MqttVar::FLOAT_VAR)
|
if(v->flags & MqttVar::FLOAT_VAR)
|
||||||
v->val.f=0;
|
v->val.f=0;
|
||||||
else
|
else
|
||||||
|
|
@ -384,13 +409,13 @@ void MqttVarManager::SetVal(int ivar,MQTTvalor val)
|
||||||
Serial.println( val.f);
|
Serial.println( val.f);
|
||||||
#endif
|
#endif
|
||||||
MqttVar* v=vars->Get(ivar);
|
MqttVar* v=vars->Get(ivar);
|
||||||
v->val=val;
|
bool cambia = false;
|
||||||
#ifdef DEBUG_PS
|
if (v->flags & MqttVar::FLOAT_VAR)
|
||||||
|
cambia = val.f != v->val.f;
|
||||||
|
else
|
||||||
|
cambia = val.i != v->val.i;
|
||||||
|
|
||||||
Serial.print("MqttVarManager::SetVal out i: ");
|
v->val=val;
|
||||||
Serial.print( v->val.i);
|
if(cambia)
|
||||||
Serial.print(" f: ");
|
|
||||||
Serial.println( v->val.f);
|
|
||||||
#endif
|
|
||||||
OnChange(ivar, true);
|
OnChange(ivar, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,10 @@ class MqttVar
|
||||||
enum TipoFlags//indica el tipo de sensor
|
enum TipoFlags//indica el tipo de sensor
|
||||||
{
|
{
|
||||||
OUT_VAR=0x01,//variable de salida (acepta set)
|
OUT_VAR=0x01,//variable de salida (acepta set)
|
||||||
IN_VAR=0x02,//variable de entrada (publica get)
|
IN_VAR=0x02,//variable de entrada (publica get) (publica cada x tiempo)
|
||||||
PRIV_VAR=0x04,//variable privada de entrada (acepta get como si fueran set)
|
PRIV_VAR=0x04,//variable privada de entrada (acepta get como si fueran set)
|
||||||
FLOAT_VAR=0x08,//variable en coma flotante
|
FLOAT_VAR=0x08,//variable en coma flotante
|
||||||
ACCION_VAR=0x10,//variable de accion (publica en cada cambio)
|
ACCION_VAR=0x10,//variable de accion (publica en cada cambio onchange si se le llama como publicar)
|
||||||
VOLATILE_VAR=0x20, //marca variable que una vez revisada se cambia internamente su valor (usado en desencadenadores para variables de accion)
|
VOLATILE_VAR=0x20, //marca variable que una vez revisada se cambia internamente su valor (usado en desencadenadores para variables de accion)
|
||||||
CHANGE_VAR=0x40, //publica con set en lugar de get
|
CHANGE_VAR=0x40, //publica con set en lugar de get
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
|
||||||
|
#include <PubSubClient.h>
|
||||||
|
#include <WakeOnLan.h>
|
||||||
|
#include "MqttWOLManager.h"
|
||||||
|
|
||||||
|
MqttWOLManager::MqttWOLManager()
|
||||||
|
{
|
||||||
|
topic[0]=0;
|
||||||
|
}
|
||||||
|
void MqttWOLManager::inicia(WakeOnLan *pwol)
|
||||||
|
{
|
||||||
|
wol=pwol;
|
||||||
|
}
|
||||||
|
void MqttWOLManager::loop()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
int MqttWOLManager::OnMqtt(char* top, char* payload)
|
||||||
|
{
|
||||||
|
if(strcmp(top,topic))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
wol->sendMagicPacket(payload); // Send Wake On Lan packet with the above MAC address. Default to port 9.
|
||||||
|
#ifdef DEBUG_PS
|
||||||
|
Serial.print("Enviado wol a: ");
|
||||||
|
Serial.println(payload);
|
||||||
|
#endif
|
||||||
|
// WOL.sendMagicPacket(MACAddress, 7); // Change the port number
|
||||||
|
|
||||||
|
}
|
||||||
|
void MqttWOLManager::suscribe(PubSubClient *client_qqtt)
|
||||||
|
{
|
||||||
|
if(!topic[0])
|
||||||
|
return;
|
||||||
|
client_qqtt->subscribe(topic);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
#ifndef MqttWOLManagerdef
|
||||||
|
#define MqttWOLManagerdef 1
|
||||||
|
#include "MqttDefines.h"
|
||||||
|
class WakeOnLan;
|
||||||
|
|
||||||
|
class MqttWOLManager
|
||||||
|
{
|
||||||
|
WakeOnLan* wol;
|
||||||
|
public:
|
||||||
|
char topic[MAXSTR];//topic para llamada wol
|
||||||
|
|
||||||
|
MqttWOLManager();
|
||||||
|
|
||||||
|
|
||||||
|
void inicia(WakeOnLan* pwol);
|
||||||
|
void loop();//publica datos variables
|
||||||
|
int OnMqtt(char* topic, char* payload);
|
||||||
|
void suscribe(PubSubClient *client_qqtt);
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
Editor: https://www.visualmicro.com/
|
||||||
|
This file is for intellisense purpose only.
|
||||||
|
Visual micro (and the arduino ide) ignore this code during compilation. This code is automatically maintained by visualmicro, manual changes to this file will be overwritten
|
||||||
|
The contents of the _vm sub folder can be deleted prior to publishing a project
|
||||||
|
All non-arduino files created by visual micro and all visual studio project or solution files can be freely deleted and are not required to compile a sketch (do not delete your own code!).
|
||||||
|
Note: debugger breakpoints are stored in '.sln' or '.asln' files, knowledge of last uploaded breakpoints is stored in the upload.vmps.xml file. Both files are required to continue a previous debug session without needing to compile and upload again
|
||||||
|
|
||||||
|
Hardware: NodeMCU 1.0 (ESP-12E Module), Platform=esp8266, Package=esp8266
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(_VMICRO_INTELLISENSE)
|
||||||
|
|
||||||
|
#ifndef _VSARDUINO_H_
|
||||||
|
#define _VSARDUINO_H_
|
||||||
|
#define __ESP8266_esp8266__
|
||||||
|
#define __ESP8266_ESP8266__
|
||||||
|
#define __ets__
|
||||||
|
#define ICACHE_FLASH
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#define MMU_IRAM_SIZE 0x8000
|
||||||
|
#define MMU_ICACHE_SIZE 0x8000
|
||||||
|
#define NONOSDK22x_190703 1
|
||||||
|
#define F_CPU 80000000L
|
||||||
|
#define LWIP_OPEN_SRC
|
||||||
|
#define TCP_MSS 536
|
||||||
|
#define LWIP_FEATURES 1
|
||||||
|
#define LWIP_IPV6 0
|
||||||
|
#define ARDUINO 108016
|
||||||
|
#define ARDUINO_ESP8266_NODEMCU_ESP12E
|
||||||
|
#define ARDUINO_ARCH_ESP8266
|
||||||
|
#define LED_BUILTIN 2
|
||||||
|
#define FLASHMODE_DIO
|
||||||
|
#define ESP8266
|
||||||
|
#define __cplusplus 201103L
|
||||||
|
#undef __cplusplus
|
||||||
|
#define __cplusplus 201103L
|
||||||
|
#define __STDC__
|
||||||
|
#define __ARM__
|
||||||
|
#define __arm__
|
||||||
|
#define __inline__
|
||||||
|
#define __asm__(x)
|
||||||
|
#define __asm__
|
||||||
|
#define __extension__
|
||||||
|
#define __ATTR_PURE__
|
||||||
|
#define __ATTR_CONST__
|
||||||
|
#define __volatile__
|
||||||
|
|
||||||
|
|
||||||
|
#define __ASM
|
||||||
|
#define __INLINE
|
||||||
|
#define __attribute__(noinline)
|
||||||
|
|
||||||
|
//#define _STD_BEGIN
|
||||||
|
//#define EMIT
|
||||||
|
#define WARNING
|
||||||
|
#define _Lockit
|
||||||
|
#define __CLR_OR_THIS_CALL
|
||||||
|
#define C4005
|
||||||
|
#define _NEW
|
||||||
|
|
||||||
|
//typedef int uint8_t;
|
||||||
|
//#define __ARMCC_VERSION 400678
|
||||||
|
//#define PROGMEM
|
||||||
|
//#define string_literal
|
||||||
|
//
|
||||||
|
//#define prog_void
|
||||||
|
//#define PGM_VOID_P int
|
||||||
|
//
|
||||||
|
|
||||||
|
typedef int _read;
|
||||||
|
typedef int _seek;
|
||||||
|
typedef int _write;
|
||||||
|
typedef int _close;
|
||||||
|
typedef int __cleanup;
|
||||||
|
|
||||||
|
//#define inline
|
||||||
|
|
||||||
|
#define __builtin_clz
|
||||||
|
#define __builtin_clzl
|
||||||
|
#define __builtin_clzll
|
||||||
|
#define __builtin_labs
|
||||||
|
#define __builtin_va_list
|
||||||
|
typedef int __gnuc_va_list;
|
||||||
|
|
||||||
|
#define __ATOMIC_ACQ_REL
|
||||||
|
|
||||||
|
#define __CHAR_BIT__
|
||||||
|
#define _EXFUN()
|
||||||
|
|
||||||
|
typedef unsigned char byte;
|
||||||
|
extern "C" void __cxa_pure_virtual() {;}
|
||||||
|
|
||||||
|
|
||||||
|
typedef long __INTPTR_TYPE__ ;
|
||||||
|
typedef long __UINTPTR_TYPE__ ;
|
||||||
|
typedef long __SIZE_TYPE__ ;
|
||||||
|
typedef long __PTRDIFF_TYPE__;
|
||||||
|
|
||||||
|
// Additions needed for v3.0.0 Core - Needs to be conditional on it being this core really!!
|
||||||
|
#ifndef isnan
|
||||||
|
#undef _Lockit
|
||||||
|
#undef __STDC__
|
||||||
|
#define __STDC__ 1
|
||||||
|
#define __CHAR_BIT__ 1
|
||||||
|
extern int isinf(double);
|
||||||
|
extern int isnan(double);
|
||||||
|
extern int fpclassify(double);
|
||||||
|
extern int signbit(double);
|
||||||
|
extern int isfinite(double);
|
||||||
|
extern int isnormal(double);
|
||||||
|
extern int isgreater(double, double);
|
||||||
|
extern int isgreaterequal(double);
|
||||||
|
extern int isless(double, double);
|
||||||
|
extern int islessequal(double, double);
|
||||||
|
extern int islessgreater(double, double);
|
||||||
|
extern int isunordered(double, double);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "new"
|
||||||
|
#include "Esp.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "arduino.h"
|
||||||
|
#include <pins_arduino.h>
|
||||||
|
|
||||||
|
#include "..\generic\Common.h"
|
||||||
|
#include "..\generic\pins_arduino.h"
|
||||||
|
|
||||||
|
#undef F
|
||||||
|
#define F(string_literal) ((const PROGMEM char *)(string_literal))
|
||||||
|
#undef PSTR
|
||||||
|
#define PSTR(string_literal) ((const PROGMEM char *)(string_literal))
|
||||||
|
//current vc++ does not understand this syntax so use older arduino example for intellisense
|
||||||
|
//todo:move to the new clang/gcc project types.
|
||||||
|
#define interrupts() sei()
|
||||||
|
#define noInterrupts() cli()
|
||||||
|
|
||||||
|
#include "DomoEsp_v02.ino"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,50 @@
|
||||||
//parametros configurables*************************************************
|
//parametros configurables*************************************************
|
||||||
#define DEBUG_PS 1//Descomentar para debug
|
#define DEBUG_PS 1//Descomentar para debug
|
||||||
#define CON_LCD 0
|
#define CON_LCD 0
|
||||||
|
#define CON_WOL 0
|
||||||
//va por 16
|
//va por 16
|
||||||
|
class CocinapRUBDomoConfig: public DomoConfig
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CocinapRUBDomoConfig()
|
||||||
|
{
|
||||||
|
velocidadPortSerie=115200;
|
||||||
|
strcpy(ssidWifi,"Idhun");//nombre wifi
|
||||||
|
strcpy(keyWifi,"Ardileorca1234.");//key wifi
|
||||||
|
strcpy(ideEsp,"Esp8266_P");//idenitificador del esp (sera único)
|
||||||
|
strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker
|
||||||
|
portMQTT=1883;//puerto del servidor mqtt Broker
|
||||||
|
refresTimeVars=30;//tiempo de refresco en segundos de las variables
|
||||||
|
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
||||||
|
}
|
||||||
|
//configuracion de sensores---------------------------------
|
||||||
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
|
{
|
||||||
|
sens->AddHDT22(D4, "casa/cocina");//01
|
||||||
|
sens->AddDinRetardOff(D5, 60,"casa/p/mov");//2
|
||||||
|
int mov=2;
|
||||||
|
sens->AddAnalogIn(0, "casa/p/luz",true);//3
|
||||||
|
int luz=3;
|
||||||
|
sens->AddDin( D1, "casa/p/inter");//4
|
||||||
|
int interr=4;
|
||||||
|
sens->AddDout(D2, "casa/p/lam", false);//5
|
||||||
|
int lam=5;
|
||||||
|
int lauto= vars->AddVirtualOutVarInt( "casa/p/luzAuto");//variable privada
|
||||||
|
char st[64];
|
||||||
|
|
||||||
|
//Efecto Pulsadores
|
||||||
|
sprintf(st,"{%d}>0 -> !{%d} ",interr,lam);//accion interruptor
|
||||||
|
des->AddDes(st);
|
||||||
|
sprintf(st,"{%d}<1 -> !{%d} ",interr,lam);//accion interruptor
|
||||||
|
des->AddDes(st);
|
||||||
|
|
||||||
|
sprintf(st,"{%d}<1&{%d}>0&{%d}=1 -> {%d}=0 ",mov,lauto,lam,lam);//apaga luz si no hay nadie
|
||||||
|
des->AddDes(st);
|
||||||
|
sprintf(st,"{%d}>20&{%d}>0&{%d}>0 -> {%d}=1 ",luz,mov,lauto,lam);//enciende luz si hay presencia y esta oscuro
|
||||||
|
des->AddDes(st);
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
class ActDomoConfig: public DomoConfig
|
class ActDomoConfig: public DomoConfig
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -31,7 +74,7 @@ class ActDomoConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
//configuracion de sensores, variables, lcd---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
//sensores--------------------------------------------------------
|
//sensores--------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
|
|
@ -137,7 +180,7 @@ class PulSalonPruebConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
//configuracion de sensores, variables, lcd---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
//sensores--------------------------------------------------------
|
//sensores--------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -179,7 +222,7 @@ class AutomatismosDomoConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
//configuracion de sensores, variables, lcd---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
//sensores--------------------------------------------------------
|
//sensores--------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
|
|
@ -244,72 +287,13 @@ class AutomatismosDomoConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
class PulCocinaConfig: public DomoConfig
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
PulCocinaConfig()
|
|
||||||
{
|
|
||||||
velocidadPortSerie=115200;
|
|
||||||
strcpy(ssidWifi,"Idhun");//nombre wifi
|
|
||||||
strcpy(keyWifi,"Ardileorca1234.");//key wifi
|
|
||||||
|
|
||||||
strcpy(ideEsp,"Esp8266_Pulcocina");//idenitificador del esp (sera único)
|
|
||||||
strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker
|
|
||||||
portMQTT=1883;//puerto del servidor mqtt Broker
|
|
||||||
|
|
||||||
refresTimeVars=30;//tiempo de refresco en segundos de las variables
|
|
||||||
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
|
||||||
|
|
||||||
//config lcd--------------------
|
|
||||||
lcd.colum=16;//columnas lcd
|
|
||||||
lcd.lines=2;//lineas
|
|
||||||
//pines lcd
|
|
||||||
lcd.rs=0;
|
|
||||||
lcd.en=0;//eneable
|
|
||||||
lcd.d0=0;
|
|
||||||
lcd.d1=0;
|
|
||||||
lcd.d2=0;
|
|
||||||
lcd.d3=0;
|
|
||||||
|
|
||||||
}
|
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
|
||||||
{
|
|
||||||
//sensores--------------------------------------------------------
|
|
||||||
/*
|
|
||||||
sens->AddHDT22(int pin, char* topic);
|
|
||||||
//tempe y presion varometrica
|
|
||||||
sens->AddBMP180(int sda,int scl, char* topic);
|
|
||||||
//entradas digitales
|
|
||||||
sens->AddDin(int pin, char* topic);//añade variable digital que se actualiza de manera instantanea (interruptores sensor presencia ..)
|
|
||||||
sens->AddDinAccion(int pin, char* topic);//añade variable que solo publica en el cambio (pulsadores, ...)
|
|
||||||
//salida digital
|
|
||||||
sens->AddDout(int pin, char* topic, bool defautlValor);//variable que solo publica en el cambio (pulsadores, ...)
|
|
||||||
Sensor analogico
|
|
||||||
sens->AddAnalogIn(int pin, char* topic, bool ValNegado);//nivel de luz, nivel de lluvia ...
|
|
||||||
*/
|
|
||||||
sens->AddDinRetardOn(D1,5,"casa/p/pul");
|
|
||||||
sens->AddDout(D5, "casa/coci/lam", false);
|
|
||||||
sens->AddDinAccion( D1, "casa/coci/inter");
|
|
||||||
//sens->AddDinAccion( D2, "casa/Salon/pul2");
|
|
||||||
//sens->AddDinAccion( D5, "casa/Salon/pul3");
|
|
||||||
//sens->AddDinAccion( D6, "casa/Salon/pulAll");
|
|
||||||
|
|
||||||
|
|
||||||
char st[64];
|
|
||||||
|
|
||||||
//Efecto Pulsadores
|
|
||||||
sprintf(st,"{%d}>0 -> !{%d} ",1,0);//terminar en espacios
|
|
||||||
des->AddDes(st);
|
|
||||||
sprintf(st,"{%d}<1 -> !{%d} ",1,0);//terminar en espacios
|
|
||||||
des->AddDes(st);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
class PulSalonConfig: public DomoConfig
|
class PulSalonConfig: public DomoConfig
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PulSalonConfig()
|
PulSalonConfig()
|
||||||
{
|
{
|
||||||
|
//CON LCD Y WOL
|
||||||
velocidadPortSerie=115200;
|
velocidadPortSerie=115200;
|
||||||
strcpy(ssidWifi,"Idhun");//nombre wifi
|
strcpy(ssidWifi,"Idhun");//nombre wifi
|
||||||
strcpy(keyWifi,"Ardileorca1234.");//key wifi
|
strcpy(keyWifi,"Ardileorca1234.");//key wifi
|
||||||
|
|
@ -334,7 +318,7 @@ class PulSalonConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
//configuracion de sensores, variables, lcd---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
//sensores--------------------------------------------------------
|
//sensores--------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
|
|
@ -387,7 +371,7 @@ class DespachoDomoConfig: public DomoConfig
|
||||||
|
|
||||||
}
|
}
|
||||||
//configuracion de sensores, variables, lcd---------------------------------
|
//configuracion de sensores, variables, lcd---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd,MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
//sensores--------------------------------------------------------
|
//sensores--------------------------------------------------------
|
||||||
sens->AddHDT22(D4, "casa/desp");
|
sens->AddHDT22(D4, "casa/desp");
|
||||||
|
|
@ -410,6 +394,7 @@ class DespachoDomoConfig: public DomoConfig
|
||||||
lcd->add(temExt,"T Ext: %s",0,2);
|
lcd->add(temExt,"T Ext: %s",0,2);
|
||||||
lcd->add(hExt,"H Ext: %s",1,2);
|
lcd->add(hExt,"H Ext: %s",1,2);
|
||||||
strcpy(lcd->topic,"casa/desp/msg");
|
strcpy(lcd->topic,"casa/desp/msg");
|
||||||
|
strcpy(wol->topic,"casa/wol");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
class CocinaDomoConfig: public DomoConfig
|
class CocinaDomoConfig: public DomoConfig
|
||||||
|
|
@ -427,7 +412,7 @@ class CocinaDomoConfig: public DomoConfig
|
||||||
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
||||||
}
|
}
|
||||||
//configuracion de sensores---------------------------------
|
//configuracion de sensores---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
sens->AddHDT22(D4, "casa/cocina");//01
|
sens->AddHDT22(D4, "casa/cocina");//01
|
||||||
sens->AddDinRetardOff(D5, 60,"casa/cocina/mov");//2
|
sens->AddDinRetardOff(D5, 60,"casa/cocina/mov");//2
|
||||||
|
|
@ -437,17 +422,20 @@ class CocinaDomoConfig: public DomoConfig
|
||||||
sens->AddDin( D1, "casa/cocina/inter");//4
|
sens->AddDin( D1, "casa/cocina/inter");//4
|
||||||
sens->AddDout(D2, "casa/cocina/lam", false);//5
|
sens->AddDout(D2, "casa/cocina/lam", false);//5
|
||||||
int lam=5;
|
int lam=5;
|
||||||
int lauto= vars->AddVirtualOutVarInt( "casa/cocina/luzAuto");//variable privada
|
int lauto= vars->AddVirtualOutVarInt( "casa/cocina/luzAuto");
|
||||||
char st[64];
|
char st[64];
|
||||||
|
|
||||||
//Efecto Pulsadores
|
//Efecto Pulsadores
|
||||||
sprintf(st,"{%d}>0 -> !{%d} ",4,5);//accion interruptor
|
|
||||||
|
sprintf(st,"{%d}>0 -> !{%d} ",4,lam);//accion interruptor
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
sprintf(st,"{%d}<1 -> !{%d} ",4,5);//accion interruptor
|
|
||||||
|
sprintf(st,"{%d}<1 -> !{%d} ",4,lam);//accion interruptor
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
|
|
||||||
sprintf(st,"{%d}<1&{%d}>0&{%d}=1 -> {%d}=0 ",mov,lauto,lam,lam);//apaga luz si no hay nadie
|
sprintf(st,"{%d}<1&{%d}>0&{%d}=1 -> {%d}=0 ",mov,lauto,lam,lam);//apaga luz si no hay nadie
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
sprintf(st,"{%d}<20&{%d}>0&{%d}>0&{%d}=0 -> {%d}=1 ",luz,mov,lauto,lam,lam);//enciende luz si hay presencia y esta oscuro
|
sprintf(st,"{%d}<20&{%d}>0&{%d}>0 -> {%d}=1 ",luz,mov,lauto,lam);//enciende luz si hay presencia y esta oscuro
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -467,14 +455,14 @@ class SalonDomoConfig: public DomoConfig
|
||||||
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
||||||
}
|
}
|
||||||
//configuracion de sensores---------------------------------
|
//configuracion de sensores---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
sens->AddHDT22(D4, "casa/Salon");//01
|
sens->AddHDT22(D4, "casa/Salon");//01
|
||||||
sens->AddDinRetardOff(D5, 60,"casa/Salon/mov");//2
|
sens->AddDinRetardOff(D5, 60,"casa/Salon/mov");//2
|
||||||
sens->AddAnalogIn(0, "casa/Salon/luz",true);//3
|
sens->AddAnalogIn(0, "casa/Salon/luz",true);//3
|
||||||
|
|
||||||
//variables----------------------------------------------------
|
//variables----------------------------------------------------
|
||||||
|
//variables para pulsadores---------------------------
|
||||||
int lamb= vars->AddInternalVarInt( "casa/Salon/LAmb");
|
int lamb= vars->AddInternalVarInt( "casa/Salon/LAmb");
|
||||||
int lchim= vars->AddInternalVarInt( "casa/Salon/LChime");
|
int lchim= vars->AddInternalVarInt( "casa/Salon/LChime");
|
||||||
int lent= vars->AddInternalVarInt( "casa/Salon/LEnt");
|
int lent= vars->AddInternalVarInt( "casa/Salon/LEnt");
|
||||||
|
|
@ -484,6 +472,13 @@ class SalonDomoConfig: public DomoConfig
|
||||||
int pul3= vars->AddInternalVarInt( "casa/Salon/pul3");
|
int pul3= vars->AddInternalVarInt( "casa/Salon/pul3");
|
||||||
int pulIall= vars->AddInternalVarInt( "casa/Salon/intAll");
|
int pulIall= vars->AddInternalVarInt( "casa/Salon/intAll");
|
||||||
int pulAll= vars->AddInternalVarInt( "casa/Salon/pulAll");
|
int pulAll= vars->AddInternalVarInt( "casa/Salon/pulAll");
|
||||||
|
/*
|
||||||
|
int cociMov= vars->AddInternalVarInt( "casa/cocina/mov");
|
||||||
|
int cociLuz= vars->AddInternalVarInt( "casa/cocina/luz");
|
||||||
|
int cociLam= vars->AddInternalVarInt( "casa/cocina/lam");
|
||||||
|
int cociAuto= vars->AddInternalVarInt("casa/cocina/luzAuto");
|
||||||
|
*/
|
||||||
|
//variables para pulsadores cocina----------------------------
|
||||||
|
|
||||||
//desencadenaores----------
|
//desencadenaores----------
|
||||||
char st[64];
|
char st[64];
|
||||||
|
|
@ -501,7 +496,13 @@ class SalonDomoConfig: public DomoConfig
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
sprintf(st,"{%d}>0 -> !{%d} ",pul3,lent);//terminar en espacios
|
sprintf(st,"{%d}>0 -> !{%d} ",pul3,lent);//terminar en espacios
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
|
/*
|
||||||
|
//variablaes cocina
|
||||||
|
sprintf(st,"{%d}<1&{%d}>0&{%d}=1 -> {%d}=0 ",cociMov,cociAuto,cociLam,cociLam);//apaga luz si no hay nadie
|
||||||
|
des->AddDes(st);
|
||||||
|
sprintf(st,"{%d}<20&{%d}>0&{%d}>0 -> {%d}=1 ",cociLuz,cociMov,cociAuto,cociLam);//enciende luz si hay presencia y esta oscuro
|
||||||
|
des->AddDes(st);
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -520,7 +521,7 @@ class ExteriorDomoConfig: public DomoConfig
|
||||||
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
refresTimeSens=15;//tiempo de refresco en segundos de los sensores
|
||||||
}
|
}
|
||||||
//configuracion de sensores---------------------------------
|
//configuracion de sensores---------------------------------
|
||||||
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttDesencadenadorManager *des)
|
virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des)
|
||||||
{
|
{
|
||||||
sens->AddHDT22(D2, "casa/ext");
|
sens->AddHDT22(D2, "casa/ext");
|
||||||
sens->AddAnalogIn(0, "casa/ext/lluvia",true);
|
sens->AddAnalogIn(0, "casa/ext/lluvia",true);
|
||||||
|
|
@ -531,4 +532,4 @@ class ExteriorDomoConfig: public DomoConfig
|
||||||
|
|
||||||
|
|
||||||
//configuracion que se usara--------------------------
|
//configuracion que se usara--------------------------
|
||||||
CocinaDomoConfig ConfiguracionActual;
|
SalonDomoConfig ConfiguracionActual;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
"c:\Program Files (x86)\Arduino\arduino.exe" --board arduino:avr:nano:cpu=atmega168 --port /dev/ttyACM0 --upload /path/to/sketch/sketch.ino
|
||||||
|
pause
|
||||||
Loading…
Reference in New Issue