Hallo zusammen,
denke ich mal wieder zu einfach? Ich möchte mittels eines UserReadings einen Wert definieren:
Attr MQTT_Bewegungsmelder userReadings Erkennung { ReadingsVal("MQTT_Bewegungsmelder","SENSOR_LD2410_Distance_3"," ") eq "0" ? "nomotion" : "motion" }
Müßig zu erwähnen das es so nicht geht. Alle Varianten des Vergleichs habe ich schon ausprobiert, mit etwaigen Fehlermeldungen.
Kann jemand helfen?
Gruß Roman
Zitat von: romakrau am 06 Dezember 2024, 15:17:12Kann jemand helfen?
Nicht mit den gelieferten bzw. ohne notwendige Infos!
Und das ist ja wohl auch Quatsch:
Zitat von: romakrau am 06 Dezember 2024, 15:17:12Müßig zu erwähnen das es so nicht geht. Alle Varianten des Vergleichs habe ich schon ausprobiert, mit etwaigen Fehlermeldungen.
Weil zumindest was dir zeigt, bzw. woran du festmachst, dass es nicht geht wäre interessant!
Also wird gar kein Reading "Erkennung" erzeugt? Falsch belegt? Etc.
Fehlermeldungen sind immer interessant, meist zumindest...
Ich habe dein userReadings mit einem dummy nachgebaut:
Internals:
FUUID 61fd7043-f33f-ff8d-bc08-25682ae2b65bd69f
FVERSION 98_dummy.pm:0.256060/2022-02-01
NAME dmTest
NR 137
STATE <span>EnergyDay: 1.50 kWh</br>EnergyDayLast: 0.00 kWh</span>
TYPE dummy
eventCount 2
READINGS:
2024-12-06 15:25:30 Erkennung motion
2022-02-20 17:57:57 Heizprogramm Winter
2024-12-06 15:25:30 SENSOR_LD2410 1
2024-08-06 13:13:35 Zaehler_countsOverall_EnergyDay 150
2024-03-25 17:27:20 battery ok
2022-05-30 20:23:30 newReading 17
2023-01-14 08:59:10 state on
2022-06-16 10:20:03 test1 13
2022-02-04 19:35:00 test2 11
2022-04-17 20:52:34 test3 17.12345
2022-06-05 14:25:18 test4 00:01:01
Attributes:
icon 10px-kreis-gruen
room Test
setList on off
stateFormat {my $value1 = ReadingsNum($name, "Zaehler_countsOverall_EnergyDay", 0); my $value2 = ReadingsNum($name, "Zaehler_countsOverall_EnergyDayLast", 0); return sprintf("<span>EnergyDay: %.2f kWh</br>EnergyDayLast: %.2f kWh</span>", $value1 / 100, $value2 / 100)}
useSetExtensions 1
userReadings Erkennung { ReadingsVal("dmTest","SENSOR_LD2410"," ") eq "0" ? "nomotion" : "motion" }
userattr batteryType doNotAccount
Der macht noch mehr, ist halt für Tests ;)
Ein setreading dmTest SENSOR_LD2410 0 bzw. setreading dmTest SENSOR_LD2410 1 macht was ich denke, dass du willst...
EDIT: den Readingnamen habe ich verkürzt (sollte aber egal sein) und userReadings ohne Trigger sollte man auch nicht machen (klar, erst mal generell sehen, ob es geht, sollte man aber dann "nachlegen")...
Frage: kommen Events? Wie sieht das reading aus usw.
Ein list und Ausüge aus dem Eventmonitor etc. würden geholfen haben...
Es müsste auch == statt eq gehen, wenn man ReadingsNum nimmt usw.
Ist aber nicht das Problem...
Gruß, Joachim
Sorry, Du hast ja Recht. Das Reading wird angelegt aber nicht korrekt bedient.
READINGS:
2024-12-06 15:33:33 SENSOR_LD2410_Distance_1 76.0
2024-12-06 15:33:33 SENSOR_LD2410_Distance_2 89.0
2024-12-06 15:33:33 SENSOR_LD2410_Distance_3 71.0
2024-12-06 15:33:33 SENSOR_LD2410_Energy_1 93
2024-12-06 15:33:33 SENSOR_LD2410_Energy_2 100
2024-12-06 15:36:37 SENSOR_LD2410_Distance_1 30.0
2024-12-06 15:36:37 SENSOR_LD2410_Distance_2 30.0
2024-12-06 15:36:37 SENSOR_LD2410_Distance_3 0.0
2024-12-06 15:36:37 SENSOR_LD2410_Energy_1 90
2024-12-06 15:36:37 SENSOR_LD2410_Energy_2 100
Events:
2024-12-06 15:32:32 MQTT2_DEVICE MQTT_Bewegungsmelder SENSOR_LD2410_Distance_3: 50.0
2024-12-06 15:32:33 MQTT2_DEVICE MQTT_Bewegungsmelder SENSOR_LD2410_Distance_3: 97.0
2024-12-06 15:32:36 MQTT2_DEVICE MQTT_Bewegungsmelder SENSOR_LD2410_Distance_3: 70.0
Liegt's vielleicht am Zeichenvergleich "0.0"
Zitat von: romakrau am 06 Dezember 2024, 15:40:552024-12-06 15:36:37 SENSOR_LD2410_Distance_3 0.0
Naja, wenn du "0.0" mit "0" vergleichst: stimmt das überein oder nicht? 8)
Da eq und "" eben Zeichenketten und keine WERTE vergleicht, kann das ja auch nicht gehen...
Also entweder ReadingsNum und == (wobei ich jetzt mal annehme, dass == bei 0.0 == 0 als wahr ausgibt) oder eben genau die Zeichenkette verwenden...
EDIT:
Zitat von: romakrau am 06 Dezember 2024, 15:40:55Liegt's vielleicht am Zeichenvergleich "0.0"
:)
EDIT: und da SENSOR_LD2410_Distance_3 ja verschiedene Werte haben kann (siehe Events) evtl. mit <= oder >= arbeiten? Und eben ReadingsNum...
Gruß, Joachim
Danke, manchmal bin ich auch blind. MQTT's kommen wohl als Strings.
Zitat von: romakrau am 06 Dezember 2024, 15:48:03MQTT's kommen wohl als Strings
Perl (und damit auch FHEM) ist es reichlich egal, wie es reinkommt, es konvertiert das notfalls lustig hin und her, kein Problem.
Aber "eq" ist halt ein String-Vergleich, und dann muss die Zeichenkette passen ;) .
Versuch mal das (FHEM-Kommandozeile), dann wird es eventuell klarer:
{ return "0.00" == 0 ? 'ja':'nein'}