Added protocol Fuhaote
This commit is contained in:
parent
bbadbf6279
commit
f4e248edef
4 changed files with 152 additions and 0 deletions
|
@ -13,6 +13,7 @@ SET( telldus-core_SRCS
|
||||||
Device.cpp
|
Device.cpp
|
||||||
DeviceBrateck.cpp
|
DeviceBrateck.cpp
|
||||||
DeviceEverflourish.cpp
|
DeviceEverflourish.cpp
|
||||||
|
DeviceFuhaote.cpp
|
||||||
DeviceGroup.cpp
|
DeviceGroup.cpp
|
||||||
DeviceIkea.cpp
|
DeviceIkea.cpp
|
||||||
DeviceNexa.cpp
|
DeviceNexa.cpp
|
||||||
|
|
113
telldus-core/driver/libtelldus-core/DeviceFuhaote.cpp
Normal file
113
telldus-core/driver/libtelldus-core/DeviceFuhaote.cpp
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
#include "DeviceFuhaote.h"
|
||||||
|
//#include <string>
|
||||||
|
//#include <bitset>
|
||||||
|
//#include <algorithm>
|
||||||
|
//#include <fstream>
|
||||||
|
|
||||||
|
using namespace TelldusCore;
|
||||||
|
|
||||||
|
const char S = 19;
|
||||||
|
const char L = 58;
|
||||||
|
const char B0[] = {S,L,L,S,0};
|
||||||
|
const char B1[] = {L,S,L,S,0};
|
||||||
|
const char OFF[] = {S,L,S,L,S,L,L,S,0};
|
||||||
|
const char ON[] = {S,L,L,S,S,L,S,L,0};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
DeviceFuhaote::DeviceFuhaote(int id, const std::string &model, const std::string &name)
|
||||||
|
:Device(id, model, name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DeviceFuhaote::~DeviceFuhaote(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DeviceFuhaote::setCode(const std::string &strNewCode) {
|
||||||
|
strCode = strNewCode;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DeviceFuhaote::setDeviceParameter(const std::string &strName, const std::string &strValue) {
|
||||||
|
if (strName.compare("code") == 0) {
|
||||||
|
return setCode(strValue);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Turn on this device
|
||||||
|
*/
|
||||||
|
int DeviceFuhaote::turnOn(Controller *controller){
|
||||||
|
|
||||||
|
std::string strCode = "S";
|
||||||
|
strCode.append(getStringCode());
|
||||||
|
strCode.append(ON);
|
||||||
|
strCode.append(1, S);
|
||||||
|
strCode.append("+");
|
||||||
|
|
||||||
|
return controller->send(strCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Turn off this device
|
||||||
|
*/
|
||||||
|
int DeviceFuhaote::turnOff(Controller *controller){
|
||||||
|
|
||||||
|
std::string strCode = "S";
|
||||||
|
strCode.append(getStringCode());
|
||||||
|
strCode.append(OFF);
|
||||||
|
strCode.append(1, S);
|
||||||
|
strCode.append("+");
|
||||||
|
|
||||||
|
return controller->send(strCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DeviceFuhaote::parameterMatches( const std::string &name, const std::string &value ) const {
|
||||||
|
if (name.compare("code") == 0 && value.compare(strCode) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Has the device got the method?
|
||||||
|
*/
|
||||||
|
int DeviceFuhaote::methods(){
|
||||||
|
return (TELLSTICK_TURNON | TELLSTICK_TURNOFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string DeviceFuhaote::getStringCode(void){
|
||||||
|
|
||||||
|
std::string strReturn;
|
||||||
|
|
||||||
|
//House code
|
||||||
|
for(size_t i = 0; i < 5; ++i) {
|
||||||
|
if (strCode[i] == '0') {
|
||||||
|
strReturn.append(B0);
|
||||||
|
} else if (strCode[i] == '1') {
|
||||||
|
strReturn.append(B1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Unit code
|
||||||
|
for(size_t i = 5; i < 10; ++i) {
|
||||||
|
if (strCode[i] == '0') {
|
||||||
|
strReturn.append(B0);
|
||||||
|
} else if (strCode[i] == '1') {
|
||||||
|
strReturn.append(1, S);
|
||||||
|
strReturn.append(1, L);
|
||||||
|
strReturn.append(1, S);
|
||||||
|
strReturn.append(1, L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strReturn;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string DeviceFuhaote::getProtocol() const {
|
||||||
|
return "fuhaote";
|
||||||
|
}
|
||||||
|
|
33
telldus-core/driver/libtelldus-core/DeviceFuhaote.h
Normal file
33
telldus-core/driver/libtelldus-core/DeviceFuhaote.h
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#ifndef DEVICEFUHAOTE_H
|
||||||
|
#define DEVICEFUHAOTE_H
|
||||||
|
|
||||||
|
#include "Device.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace TelldusCore {
|
||||||
|
|
||||||
|
class DeviceFuhaote : public Device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DeviceFuhaote(int id, const std::string &model, const std::string &name);
|
||||||
|
virtual ~DeviceFuhaote(void);
|
||||||
|
|
||||||
|
virtual int methods();
|
||||||
|
virtual std::string getProtocol() const;
|
||||||
|
virtual bool parameterMatches( const std::string &name, const std::string &value ) const;
|
||||||
|
|
||||||
|
bool setCode(const std::string &strNewCode);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool setDeviceParameter(const std::string &strName, const std::string &strValue);
|
||||||
|
|
||||||
|
virtual int turnOn(Controller *controller);
|
||||||
|
virtual int turnOff(Controller *controller);
|
||||||
|
|
||||||
|
std::string getStringCode(void);
|
||||||
|
std::string strCode;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //DEVICEFUHAOTE_H
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "DeviceBrateck.h"
|
#include "DeviceBrateck.h"
|
||||||
#include "DeviceEverflourish.h"
|
#include "DeviceEverflourish.h"
|
||||||
|
#include "DeviceFuhaote.h"
|
||||||
#include "DeviceGroup.h"
|
#include "DeviceGroup.h"
|
||||||
#include "DeviceNexa.h"
|
#include "DeviceNexa.h"
|
||||||
#include "DeviceRisingSun.h"
|
#include "DeviceRisingSun.h"
|
||||||
|
@ -100,6 +101,10 @@ Device *Manager::getDevice(int intDeviceId){
|
||||||
((DeviceEverflourish*)dev)->setHouse(settings.getDeviceParameter(intDeviceId, "house"));
|
((DeviceEverflourish*)dev)->setHouse(settings.getDeviceParameter(intDeviceId, "house"));
|
||||||
((DeviceEverflourish*)dev)->setUnit(settings.getDeviceParameter(intDeviceId, "unit"));
|
((DeviceEverflourish*)dev)->setUnit(settings.getDeviceParameter(intDeviceId, "unit"));
|
||||||
|
|
||||||
|
} else if (strcasecmp(protocol.c_str(), "fuhaote") == 0) {
|
||||||
|
dev = new DeviceFuhaote(intDeviceId, strModel, strName);
|
||||||
|
((DeviceFuhaote*)dev)->setCode(settings.getDeviceParameter(intDeviceId, "code"));
|
||||||
|
|
||||||
} else if (strcasecmp(protocol.c_str(), "group") == 0) {
|
} else if (strcasecmp(protocol.c_str(), "group") == 0) {
|
||||||
dev = new DeviceGroup(intDeviceId, strModel, strName);
|
dev = new DeviceGroup(intDeviceId, strModel, strName);
|
||||||
((DeviceGroup*)dev)->setDevices(settings.getDeviceParameter(intDeviceId, "devices"));
|
((DeviceGroup*)dev)->setDevices(settings.getDeviceParameter(intDeviceId, "devices"));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue