avatar

5577  5577.io 

goldmedal_16A-01

29 Mar 2025

Tasmotizing a Goldmedal Wi-Fi Plug

Pursuing a far more straightforward commandeering expedition with this wi-fi connected power monitoring socket, complete with a couple of unexpected detours.

goldmedal_16A-02

Everything comes apart happily with four external screws and three internal that were holding the pcb in place.

goldmedal_16A-03

The wi-fi controller is an unfortunate Tuya CB3S.

goldmedal_16A-04

An easy-to-trace pcb layout featuring amateur-hour-esque tiny solder pads with no fill or relief.

goldmedal_16A-05

Power monitoring is with the BL0937 energy meter chip.

goldmedal_16A-06

The wi-fi controller is mounted on a carrier board, which is connected through a surface-mount header — clever.

goldmedal_16A-07

Chance is in favour, with only half a solder pad lost during desoldering.

goldmedal_16A-08

A mica heatsink insulator makes easy the separation of the wi-fi module’s castellated pads.

goldmedal_16A-09

One unused pad is lost to this method.

goldmedal_16A-10

The same technique recovers this ESP-12F module from a water-damaged board.

It is then learnt that ESP12 modules are not pin-compatible with the Tuya CB3S.

goldmedal_16A-11

Header pins P1, top to bottom: HLWBL SEL_i, HLWBL CF1, BL0937 CF, Switch, Relay, Ground, +3.3V and LED.

goldmedal_16A-12

A Wemos D1 Mini is wired up. Space constraints necessitate a hole drilled in the rear of the enclosure.

The tasmota template is based on the Polycab 16A for simplicity:

{
"NAME":"209004",
"GPIO":[0,0,544,32,2720,2656,0,0,2624,320,224,0,0,0],
"FLAG":0,
"BASE":18
}

goldmedal_16A-13

A cover is programmatically generated and 3d-printed.

goldmedal_16A-20

Aforementioned programmatically generated model in OpenSCAD. The code:

$fn=100;
points=[[30,25,0],[30,0,0],[0,25,0],[0,0,0]];
module end() {
  cylinder(d=8, h=10);
}
module box(points, radius, height){
  /* hackaday.com/2018/02/13/openscad-tieing-it-together-with-hull */
  hull(){
    for (p = points){
      translate(p) cylinder(r=radius, h=height);
    }
  }
}
module peg() {
  translate([0, 0, 10]) {
    klam_fillet_cylinder(cylinder_height=5,
    cylinder_radius=2.3,
    fillet_radius_bottom=1,
    fillet_radius_top=0,
    nfaces=100);
  }
}
module klam_fillet_cylinder(
  cylinder_height=2,
  cylinder_radius=1,
  fillet_radius_bottom=1,
  fillet_radius_top=0,
  nfaces=100) {
  /* klamfx.wordpress.com/2016/12/03/creating-a-filleted-cylinder-in-openscad */
  union() {
    cylinder(cylinder_height, r=cylinder_radius, $fn=nfaces);
    if (fillet_radius_bottom > 0) {
      difference() {
        cylinder(fillet_radius_bottom,
        r=cylinder_radius+fillet_radius_bottom,
        $fn=nfaces);
        translate([0, 0, fillet_radius_bottom])
        rotate_extrude($fn=nfaces)
        translate([cylinder_radius+fillet_radius_bottom, 0, 0])
        circle(fillet_radius_bottom, $fn=nfaces);
      }
    }
    if (fillet_radius_top > 0) {
      difference() {
        translate([0,0,cylinder_height-fillet_radius_top])
        cylinder(fillet_radius_top,
        r=cylinder_radius+fillet_radius_top,
        $fn=nfaces);
        translate([0, 0, cylinder_height-fillet_radius_top])
        rotate_extrude($fn=nfaces)
        translate([cylinder_radius+fillet_radius_top, 0, 0])
        circle(fillet_radius_top, $fn=nfaces);
      }
    }
  }
}
union() {
  translate([-26, 0, 0]) {
    end();
    peg();
  }
  translate([26, 0, 0]) {
    end();
    peg();
  }
  difference() {
    hull() {
      translate([-15, -12.5, 0]) box(points, radius=4, height=10);
      translate([-26, 0, 0]) end();
      translate([26, 0, 0]) end();
    }
    translate([-15, -12.5, 2]) box(points, radius=2, height=8);
  }
}

goldmedal_16A-14

Obligatory progressive iteration.

goldmedal_16A-15

A well-tuned 3d printer yields rewarding results.

goldmedal_16A-16

Fillets on the pegs strengthen the part, countersinking screw holes help accommodate them.

goldmedal_16A-17

After umpteen iterations, a snug friction fit is achieved.

goldmedal_16A-18

It is as if it was designed for this modification.

goldmedal_16A-19

A soft blue glow from the D1 mini’s led validates the use of a translucent filament.

fnirsi_swm10-01

15 Mar 2025

FNIRSI SWM-10 Spot Welder Repair

peakmeter_pm8908c-01

22 Jun 2024

Peakmeter PM8908C Disassembly

nodemcu_esp32-01

01 Jun 2024

NodeMCU with ESP32 Wi-Fi SoC

polycab_16A-18

18 May 2024

Modifying a Polycab Wi-Fi Plug

polycab_16A-01

15 Jul 2023

Tasmotizing a Polycab Wi-Fi Plug

nodemcu_esp8266-01

31 Jan 2023

NodeMCU with ESP8266 Wi-Fi SoC

bios_flashing-01

07 Jan 2023

Attempting in situ BIOS chip flashing

t100ta_keyboard-01

31 Dec 2022

Asus T100TA Dock Keyboard USB mod

aukey_pau31-12

07 Oct 2021

Aukey PA-U31 30W 4 Port USB Charger

fd_e200-11

17 Sep 2021

Refurbishing a dead F&D E200 Soundbar

hot_air_gun-02

11 Sep 2021

A closer look at a low cost Hot Air Gun

five_mw_laser-01

31 Mar 2021

Discoveries with a tiny 5mW Red Laser

eyefi_connect-01

27 Mar 2021

Eye-Fi Connect X2 SD Card Teardown