The only thing that remains is to create the code to make the initial setup and some code to turn the plug on and off.
Although I have been a software developer for many years, I have never really made much socket-programming, so I tried to find something on the internet to build on.
After quite some searching, I found this discussion on stackoverflow.
This actually issues the correct commands to make the initial setup of a Maginon SP-2 smart plug. However, it needs a small correction to make it work with the Maginon plug – the same that I mentioned earlier with regards to the Orvibo socket. Alle replies from the socket will be received on UDP port 48899.
I have made a corrected version of the register.c program here.
Before you compile the program, change these two lines to match the SSID and Wifi password to your own router (change DLINK to your SSID and the xxxPASS_WPA_PASSxxx to your Wifi password.
static const char *ssid = "AT+WSSSID=DLINK\r"; static const char *sec_settings = "AT+WSKEY=WPA2PSK,TKIP,xxxPASS_WPA_PASSxxx\r";
The program is compiled with:
gcc -O0 -o register register.c
Before you run the program, be sure to assign the socket a static ip-address in your router. To do this, you need to get the MAC address of the socket, and then in your router, assign a static ip-address to that MAC address.
Now run the program
register
When the socket reboots, it should connect to you own WIFI router. Check the router to see if it has done so.
When it is connected, these two python scripts to turn the socket
On:
#!/usr/bin/env python from socket import * from datetime import datetime HOST = 'plug1' PORT = 8899 BUFSIZ = 1024 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data2 = 'AT+YZSWITCH=1,ON,'+datetime.now().strftime('%Y%m%d%H%M') tcpCliSock.send(data2) data1 = tcpCliSock.recv(BUFSIZ) print data1 tcpCliSock.close()
and Off:
#!/usr/bin/env python from socket import * from datetime import datetime HOST = 'plug1' PORT = 8899 BUFSIZ = 1024 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data2 = 'AT+YZSWITCH=1,OFF,'+datetime.now().strftime('%Y%m%d%H%M') tcpCliSock.send(data2) data1 = tcpCliSock.recv(BUFSIZ) print data1 tcpCliSock.close()
In both cases, you should modify the HOST line in both scripts and set it to the DNS name or the ip-adress of your plug
When you can turn the socket on and off, you can also try to use the delay command
AT+YZDELAY=1,OFF,5,201701232127
It can be used for both ON and OFF. The number after ON/OFF is the delay in minutes.