Modul für Terminansicht CALVIEW

Begonnen von chris1284, 08 Februar 2014, 13:18:31

Vorheriges Thema - Nächstes Thema

Brockmann

Zitat von: chris1284 am 18 August 2016, 18:52:54
diable sollte das intene notify auf die definierten kalender deaktivieren (was eigentlich keinen sinn macht aber funktioniert, gerade an 2 systemen noch einmal getestet)
Noch mal zur Klarstellung, weil es sowohl hier als auch in der Commandref etwas unscharf formuliert ist:
Wenn ich disable auf 1 setze, wird mein Calview nicht aktualisiert wenn ein Kalender aktualisiert wurde?
Es wird dann nur noch gemäß seines Intervalls oder eben manuell aktualisiert?

Das DOIF verwende ich, weil ich mein Calview eben nicht bei jeder Kalenderaktualisierung aktualisiert haben möchte. Außerdem wird im Anschluss an das manuelle Calview-Update noch ein Skript aufgerufen, das die Daten aus dem Calview aufbereitet und per FHEM2FHEM an mein Haupt-FHEM weitergibt. Und vor dieser Übergabe sollen die Daten halt aktualisiert werden und sonst nicht. Für mein Anwendungszenario macht das schon Sinn, vor allem weil jedes Calview-Update das System >10 Sekunden lahmlegt.

Spielt aber auch keine Rolle, denke ich, denn gestern hatte ich Calview-Updates alle Paar Sekunden, was weder durch DOIF noch Kalender-Aktualisierungen noch sonst etwas gerechtfertig gewesen sein kann. Da ist irgendwas Amok gelaufen. Nach einem Neustart hat es sich beruhigt, aber es gibt schon wieder erste Symptome der wundersamen Update-Vermehrung. Ich habe jetzt mal eine Filelog definiert, dass alles relevante erfasst. Ich hoffe mal, dass ich dem Übeltäter damit auf die Spur komme.
Ich will auch gar nicht behaupten, das Calview der Verursacher ist. Ich will nur sicher sein, dass ich den Update-Mechnismus richtig verstehe, deshalb auch nochmal die explizite Nachfrage oben.


chris1284

Zitat von: Brockmann am 19 August 2016, 09:54:14
Wenn ich disable auf 1 setze, wird mein Calview nicht aktualisiert wenn ein Kalender aktualisiert wurde?
Es wird dann nur noch gemäß seines Intervalls oder eben manuell aktualisiert?
Richtig!

Zitatvor allem weil jedes Calview-Update das System >10 Sekunden lahmlegt.
bei schwacher hardware und vielen readings / terminen im kalender durchaus möglich.

Zitatdas die Daten aus dem Calview aufbereitet und per FHEM2FHEM an mein Haupt-FHEM weitergibt
warum nicht gleich die calender und views auf dem haupdevice (außer es ist genau so schwach oder schwächer als das 2. wo du >10 sekunden warten musst).
bei mir sind es <2sek für 200 readings und 4 kalendern mit meist nur serienterminen

Zitat
Ich will auch gar nicht behaupten, das Calview der Verursacher ist. Ich will nur sicher sein, dass ich den Update-Mechnismus richtig verstehe, deshalb auch nochmal die explizite Nachfrage oben.
schon klar. das wäre zu mindest der 1. fall von dem ich höhre wo es zu einem "updateamok" vom modul her kommt. stell das log rein wenn was auffälliges zu sehen ist!

GunneX

Hi,

ich haben seit ein paar Tagen das gleiche Problem wie Brockmann.

Zitat von: Brockmann am 18 August 2016, 09:59:23
Ich haben ein Calview für fünf Kalender definiert. Leider aktualisiert sich dieses ständig, was angesichts der Menge der Termine spürbare Verzögerungen mit sich bringt.

Der CalView hat diverse Monate unauffällig funktioniert, aber jetzt aktualisiert er sich mehrmals pro Minute über einen Zeitraum von 2-3 Minuten, dann ist wieder Ruhe für ein paar Minuten. Das zugehörige Calendar Modul aktualisiert sich nur einmal pro Stunde.

Das hochfrequente Aktualisieren des CalViews legt meinen RasPi temporär lahm, daher wäre ich für jegliche Hilfe dankbar

chris1284

gerade mal alle log der letzten tage angesehen. sauber alle 1 h stunde wird der kalender aktualisiert und die view

Brockmann

Zitat von: chris1284 am 20 August 2016, 09:02:01
gerade mal alle log der letzten tage angesehen. sauber alle 1 h stunde wird der kalender aktualisiert und die view
Ich habe mal einen Blick in den Code geworfen (und ich bin kein Entwickler, also sorry, wenn ich Unsinn rede):
In
sub CALVIEW_GetUpdate($)
wird mit
InternalTimer(gettimeofday()+$hash->{INTERVAL}, "CALVIEW_GetUpdate", $hash, 1);
jeweils ein neuer interner Timer gemäß dem festgelegten Interval angelegt.

Und das jedes Mal, wenn CALVIEW_GetUpdate aufgerufen wird, egal ob durch einen internen Timer, durch ein Kalender-Update oder per manuellem Update?
Eigentlich sollte doch nur dann ein neuer interner Timer gesetzt werden, wenn GetUpdate durch einen Timer augerufen wurde. Sonst bekomme ich bei jedem manuellen oder Kalender-Update einen weiteren Timer dazu?
Oder werden beim Anlegen eines internen Timers andere bereits laufende Timer des Moduls automatisch gelöscht?

chris1284

ich meine er wird überschrieben. gab zu mindest noch nie probleme und sonst würde alle das problem seit release des moduls haben. die leute die das abfall modul und calendar nutzen müssten es auch haben

Brockmann

Zitat von: chris1284 am 20 August 2016, 19:39:18
ich meine er wird überschrieben. gab zu mindest noch nie probleme und sonst würde alle das problem seit release des moduls haben. die leute die das abfall modul und calendar nutzen müssten es auch haben
Ja, das wundert mich auch. Eigentlich müsste es massive Probleme geben, wenn es so wäre. Vor allem weil die Anzahl der internen Time dann ja exponentiell zunehmen würden.
Andererseits dürfte es Deiner Annahme zufolge ja jederzeit nur einen einzigen internen Timer für das Calview-Update geben, richtig?
Da frage ich mich, wie bei mir diese Liste zustandenkommt?

2016.08.21 11:50:33 3:  14195 21.08.2016 11:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14197 21.08.2016 11:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14436 21.08.2016 12:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14438 21.08.2016 12:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14688 21.08.2016 12:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14690 21.08.2016 12:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14928 21.08.2016 12:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  14930 21.08.2016 12:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15194 21.08.2016 12:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15196 21.08.2016 12:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15434 21.08.2016 13:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15436 21.08.2016 13:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15679 21.08.2016 13:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15681 21.08.2016 13:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15919 21.08.2016 13:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  15921 21.08.2016 13:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16177 21.08.2016 13:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16179 21.08.2016 13:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16431 21.08.2016 14:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16433 21.08.2016 14:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16691 21.08.2016 14:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16693 21.08.2016 14:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16943 21.08.2016 14:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  16945 21.08.2016 14:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17205 21.08.2016 14:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17207 21.08.2016 14:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17450 21.08.2016 15:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17452 21.08.2016 15:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17702 21.08.2016 15:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17704 21.08.2016 15:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17945 21.08.2016 15:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  17947 21.08.2016 15:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18193 21.08.2016 15:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18195 21.08.2016 15:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18438 21.08.2016 16:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18440 21.08.2016 16:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18681 21.08.2016 16:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18683 21.08.2016 16:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18928 21.08.2016 16:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  18930 21.08.2016 16:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19193 21.08.2016 16:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19195 21.08.2016 16:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19443 21.08.2016 17:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19445 21.08.2016 17:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19688 21.08.2016 17:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19690 21.08.2016 17:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19935 21.08.2016 17:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  19937 21.08.2016 17:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20183 21.08.2016 17:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20185 21.08.2016 17:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20429 21.08.2016 18:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20431 21.08.2016 18:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20674 21.08.2016 18:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20676 21.08.2016 18:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20921 21.08.2016 18:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  20923 21.08.2016 18:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21181 21.08.2016 18:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21183 21.08.2016 18:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21434 21.08.2016 19:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21436 21.08.2016 19:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21677 21.08.2016 19:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21679 21.08.2016 19:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21919 21.08.2016 19:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  21921 21.08.2016 19:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22174 21.08.2016 19:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22176 21.08.2016 19:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22418 21.08.2016 20:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22420 21.08.2016 20:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22669 21.08.2016 20:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22671 21.08.2016 20:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22906 21.08.2016 20:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  22908 21.08.2016 20:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23174 21.08.2016 20:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23176 21.08.2016 20:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23416 21.08.2016 21:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23418 21.08.2016 21:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23667 21.08.2016 21:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23669 21.08.2016 21:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23907 21.08.2016 21:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23909 21.08.2016 21:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  23919 21.08.2016 21:40:07  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24164 21.08.2016 21:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24166 21.08.2016 21:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24167 21.08.2016 21:55:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24407 21.08.2016 22:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24409 21.08.2016 22:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24410 21.08.2016 22:10:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24654 21.08.2016 22:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24656 21.08.2016 22:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24657 21.08.2016 22:25:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24897 21.08.2016 22:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24899 21.08.2016 22:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  24900 21.08.2016 22:40:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25152 21.08.2016 22:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25154 21.08.2016 22:55:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25157 21.08.2016 22:55:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25409 21.08.2016 23:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25411 21.08.2016 23:10:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25412 21.08.2016 23:10:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25656 21.08.2016 23:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25658 21.08.2016 23:25:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25659 21.08.2016 23:25:02  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25901 21.08.2016 23:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25903 21.08.2016 23:40:01  Termine                   CALVIEW_GetUpdate       
2016.08.21 11:50:33 3:  25904 21.08.2016 23:40:02  Termine                   CALVIEW_GetUpdate       

Spricht etwas dagegen, wenn ich in CALVIEW_GetUpdate probeweise mal vor dem
InternalTimer(gettimeofday()+$hash->{INTERVAL}, "CALVIEW_GetUpdate", $hash, 1);
ein
RemoveInternalTimer($hash);
einfügen?

chris1284

#697
du kannst auch einfach die erstellung des timers deaktieren. da ich ihn eh für mittlerweile überflüssig halte wäre das der bessere test

wie hast du dir denn die liste ausgeben lassen?

EDIT:
das RemoveInternalTimer sollte funktionieren, macht zumindest hier keine probleme


Brockmann

Zitat von: chris1284 am 22 August 2016, 07:25:26
wie hast du dir denn die liste ausgeben lassen?
https://forum.fhem.de/index.php/topic,11187.msg66490.html#msg66490

Zitat von: chris1284 am 22 August 2016, 07:25:26
das RemoveInternalTimer sollte funktionieren, macht zumindest hier keine probleme
Ich hatte es gestern schon eingebaut und seitdem habe ich tatsächlich imme nur ein InternalEvent. Aber Du hast recht, im Prinzip könnte man auf den Timer einfach ganz verzichten.

Aber grundsätzlich:
Ich habe es nirgends explizit gefunden, aber ich gehe davon aus, dass InternalTimer(...) bereits vorhandene Timer nicht löscht. Andere Module zumindest löschen immer explizit Timer, bevor ein neuer definiert wird.
Außerdem gibt es Module mit mehreren internen Timern (DOIF beispielsweise). Die müssten ziemliche Verrenkungen machen, wenn beim Anlegen eines neuen InternalTimer alle vorhandenen gelöscht würden.
Ich verstehe nur nicht, warum das Problem nicht früher aufgefalllen ist. Anscheinend tritt es nur bei manuellen Calview-Updates auf. Nur ist mir nicht klar, wo diesbezüglich der Unterschied zwischen manuellem Update und durch einen Kalender getriggertem Update liegen soll. Für mich sieht der Ablauf identisch aus. Aber ich tue mich auch schwer damit, mich in diese $hash-Geschichten reinzudenken.

chris1284


uniqueck

Ich habe den Timer gleich von Anfang an rausgeschmissen, da ich ja erst das Modul Abfall mit der neuen Version  des Calender Moduls veröffentlicht habe.

Gesendet von meinem ONEPLUS A3003 mit Tapatalk


justme1968

@Brockmann: RemoveInternalTimer löscht alle timer die mit dem selben übergabeparameter gestartet wurden. wenn man hier einen festen string oder den device hash verwenden muss man aufpassen. wenn es etwas eindeutiges ist gibt es kein problem. man kann z.b. pro timer einen eigenen hash anlegen und unter anderem auch den device hash hier rein stecken.

RemoveInternalTimer hat seit einiger zeit auch einen zweiten optionalen parameter. damit kann man das löschen auf auf alle timer einschränken die eine bestimmte funktion aufrufen. alle anderen mit dem gleichen übergabeparameter bleiben dann erhalten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chris1284

ja das habe ich in der doku gelesen. war hier aber nicht notwendig da nur ein timer für update vorhanden ist

skopel84

Hallo zusammen

Zugegebenermaßen bin ich nicht gerade der größte Programmierer.

Ich habe die letzten Tage versucht die Kalendereinträge in einer RG anzeigen zu lassen. Leider ohne Erfolg.
Ich habe versucht die Schritte aus dem ersten Beitrag nachzuvollziehen. Leider hat es bei mir nur zu diversen Fehlermeldungen geführt und nicht zu einem Brauchbaren Ergebnis. Ich kann die Termine über das Calendar Modul einlesen aber die Ausgabe funktioniert bei mir nicht.

Gibt es jemanden der mir helfen kann?


hartenthaler

Was funktioniert denn nicht? Solange Du nicht mehr verrätst, ist helfen echt schwer.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...