/* * FritzBox Smart Home - C++ interface class */ #ifndef _FBSH_H_ #define _FBSH_H_ #include #include #include #include #include std::string generateMD5 (char* input, int size); #define FB_BUFFER (4*1024*1024) struct { std::string id; std::string name; std::string others; std::string type; } typedef FBSmartHomeDevice; struct { int hue; int sat; int val; } typedef FBSmartHomeLightDefaults; struct { std::string id; std::string name; float temp; float temp_cur; float temp_set; float temp_h; float temp_l; int offset; std::liststats; int statsgrid; } typedef FBSmartHomeHKR; class FBSmartHome { private: char inbuffer[FB_BUFFER]; char outbuffer[FB_BUFFER]; std::string SID; FILE *fsidfile; std::string hostname; TCP tcp; int XMLPrepare(char *buffer, int len, xmlDocPtr *xmldoc, xmlNodePtr *xmlnode); int XMLReadAttr(FBSmartHomeDevice *dev, std::string objPrefix, xmlDocPtr xmldoc, xmlAttrPtr xmlattr); int XMLReadOBJ(FBSmartHomeDevice *dev, std::string objPrefix, xmlDocPtr xmldoc, xmlNodePtr xmlobj); int XMLReadAndAddDevice(std::list *devlist, std::string defType, xmlDocPtr xmldoc, xmlNodePtr xmlnode); public: FBSmartHome (); ~FBSmartHome (); std::string GetSID() { return SID; }; int UseSIDFile (std::string fn); int CloseSIDFile (); int Connect(std::string host); // return 0 on success int Connect(std::string host, std::string username, std::string password); int GetHKR(std::string ain, FBSmartHomeHKR *hkr); int SimpleOnOff(std::string ain, int oot); // oot 0=off, 1=on, 2=toggle int SetLevel(std::string ain, int level); // level 0...255 int SetColor(std::string ain, int hue, int sat, int duration); std::list *GetColorDefaults (std::string ain); std::list *GetDevices(); }; #endif