grundsätzlich ja, aber ich habe einige von den Plugs im Garten verteilt und Garage, Heizraum, die nicht ganz optimal erreichbar sind, und wenn sich z.B. die Plugs im Garten untereinander mit WLAN “ergänzen” würden, wäre das schön.
Moin Kai,
könnte man (du,ich) die Meldungen des LD2410 integrieren? Die kommen im Debug schon rein:
09.07.2026, 08:23:32 | JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"Payload":"{\"Time\":\"2026-07-09T07:23:31\",\"BH1750\":{\"Illuminance\":1},\"HDC1080\":{\"Temperature\":39.5,\"Humidity\":26.2,\"DewPoint\":16.5},\"LD2410\":{\"Distance\":[0.0,0.0,0.0],\"Energy\":[0,0]},\"TempUnit\":\"C\"}","QualityOfService":0,"Retain":false,"Topic":"tele/Flur_Unity/SENSOR"}
werden aber im Objektbaum nich angelegt (Anlegen ist natürlich aktiv, die anderen Sensoren kriege ich auch)
Danke und Grüße,
Tom
Wie ist der Wert denn zu verstehen?
Was hättest du da denn gerne für Variablen?
Grüße,
Kai
Das sind Entfernungs- und Energieangaben, sehen in HA aus Tasmota so aus:
derzeit fische ich die mit einem eigenen MQTT Device Gerät auf dem Sensortopic ab, was natürlich etwas umständlich ist. Die Abfrage mache ich so, vielleicht kannst du das ja recyceln:
<?php
// =========================================================================
// 1. MANUELLE ID-ZUWEISUNG (Direkt aus deinem Objektbaum abgelesen)
// =========================================================================
$statusVarId = 13337; // ID von "Präsenz unter 3m"
$overrideVarId = 51294; // ID von "STATE (Variablenüberwachung)"
$mqttValueVarId = 58616; // ID von "Value" (dein MQTT-JSON-String des Sensors)
// ID der "Value"-Variable unter deinem LED-MQTT-Gerät
$ledActionVarId = 30922;
// IDs der Abstands- und Energievariablen aus deiner "Variablenüberwachung (Group)"
$varIdMove = 28520; // ID von "LD2410 Abstand bewegt"
$varIdStill = 46593; // ID von "LD2410 Abstand fix"
$varIdDet = 57628; // ID von "LD2410 Abstandsfeststellung"
$varIdEnergyMove = 10483; // ID von "LD2410 Energie bewegt"
$varIdEnergyStill = 33090; // ID von "LD2410 Energie statisch"
// Variables zur späteren Logik-Prüfung initialisieren
$currentMoveMeter = 0.0;
$currentStillMeter = 0.0;
$currentDetectionMeter = 0.0;
// =========================================================================
// 2. REGULÄRER DATA-INPUT (Aktualisiert die Variablen immer zuerst)
// =========================================================================
if (IPS_VariableExists($mqttValueVarId)) {
$msg = GetValueString($mqttValueVarId);
$data = json_decode($msg, true);
if (isset($data['LD2410'])) {
// --- TEIL 1: ABSTANDS-DATEN SCHREIBEN ---
$distanceKey = isset($data['LD2410']['Distance']) ? 'Distance' : (isset($data['LD2410']['distance']) ? 'distance' : null);
if ($distanceKey !== null && is_array($data['LD2410'][$distanceKey])) {
$distanceArr = $data['LD2410'][$distanceKey];
if (isset($distanceArr[0])) {
$currentMoveMeter = (float)$distanceArr[0] / 100;
SetValueFloat($varIdMove, $currentMoveMeter);
}
if (isset($distanceArr[1])) {
$currentStillMeter = (float)$distanceArr[1] / 100;
SetValueFloat($varIdStill, $currentStillMeter);
}
if (isset($distanceArr[2])) {
$currentDetectionMeter = (float)$distanceArr[2] / 100;
SetValueFloat($varIdDet, $currentDetectionMeter);
}
}
// --- TEIL 2: ENERGIE-DATEN SCHREIBEN ---
$energyKey = isset($data['LD2410']['Energy']) ? 'Energy' : (isset($data['LD2410']['energy']) ? 'energy' : null);
if ($energyKey !== null && is_array($data['LD2410'][$energyKey])) {
$energyArr = $data['LD2410'][$energyKey];
if (isset($energyArr[0])) {
SetValueInteger($varIdEnergyMove, (int)$energyArr[0]);
}
if (isset($energyArr[1])) {
SetValueInteger($varIdEnergyStill, (int)$energyArr[1]);
}
}
}
}
// =========================================================================
// 3. SPERR- & PRÄSENZ-LOGIK (Senden per RequestAction über Variable 30922)
// =========================================================================
$isSperreAktiv = false;
if (IPS_VariableExists($overrideVarId)) {
$sperrWert = GetValue($overrideVarId);
if ($sperrWert === true || $sperrWert === 1 || strtolower((string)$sperrWert) === 'alarm') {
$isSperreAktiv = true;
}
}
// FALL A: Sperre ist aktiv (Dauer-Alarm) -> Präsenz erzwingen auf false, LED Rot
if ($isSperreAktiv) {
if (GetValueBoolean($statusVarId) !== false) {
SetValueBoolean($statusVarId, false);
}
// Senden per RequestAction im HEX-Format
if (IPS_VariableExists($ledActionVarId)) {
@RequestAction($ledActionVarId, "#330000"); // ROT
}
}
// FALL B: Normalbetrieb -> Werte auswerten
else {
$isPresentUnder3m = false;
// Bedingung für GRÜN (Präsenz unter 3 Meter und über 0.0)
if (($currentStillMeter > 0.01 && $currentStillMeter < 3.0) || ($currentMoveMeter > 0.01 && $currentMoveMeter < 3.0)) {
$isPresentUnder3m = true;
}
if (GetValueBoolean($statusVarId) != $isPresentUnder3m) {
SetValueBoolean($statusVarId, $isPresentUnder3m);
}
// LED Status senden per RequestAction im HEX-Format
if (IPS_VariableExists($ledActionVarId)) {
if ($isPresentUnder3m) {
@RequestAction($ledActionVarId, "#003300"); // GRÜN
} elseif ($currentDetectionMeter > 0.01 || $currentStillMeter > 0.01 || $currentMoveMeter > 0.01) {
@RequestAction($ledActionVarId, "#333300"); // GELB
} else {
@RequestAction($ledActionVarId, "#000000"); // AUS
}
}
}
ich habe die Werte in m umgerechnet und einem Profil zugewiesen, was ich etwas angenehmer finde - aber letztendlich natürlich egal ist. Die Logik mit der farbigen LED musst du dir wegdenken, es geht ja nur um die JSON Struktur.
Hallo Kai, ich hätte da noch einen kleinen Fehler, der irgendwo im Modul generiert wird:
das Modul legt bei jeder neuen Sensormeldung eine neue leere Variable an, musste eben ein paar Hundert löschen.
Hier der Payload, wo ich des Rätsels Lösung vermute:
04.08.2026, 10:26:52 | Sensor Payload | {„Time“:„2026-08-04T09:26:52“,„BME280“:{„Temperature“:25.0,„Humidity“:77.2,„DewPoint“:20.7,„Pressure“:1012.1},„BH1750“:{„Illuminance“:100},„LD2410“:{„Distance“:[150.0,140.0,117.0],„Energy“:[41,100]},„SGP41“:{„VOC_Raw“:31768,„NOX_Raw“:19053,„TVOC“:184,„NOₓ“:1},„PressureUnit“:„hPa“,„TempUnit“:„C“}
ich ordne das nicht dem LD2410 zu, da dieses Verhalten bei einer anderen Tasmota so nicht zu beobachten ist. Ich vermute, es ist der NOx Wert vom SGP41, denn der fehlt tatsächlich im Objektbaum (die anderen sind da). Ist es möglicherweise dieses tiefgestellte x, das das Problem verursacht?
Hallo Forum,
in meinem Symcon (Version 9.0 im Ubuntu LXC auf Proxmox) bekomme ich von meinen Tasmota Steckdosen (NOUS A1T, Tasmota Version 15.4.0) immer wider folgende Fehlermeldung:
<30.08.2026, 13:05:06 | FlowHandler | Could not forward data to instance #32946:
Fatal error: Uncaught ValueError: fnmatch(): Argument #2 ($filename) must not contain any null bytes in /var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php:87
Stack trace:
#0 /var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php(87): fnmatch(‚PowerOnState‘, ‚{„Status“:{„Mod…‘)
#1 /-(3): Tasmota->ReceiveData(‚{„DataID“:“{7F7…‘)
#2 {main}
thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.tasmota/Tasmota/module.php on line 87/>
#32946 ist ein Tasmota MQTT Topic
Der Fehler kommt in unregelmäßigen Abständen von verschiedenen Tasmota Steckdosen.
Was kann ich dagegen tun?
Vielen Dank für Eure Unterstützung!
Piet
Hallo Forum,
niemand ein Idee woran das liegt und wie man diesen Fehler weg bekommt?
Viele Grüße
Piet
@KaiS ,
ich habe mal eine Frage zu Tasmota Modul.
Bei mir laufen alle MQTT Nachrichten über einen zentralen Mosquitto MQTT Broker. In Symcon habe ich keinen MGTT Server sondern nur den MQTT Client installiert. Über diesen bekomme ich auch die Meldungen von meinen Tasmota Geräten und kann sie auch darüber steuern.
Allerdings haben die entsprechenden Variablen nicht die richtige Formatierung und Bezeichnung.
Könntest Du Dein Modul evtl. so anpassen, dass es mit einem beliebigen MQTT Broker funktioniert und nicht ausschließlich mit dem Symcon Internen MQTT Server? Oder geht das bereits und ich habe die entsprechende Einstellung noch nicht gefunden?
Viele Grüße
Piet
Könnt ihr bitte alle mal parallel das neue Modul testen?
Grüße,
Kai
Das neue Tasmota Modul sollte das können.
Schau dir das mal an.
Grüße,
Kai
