Hi, I have a Siemens BF634LGS1 microwave oven. It heats fine (like the inverter for lower power outputs) but I feel like the user interface has been programmed by somebody who never used any MW over in his life, nor the final product has been ever tested in real life scenario.
Over the time I own this oven I slowly stared to hate the fact it beeps for like 20seconds after it finishes heating. beepiip…beepiip…beepiip… To make it even worse, there is actually a setting in the menu on how long it should beep! But even if set to minimum duration it is still around 20seconds! And there is not even a “mute” function.
I decided to do something about it. Disassembly is not too complicated.
- remove the front knob by just prying it out.
- remove the metal chassis (multiple screws all around)
- disconnect wire from main electronics module to the front panel
- remove the front panel by unscrewing 2 torx screws on both sides then lift it up and out
- from the front panel you must free the actual circuit board. IT is held by multiple plastic clips so slowly one by one unclip them and lift the PCB out. Don’t loose 4 small springs that press against the PCB. They are just inserted in the plastic panel and fall out if you tilt the panel without the PCB inserted!
(sorry don’t have detailed photos of the disassembly)
Now what?
First I was thinking about completely disconnecting the beeper but then I got more sophisticated idea:
The beeping can be stopped by pressing any button on the oven. So I decided to fake button press of the “timer” button. If you press it once it opens menu to select timer. And if you press it again it disappears again. Perfect!
The buttons are connected to 3.3V (more specifically 3.15V as marked on the silkscreen) on one side and to microprocessor on the other. They are NO and when pressed they close allowing 3.3V on the microcontroller input. That is actually great to spoof - just connect your 3.3V and button is pressed! While I was at it I also traced and spoofed the “open door” button (yes, the oven opens the door electrically)
Now another problem: How to detect the MW oven finished heating? Well there is a handy LED (2 LEDs) above the “start” button that lights up while running.
I measured the voltages and then actually traced the LED signal to power transistor (Q1133) that was driven using 3.3V from the microcontroller. Transistor opens to GND and current flows from 6V power rail through the resistor, LED, transistor to the GND.
There are even handy testpoints for all the signals I need on the back of the board!
I then placed ESP8266, power and ground can be sourced by some unused card edge connector. ESP8266 is glued using silicone.
I then flashed very simple code that fakes the button press 1second after it detects end of heating. By allowing 1second it beeps once (beepiip) and then it is silenced! This could be of course done without Home assitatnt or ESPhome just by simple MCU but I wanted the ability to flash new settings or even open the oven remotely! And as a bonus I see in HA if the oven is running or not!
...
output:
- platform: gpio
pin: D6
id: d6_out
- platform: gpio
pin: D5
id: d5_out
button:
- platform: output
name: "button_timer"
id: button_timer
output: d5_out
duration: 100ms
- platform: output
name: "button_door"
output: d6_out
duration: 100ms
binary_sensor:
- platform: gpio
pin: D2
name: "MW running"
device_class: power
on_release:
then:
- delay: 1s
- button.press: button_timer
- delay: 200ms
- button.press: button_timer
I could also open the door automatically once it finishes by pressing the “door” button but it is not implemented yet.
Future improvement I can think of:
Monitor the actual “door button” to determine if the door has been opened since the end of heating. If not, send notification, open the door automatically or just hijack another part of the circuit to flash LEDs etc to draw attention to the oven. (damnit! I should have done it when I had the oven opened!)
Few detailed photos and IDs in case anybody finds this topic while repairing the oven for example
Front panel ID: E890L42A7SGS
PCB ID: MI003D1XB03D
PCB NO: J657542A5GS
Assembly ID:J605Q42A9SGS