logo elektroda
logo elektroda
X
logo elektroda

Configuring Maxcio WF-CS01 Wifi Shutter Controller with FHEM Server and Openbeken

mcferryn 3369 16

TL;DR

  • Maxcio WF-CS01 WiFi shutter controller is configured for FHEM instead of the vendor app, using OpenBeken on its CB3S module.
  • The CB3S was flashed as BK7231N, and RX/TX had to be unsoldered because they were already connected to the TuyaMCU Py32.
  • Channel 1 controls up/stop/down, channel 2 handles position in %, channel 3 triggers calibration, and channels 7 and 101 handle button light and busy status.
  • Percentage positioning works well, and the controller integrates with MQTT for the FHEM server, even though the OpenBeken web interface is considered basic.
  • After about one year, a failing electrolytic capacitor in the power supply caused failures; replacing it with the same capacitance and higher voltage rating restored operation.
Generated by the language model.
ADVERTISEMENT
📢 Listen (AI):
  • I recently bought a WiFi Shutter Controller from Maxcio and didn't want to use their app since I have a FHEM Server.
    https://www.amazon.de/dp/B0C3M5CQKS/ref=twister_B0C3M3XNMZ?_encoding=UTF8&th=1

    There are Tasmota Infos on the internet but they are outdated. The current version sold supports percentage setting and works just great.
    I am new here so sorry if I miss something or post it in the wrong area.

    Circuit board with CB3S WiFi module and switch.

    So I flashed the latest version of openbeken on this CB3S Module,
    Pin 8 is VCC, Pin 9 is GND, Pin 15 is RX, and Pin 16 is TX.

    I had to unsolder Pin 15 and 16 since they are already connected to a TuyaMCU (Py32).

    After normal flashing with BK7231N, I resoldered it and started configuring.

    I used the following for the autoexec.bat:
    
    startDriver TuyaMCU
    tuyaMcu_defWiFiState 4
    
    setChannelType 1 LowMidHigh
    linkTuyaMCUOutputToChannel 1 4 1
    setChannelType 2 TextField
    linkTuyaMCUOutputToChannel 2 2 2
    setChannelType 3 TextField
    linkTuyaMCUOutputToChannel 3 4 3
    setChannelType 4 toggle
    linkTuyaMCUOutputToChannel 7 1 4
    setChannelType 5 toggle
    linkTuyaMCUOutputToChannel 101 1 5


    Channel 1: 0 = up, 1 = stop, 2 = down
    Channel 2: Gives the position in %, also you can set the position
    Channel 3: It's normally set to 1. If you set it to 0 and back to 1, the switch starts calibration. It drives once up and once down, then you can select positions in channel 2 in percentage. Very handy for Alexa.
    Channel 7: It's for switching the button light on and off
    Channel 101: I have no clue what it does, it switches to 0 when shutters are moving and after a second or two, it goes to 1 again once the unit is idle.

    I have to admit the Web interface in Openbeken is not as nice as it could be, but I am not experienced with the software and don't use it anyway. I just need it to interact via MQTT with my server.

    It seems that the PY32 Chip is doing everything and the WiFi module is just in place to command the PY32 via WiFi.
    So in theory, someone could exchange it with some esp8266 type module.


    Update: Each of the switches experienced pretty much exactly after one year of operation a failure.
    I found that one electrolyte capacitor was failing in the power supply, the cap was starting to bulge.
    I replaced the original with a capacitor with the same capacity but higher voltage rating and they worked again flawlessly since then.
    It seems that they made a mistake building it with a too weak capacitor when it comes to voltage.

    Cool? Ranking DIY
    About Author
    mcferryn
    Level 6  
    Offline 
    mcferryn wrote 9 posts with rating 2, helped 1 times. Been with us since 2023 year.
  • ADVERTISEMENT
  • #2 20758162
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    Thanks for the config. I haven't seen a TuyaMCU shutters controller here yet. Regarding the interface, you can always do your own HTML page and host it in LittleFS, that way you can fully customize the looks, if that's needed.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #3 20759021
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2

    Thanks for me, my FHEM Server does the trick, but I am sure that someone with more experience in OpenBeken, which is an amazing software, can even make it look good. I just started a few days ago with OpenBeken and I am amazed how easy it was to use. And I am sure that sooner or later with many more shutter and blind switches getting Tuya, there will be some automation. I am not a software specialist but only an electronics engineer. :-)
  • #4 20760444
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    Helpful post? Buy me a coffee.
  • #5 20763740
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2

    That's great, thank you very much. I have finally installed all 11 of them at my home now and they work nicely.
    I command it via MQTT by sending the percentage I want. And it's reporting the percentage back.

    I have a question, can I tell openbeken not to send via MQTT every single percentage number during driving.
    It puts a bit of a strain on my little Pi Zero server to receive so many messages from all the shutters at the same time.

    By the way, I found out that these lines are the connection between Pins 15 and 16 and the PY32, so instead of desoldering the chip and resoldering it, it's much easier to cut these lines and resolder them afterwards.
    Electronic module with labeled pins 15 and 16 and soldered wires.
  • #6 20763759
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    We don't have this feature yet, but it's a very good idea! Let me add that for you. Would something like:
    
    SetChannelPrivate [CH] [1or0]
    

    suit your needs?
    Helpful post? Buy me a coffee.
  • #7 20766664
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    Thank you, I will have to Test it. I am at the moment just happy that I manage percentage Control of all my Shutters with an affordable System which is under my full control.
  • ADVERTISEMENT
  • #8 20766768
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    The following command should be available in the latest build.
    Helpful post? Buy me a coffee.
  • #9 20841599
    nguyenduykhanh88
    Level 1  
    Posts: 1
    >>20763740
    Amazing, can you share your config, or pinouts you used. Thanks so much
  • #10 20841608
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    @nguyenduykhanh88 hey, isn't his autoexec.bat in the first post?

    Here is how to create autoexec.bat:


    Helpful post? Buy me a coffee.
  • #11 20841697
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    I put the Text from my initial posting into the autoexec.bat via the Web Interface which was very nice to use.
    I am not sure what kind of Information you Need but I am willing to help.
    Did you manage the Flash already?

    P.S. I have 11 of them working in my house since then without a problem.
    And I found out that in the manufacture manual you get a key combination for calibration which makes the Installation Even easier. So now my Fhem Server is just sending pct values via mqtt and I Even linked my fhem to my Echo dots.
  • #12 20842613
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    I don't know how Fhem setup with OBK may look like, @mcferryn , it sounds interesting. Please consider posting some more information in a form of tutorial here: https://www.elektroda.com/rtvforum/forum517.html I would love to hear more about your setup!
    Helpful post? Buy me a coffee.
  • #13 20844104
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    I am not good enough in FHEM to write a tutoríal.
    FHEM is a Home Automation server with runs in my case on a raspberry zero.
    Its an old and cloudless system which was invented by a german guy and which is still fully supported and gets new features all the time.
    There is a big german community and of course english documentation is available as well.

    FHEM has a MQTT support with autodiscovery and everything so as soon as i have set up my OpenBeken device and its connects to the MQTT I get the device into my FHEM server and can set up how it should be shown. Tasmota support was impelented first into FHEM and since Openbeken is the new and improved version it works without any problems.

    As an example this is the raw data of one of my shutter devices:


    defmod MQTT2_Shutter_0 MQTT2_DEVICE Shutter_0
    attr MQTT2_Shutter_0 userattr GanzesHaus GanzesHaus_map structexclude
    attr MQTT2_Shutter_0 alexaName Arbeitszimmerrollo
    attr MQTT2_Shutter_0 alias Arbeitszimmerrollo
    attr MQTT2_Shutter_0 autocreate 0
    attr MQTT2_Shutter_0 devStateIcon 100:fts_shutter_10@green:Zu 50:fts_shutter_50@green:Zu 20:fts_shutter_80@green:Zu  0:fts_shutter_100@black:Auf\
    35:fts_shutter_70@green:Zu\
    
    attr MQTT2_Shutter_0 genericDeviceType blind
    attr MQTT2_Shutter_0 group Rollos
    attr MQTT2_Shutter_0 homebridgeMapping TargetPosition=pct
    attr MQTT2_Shutter_0 readingList Shutter_0:Shutter_0/connected:.* connected\
    Shutter_0:Shutter_0/host:.* host\
    Shutter_0:Shutter_0/build:.* build\
    Shutter_0:Shutter_0/mac:.* mac\
    Shutter_0:Shutter_0/ssid:.* ssid\
    Shutter_0:Shutter_0/sockets:.* sockets\
    Shutter_0:Shutter_0/rssi:.* rssi\
    Shutter_0:Shutter_0/uptime:.* uptime\
    Shutter_0:Shutter_0/freeheap:.* freeheap\
    Shutter_0:Shutter_0/ip:.* ip\
    Shutter_0:Shutter_0/1/get:.* Shutter_0_1_get\
    Shutter_0:Shutter_0/2/get:.* pct\
    Shutter_0:Shutter_0/3/get:.* Shutter_0_3_get\
    Shutter_0:Shutter_0/4/get:.* Shutter_0_4_get\
    Shutter_0:Shutter_0/5/get:.* Shutter_0_5_get
    attr MQTT2_Shutter_0 room Rollos,Start
    attr MQTT2_Shutter_0 setList Auf Shutter_0/2/set 100\
    50 Shutter_0/2/set 50\
    35 Shutter_0/2/set 35\
    Zu Shutter_0/2/set 0\
    pct Shutter_0/2/set
    attr MQTT2_Shutter_0 stateFormat pct
    attr MQTT2_Shutter_0 webCmd Zu:35:50:Auf



    This might look complicated at first but more then half of it is autocreated by the server itself.
  • #14 20849570
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    Hi
    I had finally time to test your suggestion but i am pretty sure i made some syntax errors.

    I tried following line in the command prompt:

    if[channel[5]=1]['then'][SetChannelPrivate [2] [1]]['else'][SetChannelPrivate [2] [0]]

    I would like to not send channel 2 data if channel 5 is 1
  • ADVERTISEMENT
  • #15 20879057
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    >>20841608

    I am really happy about the command you created. It took me a bit to learn up how to use it and i failed at first since i did not understand that i had to update to get the new command implemented.

    But now i have manage to get the shutter only to send position after driving to a commanded position, which really takes a load off the MQTT Server when all my 11 shutters drive the same time.

    So the new autoexec.bat looks like this:

    startDriver TuyaMCU
    tuyaMcu_defWiFiState 4
    
    setChannelType 1 LowMidHigh
    linkTuyaMCUOutputToChannel 1 4 1
    
    setChannelType 2 Dimmer
    linkTuyaMCUOutputToChannel 2 2 2
    
    setChannelType 3 TextField
    linkTuyaMCUOutputToChannel 3 4 3
    
    setChannelType 4 toggle
    linkTuyaMCUOutputToChannel 7 1 4
    
    setChannelType 5 toggle
    linkTuyaMCUOutputToChannel 101 1 5
    
    addChangeHandler Channel5 == 0 setChannelPrivate 2 1
    
    addChangeHandler Channel5 == 1 setChannelPrivate 2 0 
    addChangeHandler Channel5 == 1 publishChannels
  • #16 20879292
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14584
    Help: 654
    Rate: 12607
    Nice, btw you can optimize your script by using backlog to put multiple commands together:
    
    addChangeHandler Channel5 == 1 backlog setChannelPrivate 2 0; publishChannels
    
    Helpful post? Buy me a coffee.
  • #17 20879749
    mcferryn
    Level 6  
    Posts: 9
    Help: 1
    Rate: 2
    You are right of course, I implemented your line of code to make it cleaner.

    Thank you for your help, i am using at the moment about 50 smarthome devices with Tasmota, Openbeken and even some with my own code on 8266, but at the moment the openbeken software is my favourite.
📢 Listen (AI):

Topic summary

✨ The discussion revolves around configuring the Maxcio WF-CS01 WiFi Shutter Controller with a FHEM server using OpenBeken firmware. The user successfully flashed the latest OpenBeken version onto the CB3S module and shared their configuration settings, including the autoexec.bat file. They sought advice on optimizing MQTT message handling to reduce server load during simultaneous operations of multiple shutters. Community members provided insights on customizing the interface, managing MQTT traffic, and improving the configuration script. The user reported successful integration of 11 shutter controllers, utilizing MQTT for percentage control and linking with Amazon Echo devices.
Generated by the language model.

FAQ

TL;DR: For FHEM and MQTT users, this setup gives 11 working shutters with local percent control; the owner reports they ran "without a problem" after setup. Flash OpenBeken to the CB3S, map TuyaMCU channels, then send and read pct over MQTT for reliable blind automation without the vendor app. [#20841697]

Why it matters: This thread shows a complete local-control path for a current Maxcio WF-CS01 revision that supports percentage positioning, calibration, and lower MQTT traffic.

Option Percentage control Local MQTT use Notes
OpenBeken + FHEM Yes Yes Confirmed working on 11 installed units
Older Tasmota info Outdated Unclear for this revision Thread says current online info is outdated
Vendor app Not needed No local advantage discussed Replaced to avoid cloud app use

Key insight: The CB3S Wi‑Fi module does not directly drive the motor logic. The PY32 TuyaMCU handles shutter behavior, while OpenBeken on CB3S sends commands and exposes percent position over MQTT. [#20757554]

Quick Facts

  • Flashing pinout reported for the CB3S module is Pin 8 = VCC, Pin 9 = GND, Pin 15 = RX, Pin 16 = TX; RX and TX must be isolated from the TuyaMCU during flashing. [#20757554]
  • The working channel model uses Channel 1 for motion state, Channel 2 for 0–100% position, Channel 3 for calibration control, Channel 7 for button LED, and Channel 101 as an idle/moving status signal. [#20757554]
  • The user ran 11 shutters at home and later reported reduced MQTT load after suppressing intermediate percentage publishes during movement. [#20879057]
  • A failure pattern appeared at about 1 year of operation: a bulging electrolytic capacitor in the power supply caused faults, and replacing it with the same capacitance at a higher voltage rating restored operation. [#20757554]

How do I configure a Maxcio WF-CS01 WiFi shutter controller with OpenBeken and a FHEM server for MQTT percentage control?

Flash OpenBeken to the CB3S, load the TuyaMCU channel mapping, then let FHEM use MQTT topics for pct. 1. Flash BK7231N firmware after isolating CB3S RX/TX. 2. Paste the autoexec.bat mapping so Channel 2 becomes the percentage channel. 3. In FHEM, send values like 0, 35, 50, or 100 to Shutter_0/2/set and read Shutter_0/2/get back as pct. The thread author ran 11 units this way and linked them to Echo devices through FHEM. [#20844104]

What pinout should I use to flash the CB3S module in the Maxcio WF-CS01 shutter controller with BK7231N firmware?

Use Pin 8 = VCC, Pin 9 = GND, Pin 15 = RX, and Pin 16 = TX on the CB3S module. Flash it as BK7231N after isolating pins 15 and 16 from the onboard TuyaMCU connection. The original setup required unsoldering those two pins first, then resoldering them after flashing. Those four pin numbers are the only flash wiring details explicitly confirmed in the thread. [#20757554]

What should I put in autoexec.bat to make a Maxcio WF-CS01 TuyaMCU shutter controller report and accept position in percent?

Use the TuyaMCU driver and map Channel 2 to the percentage datapoint. A working script sets Channel 1 to LowMidHigh, Channel 2 to Dimmer, Channel 3 to TextField, Channel 4 to toggle, and Channel 5 to toggle, then links TuyaMCU outputs 1/2/4/7/101 to those channels. In the final version, the user also added change handlers so Channel 2 publishes only when the shutter stops moving. That script enabled percent control and percent feedback on 11 shutters. [#20879057]

Why do pins 15 and 16 on the CB3S module need to be isolated from the TuyaMCU before flashing OpenBeken?

Pins 15 and 16 must be isolated because they are already connected to the TuyaMCU, identified here as a PY32 chip. That existing serial connection interferes with normal flashing access to the CB3S RX and TX lines. The user first unsoldered those pins to break the link, flashed OpenBeken, then restored the connection so the Wi‑Fi module could talk to the controller again. [#20757554]

What's the easier hardware method for disconnecting the CB3S RX/TX lines from the PY32 on the Maxcio WF-CS01 without fully desoldering the module?

Cut the two PCB traces between pins 15 and 16 and the PY32 instead of unsoldering and resoldering the whole module. The user discovered those traces later and said this method is much easier than lifting the CB3S pins themselves. After flashing, you can reconnect the cut lines to restore communication with the TuyaMCU. That reduces rework risk on a small module. [#20763740]

How does channel mapping work in OpenBeken for this shutter controller, and what do channels 1, 2, 3, 4, 5, 7, and 101 actually do?

Channel mapping links TuyaMCU datapoints to OpenBeken channels so MQTT and the web UI expose useful controls. Here, Channel 1 is motion state: 0 = up, 1 = stop, 2 = down. Channel 2 is position in % and also accepts a target percentage. Channel 3 triggers calibration when toggled 1 → 0 → 1. Channel 4 mirrors datapoint 7 and Channel 5 mirrors datapoint 101. The thread says Channel 7 controls the button light, while datapoint 101 drops to 0 during movement and returns to 1 about 1–2 seconds after idle. [#20757554]

How do I start calibration on the Maxcio WF-CS01 shutter controller, and how is channel 3 related to percentage positioning?

Start calibration by changing Channel 3 from 1 to 0 and back to 1. That sequence makes the shutter run fully up once and fully down once, after which Channel 2 can use percentage values for positioning. Later, the user also noted that the manufacturer manual includes a key combination for calibration, which makes installation easier before using MQTT pct commands from FHEM. [#20841697]

What is TuyaMCU in OpenBeken, and how does it interact with the CB3S WiFi module and the PY32 chip in a shutter controller?

"TuyaMCU" is a microcontroller interface layer that exchanges commands and datapoints between OpenBeken and a separate appliance controller, usually over serial, while the main device logic stays on the other chip. In this shutter controller, the user concluded that the PY32 does the actual work and the CB3S mainly sends commands over Wi‑Fi. OpenBeken therefore starts the TuyaMCU driver and maps datapoints rather than driving the motor logic directly. [#20757554]

What is FHEM, and how does its MQTT autodiscovery work with OpenBeken or Tasmota-style devices?

"FHEM" is a home-automation server that runs locally, uses MQTT, and can automatically create device definitions from published topics, which reduces manual setup. The user runs it on a Raspberry Pi Zero and said it auto-creates much of the shutter device definition after OpenBeken connects to MQTT. Their example reads Shutter_0/2/get as pct, sets genericDeviceType blind, and publishes commands to Shutter_0/2/set. They also noted Tasmota support came first, and OpenBeken worked with that model without problems. [#20844104]

OpenBeken vs Tasmota for Tuya-based shutter controllers like the Maxcio WF-CS01 — which is better for percentage control and local MQTT integration?

OpenBeken is the better fit in this thread for the current Maxcio WF-CS01 revision. The user said older Tasmota information online was outdated, while OpenBeken on this model supported percentage setting and worked well with local MQTT through FHEM. A second user also called OpenBeken “an amazing software,” and the installer later said it became their favorite among about 50 smart-home devices using Tasmota, OpenBeken, and custom ESP8266 code. [#20879749]

How can I stop OpenBeken from publishing every intermediate shutter percentage over MQTT while the blind is moving?

Use SetChannelPrivate on the percentage channel and switch it based on the movement-status channel. The working solution watches Channel 5, which reflects datapoint 101. When Channel 5 becomes 0, the script enables private mode off so movement can proceed. When Channel 5 becomes 1, it disables public updates for Channel 2 and then publishes channels once. That way, the broker gets the final percentage after movement instead of every intermediate step. [#20879057]

What is the correct syntax for using SetChannelPrivate, addChangeHandler, and backlog in OpenBeken to reduce MQTT traffic from shutter position updates?

The clean syntax is: addChangeHandler Channel5 == 1 backlog setChannelPrivate 2 0; publishChannels. Pair it with addChangeHandler Channel5 == 0 setChannelPrivate 2 1 so Channel 2 becomes public only while needed. That script version replaced separate commands and made the configuration cleaner. The feature itself was added in a newer build after the maintainer proposed SetChannelPrivate [CH] [1or0] for this exact MQTT-load problem. [#20879292]

How do I represent an OpenBeken shutter in FHEM as a blind device with pct state, custom setList commands, and Alexa or Homebridge integration?

Create an MQTT2_DEVICE, mark it as a blind, and map the percentage topic to pct. The shared example uses genericDeviceType blind, stateFormat pct, and homebridgeMapping TargetPosition=pct. Its setList sends 100, 50, 35, and 0 to Shutter_0/2/set, and its readingList maps Shutter_0/2/get back to pct. The same device also has alexaName, alias, and room/group attributes for voice and UI integration. [#20844104]

Why might a Maxcio WF-CS01 shutter controller fail after about a year, and how does replacing the bulging electrolytic capacitor fix it?

A weak power-supply capacitor can fail after about 1 year and stop the controller from working correctly. The user found one electrolytic capacitor visibly bulging, then replaced it with a part of the same capacitance but a higher voltage rating. After that repair, the switches worked flawlessly again. The thread’s conclusion is that the factory capacitor was under-rated for the actual voltage stress in this design. [#20757554]

What alternatives are there to the original WiFi module in a TuyaMCU-based shutter controller if I want full local control without the vendor app?

The thread suggests you could replace the original Wi‑Fi module with an ESP8266-type module in theory, because the PY32 appears to handle the shutter logic and the Wi‑Fi board mainly passes commands. In practice, the confirmed local-control path here is simpler: keep the CB3S, flash OpenBeken, and talk to the PY32 through TuyaMCU. That already removes dependence on the vendor app and gives local MQTT control. [#20757554]
Generated by the language model.
ADVERTISEMENT