Autor Thema: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge  (Gelesen 2980 mal)

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3986
Hi,
ich habe hier ein kleine fhem-installation, 2 CUL´s (MAX und slowrf) mit 4 Max-Thermostaten, 4 Max-Fensterkontakten und 3xWS300 Temperatursensoren. Das Webif von Fhem (pgm2) ist flott, nur millisekunden Verzögerung beim Mausklick.
Nach Hinzufügen von OWX habe ich sehr lange Wartezeiten wenn ich im Webif etwas auswähle. 5-10sek, gemessen!
Nehme ich OWX wieder heraus und starte FHEm neu, ist alles wieder flott.

Am OWX hängt ein Busmaster DS2480 und ein DS2450.
Genauer gesagt, von eservice-online der USB-Busmaster mit galvanischer Trennung und der 1wire Hub mit Strom-und Spannungsmesser.
Das der DS2450 z.Z. auch nur Müll anzeigt kommt noch dazu....siehe Screenshot

Ideen? Ist das nur bei mir so?
FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamps, RPi für BLE Bodenfeuchtesenoren, Text2Speech.
Maintainer der Module: Text2Speech, TrashCal, MediaList

Meine Projekte auf https://github.com/tobiasfaust
u.a. PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge
« Antwort #1 am: 08 Februar 2013, 12:19:11 »
das Problem ist, dass OWX synchron arbeitet, also z.B. einen Search anstößt und dann die Antwort abarbeitet. Solange das läuft kommt fhem.pl nicht wieder an die Reihe. Da müsste für asynchrone Bearbeitung einiges umgebaut werden.
Wenn Du dann noch das Attribut 'interval' auf 15 Sekunden stellst, dann ist OWX praktisch permanent am pollen und Dein Web-interface kommt fast gar nicht an die Reihe.
while (!asleep()) {sheep++};

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5110
  • Are we just self-replicating DNA?
Aw: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge
« Antwort #2 am: 08 Februar 2013, 15:41:33 »
Zitat von: ntruchsess schrieb am Fr, 08 Februar 2013 12:19
das Problem ist, dass OWX synchron arbeitet, also z.B. einen Search anstößt und dann die Antwort abarbeitet. Solange das läuft kommt fhem.pl nicht wieder an die Reihe. Da müsste für asynchrone Bearbeitung einiges umgebaut werden.
Wenn Du dann noch das Attribut 'interval' auf 15 Sekunden stellst, dann ist OWX praktisch permanent am pollen und Dein Web-interface kommt fast gar nicht an die Reihe.


Du könntest OWServer/OWDevice verwenden i.V.m. einer Installation von owserver auf dem Gerät, an dem der Busmaster hängt. OWServer unterstützt die asynchrone Bearbeitung von Anfragen an den OWServer.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8564
Aw: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge
« Antwort #3 am: 08 Februar 2013, 21:39:06 »
Das stimmt nicht - keineswegs ist OWX "permanent am pollen". Die Abfrage eines DS2450 ist innerhalb von einigen hundertstel Sekunden erledigt - und findet nur alle 15 Sekunden statt, wenn das Intervall auf 15 steht.

Die Tatsache, dass die Anzeige nur "Müll" liefert (gehts vielleicht etwas präziser ?) deutet auf ein Problem mit dem Bus hin, was sagt denn das Log ?

LG

pah


Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge
« Antwort #4 am: 08 Februar 2013, 22:34:12 »
ja, aber eben halt auch nur, wenn alles fix antwortet. Wenn ich ein paar DS18B20 im 5 Intervall polle (die sind halt nicht so schnell) dann wird das Webinterface reproduzierbar ziemlich zäh.

Gruß,

Norbert
while (!asleep()) {sheep++};

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8564
Aw: Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge
« Antwort #5 am: 09 Februar 2013, 05:22:21 »
Na, nun mal langsam:

Die Temperaturmessung bei einem einzelnen DS1820 dauert 1 Sekunde.

A. Diese Wartezeit wird aber nur eingehalten, wenn in OWX das Attribut "buspowre" nicht auf "real" gesetzt wurde - und während dieser Zeit wird FHEM auch nicht blockiert, weil nicht etwa mit "sleep" sondern mit "select" gewartet wird. Das kann also nicht für die Verzögerung verantwortlich sein, und während dieser Zeit wird auch nicht "gepollt".

B. Wenn das Attribut "buspower" auf "real" gesetzt ist. werden alle "interval" Sekunden (Attribut von OWX !) alle Thermometer zu einer Temperaturmessung veranlasst. Bei der Abfrage wird dann eben nicht mehr gewartet, sondern es wird angenommen, dass der aktuelle Temperaturwert bereits im DS1829 steht.

Allerdings sehe ich keinen sinnvollen Anwendungsfall, bei dem eine Temperatur im 5-Sekunden-Abstand gemessen werden muss.

LG

pah

 

decade-submarginal