Hallo,
ich stehe etwas an.
Ich habe ein Dummy erstellt mit eigenen Readings wie Temp_Max, Co2_Min etc
Nun möchte ich mit DOIFs entsprechende Werte setze. das sollte eigentlich wie folgt gehen:
([Temperaturmesser:co2] > [Werte_Dummy:co2_max]) (setreading Werte_Dummy co2_max $Event) DOELSE
Also, wenn der co2 Wert höher ist, als der bislang gespeicherte Wert im Dummy, dann soll der neue Wert gesetzt werden. So sehe ich immer, wann welche Höchtswerte erzeugt werden. Irgendwie hat er aber Mühe mit ([Temperaturmesser:co2] > [Werte_Dummy:co2_max])
Wo finde ich Hilfe? Danke.
Lg c
das ist zwar nicht direkt eine Antwort auf Deine Frage - aber mir scheint es, als würde das statistics-Modul genau das machen was Du suchst
danke für den Hinweis. Das werde ich mir gleich anschauen.
Trotzdem würde mich aber die Lösung der oben stehenden Problemstellung interessieren. Weiss jemand Bescheid?
danke. Lg C
Was für "Mühen" gibt es denn?
bei mir kommt folgende Fehlermeldung:
[Tue Feb 14 14:32:02 2017] fhem.pl: Argument "co2: 546" isn't numeric in numeric lt (<) at (eval 8251) line 1.
komisch, er übernimmt den Wert "co2: 546" ins reading und somit wird es dann nicht mehr vergleichbar. Mit $EVTPART1 komm ich auch nicht weiter...
und hier das ganz genaue DOIF in meinem Falle:
([netatmo_D70_ee_50_02_92_3a:co2] < [Werte:SZ_co2_min]) (setreading Werte SZ_co2_min $EVENT) DOELSE
Zitat von: choetzu am 14 Februar 2017, 14:35:16
komisch, 546 ist doch numerisch. Aber erscheint auch co2: mit zu übernehmen... hmm
Da liegt doch der Hund begraben, guck dir mal die Readings an ob da nicht "co2:" mit drin steht.
Normal könnte man Zahlen rausfiltern, aber dann bekommst du wahrscheinlich auch die 2 aus co2
danke für die rasche Antwort. und wie könnte ich dies ggf rausfiltern? Ich bin da relativ unbeholfen... lerne aber sehr gerne dazu ;)
Meines erachtens ist es sinnvoller sich zu fragen wie das da reinkommt.
Poste doch mal bitte ein list von deinem device welches den co2 Wert bereitstellt
herzlichen dank für deine Hilfe. Hier das Listing:
DEF 70:ee:50:02:92:3a
Device 70:ee:50:02:92:3a
INTERVAL 900
IODev Netatmo
LAST_POLL 2017-02-14 17:32:02
NAME netatmo_D70_ee_50_02_92_3a
NOTIFYDEV global
NR 177
NTFY_ORDER 50-netatmo_D70_ee_50_02_92_3a
STATE T: 24.4 H: 34
SUBTYPE DEVICE
TYPE netatmo
altitude 437
city Kappel
country CH
dataTypes Temperature,CO2,Humidity,Noise,Pressure
date_setup 2013-12-27 15:00:49
firmware 102
last_setup 2013-12-27 15:00:49
last_status_store 2017-02-14 17:13:27
last_upgrade 2015-08-19 21:14:20
location 47.322399029391,7.849207844119
model NAMain
moduleName Schlafzimmer
openRequests 0
stationName Luethi Home
status no data
wifi_status 68
Readings:
2017-02-14 17:23:19 co2 575
2017-02-14 17:23:19 humidity 34
2017-02-14 17:23:19 noise 36
2017-02-14 17:23:19 pressure 1032.8
2017-02-14 17:13:12 pressure_abs 980.3
2017-02-14 17:13:12 pressure_trend up
2017-02-14 17:24:58 statHumidityDay Min: 34 Avg: 34 Max: 35 (since: 2017-02-14_13:46:44 )
2017-02-14 17:24:58 statHumidityMonth Min: 34 Avg: 34 Max: 35 (since: 2017-02-14_13:46:44 )
2017-02-14 17:24:58 statHumidityYear Min: 34 Avg: 34 Max: 35 (since: 2017-02-14_13:46:44 )
2017-02-14 16:59:55 statPressureTendency 1h: +0.1 2h: +0.6 3h: +0.5 6h: -
2017-02-14 17:24:58 statTemperatureDay Min: 24.4 Avg: 24.8 Max: 25.4 (since: 2017-02-14_13:46:44 )
2017-02-14 17:24:58 statTemperatureMonth Min: 24.4 Avg: 24.8 Max: 25.4 (since: 2017-02-14_13:46:44 )
2017-02-14 17:24:58 statTemperatureYear Min: 24.4 Avg: 24.8 Max: 25.4 (since: 2017-02-14_13:46:44 )
2017-02-14 14:21:23 temp_max 25.4
2017-02-14 00:01:46 temp_min 23.3
2017-02-14 17:13:12 temp_trend stable
2017-02-14 17:23:19 temperature 24.4
Helper:
_98_statistics Statistik_Werte
readingNames:
temperature
co2
humidity
noise
pressure
Attributes:
IODev Netatmo
alias Schlafzimmer
devStateIcon .*:no-icon
event-on-change-reading .*
room Klima
stateFormat T: temperature H: humidity
komme irgendwie nicht vom Fleck. Wenn ich anstelle von $EVENT die Variable $EVTPART1 (co2: --> $EVTPART0 und 572-->$EVTPART1) gehts auch nicht.. dann schreibt er mir einfach ins Reading $EVTPART1, dieser Sack ;)
Guck mal in die commandref (https://fhem.de/commandref_DE.html#DOIF_Kurzreferenz). DOIF scheint das $EVENTS statt EVTPART zu nennen...
poste mal list vom betroffenen DOIF-Modul.
danke für die Hilfe KernSani.. Das mit dem $EVENTS habe ich sicherlich gefühlte 1000mal gelesen und auch die Beispiele.. Ich kapier das einfach nicht.. ich such nun noch nach anderen Beispielen hier im Forum.. evtl. erlange ich die Erleuchtung...
@Damian: Here we go...
Internals:
CFGFN
DEF ([Netatmo_SZ:co2] < [Werte:SZ_co2_min]) (setreading Werte SZ_co2_min $EVENTS) DOELSE
NAME Werte_Test
NR 928
NTFY_ORDER 50-Werte_Test
STATE initialized
TYPE DOIF
Readings:
2017-02-14 22:38:57 cmd 0
2017-02-14 22:38:57 state initialized
Condition:
0 ReadingValDoIf($hash,'Netatmo_SZ','co2') < ReadingValDoIf($hash,'Werte','SZ_co2_min')
Devices:
0 Netatmo_SZ Werte
all Netatmo_SZ Werte
Do:
0:
0 setreading Werte SZ_co2_min $EVENTS
1:
0
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Itimer:
Readings:
0 Netatmo_SZ:co2 Werte:SZ_co2_min
all Netatmo_SZ:co2 Werte:SZ_co2_min
Regexp:
All:
State:
Attributes:
room DOIF
hat geklappt!! Suchen heisst finden... Und so geht es nun...
([Netatmo_SZ:co2] < [Werte:SZ_co2_min]) (setreading Werte SZ_co2_min [Netatmo_SZ:co2]) DOELSE
also kein $EVENTS oder so, sondern einfach wie oben... Happy happy..
Schön, dass es funktioniert :)
Alternativ kannst du auch userreadings verwenden um das direkt in dem device zu machen
Ja, userreadings hab ich auch gesehen. Aber da braucht es ziemlich perl-kenntnisse, was ich leider nicht habe..
Und ich wollte ein Dummy mit den Min-Max Werten aus verschiedenen Devices in einer Uebersicht... bin nun happy ;) danke nochmals für die Hilfen
Gesendet von iPhone mit Tapatalk Pro