At my parents‘ house in the garden there is a pool with an older controller for filter pump and solar heating. Via underground pipes the water is pumped from the skimmer and floor drain into the house, pumped through the sand filter, heated if necessary (depending on the availability of solar heat) and then pumped back into the pool via a few meters of pipe and the inlet nozzles.
The old controller has a very simple design and includes a mechanical timer, an input for a temperature sensor, an output for the circulating pump of the heat exchanger and of course a (contactor) switched output for the filter pump. Most of the time, however, the pump is switched on manually, which means that a walk into the basement is necessary.
Old ControllerFilter and filter pump
At first I created a draft concept. The new controller should be WLAN capable and be able to map the previous functions.
DIN Module ConceptPump, Filter and Heat Exchanger
The concept was then „translated“ into a circuit schematic and a circuit board was designed for it. Actually there are two circuit diagrams and boards, one is the basic module and the soldered-on board is the DCDC voltage converter (6-35V –> 5V)
PCB DIN Module
PCB DCDC Converter
Schematic DCDC Converter
Schematic DIN Module
I ordered the two circuit boards to be manufactured and partially assembled in China. But of course I made a mistake with the first version of the circuit, which I already changed in the schematics above: the two optocoupler isolated inputs were wrongly connected to the wemos board, so the board reset itself continuously (D3/D4 via pulldown to ground).
DCDC PCBs
DIN Rail Module PCBs
PCBs soldered together
After assembling the two boards and other components like connectors the wemos board was flashed with a tasmota firmware build. Then the module was packed in a DIN-Rail case and installed in a small distribution box with two auxiliary relays, a contactor and a 24V power supply. On the photo you can see the „fix“ of my error with D3 and D4 with enamelled wire near the two optocouplers.
Module without housing cover
The display, a button for switching the display on and off and a potentiometer for setting the target temperature were installed in the drilled and cut-out sections of the housing. The display flickers with high frequency, so there is always one line black on the pictures – the human eye does not notice anything. A button for manually switching the filter pump on and off was installed in a cable entry of the distribution box.
ready-to-install unit
The filter pump can now be switched on manually by push button, via the web interface and also schedule-controlled with Tasmota. Depending on the temperature of the water and release from the solar system (excess heat), the circulation pump of the heat exchanger is switched on as well.
I own a robot vaccum cleaner from eufy (RoboVac 30C), but what i hate are chinese cloud applications. So one of the first steps of the cleaner was on my table. In parts.
Vaccum bot in parts
The main controller of the bot is a STM microcontroller with sensorcontroller, motor controller, … The interessting part is the 4-wire cable to the ‚TYWE1S‘ WiFi Modul. This module, based on the ESP8266 microcontroller, is tasmota capable. And fortunatly all pins are labeled. So at first, i soldered a ribbon cable to all interessting pins and place the connector in the battery box. You can see the grey ribbon cable and the connector on the pictures above and below also.
WIFI Module with soldered ribbon cable
All pins are labeled!
debugging connector in the battery box
I debugged a while with the original app and firmware and map the following commands at 115200 Baud:
ESP commands to the STM (And corresponding Tasmota TuyaMCU commands, if available):
55 AA 00 00 00 00 FF -> Heartbeat
55 AA 00 1C 00 08 01 14 01 03 0E 1E 0F 05 7C
--> Time and Date, Example:
55 AA 00 1C 00 08 01 14 01 03 0E 1E 0F 05 7C
Preamble........... 020 001 003 014 035 015 005 Chksum
-> 20/01/03 14:35:15 Friday
55 AA 00 06 00 05 05 04 00 01 00 14
-> Auto -> TuyaSend4 5,0
55 AA 00 06 00 05 05 04 00 01 01 15
-> 30 min -> TuyaSend4 5,1
55 AA 00 06 00 05 05 04 00 01 02 16
-> Spot -> TuyaSend4 5,2
55 AA 00 06 00 05 05 04 00 01 03 17
-> Edges-> TuyaSend4 5,3
55 AA 00 06 00 05 02 01 00 01 00 0E
-> Stop -> TuyaSend1 2,0
-> Start -> TuyaSend1 2,1
55 AA 00 06 00 05 65 01 00 01 01 72
-> Home -> TuyaSend1 101,1
55 AA 00 06 00 05 67 01 00 01 01 74
-> Find Start -> TuyaSend1 103,1
55 AA 00 06 00 05 67 01 00 01 00 73
-> Find Stop -> TuyaSend1 103,0
55 AA 00 06 00 05 03 04 00 01 00 12
-> Forward-> TuyaSend4 3,0
55 AA 00 06 00 05 03 04 00 01 01 13
-> Backward-> TuyaSend4 3,1
55 AA 00 06 00 05 03 04 00 01 02 14
-> to the left -> TuyaSend4 3,2
55 AA 00 06 00 05 03 04 00 01 03 15
-> to the right -> TuyaSend4 3,3
If the robot is controlled with the ir-remote, the stm sends the following commands to the WIFI module:
How can I now control the robot via WIFI and my Domoticz installation without the Tuya cloud?
I have started flashing Tasmota to the WIFI module. Unfortunately tasmota only supports Tuya devices with 9600 baud. So i need a custom tasmota build for the bot. In the tuyamcu code (xdrv_16_tuyamcu.ino) i set the baudrate to 115200 (i probably will fix this problem with a new command, because i want one build for all my devices…) :
// In function TuyaInit:
...
//if (TuyaSerial->begin(9600)) { // comment out this line
if (TuyaSerial->begin(115200)) { // add this line
...
Another problem is the battery percentage value of the bot, there i have two options: change the tasmota code or recalculate the percentage in domoticz. I choose the first option and changed the following line (because i map the battery percentage later to the active_power value with the tuyamcu command):
// In function TuyaProcessStatePacket
...
//Energy.active_power[0] = (float)packetValue / 10;
Energy.active_power[0] = (float)packetValue; // my line
...
After the code changes i build the firmware and flash the controller. Here are my tasmota settings:
Tasmota device settings
Tasmota domoticz parameter
In the console the following commands are executed to map from fnId to dpId:
A while ago i purchased a fingerprint reader module called dy50 or fpm10a on aliexpress. A PN532 RFID module has also been lying in the tray for some time. So i decided to build a combined fingerprint and RFID reading module with a self developed and self printed housing.
The controller inside is a wemos d1 mini (esp8266 wifi module on-board). On the controller is a tasmota version with fingerprint module driver from adafruit. As soon as possible i will commit and push my changes on github I have published my code on github: https://github.com/dhumpf/Tasmota . The software is still in development, but the basic functions adding a fingerprint, deleting a fingerprint, send the fingerprint data over mqtt to the home controller (domoticz installation) works already.
The total printing time of the enclosure was about 7 hours on the 3D printer. The 3d files will also be published soon I have published the files on thingiverse: https://www.thingiverse.com/thing:4362609.
But now some pictures of the whole thing:
3D Printed enclosure from the inside with the voltage regulator, controller board wemos d1 mini, PN532 RFID reader and fingerprint module DY50
Enclosure with RFID tag
Pinheader description on PCB and connections between the components