DomoEsp_v2.0/DomoEspSensor/SensorBMP180.h

75 lines
1.6 KiB
C++

#ifndef SensorBMP180Def
#define SensorBMP180Def 1
#include "defines.h"
#include <Wire.h>
#include <Adafruit_BMP085.h>
//sensor virtual
class SensorBMP180: public DomoEspSensorReceiver
{
float t, p, a;//temperarura, presion, altura
int sda,scl;
Adafruit_BMP085 bmp;
public:
SensorBMP180()
{
t=p=a=0;
topic[0]=0;
}
void set(const char* topic_id, int _sda, int _scl)
{
sda=_sda;
scl=_scl;
strcpy(topic, topic_id);
}
virtual void inicia()
{
//inicia------------------
Wire.begin( sda,scl);
int i=0;
while(!bmp.begin(), i<300)
{
i++;
delay(10);
}
if(i>=300)
{
#ifdef DEBUG_PS
Serial.println("---------------------------------LogBMP Error al inicializar bmp----------------------------------");
#endif
}
}
virtual float getVal()
{
return (float)p;
}
virtual void procesa(IMqttManager * man, int tiempo)
{
if(tiempo==2)
{
#ifdef DEBUG_PS
Serial.println("LogBMP ");
#endif
t= bmp.readTemperature();
p = bmp.readPressure();
a=bmp.readAltitude();
//loguea------------
//char buffer_t[MAXTOPICVAR];
//char buffer_p[MAXTOPICVAR];
sprintf(buffer_p, "%d", t);
sprintf(buffer_t, "%s/t/get",topic);
man->MqttSend(buffer_t, buffer_p);
sprintf(buffer_p, "%d", p);
sprintf(buffer_t, "%s/p/get",topic);
man->MqttSend(buffer_t, buffer_p);
sprintf(buffer_p, "%d", a);
sprintf(buffer_t, "%s/a/get",topic);
man->MqttSend(buffer_t, buffer_p);
}
}
};
#endif