FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Basti-K am 23 August 2023, 14:47:32

Titel: movingAverageT mit ganze Zahlen
Beitrag von: Basti-K am 23 August 2023, 14:47:32
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.
Titel: Aw: movingAverageT mit ganze Zahlen
Beitrag von: rabehd am 23 August 2023, 15:59:56
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?

Titel: Aw: movingAverageT mit ganze Zahlen
Beitrag von: Prof. Dr. Peter Henning am 23 August 2023, 18:11:34
[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
Titel: Aw: movingAverageT mit ganze Zahlen
Beitrag von: Basti-K am 24 August 2023, 15:14:05
,,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.
Titel: Aw: movingAverageT mit ganze Zahlen
Beitrag von: rabehd am 24 August 2023, 20:14:29
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?