[Gelöst] HTTPMOD reading stellt Umlaute als \u00nn dar

Begonnen von Hermann123, 24 Oktober 2024, 22:32:36

Vorheriges Thema - Nächstes Thema

RalfRog

Zitat von: Hermann123 am 27 Oktober 2024, 14:40:54readingList readingList complete()
Vermutlich taucht im Attribut auch das Wort "readingList" einmal zu viel auf.

Gruß Ralf
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

betateilchen

#16
Zitat von: TomLee am 27 Oktober 2024, 15:18:52
Zitatfile:///home/pi/tanken.json
überleg doch mal, fällt dir bei der Syntax der Pfadangabe denn nichts auf?

Was soll einem denn da auffallen? Mir fällt an der Pfadangabe jedenfalls nichts auf, das grundsätzlich falsch wäre.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#17
Zitat von: TomLee am 27 Oktober 2024, 15:32:06Mir stellt sich die Frage warum es mit der Angabe des Link zu "invalid server response" kommt.
Wenn man die URL mit dem Demo-API-Key im Browser aufruft bekommt man den Json zurück.

Bei mir funktioniert der Aufruf mit der URL völlig problemlos:

defmod tanker_j JsonMod https://creativecommons.tankerkoenig.de/json/list.php?lat=51.662824&lng=7.1338207&rad=1.5&sort=price&type=diesel&apikey=00000000-0000-0000-0000-000000000002
attr tanker_j readingList multi(jsonPath('$.stations.[*]'),concat(property('id'),'_brand'),property('brand'))\
multi(jsonPath('$.stations.[*]'),concat(property('id'),'_street'),concat(property('street'),' ',property('houseNumber')))\
multi(jsonPath('$.stations.[*]'),concat(property('id'),'_price'),property('price'))

und liefert

setstate tanker_j 2024-10-27 16:01:17 005056ba-7cb6-1ed2-bceb-9dd1e660cd3c_brand STAR
setstate tanker_j 2024-10-27 16:01:17 005056ba-7cb6-1ed2-bceb-9dd1e660cd3c_price 1.009
setstate tanker_j 2024-10-27 16:01:17 005056ba-7cb6-1ed2-bceb-9dd1e660cd3c_street Kinderheim-/Bergstrasse

setstate tanker_j 2024-10-27 16:01:17 c826d6d2-9b1a-47b0-acc1-9322bdbf99a0_brand ARAL
setstate tanker_j 2024-10-27 16:01:17 c826d6d2-9b1a-47b0-acc1-9322bdbf99a0_price 1.009
setstate tanker_j 2024-10-27 16:01:17 c826d6d2-9b1a-47b0-acc1-9322bdbf99a0_street Victoriastraße 174
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#18
Zitat von: Hermann123 am 27 Oktober 2024, 14:40:54@betateilchen
Bei mir funktionierrt keins Deiner Beispiele. Weder mit der JSON Datei, noch per WEB.

Erstens hast Du das Attribut 'readingList' (wie schon Ralf angemerkt) falsch angegeben.
Zweitens solltest Du das Attribut 'interval' weglassen, solange Du nicht genau weißt, was Du da tust. Zumindest solltest Du da nicht irgendwelche sinnlosen Fantasiewerte reinschreiben.

Du musst einfach anfangen, ein bisschen sorgfältiger zu arbeiten und vielleicht auch versuchen zu verstehen, was Du eigentlich tust.



Zitat von: Hermann123 am 27 Oktober 2024, 14:40:54Ich werde jetzt erstmal mein System und die perl & json Pakete checken.
Wenn das OK ist bzw andere JSON basierte PRG laufen melde ich mich wieder.

Deine json Pakete sind in Ordnung, sonst bekämst Du schon beim Anlegen des JsonMod-devices eine Fehlermeldung.
Außerdem hatte Dein erster Test mit complete() ja schonmal funktioniert.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hermann123

Zitat von: RalfRog am 27 Oktober 2024, 15:49:36Vermutlich taucht im Attribut auch das Wort "readingList" einmal zu viel auf.
... nur bei der aufbereiteten config für's listing zum pposten.
Bei den Tests war es richtig...
RPi 4 mit HM-CFG-LAN und 30+  HM Komponenten.

Hermann123

Zitat von: TomLee am 27 Oktober 2024, 15:18:52Aber selbst mit richtiger Pfadsyntax hat der User fhem default auch keine Leserechte auf den Ordner, oder hast die angepasst?

Leserechte sind gesetzt für ugo
RPi 4 mit HM-CFG-LAN und 30+  HM Komponenten.

TomLee

ZitatWas soll einem denn da auffallen? Mir fällt da jedenfalls nichts auf, das falsch wäre.

Wenn das bei dir mit den drei / tun sollte, dann muss irgendwas auf meinen zwei Systemen (auf denn ich das heute nachvollzogen habe) irgendwas falsch laufen. Bei mir tut das, wie bei vergangenen Tests auch schon, nur mit zweien und bin bisher auch davon ausgegangen das sei normal.

Hermann123

Zitat von: betateilchen am 27 Oktober 2024, 16:06:17Zweitens solltest Du das Attribut 'interval' weglassen, solange Du nicht genau weißt, was Du da tust.

Ohne interval Attribut wird die Seite / Datei jede Stunde aufgerufen.
Zum Testen wollte ich das immer manuell machen, per releod. Daher habe ich das interval auf den ersten JAN gesetzt.


RPi 4 mit HM-CFG-LAN und 30+  HM Komponenten.

betateilchen

#23
Zitat von: TomLee am 27 Oktober 2024, 16:18:21Wenn das bei dir mit den drei / tun sollte, dann muss irgendwas auf meinen zwei Systemen (auf denn ich das heute nachvollzogen habe) irgendwas falsch laufen. Bei mir tut das, wie bei vergangenen Tests auch schon, nur mit zweien und bin bisher auch davon ausgegangen das sei normal.

Ein Blick in die commandref hilft manchmal und würde solche unnötige Verwirrung völlig abseits vom Thema vermeiden.

Bei file:/// sollten es immer drei / sein, wenn man einen absoluten Pfad verwenden möchte.

https://forum.fhem.de/index.php?msg=1278110
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

ZitatBei mir funktioniert der Aufruf mit der URL völlig problemlos:

ja, die Link-Variante hab ich nur auf dem Testsystem probiert gehabt (und da war libcpanel-json-xs-perl noch nicht installiert)  ::)

Hermann123

Zitat von: TomLee am 27 Oktober 2024, 16:49:15(und da war libcpanel-json-xs-perl noch nicht installiert)

@TomLee
Deine Erwähnung des fehlenden Pakets hat mich auf die richtige Spur gebracht. Die libcpanel-json-xs-perl
war zwar bei mir installiert, aber nach einigem Suchen habe ich im Wiki einen Beitrag über CPAN gefunden.
Dort sind 2 XS Pakete gelistet (JSON::XS war schon installiert)...und sieh da, nach der Installation von
JSON::MaybeXS läuft das Modul nun mit den Beispielen von betateilchen. Ob das so bleibt,
oder dieses Vorgehen falsch ist, werde ich sehen (oder hier lesen)...
 
Vielen Dank für den Stubs in die richtige Richtung!

@betateilchen
Dir vielen Dank für die verschiedenen Beispiele. Ich werde mich jetzt, da es erstmal läuft,
weiter mit JsonMod auseinander setzen. Da bei HTTPMOD die Umlaute immer noch nicht gewandelt werden,
bleibe ich bei JsonMOD....
Danke! ...bis zur nächsten Frage  ;D



RPi 4 mit HM-CFG-LAN und 30+  HM Komponenten.

betateilchen

Zitat von: Hermann123 am 28 Oktober 2024, 23:07:19Dort sind 2 XS Pakete gelistet (JSON::XS war schon installiert)...und sieh da, nach der Installation von
JSON::MaybeXS läuft das Modul nun mit den Beispielen von betateilchen. Ob das so bleibt,
oder dieses Vorgehen falsch ist, werde ich sehen (oder hier lesen)...

Naja "falsch" nicht direkt. Aber warum tut man sich den Streß an, perl Paket aus CPAN zu installieren, wenn es dafür auch fertige Debian Pakete (hier: libcpanel-json-xs-perl) gibt, die man per apt verwenden könnte? Man umginge damit die Situation, dass man perl Pakete aus verschiedenen Quellen hat, die bei einem Update gegenseitig nichts voneinander wissen. Sowas schafft auf Dauer mehr Probleme, als dass es wirklich nützt.

Aber Hauptsache, es funktioniert jetzt überhaupt erstmal bei Dir mit der Preisabfrage.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!