Nach Aktivierung von OWX ist das WebIf von FHEM sehr(!) träge

Begonnen von Tobias, 08 Februar 2013, 08:54:40

Vorheriges Thema - Nächstes Thema

Tobias

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?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ntruchsess

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++};

Dr. Boris Neubert

Zitat von: ntruchsess schrieb am Fr, 08 Februar 2013 12:19das 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!

Prof. Dr. Peter Henning

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


ntruchsess

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++};

Prof. Dr. Peter Henning

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