-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPlug_Controller.h
executable file
·48 lines (38 loc) · 1.75 KB
/
Plug_Controller.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// #############################################################################
// #############################################################################
// #############################################################################
// TP-Link HS100/HS110 SmartPlug Controller for ESP8266/ESP32
// by Miraculix200 (not affiliated with TP-Link)
// License: MIT
// Code may stop working any time if TP-Link changes their firmware
// #############################################################################
// #############################################################################
// #############################################################################
#ifndef PLUG_CONTROLLER_H
#define PLUG_CONTROLLER_H
#include <Arduino.h>
#include <WiFiClient.h>
class PlugController {
private:
IPAddress targetIP;
uint16_t targetPort;
static void serializeUint32(char (&buf)[4], uint32_t val);
static void encrypt(char* data, uint16_t length);
static void encryptWithHeader(char* out, char* data, uint16_t length);
static void decrypt(char* input, uint16_t length);
uint16_t tcpConnect(char* out, const char* cmd, uint16_t length, unsigned long timeout_millis);
public:
PlugController(IPAddress ip, uint16_t port);
String sendCmd(String cmd);
String on();
String off();
String getEmeter();
String getInfo();
String eraseEmeterStats();
String setLed(bool power);
String countDown(uint16_t seconds, bool act);
};
#endif
// #############################################################################
// #############################################################################
// #############################################################################