What an adventure it was. For the first time, I started the livestream not knowing what’s ahead. Determined and armed with Google, I started the livestream and proceeded with taking the case of the ESP8285 GeekCreit 4 Way relay controller apart. It’s was a good learning experience, I’m glad some of you were there to cheer, help and keep my company! This is how you can hack the ESP8285 GeekCreit 4 Way relay controller.
ESP8285 GeekCreit 4 Way relay controller
The controller has been given to me by a hackspace friend. A rather unknown board after some Googling turned out to be the ESP8285 GeekCreit 4 Way relay, controller. Armed with this knowledge, I found a rather confusing product sheet. Confusing, as images are mirrored and everything is written in Chinese.
I’m not the one to give up quick, so I started to try things out. For the sake of your time, I have created the complete pinout for you. If you want to refer to the original datasheet be my guest.
ESP8285 pinout
The pinout itself on the pictures was confusing so I took the liberty of redesigning it.
Having the ESP8285 pinout is one thing, but mapping this to an existing board is another. While the AFE Firmware I’m going to use have most of the mapping done, knowing what’s what is crucial when it comes to writing custom code. This is the board and the connections:
To flash a ready bin file or your own Arduino IDE code, you have to back up, wipe the flash and upload the new bin file or the Arduino code. The procedure is described in detail here.
I’m going to cover the AFE Firmware, which is pretty easy to use, if you want to push your own code, just open the Arduino IDE and flash it using the ESP8285 module in the board manager.
Before you get irritated, the ESP8285 GeekCreit 4 Way relay controller has a function button which drives the board modes. There is only one mode in which the board will function properly so circle the mode couple of times and try it out.
AFF Firmware on ESP8285 GeekCreit 4 Way relay controller
If you are feeling lazy, Adrian Czabanowski created the firmware for this (and other) controllers. You can find his firmware on the website www.smartnydom.pl but a lot of it is in Polish.
Fortunately, you have me, and I’m here to make it easy – and download the Firmware for your board with up to 4 relays (T4). There is a version for ESP8266 and ESP8285 so make sure you get the right one. Flash the firmware (rename it to something simple) so you don’t have to type all that in the PowerShell.
Once the firmware is flashed, hold the pairing button for about 10 sec. You will see the board’s LED blinking fast. The ESP8285 GeekGerit 4 Way relay controller will go into the AP mode. Check the SSIDs on your phone and you will see the AFE Device – connect to it and note the gateway IP – usually, it’s something like:
192.168.5.1
And connect to it. Don’t bother with setting up everything on your mobile, unless you don’t have a PC around. Just update the Network details and finish the configuration. Once this is done, the ESP8285 GeekCreit 4 Way relay controller will get a new IP assigned by your router.
Load the device page and enter settings again. From here you will be able to configure the device to your needs. Select the number of relays (4 – GPIO12,04,05,15), switches (1 – GPIO14) and LEDs (1 – GPIO13)
Enable the MQTT and HTTP protocols and check the general configuration. Make notes of anything you don’t think you can remember as we will need this to use the MQTT and HTTP protocols.
MQTT and HTTP
There are 2 protocols that can be used to interact with the ESP8285 GeekCreit 4 Way relay controller. Both have their own advantages and I will show you how to link these to a NodeRED server. If you want to learn more about MQTT and HTTP in NodeRED I have a fantastic tutorial for you.
MQTT
The ESP8285 GeekCreit 4 Way relay controller comes with 4 relays that we can toggle. The MQTT broker allows you to specify the topic for the device, but to control each of the relays we have to modify that topic more.
Let’s say I use the topic name /esp8285/ this means that to control the relays, I will have to add the name of each relay (from the config page) to the topic.
/esp8285/switch1/ /esp8285/switch2/ /esp8285/switch3/ /esp8285/switch4/
To issue the commands I have to modify the topic further:
As you can see, this is fairly straight forward, and the control of each relay is done by modifying the topic and setting a correct payload.
HTTP requests
Another way of controlling the ESP8285 GeekCreit 4 Way relay controller is through the HTTP requests. Most of the time, you will be composing the URL which has embedded commands that will be issued to the board.
To build a valid URL you will need:
https://IP_Address/?device=relay&name=RelayName&command=command
Make sure to reserve the static IP address. The fields in my example are as follow:
command = on/off/get/toggle
RelayName = switch1/switch2/switch3/switch4
The responses given are sent in a JSON format. If you not sure how to handle JSON I have the tutorial explaining all you need to know here.
Here are a couple of JSON samples:
{ „device”:”ESP8285”, „name”:”switch1”, „command”:”on”, „value”:”on”, „status”:”success” } { „device”:”ESP8285”, „name”:”switch1”, „command”:”get”, „value”:”off”, „status”:”success” } { „command”:”reboot”, „status”:”success” }
Lastly, to control the MQTT, HTTP and other APIs links look like:
https://IP_Address/?device=DeviceName&name=ApiName&command=command
Where Apis names are: mqtt, http, domoticz.
Conclusion
The AFE Firmware is a cool solution if you don’t want to code the HTTP and MQTT protocols yourself. It’s robust enough to link it with the Alexa and Google Home skills. I’d love to see support for HTTPS and other integrations, but for now, this is a quick and easy way to integrate the ESP8285 and ESP8266 switches into your NodeRED environment. I wrote a very basic NodeRED flow to control and display the status of the relays on the dashboard. You can grab these files from below.
Project Download
Download project files here. Bear in mind that Patreon supporters have early access to project files and videos.