FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: choetzu am 14 Februar 2017, 11:09:12

Titel: Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 11:09:12
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: Weisswurstverkäufer am 14 Februar 2017, 11:32:14
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 13:38:58
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: igami am 14 Februar 2017, 13:44:58
Was für "Mühen" gibt es denn?
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 14:35:16
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: igami am 14 Februar 2017, 14:41:49
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 14:43:09
danke für die rasche Antwort. und wie könnte ich dies ggf rausfiltern? Ich bin da relativ unbeholfen... lerne aber sehr gerne dazu ;)
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: igami am 14 Februar 2017, 14:46:25
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 17:34:10
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 20:05:44
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 ;)
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: KernSani am 14 Februar 2017, 20:16:35
Guck mal in die commandref (https://fhem.de/commandref_DE.html#DOIF_Kurzreferenz). DOIF scheint das $EVENTS statt EVTPART zu nennen...
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: Damian am 14 Februar 2017, 20:52:24
poste mal list vom betroffenen DOIF-Modul.
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 22:42:53
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
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 14 Februar 2017, 23:29:51
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..

Titel: Antw:Max Werte in Dummy setzen
Beitrag von: igami am 15 Februar 2017, 06:04:36
Schön, dass es funktioniert :)
Alternativ kannst du auch userreadings verwenden um das direkt in dem device zu machen
Titel: Antw:Max Werte in Dummy setzen
Beitrag von: choetzu am 15 Februar 2017, 11:08:58
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