Hilfe bei userReadings Funktion

Begonnen von Dracolein, 21 Dezember 2019, 08:02:15

Vorheriges Thema - Nächstes Thema

Dracolein

Guten morgen zusammen,

ich benötige Hilfe bei der Definition eines individuellen userReadings. Habe keine Ahnung von Perl und kenne nur Grundlagen des Programmierens.

Hintergrund:
Ich nutze einen CalVIEW-Kalender, dessen Device ein Reading namens "c-today" beinhaltet, auf dem die Anzahl der heutigen Termine dargestellt sind. Diesen Wert nutze ich, um in meiner TouchUI Oberfläche ein Symbol entsprechend einzufärben. Allerdings habe ich dort nur die Möglichkeit zwischen 1=farbig und 0=grau.
Bei 2 oder mehr Terminen an einem Tag funktioniert die Farbzuweisung nicht, da der dort abgefragte Wert von c-todsy != 0 und != 1 ist, sondern z.B. 2 oder 3.
Folglich möchte ich ein userReading namens "daycheck" im Kalendermodul erzeugen, welches die Variable "c-today" auf >0 abfragt und bei true auf 1 gesetzt wird, sonst auf 0 gesetzt bleibt.

Also im Prinzip sowas wie
if c-today > 0 then daycheck = 1 else daycheck = 0

Nach Durchsicht vieler Beispiele bin ich grob soweit gekommen

attr FamilyCal userReadings daycheck { ReadingsVal(,,FamilyCal","c-today")>0 }.....?
Leider verstehe ich die Syntax bisher nicht wirklich. Bezogen auf diese Zeile ist mir der erste Teil recht klar und auch der Aufruf von c-today müsste stimmen.  Aber alles Weitere ist bei mir Grauzone.
attr FamilyCal userReadings daycheck {if(ReadingsVal("FamilyCal","c-today","") eq >0) {return 1} else {return 0}}

Die zweite Idee kommt der Sache vielleicht etwas näher, aber auch hier ist bestimmt der Vergleich >0 nicht richtig formuliert, wie müsste das denn aussehen?

Danke für Eure Hilfe
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

KernSani

Nur auf die Schnelle: Die 2. Idee sieht ganz nicht so schlecht aus. Probier mal die Funktion ReadingsNum statt Readingsval und frage dann auf >0 ab.

Grüße,

Oli


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Byte09

ReadingNum  würde ich auch nehmen und diesen Teil korrigieren:
Zitat..."c-today","") eq >0) {return 1}...

'eq' dient nur zum Vergleich von Strings , du willst aber numerische werte testen , somit ist  nur '>' zu werwenden.
beides in einer Abfrage zu verwenden ist nicht vorgesehen und ergiebt keinen Sinn.

gruss Byte09

MadMax-FHEM

#3
Und:

Zitat
eq >0

Ist "doppeltgemoppelt" bzw. genaugenommen Quatsch... ;)

eq ist für Zeichenkettenvergleich und prüft auf "Gleichheit" (equals)

> ist richtig und reicht in deinem Fall (die Vergleichsoperatoren sind für numerische Werte)

Und wie schon geschrieben ReadingsNum, dann hast du sicher auch nur den numerischen Anteil des abgefragten Readings...

Statt deinem if/else ginge auch noch der "Fragezeichen-Operator": a > 0 ? 1:0
Wenn a größer 0, dann gib 1 zurück, ansonsten 0...

Nur als Anmerkung.
if/else geht nat. auch ;)

EDIT: zu langsam ;)

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)

Dracolein

#4
Vielen Dank für Eure Hilfe, wirklich toll.
Ich habs geschafft mit

attr FamilyCal userReadings daycheck {if(ReadingsNum("FamilyCal","c-today","") >0) {return 1} else {return 0}

Gelernt:
- Unterschied zw. ReadingsNum und ReadingsVal
- Vergleich zw. String und Wert
8)
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Otto123

#5
Ich finde ja für genau diese Fälle den Vorschlag von Pfriemler Joachim schöner :)
Und ich finde in deiner Version fehlt was, das sollte Fehler  geben - schließende }
optimierte Variante
{(ReadingsNum($name,"c-today","") >0) ? 1:0}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Dracolein

Zitat von: Otto123 am 22 Dezember 2019, 17:59:06
Ich finde ja für genau diese Fälle den Vorschlag von Pfriemler schöner :)
Und ich finde in deiner Version fehlt was, das sollte Fehler  geben - schließende }
optimierte Variante
{(ReadingsNum($name,"c-today","") >0) ? 1:0}

Gruß Otto
Du hast recht, die ganz am Ende geschweifte Klammer fehlt hier in meinem Code-Zitat. Im echten userreadings ist sie vorhanden
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

MadMax-FHEM

Zitat von: Otto123 am 22 Dezember 2019, 17:59:06
Ich finde ja für genau diese Fälle den Vorschlag von Pfriemler schöner :)

Eieiei, Otto, wird Zeit, dass Weihnachten kommt ;)
(oder hab ich was verpasst?)

Im ganzen Thread kein Pfriemler... ;)

Gruß und frosch Fescht, 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)

Otto123

Ohje Joachim, sorry sorry sorry !!!

Das langsame Forum hat mich vielleicht heute etwas kirre gemacht? Wobei zu der Zeit ging es schon wieder - Ausrede gilt nicht! ;)

Nochmal richtig: Joachims Vorschlag ist schöner! Frohes Fest!🎅🤶🎄
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Kannst gerne ein paar "sorrys" streichen ;)

Soooo war das ja gar nicht gemeint...
...wollte nur sehen, ob alles i.O. ist ;)

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)