movingAverageT mit ganze Zahlen

Begonnen von Basti-K, 23 August 2023, 14:47:32

Vorheriges Thema - Nächstes Thema

Basti-K

wie bekomme ich ein User Reading der aus ganzen Zahlen besteht?

movingAverageT liefert immer Werte mit Punkt und DOIF interpretiert das nicht als Komma.


userReadings :
Kuechenfester_Licht_int:Kuechenfester_Licht.* { int(ReadingsVal("S10E","Kuechenfester_Licht",0)) }


Ich missbrauche die Leistung des PV String als Lichtsensor, aber will einen Mittelwert für die Entscheidung ob die Rolllade rauf oder runter soll.


Der Versuch das bei DOIF abzufangen funktioniert nicht:

DOIF ([int(S10E:Kuechenfester_Licht)] > 2800)
(set MQTT2_shellyswitch25_8CAAB50598A3 pct 50)
DOELSEIF ([int(S10E:Kuechenfester_Licht)] < 800)
(set MQTT2_shellyswitch25_8CAAB50598A3 pct 100)
)

sobald int im Spiel ist verschwindet das Reading.

rabehd

Was hat das DOIF mit dem Userreading zu tun?
Wofür willst Du das ganzzahlige Reading?

int() schneidet (wohl) ab
round() hast Du noch nicht probiert?

Auch funktionierende Lösungen kann man hinterfragen.

Prof. Dr. Peter Henning

[int(S10E:Kuechenfester_Licht)]
ist auch kein Ausdruck, den FHEM interpretieren kann. Bitte unterscheiden zwischen Perl-Funktionen wie int(...) und Abkürzungen, die in manchen Befehlen von FHEM verwendet werden können wie [Device:Reading]. Außerdem ist es Unsinn, dass DOIF etwas "mit Komma" haben wolle - das Dezimalzeichen in FHEM und Perl ist nun mal der Punkt.

LG

pah

P.S.: Ich empfehle noch die Überprüfung, ob es wirklich "fester" heißen soll

Basti-K

,,Fester" war ein Tippfehler, der aber immerhin konsequent durchgezogen wurde. Ich habe das aus kosmetischen Gründen korrigiert.

Die DOIF wurde anfangs mit der live String Leistung betrieben was in der Praxis blöd war, weil bei jeder Wolke die Rollende rauf und runter fuhr, aber grundsätzlich funktionierte es.
S10E:Kuechenfenster_Licht Wird so gebildet:
attr S10E userReadings Kuechenfenster_Licht {movingAverageT("S10E", "String1-Leistung", 1800)}
Das Reading ist auch da unter S10E.
nur die DOIF machts nichts, wenn ich Kuechenfenster_Licht statt String1-Leistung nehmen.

rabehd

Zitat von: Basti-K am 24 August 2023, 15:14:05nur die DOIF machts nichts, wenn ich Kuechenfenster_Licht statt String1-Leistung nehmen.

Die Frage warum es ganzzahlig werden soll bleibt unbeantwortet.  >:(

[int(S10E:Kuechenfester_Licht)] wird sicher nie in einem DOIF funktionieren, aber das hat pah ja auch schon geschrieben.

> 2800 dafür braucht man kein ganzzahliges Reading, somit auch nicht [int(S10E:Kuechenfester_Licht)]

Was sagt denn der Eventmonitor, gibt es ein Event des Readings Kuechenfester_Licht?
Auch funktionierende Lösungen kann man hinterfragen.