Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abfrage von Readings - nur wie? #3

Open
sidey79 opened this issue Mar 6, 2019 · 6 comments
Open

Abfrage von Readings - nur wie? #3

sidey79 opened this issue Mar 6, 2019 · 6 comments

Comments

@sidey79
Copy link
Contributor

sidey79 commented Mar 6, 2019

Ich habe versucht ein Reading auszulesen.
In FHEMWeb funktioniert dieser Befehl, aber via dein script bekomme ich es einfach nicht gebacken.

Hast Du eine Idee?

test/fhemcl.sh 8083 "{ReadingsVal('WEB','state','')}"

@sidey79
Copy link
Contributor Author

sidey79 commented Mar 6, 2019

Ich habe es gefunden, wenn ich die letzte Zeile so abändere:
curl -s --data "fwcsrf=$token" "$hosturl/fhem?cmd=$cmd" | sed -n "/<div id='content' >/,/<\/div>/p" |sed 's/<[^>]*>//g'

Dann bekomme ich den Rückgabewert, da bei ReadingsVal die Rückgabe nicht in einem pre Tag steht.

@heinz-otto
Copy link
Owner

Ok. Ich gebe zu, mein Fokus lag auf Befehle zu FHEM übermitteln. Die Rückgabe, hatte ich anfangs unterdrückt, dann aber bemerkt das fhem.pl ja auch eine Rückgabe kann. Mit dem list Befehl habe ich dann gesehen: das Wesentliche kommt im pre Tag. Also habe ich den Inhalt raus gezogen.
Ich bin sicher: daran kann und muss noch gearbeitet werden. Deine Idee klingt gut, schau ich mir an

@sidey79
Copy link
Contributor Author

sidey79 commented Mar 7, 2019

Ja, kann das nachvollziehen.
Leider wird nicht jede Rückmeldung in ein Pre Tag gepackt.

Das ist prinzipiell ein Schwachpunkt, wenn man es über http macht, dass man im HTML Code nach dem Ergebnis suchen darf.
Daran erkennen wir, dass Fhem keine http Api bereitstellt, sondern nur eine http Webseite.

@heinz-otto
Copy link
Owner

Ich habe den fhemcl.sh noch etwas ergänzt. Die Abfrage von readings oder Rückgabe von Perlcode Ergebnissen funktioniert jetzt einwandfrei. Alles unnötige wird entfernt (auch leere Zeilen), man bekommt exakt nur die Antwortzeilen zurück.

@sidey79
Copy link
Contributor Author

sidey79 commented Apr 26, 2019

Ah okay,

ich habe dein Script von vor einigen Wochen geforkt und dann ein paar Anpassungen vorgenommen.
Das mit der Ausgabe habe ich dann am Ende so gelöst, dass von FHEM alles "unformatiert" übergeben wird:

https://github.com/RFD-FHEM/UnitTest/blob/9dbe72e00ad0b1a5109001bfb0700077e4e8dd11/src/fhemcl.sh#L87

Ich dachte ich hätte dir das mitgeteilt wie ich es gelöst habe.

Du hast ja noch einige kleine Anpassungen vorgenommen. Die schaue ich mir mal an und werde sie dann auch bei mir einbauen wenn es für mich passt

@heinz-otto
Copy link
Owner

heinz-otto commented Apr 26, 2019

Naja die Rückgabe des kompletten HTML Codes wäre für mich unbrauchbar. Meine Variante bisher mit "pre" funktionierte nur für list und nicht für Perl Codes. Jetzt funktioniert alles, man bekommt das zurück was man gefragt hat. War nicht schwierig, hat nur etwas gedauert :)
Ich hab es jetzt relativ pragmatisch gemacht, scheint aber ein guter Ansatz. JEDE echte Rückgabe (hast Du ja schon ermittelt gehabt) wird in einen div Container gepackt <div id='content' > </div>
Also ermittle ich jetzt diesen, entferne diese Tags und zusätzlich falls vorhanden den </pre> (Ende) Tag.
Danach einfach alle verbleibenden HTML Tags. Aus meiner Sicht funktioniert das so. Falls Du andere Fälle hast, lass mich das bitte wissen. Ich würde es gern irgendwie perfekt machen.
Ich habe auch die Powershell Variante angepasst. Ich verwende das mittlerweile ziemlich umfangreich von unterschiedlichen linux und Windows Systemen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants