Addition von Werten ist falsch

Begonnen von developer@isserstedt.org, 30 Juni 2017, 23:47:43

Vorheriges Thema - Nächstes Thema

developer@isserstedt.org

Hallo,

ich möchte Werte aus dem Modul Weatherunderground aufsummieren. Ich habe hierzu eine Variable mit set sr dummy angelegt und diese mit set sr 0 gesetzt.

Die Summenbildung erfolgt über:
defmod n_wu1 notify WUweather {my $temp1=(ReadingsNum("sr","state",0)*1.0+ReadingsNum("WUweather","solarradiation",0)*1.0);;fhem("set sr $temp1");;}

Leider ist die Summe falsch. Meine Vermutung ist, dass die Typen der Addition nicht passen (ASCII + Zahl). Ich habe versucht eine Typkonvertierung über die "*1.0" zu erreichen. Leider ohne Erfolg.

Irgend jemand irgendwelche Ideen?

Gruß Thorsten

rabehd

#1
Weatherunderground ? Kenne ich noch nicht.

Lass Dir mal die beiden Summanden in Rohform ausgeben.
Gilt hier * vor + ?
Auch funktionierende Lösungen kann man hinterfragen.

amenomade

Bei mir geht es:
2017.07.01 00:31:56 5: Cmd: >setreading wetter solarradiation 5<
2017.07.01 00:31:56 5: Starting notify loop for wetter, 1 event(s), first is solarradiation: 5
2017.07.01 00:31:56 5: createNotifyHash
2017.07.01 00:31:56 5: Triggering n_wu1
2017.07.01 00:31:56 4: n_wu1 exec {my $temp1=(ReadingsNum("sr","state",0)*1.0+ReadingsNum("wetter","solarradiation",0)*1.0);;fhem("set sr $temp1");;}
2017.07.01 00:31:56 5: Cmd: >{my $temp1=(ReadingsNum("sr","state",0)*1.0+ReadingsNum("wetter","solarradiation",0)*1.0);fhem("set sr $temp1");}<
2017.07.01 00:31:56 5: Cmd: >set sr 15<
2017.07.01 00:31:56 4: dummy set sr 15


Poste mal ein "list sr" und ein "list WUWeather" (APIKEY ausblenden)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

developer@isserstedt.org

Hallo,

Das wird jetzt lang...

List SR:
Internals:
   CFGFN
   NAME       sr
   NR         1287
   STATE      382
   TYPE       dummy
   Readings:
     2017-07-01 00:43:17   state           382
Attributes:
   room       Test

Internals:
   API_KEY    gibtes
   CFGFN
   DEF        APIkey pws:INIEDERS682
   FEATURES   astronomy/conditions/forecast/lang:EN
   INTERVAL   300
   LANG       EN
   LAST       1498862593
   LAST_OBSERVATION 1498862562
   NAME       WUweather
   NR         267
   QUERY      pws:INIEDERS682
   STATE      T: 15.1 °C H: 88 % l: 0 mm
   TYPE       Wunderground
   Readings:
     2017-07-01 00:43:13   UV              0.0
     2017-07-01 00:43:13   condition       Rain
     2017-07-01 00:43:13   dewpoint        13
     2017-07-01 00:43:13   dewpoint_f      56
     2017-07-01 00:43:13   fc0_condition   Chance of Rain
     2017-07-01 00:43:13   fc0_high_c      19
     2017-07-01 00:43:13   fc0_high_f      67
     2017-07-01 00:43:13   fc0_humidity    88
     2017-07-01 00:43:13   fc0_humidity_max 0
     2017-07-01 00:43:13   fc0_humidity_min 0
     2017-07-01 00:43:13   fc0_icon        chancerain
     2017-07-01 00:43:13   fc0_icon_night  nt_partlycloudy
     2017-07-01 00:43:13   fc0_icon_url    http://icons.wxug.com/i/c/k/chancerain.gif
     2017-07-01 00:43:13   fc0_icon_url_night http://icons.wxug.com/i/c/k/nt_partlycloudy.gif
     2017-07-01 00:43:13   fc0_low_c       12
     2017-07-01 00:43:13   fc0_low_f       53
     2017-07-01 00:43:13   fc0_pop         60
     2017-07-01 00:43:13   fc0_pop_night   10
     2017-07-01 00:43:13   fc0_rain_day    1
     2017-07-01 00:43:13   fc0_rain_day_in 0.05
     2017-07-01 00:43:13   fc0_rain_night  0
     2017-07-01 00:43:13   fc0_rain_night_in 0
     2017-07-01 00:43:13   fc0_snow_day    0
     2017-07-01 00:43:13   fc0_snow_day_in 0
     2017-07-01 00:43:13   fc0_snow_night  0
     2017-07-01 00:43:13   fc0_snow_night_in 0
     2017-07-01 00:43:13   fc0_text        Cloudy. Periods of light rain early. High around 20 °C. Winds WNW at 15 to 25 km/h. Chance of rain 60 %.
     2017-07-01 00:43:13   fc0_text_f      Light rain early. Then remaining cloudy. High 67 °F. Winds WNW at 10 to 15 mph. Chance of rain 60 %.
     2017-07-01 00:43:13   fc0_text_f_night Partly cloudy skies. Slight chance of a rain shower. Low 53 °F. Winds WNW at 10 to 15 mph.
     2017-07-01 00:43:13   fc0_text_night  Partly cloudy skies. Slight chance of a rain shower. Low 12 °C. Winds WNW at 15 to 25 km/h.
     2017-07-01 00:43:13   fc0_title       Saturday
     2017-07-01 00:43:13   fc0_title_night Saturday Night
     2017-07-01 00:43:13   fc0_wind_direction 294
     2017-07-01 00:43:13   fc0_wind_direction_max 294
     2017-07-01 00:43:13   fc0_wind_speed  19
     2017-07-01 00:43:13   fc0_wind_speed_max 24
     2017-07-01 00:43:13   fc0_wind_speed_max_mph 15
     2017-07-01 00:43:13   fc0_wind_speed_mph 12
     2017-07-01 00:43:13   fc1_condition   Chance of Rain
     2017-07-01 00:43:13   fc1_high_c      19
     2017-07-01 00:43:13   fc1_high_f      66
     2017-07-01 00:43:13   fc1_humidity    76
     2017-07-01 00:43:13   fc1_humidity_max 0
     2017-07-01 00:43:13   fc1_humidity_min 0
     2017-07-01 00:43:13   fc1_icon        chancerain
     2017-07-01 00:43:13   fc1_icon_night  nt_partlycloudy
     2017-07-01 00:43:13   fc1_icon_url    http://icons.wxug.com/i/c/k/chancerain.gif
     2017-07-01 00:43:13   fc1_icon_url_night http://icons.wxug.com/i/c/k/nt_partlycloudy.gif
     2017-07-01 00:43:13   fc1_low_c       9
     2017-07-01 00:43:13   fc1_low_f       49
     2017-07-01 00:43:13   fc1_pop         40
     2017-07-01 00:43:13   fc1_pop_night   10
     2017-07-01 00:43:13   fc1_rain_day    1
     2017-07-01 00:43:13   fc1_rain_day_in 0.03
     2017-07-01 00:43:13   fc1_rain_night  0
     2017-07-01 00:43:13   fc1_rain_night_in 0
     2017-07-01 00:43:13   fc1_snow_day    0
     2017-07-01 00:43:13   fc1_snow_day_in 0
     2017-07-01 00:43:13   fc1_snow_night  0
     2017-07-01 00:43:13   fc1_snow_night_in 0
     2017-07-01 00:43:13   fc1_text        Rain showers in the morning becoming more intermittent in the afternoon. High 19 °C. Winds W at 15 to 30 km/h. Chance of rain 40 %.
     2017-07-01 00:43:13   fc1_text_f      Rain showers in the morning becoming more intermittent in the afternoon. High 66 °F. Winds W at 10 to 20 mph. Chance of rain 40 %.
     2017-07-01 00:43:13   fc1_text_f_night Partly cloudy skies. Low 49 °F. Winds WNW at 10 to 15 mph.
     2017-07-01 00:43:13   fc1_text_night  Some clouds early will give way to generally clear conditions overnight. Low near 10 °C. Winds WNW at 15 to 25 km/h.
     2017-07-01 00:43:13   fc1_title       Sunday
     2017-07-01 00:43:13   fc1_title_night Sunday Night
     2017-07-01 00:43:13   fc1_wind_direction 275
     2017-07-01 00:43:13   fc1_wind_direction_max 275
     2017-07-01 00:43:13   fc1_wind_speed  21
     2017-07-01 00:43:13   fc1_wind_speed_max 32
     2017-07-01 00:43:13   fc1_wind_speed_max_mph 20
     2017-07-01 00:43:13   fc1_wind_speed_mph 13
     2017-07-01 00:43:13   fc2_condition   Chance of Rain
     2017-07-01 00:43:13   fc2_high_c      21
     2017-07-01 00:43:13   fc2_high_f      69
     2017-07-01 00:43:13   fc2_humidity    66
     2017-07-01 00:43:13   fc2_humidity_max 0
     2017-07-01 00:43:13   fc2_humidity_min 0
     2017-07-01 00:43:13   fc2_icon        chancerain
     2017-07-01 00:43:13   fc2_icon_night  nt_chancerain
     2017-07-01 00:43:13   fc2_icon_url    http://icons.wxug.com/i/c/k/chancerain.gif
     2017-07-01 00:43:13   fc2_icon_url_night http://icons.wxug.com/i/c/k/nt_chancerain.gif
     2017-07-01 00:43:13   fc2_low_c       12
     2017-07-01 00:43:13   fc2_low_f       53
     2017-07-01 00:43:13   fc2_pop         30
     2017-07-01 00:43:13   fc2_pop_night   40
     2017-07-01 00:43:13   fc2_rain_day    2
     2017-07-01 00:43:13   fc2_rain_day_in 0.06
     2017-07-01 00:43:13   fc2_rain_night  1
     2017-07-01 00:43:13   fc2_rain_night_in 0.03
     2017-07-01 00:43:13   fc2_snow_day    0
     2017-07-01 00:43:13   fc2_snow_day_in 0
     2017-07-01 00:43:13   fc2_snow_night  0
     2017-07-01 00:43:13   fc2_snow_night_in 0
     2017-07-01 00:43:13   fc2_text        Sunny skies early. A few showers developing later in the day. High 21 °C. Winds WSW at 10 to 15 km/h. Chance of rain 30 %.
     2017-07-01 00:43:13   fc2_text_f      Sunny early followed by increasing clouds and a few showers later in the day. High 69 °F. Winds WSW at 10 to 15 mph. Chance of rain 30 %.
     2017-07-01 00:43:13   fc2_text_f_night Showers in the evening, then partly cloudy overnight. Low 53 °F. Winds W at 5 to 10 mph. Chance of rain 40 %.
     2017-07-01 00:43:13   fc2_text_night  Rain showers early with clearing later at night. Low 12 °C. Winds W at 10 to 15 km/h. Chance of rain 40 %.
     2017-07-01 00:43:13   fc2_title       Monday
     2017-07-01 00:43:13   fc2_title_night Monday Night
     2017-07-01 00:43:13   fc2_wind_direction 258
     2017-07-01 00:43:13   fc2_wind_direction_max 258
     2017-07-01 00:43:13   fc2_wind_speed  16
     2017-07-01 00:43:13   fc2_wind_speed_max 24
     2017-07-01 00:43:13   fc2_wind_speed_max_mph 15
     2017-07-01 00:43:13   fc2_wind_speed_mph 10
     2017-07-01 00:43:13   fc3_condition   Partly Cloudy
     2017-07-01 00:43:13   fc3_high_c      19
     2017-07-01 00:43:13   fc3_high_f      67
     2017-07-01 00:43:13   fc3_humidity    69
     2017-07-01 00:43:13   fc3_humidity_max 0
     2017-07-01 00:43:13   fc3_humidity_min 0
     2017-07-01 00:43:13   fc3_icon        partlycloudy
     2017-07-01 00:43:13   fc3_icon_night  nt_chancerain
     2017-07-01 00:43:13   fc3_icon_url    http://icons.wxug.com/i/c/k/partlycloudy.gif
     2017-07-01 00:43:13   fc3_icon_url_night http://icons.wxug.com/i/c/k/nt_chancerain.gif
     2017-07-01 00:43:13   fc3_low_c       12
     2017-07-01 00:43:13   fc3_low_f       54
     2017-07-01 00:43:13   fc3_pop         20
     2017-07-01 00:43:13   fc3_pop_night   60
     2017-07-01 00:43:13   fc3_rain_day    2
     2017-07-01 00:43:13   fc3_rain_day_in 0.06
     2017-07-01 00:43:13   fc3_rain_night  2
     2017-07-01 00:43:13   fc3_rain_night_in 0.06
     2017-07-01 00:43:13   fc3_snow_day    0
     2017-07-01 00:43:13   fc3_snow_day_in 0
     2017-07-01 00:43:13   fc3_snow_night  0
     2017-07-01 00:43:13   fc3_snow_night_in 0
     2017-07-01 00:43:13   fc3_text        Sunshine and clouds mixed. High near 20 °C. Winds WNW at 10 to 15 km/h.
     2017-07-01 00:43:13   fc3_text_f      Partly cloudy. High 67 °F. Winds WNW at 5 to 10 mph.
     2017-07-01 00:43:13   fc3_text_f_night Considerable cloudiness. Occasional rain showers later at night. Low 54 °F. Winds light and variable. Chance of rain 60 %.
     2017-07-01 00:43:13   fc3_text_night  Cloudy with occasional showers late at night. Low 12 °C. Winds light and variable. Chance of rain 60 %.
     2017-07-01 00:43:13   fc3_title       Tuesday
     2017-07-01 00:43:13   fc3_title_night Tuesday Night
     2017-07-01 00:43:13   fc3_wind_direction 294
     2017-07-01 00:43:13   fc3_wind_direction_max 294
     2017-07-01 00:43:13   fc3_wind_speed  14
     2017-07-01 00:43:13   fc3_wind_speed_max 16
     2017-07-01 00:43:13   fc3_wind_speed_max_mph 10
     2017-07-01 00:43:13   fc3_wind_speed_mph 9
     2017-07-01 00:43:13   feelslike_c     15.1
     2017-07-01 00:43:13   feelslike_f     59.2
     2017-07-01 00:43:13   forecast_url    http://www.wunderground.com/global/stations/10224.html
     2017-07-01 00:43:13   heat_index_c
     2017-07-01 00:43:13   heat_index_f
     2017-07-01 00:43:13   history_url     http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=INIEDERS682
     2017-07-01 00:43:13   humidity        88
     2017-07-01 00:43:13   icon            nt_rain
     2017-07-01 00:43:13   icon_url        http://icons.wxug.com/i/c/k/nt_rain.gif
     2017-06-30 22:30:39   lastQueryResult ok
     2017-07-01 00:43:13   moon_age        7
     2017-07-01 00:43:13   moon_pct        49
     2017-07-01 00:43:13   moon_phase      Waxing Crescent
     2017-07-01 00:43:13   moonrise        14:00
     2017-07-01 00:43:13   moonset         01:22
     2017-07-01 00:43:13   nowcast
     2017-07-01 00:43:13   ob_url          http://www.wunderground.com/cgi-bin/findweather/getForecast?query=53.012810,9.021838
     2017-07-01 00:43:13   pressure        1004
     2017-07-01 00:43:13   pressure_in     29.65
     2017-07-01 00:43:13   pressure_trend  -
     2017-07-01 00:43:13   rain             0
     2017-07-01 00:43:13   rain_day        0
     2017-07-01 00:43:13   rain_day_in     0.00
     2017-07-01 00:43:13   rain_in         0.00
     2017-07-01 00:43:13   solarradiation  0
     2017-07-01 00:43:13   state           T: 15.1 °C H: 88 % l: 0 mm
     2017-07-01 00:43:13   sunrise         05:02
     2017-07-01 00:43:13   sunset          21:52
     2017-07-01 00:43:13   temp_c          15.1
     2017-07-01 00:43:13   temp_f          59.2
     2017-07-01 00:43:13   visibility      6.0
     2017-07-01 00:43:13   visibility_mi   3.7
     2017-07-01 00:43:13   wind_chill
     2017-07-01 00:43:13   wind_chill_f
     2017-07-01 00:43:13   wind_direction  213
     2017-07-01 00:43:13   wind_gust       11.9
     2017-07-01 00:43:13   wind_gust_mph   7.4
     2017-07-01 00:43:13   wind_speed      7.2
     2017-07-01 00:43:13   wind_speed_mph  4.5
   Readingdesc:
     Text:
       lang       en
     Text_f:
       lang       en
     Text_f_night:
       lang       en
     Text_night:
       lang       en
     Title:
       lang       en
     Title_night:
       lang       en
Attributes:
   event-min-interval 5
   pollInterval 300
   room       Test
   stateReadings temp_c humidity rain_day
   stateReadingsFormat 1
   wu_features astronomy,conditions,forecast

Gruß Thorsten

p.s. Solange solarradiation=0 geht es, aber sobald <>0 ergibt es unsinnige Werte

amenomade

Hmm wäre dann interessant zu sehen, was und mit welchem Format in Reading solarradiation kommt.

Du weisst aber, dass dein notify ein "sr += solarradiation" macht, jedes mal, dass ein Wert von WUWeather sich ändert?
Sagen wir mal, solarradiation = 10 und sr 380.

fc0_humidity ändert sich => sr = 390
kurz später ändert sich dewpoint => sr = 400
kurz später ändert sich UV => sr = 410
usw...

Und was willst Du mit "event-min-interval 5" machen?
Zitat von: CommandREFevent-min-interval
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

WUWeather hat 179 Readings. Aktualisiert sich das Device (jede 300 Sekunden), wird sr += 179 * (solarradiation) kalkuliert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

developer@isserstedt.org

Ok, guter Hinweis.

Heißt das, dass notify wird 179 mal ausgelöst und ich muss den Wert einfach anschließend durch 179 teilen?

Oder kann ich das notify besser definieren (Bin halt neu und planlos...)

amenomade

Mit define n_wu1 notify WUweather {} wird das notify bei jedem Event (siehe Eventmonitor) auf dem Device WUweather getriggert.

Man kann das bestimmt anders, sobald man weisst, was Du machen möchtest. Man kann das Notify auf bestimmte Events beschränken. Man kann auch das Device WUweather nur bestimmte Events generieren lassen. Usw.

Also... was willst Du damit berechnen?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

developer@isserstedt.org

Ok, die Idee ist dass ich mir einen Feuchtigkeitssensor in meinem Garten sparen möchte. Also habe ich eine Wetterstation in meiner Nähe angezapft, die Momentanregenmengen (rain) und Momentaneinstrahlungswerte (solarradiation) liefert.  Ich möchte die Momentanwerte alle 5 Minuten abfragen und aufsummieren (quasi integrieren, aber auch nicht wirklich) . Mit "solarradiation" wollte ich anfangen, dann rain dazu nehmen, anschließend das ganze über mehre Tage speichern und Quotienten bilden und schauen, ob ich meine Gartenbewässerung darüber steuern kann.

Aber eben ein nach dem andern. Deshalb erstmal nur: Summe bilden alle 5 Minuten über den Wert von "solarradiation" (rain ist dann äquivalent)

amenomade

Mit
define n_wu1 notify WUweather:solarradiation:..* {} würde erstmal das Notify nur bei Aktualisierung von solarradiation getriggert. Da das Wetter Modul sich jede 300 Sekunden aktualisiert, hättest Du schon die gewünschte Summe. Wäre schon besser. Aber da hättest Du nur eine "Summe jede 5 Minuten". Ist noch keine Integrale.

Ich glaube, es wäre einfacher mit event-aggregator. Schau mal https://fhem.de/commandref_DE.html#event-aggregator , mit function "integral"

Und fürs rain, welches Reading würdest Du nutzen? Ist "rain_in" nicht schon der Wert, den Du brauchst?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

developer@isserstedt.org

Jetzt ist der Knoten geplatzt! Der Ansatz über ein Event, das sich alle 5 Minuten wiederholt, um darauf mit dem notify zu reagieren, ist falsch.

Die einfache Lösung ist:
defmod a_wu at +*00:05:00 {my $temp1=(ReadingsNum("sr","state",0)+ReadingsNum("WUweather","solarradiation",0));;fhem("set sr $temp1");;}


Danke für die Antworten! Ohne den Hinweis auf den x-fachen Aufruf des notifys durch die vielen Readings in WUweather, wäre ich nicht auf die Lösung gekommen.

Das mit dem Integral muss ich mir noch anlesen. Die Erklärung in der CommandRef ist für Anfänger schwierig zu verstehen.