59_Weather, DarkSky und OpenWeatherMap API Bugfixes

Begonnen von CoolTux, 13 Januar 2019, 21:22:31

Vorheriges Thema - Nächstes Thema

herrmannj

achso, ich hatte Dich so verstanden das die readings immer da durch jagst wenn sie neu erzeugt werden.

Dann warten wir mal darauf das cooltux was einbaut um das timing messen und erfassen zu können. Unabhängig, wieviele radings sind das so wirklich un etwa und: _triggert da ein notify oder was anderes in der ART drauf?_

holle75

warte mal ..... 6 tage x 24 Stunden x 38 Readings = 5472 plus noch StandardReadings geschätzt 50.

und jetzt wo dus sagst: tatsächlich habe ich 3 Userreadings drauf die mir die Regenmenge, Regenwahrscheinlichkeit und den max Windwert der nächsten 24 Stunden berechnen. Wobei das dann nur entsprechend weniger Readings sind die durchlaufen werden..... Jeweils 24, also bei 3 UserReadings 72 Readings. Das sollte den Kohl nicht fett machen.

Ansonsten reagiert nichts direkt beim Abrufen auf die Readings (und ja, das logproxy ist wohl unabhängig davon, denke ich) .


CoolTux

#482
Zeige mal bitte ein list vom Device. Zur Not setze das list in quote] Denke in code] wird nicht alles vom Forum eingelesen.

Oder noch besser hänge das list als txt Datei an.

ACHTUNG!!! Token entfernen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

holle75

hoppala, bemerkt, dass Windwert 48 Stunden sind. Aber auch das sollte fhem nicht umbringen.

txt anbei

CoolTux

Das ist absoluter Wahnsinn. Ein Wunder das Du da nicht mehr von merkst.

Du triggerst auf alle 170 _precipIntensity, _precipProbability und _windGust und für jedes der 170 gehst Du durch eine 24er oder 48er Schleife. Wenn Du Glück hast triggern nicht alle weil sich die Readings sich nicht ändern und somit keinen Event werfen. Aber hin und wieder kann es schon vor kommen das zu viele auf einmal triggern und dann blockiert FHEM bestimmt.

Ich schlage vor zu Testzwecken Deine User Readings einmal bei Seite zu räumen und dann zu schauen. Ich kann natürlich jetzt eine Logausgabe mit Zeit einbauen, aber ich gehe fest davon aus das Dein Konstrukt das ganze verursacht.
@Jörg was sagst Du? Sollte ich mal was einbauen?

Alternativ wäre meine Empfehlung nur für Wetter eine eigene FHEM Instanz auf zu setzen. Es scheint Dir ja auch wichtig für Dein Unternehmen zu sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

holle75

#485
Ich hatte meine Userreadings, jedenfalls dachte ich, auf die ersten 24/48 Werte eingegrenzt?

Ist das so ein immenser Rechenaufwand?

Edit:
Interessant an deiner These ist, dass es das sporadische Auftreten der Fehler erklärt.... Eben immer bei viel Regen, Wind. Der Zusammenhang ist mir noch nicht aufgefallen (außer dass bei schlechtem Wetter generell die Internetverbindung schlechter/langsamer ist) ... sehr schön.

Denke, dass ein Einbau von Zeitmessern nicht nötig ist. Will nicht noch mehr deiner Zeit in Anspruch nehmen.

Aber, was mich jetzt wirklich interessiert, wieso meine Userreadings soviel Zeit/Rechenzeit in Anspruch nehmen. Ich durchlaufe doch nur die ersten Readings und nicht alle ~ 5000...

herrmannj

ich verstehe zu wenig von 59_weather. Aber: weil ich ja mit JsonMod ähnliche "Spielchen" mache, bin ich mir sicher das die "Datenmenge" an sich nicht das Problem ist. Die userreadings mit den Schleifen, da hat cooltux sicher recht. Das kosten echt Zeit und da könnte ich mir gut vorstellen dass das die Ursache ist.

Evtl hängen da ja sogar noch mehr devices dahinter / dran. Steht unten bei "probably associated" was ?

holle75

Grmpf, fühle mich hier langsam ertappt  ;D

Man sollte vielleicht doch erst genauer schauen als aus dem Kopf zu antworten.

Es hat da schon noch 2-3 Devices die, insbesondere, auf die generierten UserReadings reagieren.

herrmannj

das mit den userreadings. Dies:
   userReadings Regenmenge24h:.*_precipIntensity.*
{
my $hdmsum = 0;;
my $hdmvalue = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipIntensity",0);;
$hdmsum = $hdmsum + $hdmvalue;;
};;
return sprintf("%.1f",$hdmsum);;
},


Da willst Du die Summe des Vorraussichtlichen Niederschlag? Richtig? Das müsste doch reichen wenn das ein einziges Mal berechnet wird. Nicht xxx Mal. Das Ergebniss ist doch immer das gleiche? Richtig?

herrmannj

Zitat von: holle75 am 31 März 2020, 16:52:08
Grmpf, fühle mich hier langsam ertappt  ;D

Man sollte vielleicht doch erst genauer schauen als aus dem Kopf zu antworten.

Es hat da schon noch 2-3 Devices die, insbesondere, auf die generierten UserReadings reagieren.
Da musste früher aufstehen ....  ;D

holle75

Zitat von: holle75 am 31 März 2020, 16:36:43
Ich hatte meine Userreadings, jedenfalls dachte ich, auf die ersten 24/48 Werte eingegrenzt?

Ist das so ein immenser Rechenaufwand?

Edit:
Interessant an deiner These ist, dass es das sporadische Auftreten der Fehler erklärt.... Eben immer bei viel Regen, Wind. Der Zusammenhang ist mir noch nicht aufgefallen (außer dass bei schlechtem Wetter generell die Internetverbindung schlechter/langsamer ist) ... sehr schön.

Denke, dass ein Einbau von Zeitmessern nicht nötig ist. Will nicht noch mehr deiner Zeit in Anspruch nehmen.

Aber, was mich jetzt wirklich interessiert, wieso meine Userreadings soviel Zeit/Rechenzeit in Anspruch nehmen. Ich durchlaufe doch nur die ersten Readings und nicht alle ~ 5000...

oder anders gefragt, wie reduziere ich auch den Trigger auf die ersten 24/48 Readings? Das sollte dann doch das Ganze deutlich entspannen?

Edit: ihr wart schneller

holle75

#491
Zitat von: herrmannj am 31 März 2020, 16:54:23
das mit den userreadings. Dies:
   userReadings Regenmenge24h:.*_precipIntensity.*
{
my $hdmsum = 0;;
my $hdmvalue = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipIntensity",0);;
$hdmsum = $hdmsum + $hdmvalue;;
};;
return sprintf("%.1f",$hdmsum);;
},


Da willst Du die Summe des Vorraussichtlichen Niederschlag? Richtig? Das müsste doch reichen wenn das ein einziges Mal berechnet wird. Nicht xxx Mal. Das Ergebniss ist doch immer das gleiche? Richtig?

Richtig! ... wart mal, muß das erstmal kurz verstehen

Edit: Achso, das ist ja noch meins.

Ja genau, will eigentlich nur EINMAL nach Abruf der Daten die Regenmenge (Wahrscheinlichkeit, Wind) für die nächsten 24/48 Stunden berechnen. Bei jedem mal abholen, da sich das meist ändert

herrmannj

yepp. gern. Ich werfe Dir jetzt auch nicht die Lösung hin. Wenn Du was hast dann schreib das, ich schaue obs ok ist. (Lösung kann ich Dir trotzdem geben wenn Du nicht weiterkommst ;))

CoolTux

Aus der Hüfte mit Handy

userReadings Regenmenge24h:.[0-24]_precipIntensity.*

Aber bitte noch mal prüfen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

herrmannj

Ah, ich sehe gerade Deinen edit. Das meine ich auch so verstanden zu haben. Jetzt aber der Unterschied: 1x pro Daten abholen vs 1x pro es ändert sich ein reading ;)