Tuya Cloud (BLE Türschloss mit Gateway und RGBW Lampe)

Hi zusammen,

ich hatte durch einen Kauf Anfall in einem asiatischem Shop nun ein erstes mal ein Tuya Gerät eingefangen. Das war ein Türschloss Drücker für die Innentüren.
Dann sind zufällig durch ein lokales Markt Angebot noch GU10 RGB Leuchten von Hama dazugekommen.

Da ich weder HomeAssistant noch Tasmota oder die MQTT Lösung bemühen wollte, hab ich mal einen schnellen Hack gemacht. Daher sag ich mal Alpha+ Version.

Es ist nicht Cloud free. Also wird ein Developer Account benötigt. Anleitungen wie man an die Keys kommt gibt es genug.


Also für meine Zwecke reicht der erste Wurf :slight_smile: Vielleicht nimmt das einer als Antrieb und macht nen fork.

1 „Gefällt mir“

Hallo mac,
Vielen Dank für das Tolle script, ich hatte denselben Kaufrausch und stehe nun mit demselben leid da. Dein Script läuft bei mir, ich finde die geräte mit der Suchfunktion, der Onlinestatus wird angezeigt, kann aber leider die Daten meines Gerätes nicht sehen, da es doch ein anderes Teil ist. Ich habe einen 2Kanal Strom Spannungssensor (WIFI dual meter). Kannst du mich vielleicht unterstützen wie ich die Daten in Symcon bekomme?
Der Sensor liefert werte wie “Frquency, Voltage, Active Power-A, Active-Flow-A, usw…)
Vielen Dank, Wolfgang

Hi Wolfgang,

ah okay da müsste ich die Datenpunkte abfragen und wäre ja eher ein eigenes Modul. Ohne so nen Modul vor Ort wird das eher schwer. Du kannst aber nen Fork machen wenn du leichte Programmierkenntnisse hast.

In der Tuya Cloud kannst die Datenpunkte im DeviceDebug sehen. z.B bei einer meine Lampen:

temp_value Integer
{
  "min": 0,
  "max": 1000,
  "scale": 0,
  "step": 1
}

Manche Verhaltensweisen muss man allerdings dazu basteln.

Hmm. gerade mal geschaut man kann auch die DP Abfragen.

const params = {
data: {
action: "device.specifications",
params: {
"device_id": "xxx"// The device ID.
}
}
};

Da könnte man sicher was allgemeines basteln.

ich hab mal nen schnelle Dev Branch gemacht. Also in Module auf “dev” Zweig wechseln.

Dann ein Generic Device anlegen ($ID). Dein Gerät wählen und in dem Form “Anlage Variablen” aktivieren. Dann werden bei einem manuellen PHP Befehl Tuya_getState($ID); die Variablen unter dem Device angelegt und aktualisiert.

Der integrierte Timer aktualisiert das GenericDevice nicht automatisch. Mach dir nen Script mit dem Befehl und einem zyklischen Timer.

Hier Beispiel wie es bei mir aussieht wenn ich Generic wähle aber meine LED Lampe auswähle. Denke könnte so auch mit deinem SmartMeter gehen. Die Werte sind aber nativ so wie Tuya sie definiert. Da muss man dann noch umrechnen, mappen usw.

Ich glaube du machst nichts falsch. Das Gerät unterstützt wohl den Befehl getStatus der genutzt wird wohl nicht. Müsste mich erst drüber schlau machen.

Hey, ich versuche gerade das Modul auszuprobieren, leider ist mir unklar, wo ich die AppID finde…
Darum bekomme ich keine Verbindung :frowning:

Boah da hast mich erwischt….. ewig her ich musste erstmal suchen.

Die findest in der Tuya Developer Plattform. Also Dein Projekt/Devices/Link App Account.

Das ist die Kennung von der Smartlife App vom Handy.

Ich hab an dem Modul nicht wirklich weiter geschraubt und nur das nötigste für mich eingebastelt. Denn manche Geräte “Lampen” reagieren schlicht anders.

Danke

Geräte werden jetzt gefunden aber schalten kann ich noch nichts, Anleitung hast du keine gemacht?

Die Geräte sind glaub recht unterschiedlich aber verrat mir mal was du schalten willst?

Ich wollte mich schon mal ran setzen und die Datenpunkte nativ ausgeben dann muss man aber mapping usw. selbst machen.

Ich habe so einen Tuya Schalter und möchte die Geräte in unserem Haus in Kambodscha installieren, darum ist die Cloud lösung perfekt für mich.

über ein Script das mein Sohn aufgetreiben hat bekomme ich diesen Status zurück


✅ DEVICE STATUS:
[
    {
        "code": "switch_1",
        "value": true
    },
    {
        "code": "countdown_1",
        "value": 0
    },
    {
        "code": "relay_status",
        "value": "2"
    },
    {
        "code": "random_time",
        "value": ""
    },
    {
        "code": "cycle_time",
        "value": ""
    }
]

Ich schau mal ob ich Wochenende zu komme wenn du nur das einschalten brauchst.

Der Status ist schon mal super. Kannst das mal schicken einmal für ein und ausgeschaltet? Mir gehts drum ob switch_1 und relay_status sich ändern.

das wäre super von dir, bin da leider nicht so fit in Modul Programmieren

DEVICE STATUS:
[
    {
        "code": "switch_1",
        "value": false
    },
    {
        "code": "countdown_1",
        "value": 0
    },
    {
        "code": "relay_status",
        "value": "2"
    },
    {
        "code": "random_time",
        "value": ""
    },
    {
        "code": "cycle_time",
        "value": ""
    }
]

DEVICE STATUS:
[
    {
        "code": "switch_1",
        "value": true
    },
    {
        "code": "countdown_1",
        "value": 0
    },
    {
        "code": "relay_status",
        "value": "2"
    },
    {
        "code": "random_time",
        "value": ""
    },
    {
        "code": "cycle_time",
        "value": ""
    }
]

Okay danke ist nur der Command. Wenn ich zu komme sollte das nicht so dramatisch werden.

Ich habe mich jetzt ein wenig gespielt und kann das Relais schalten.

Ich habe jetzt noch das Problem das ich mit Tuya_getState keinen Status zurückbekomme, funktioniert das noch nicht?

mir ist im log aufgefallen das ein TimerPool ERROR vom Generic modul kommt

08.03.2026 07:58:57 | 13497 | ERROR   | TimerPool            | TuyaSwitch (wifi circuit controller) (UpdateTimer): 
Warning: Undefined array key "Interval" in C:\ProgramData\Symcon\modules\IPSTuya\Generic\module.php on line 243

Warning: Instanz #0 existiert nicht in C:\ProgramData\Symcon\modules\IPSTuya\Generic\module.php on line 243

Warning: Attempt to read property "Interval" on null in C:\ProgramData\Symcon\modules\IPSTuya\Generic\module.php on line 245

Du hast den Git - Dev Branch genommen. Der ist nicht hundert pro gewesen. Dort wollte ich das Ziel machen das man als Generisches Gerät einfach alles zurück bekommen kann aber die Status Aktualisierung nicht klappt. Auch “meine” Lampen zicken mit dem Dev Stand noch.

Ich glaub ich mach dir mal nen Branch nur einen Switch.

bin jetzt auf main, fehler ist weg

hab 2 Module fertig, Switch und Temperatursensor.

Switch_Temp.zip (6,0 KB)

super dann aktualisiere aktuell das Modul nicht. hab gerade am main rum gefummelt und aktuell gehts net. aber wenn du es vor meinen Änderungen gemacht hast passiert nichts.

So hab den Main Branch wieder hin gefummelt und deine Module mit integriert. Hast doch easy hin bekommen. top.

Servus

ich bin derzeit in Kambodscha und hab natürlich nie ins Forum geschaut und aktualisiert.

jetzt bekomme ich diesen Fehler wenn ich einen neuen Switch anlege und Geräte suche:

Undefined property: stdClass::$result in C:\ProgramData\Symcon\modules\IPSTuya\Generic\module.php on line 142

Warning: foreach() argument must be of type array|object, null given in C:\ProgramData\Symcon\modules\IPSTuya\Generic\module.php on line 145

ev. sagt dir das etwas

Hmm. sagt mir so erstmal nichts. Hab mal geschaut ich glaub es gibt ein Erkennungsproblem der Gateway Instanz. Denn bei mir will er immer eine neue anlegen das sollte nicht sein.

Versuch mal eine bestehende Switch Instanz per Kopieren/Einfügen zu duplizieren.