jsonlist2-Abfrage dauert zu lange

Begonnen von Adler, 13 April 2020, 18:50:42

Vorheriges Thema - Nächstes Thema

Adler

Hallo,

die Frage hat sich aus einer rumspielerei für eine Web-Applikation ergeben.
Ich habe versucht, Daten aus FHEM zu lesen, um sie in einer mit PHP geschriebenen Website abzufragen.
Der Webserver ist ein anderer Server, als der FHEM-Server, befindet sich jedoch im gleichen Netzwerksegment.
Bei der Suche nach Möglichkeiten bin ich auf jsonlist2 gestossen, was für meinen Anwendungsfall erst einmal richtig erschien.
Die Abfrage der Daten funktioniert auch, die Dauer ist jedoch zu lang. Egal, ob ich nur ein einzelnes Device abfrage oder alle Devices, es dauert immer zwischen 59 und 103 Sekunden, bis das Ergebnis zur Verfügung steht.

Die FHEM-Seite und auch Tablet UI sind nicht blitzschnell, aber ausreichend, spätestens nach ein paar Sekunden ist die Seite da. (FHEM läuft auf einem Raspi 3).

Die Abfrage erfolgt mit
$url = "http://fhemhost:8088/fhem?cmd=jsonlist2&XHR=1";
bzw.
$url = "http://fhemhost:8088/fhem?cmd=jsonlist2+NAME=DeviceName&XHR=1";

$json_data = file_get_contents($url);

Das Ergebnis ist jeweils das erwartete.

Lange Rede, nun zu meinen Fragen:

Ist die Dauer über jsonlist2 normal?
Wenn ja, ist das für mich keine Option.

Gibt es eine bessere Möglichkeit, Daten aus FHEM abzufragen, ggfs. auch Devices zu schalten oder Werte zu setzen?

Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt!

Freundliche Grüße
Andreas
FHEM auf Raspberry PI, Max! Heizkörperthermostate, Shelly 2, MQTT, Arduino

Otto123

Zitat von: Adler am 13 April 2020, 18:50:42
es dauert immer zwischen 59 und 103 Sekunden, bis das Ergebnis zur Verfügung steht.
Hallo Andreas,

das ist nicht normal!
Eine Abfrage z.B. vom device global dauert bei mir 0.225 sec.

Zur Testumgebung:
raspib und raspib3
Meine Script FHEM Client von hier https://github.com/heinz-otto/fhemcl
Dann der Befehl abgesetzt.
time bash fhemcl.sh http://raspib:8083 "jsonlist2 global"
In meinem Scriptclient wird der Token ermittelt, es braucht also kein "API WEB" in FHEM.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

schwatter

Hallo Adler,

ich benutze dazu Python 2.7.9. Das funktioniert von meinem Enigma2-Receiver sehr schnell. Weniger als 5 Sekunden und das
obwohl für jeden Typ (HM, MQTT,...) eine neue Verbindung aufgebaut wird (Muss ich auch mal ändern...). Da stimmt was bei dir nicht,
behaupte ich einfach mal.

Hier ganz am Ende ein Beispiel für Python. Mit PHP habe ich keine Erfahrung.

https://forum.fhem.de/index.php?topic=105446.0

Otto123

#3
PHP fehlt hier noch, ansonsten gibt es im Wiki ein paar Beispiele:
https://wiki.fhem.de/wiki/CsrfToken-HowTo#Codebeispiele
Die gern ergänzt werden dürfen.

Vielleicht kannst Du ja die Perl Sub für PHP adaptieren, sind nur wenige Zeilen ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Adler

Hallo Otto,

vielen Dank!

Ich habe das Shell-Skript gerade vom Host, wo das PHP-Skript aufgerufen wurde, getestet, da liege ich aktuell bei 0,151s! Das ist dann ja ganz etwas anderes!

Da hängen der Apache2, PHP, .... noch mit drin. Aber das das darüber so viel langsamer ist, ist schon komisch.

Da ich mich mit PHP gerade erst beschäftige, braucht es jetzt ein wenig Zeit, wo ich mich damit auseinander setze.
Ich werde dann wieder berichten.

Freundliche Grüße
Andreas
FHEM auf Raspberry PI, Max! Heizkörperthermostate, Shelly 2, MQTT, Arduino

Otto123

Die Zeit von einer Minute klingt ja dann nach einem Timeout - also Du machst irgendwas, es geht schief, einer in der Kette gibt auf und am Ende bekommst Du trotzdem ein Ergebnis ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz