Imre Himpli portrait

Hallo! Ich bin Imre Himpli

Kfz-Techniker & Webentwickler

imre.himpli@sigterm.hu

Ein Multi-Laser-Katzenspielzeug in einen Alexa-gesteuerten Spielkameraden verwandeln (ESP32-Mod)

Sep 12, 2025

Manchmal sind die einfachsten Geräte die unterhaltsamsten zum Hacken. Ein gutes Beispiel: ein batteriebetriebenes Multi-Laser-Katzenspielzeug, das ursprünglich nur eine Funktion hatte — Knopf drücken, und das Chaos (Laser) beginnt. Im Inneren war die Leiterplatte erfrischend minimalistisch, nur ein einziger Taster, der die ganze Arbeit erledigte. Das war mein Signal: die Signalleitung des Knopfs kapern und ein ESP32-Dev-Board übernehmen lassen. Jetzt krieche ich nicht mehr über den Boden, um einen Knopf zu drücken – Alexa erledigt das für mich.


Warum dieser Mod?


Klar, Sprachbefehle sind cool, aber die eigentliche Magie liegt in der Automatisierung. Mit Alexa-Routinen kann ich tägliche Spielzeiten planen, sodass die Katzen ihre Laserjagd bekommen, egal ob ich zuhause bin, schlafe oder in einem Meeting stecke. Noch besser: Ich kann das Spielzeug aus der Ferne über die Alexa-App starten — was bedeutet, dass die Katzen denken, ich sei eine Art allgegenwärtiger Laserzauberer. Es ist, als würde man einen Katzenfreizeitpark von überall auf der Welt betreiben.


Der Hack selbst



#define ESPALEXA_DEBUG

#include <Arduino.h>
#include <WiFi.h>
#include <Espalexa.h>

const char* ssid = "meinWifiSSID";
const char* password = "meinWifiPass";

// Zentrale Repeater-BSSID
uint8_t target_bssid[6] = {0x60, 0xB5, 0x8D, 0x43, 0x77, 0xCF};

const int maxAttempts = 10;   // Maximale Anzahl an Wi-Fi-Verbindungsversuchen vor dem Zurücksetzen
const int laserPin = 2;       // GPIO verbunden mit dem Katzenspielzeug-Knopf

Espalexa espalexa;

void laserTriggered(uint8_t value) {
    Serial.printf("[ESP ALEXA] Device triggered, value=%u → %s\n",
                  value, value > 0 ? "ON" : "OFF");

    digitalWrite(laserPin, LOW);
    delay(50);
    digitalWrite(laserPin, HIGH);

    Serial.println("[ESP ALEXA] Button press simulated");
}

void setup() {
    Serial.begin(115200);
    pinMode(laserPin, OUTPUT);
    digitalWrite(laserPin, HIGH);

    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(500);

    int attempt = 0;
    Serial.print("Connecting to ");
    Serial.println(ssid);

    while (WiFi.status() != WL_CONNECTED) {
        WiFi.begin(ssid, password, 1, target_bssid);
        delay(1000);
        Serial.print(".");

        attempt++;
        if (attempt >= maxAttempts) {
            Serial.println("\nFailed to connect after 10 attempts. Restarting...");
            ESP.restart();
        }
    }

    Serial.println("\nConnected!");
    Serial.print("Local ESP32 IP: ");
    Serial.println(WiFi.localIP());

    espalexa.addDevice("Cat laser", laserTriggered);
    espalexa.begin();

    Serial.println("[ESP ALEXA] Espalexa started, waiting for Alexa discovery...");
}

void loop() {
    espalexa.loop();
}




Die Modifikation war fast zu einfach. Das Spielzeug läuft bereits mit 3× AA-Batterien, die zufällig auch perfekt für ein ESP32-Dev-Board geeignet sind. Indem der ESP32 so verdrahtet wurde, dass er einen Knopfdruck simuliert, kann das Spielzeug auf Befehl ein- und ausgeschaltet werden, ohne die ursprüngliche Schaltung großartig anzutasten. Keine eigene Platine, kein komplexes Reverse-Engineering — nur ein gut platzierter Eingriff in die Leitung des Tasters, und schon wurde aus einem dummen Spielzeug ein Teil meines Smart Homes.





Endergebnis


Jetzt haben meine Katzen ein automatisiertes, sprachgesteuertes Unterhaltungssystem, und ich habe mein eigenes Leben verbessert, indem ich nie wieder den Knopf drücken muss. Der ESP32 hat das Spielzeug nicht nur schlauer gemacht — er hat mich auch davor bewahrt, der unbezahlte Laser-Operator in meinem Haushalt zu sein. Die Katzen sind glücklich, ich bin glücklich, und Alexa darf sich fühlen, als wäre sie Teil des Haustierpflege-Teams.

Imre Himpli