UserReadings reagiert nicht so wie erhofft.

Begonnen von romakrau, 06 Dezember 2024, 15:17:12

Vorheriges Thema - Nächstes Thema

romakrau

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

MadMax-FHEM

#1
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

romakrau

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"

MadMax-FHEM

#3
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

romakrau

Danke, manchmal bin ich auch blind. MQTT's kommen wohl als Strings.

Beta-User

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'}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors