JSonMod versteht mein JSON nicht

Begonnen von wowogiengen, 10 November 2024, 13:44:27

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: passibe am 12 November 2024, 20:12:50Und vielleicht auch nochmal ein list von deinem JsonMod-Device a) mit richtigem Pfad und b) nachdem du auf reread gedrückt hast.

Das wurde doch alles schon gepostet, erkennbar an den timestamps in den internals.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wowogiengen

Zitat von: passibe am 12 November 2024, 20:12:50Wenn nichts rauskommt ist alles gut.
Kannst ja testweise mal den Pfad auf "neu 2" oder so ändern, dann siehst du z.B. die Fehlermeldung, die kommt, wenn die Datei nicht existiert.

ja, stimmt... Can't open /opt/fhem/python/neu 1.json: No such file or directory

ZitatBedeutet jetzt aber, dass der Fehler doch nicht im falschen Dateipfad oder einer falschen Berechtigung. Wo sonst, keine Ahnung. Wie gesagt, bei mir funktioniert das.

Poste bitte trotzdem mal die Ausgabe von (per SSH natürlich):
ls -la /opt/fhem/python/neu\ 1.json
Und vielleicht auch nochmal ein list von deinem JsonMod-Device a) mit richtigem Pfad und b) nachdem du auf reread gedrückt hast.

Bisschen mehr, aber alle gleich:

fhem@fhem4:~/python$ ls -als
insgesamt 13892
28 drwxrwxr-x  3 fhem dialout 24576 12. Nov 20:16  .
4 drwxr-xr-x  14 fhem dialout  4096 12. Nov 20:16  ..
4 -rwxrwxr-x  1 fhem dialout  1776  9. Nov 14:47  allinone.py
36 -rwxrw-r--  1 pi  pi      36760 10. Nov 10:43  Beispiel.json
36 -rw-r--r--  1 fhem dialout 35737  3. Nov 17:54  data2024-11-03_17-54-04.json
36 -rw-r--r--  1 fhem dialout 35715  6. Nov 08:05  data2024-11-06_08-05-56.json
36 -rw-r--r--  1 fhem dialout 35709  6. Nov 08:15  data2024-11-06_08-15-55.json
4 -rw-r--r--  1 fhem dialout  1008 10. Nov 13:18  data2024-11-06_08-25-55.json
36 -rw-r--r--  1 fhem dialout 36665  9. Nov 14:48  data2024-11-09_14-48-03.json
36 -rw-r--r--  1 fhem dialout 36739 10. Nov 10:13  data2024-11-10_10-13-10.json
52 -rw-rwxr--+  1 fhem dialout 48202 10. Nov 13:14  data2024-11-10_10-43-00.json
36 -rw-r--r--  1 fhem dialout 36759 10. Nov 13:13  data2024-11-10_10-43-03.json
36 -rw-r--r--  1 fhem dialout 35767  3. Nov 17:34  data.json
4 -rwxrw-r--  1 fhem dialout    39 12. Nov 18:43 'neu 1.json'
4 -rwxrw-r--  1 fhem dialout    39 12. Nov 18:54  neu.json
4 drwxrwxr-x  7 fhem dialout  4096  3. Nov 13:06  pygoodwe-main
fhem@fhem4:~/python$

Ausgabe für betateilchen: {use Data::Dumper;; my ($err,@content) = FileRead({FileName => '/opt/fhem/python/neu 1.json', ForceType => 'FILE'});; Debug "err:>$err<";; Debug Dumper @content }
2024.11.12 20:20:33 1: PERL WARNING: Use of uninitialized value $err in concatenation (.) or string at (eval 6719) line 1.
2024.11.12 20:20:33 1: DEBUG>err:><
2024.11.12 20:20:33 1: DEBUG>$VAR1 = '{
';
$VAR2 = ' "info":
';
$VAR3 = ' {
';
$VAR4 = ' "time" : true
';
$VAR5 = ' }
';
$VAR6 = '}';


Und hier noch das list, nachdem ich den Pfad korrekt eingestellt habe, und die Datei vorhanden ist...

Internals:
   API_LAST_MSG 200
   API_LAST_RES 1731439442.03639
   DEF        file:///opt/fhem/python/neu.json
   FUUID      67309b2d-f33f-a625-301d-a6751c6ebcf6ab2c
   NAME       PVJSON
   NEXT       2024-11-13 12:00:00
   NR         225
   SOURCE     /opt/fhem/python/neu.json (39)
   STATE      ???
   SVN        28481 2024-02-05 22:14:33 UTC
   TYPE       JsonMod
   eventCount 18
   CONFIG:
     IN_REQUEST 0
     SOURCE     file:///opt/fhem/python/neu.json
     SECRET:
   READINGS:
     2024-11-12 20:24:02   zeit            default value
Attributes:
   interval   0 12 * * *
   readingList single(jsonPath('$.info.time'), 'zeit', 'default value');
   room       test
   verbose    1

betateilchen

#17
Zitat von: wowogiengen am 12 November 2024, 20:25:50Ausgabe für betateilchen:

Ok, Deine Datei kann korrekt gelesen werden.

Zitat von: wowogiengen am 12 November 2024, 20:25:50Und hier noch das list, nachdem ich den Pfad korrekt eingestellt habe, und die Datei vorhanden ist...

Internals:
   API_LAST_MSG 200
   API_LAST_RES 1731439442.03639
   DEF        file:///opt/fhem/python/neu.json
   FUUID      67309b2d-f33f-a625-301d-a6751c6ebcf6ab2c
   NAME       PVJSON
   NEXT       2024-11-13 12:00:00
   NR         225
   SOURCE     /opt/fhem/python/neu.json (39)


Hier wurde aber die Datei korrekt gefunden und gelesen und die 39 Bytes passen auch zum Inhalt Deiner Datei (siehe Dein obiges ls aus dem Verzeichnis)

  • API_LAST_MSG 200
  • SOURCE     /opt/fhem/python/neu.json (39)

Warum das reading trotzdem nicht erzeugt wird, müssen wir jetzt im nächsten Schritt rausfinden.
-----------------------
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: betateilchen am 12 November 2024, 20:38:04Warum das reading trotzdem nicht erzeugt wird, müssen wir jetzt im nächsten Schritt rausfinden.

Vermutlich fehlt Dir eine der zum Erzeugen von readings benötigten perl libraries.

sudo apt install libcpanel-json-xs-perl
und danach FHEM neustarten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wowogiengen

Hallo

Zitat von: betateilchen am 12 November 2024, 21:12:32
Zitat von: betateilchen am 12 November 2024, 20:38:04Warum das reading trotzdem nicht erzeugt wird, müssen wir jetzt im nächsten Schritt rausfinden.

Vermutlich fehlt Dir eine der zum Erzeugen von readings benötigten perl libraries.

sudo apt install libcpanel-json-xs-perl
und danach FHEM neustarten.


sieht so aus, als ob da was fehlte :-)


pi@fhem4:~ $ sudo apt install libcpanel-json-xs-perl
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Statusinformationen werden eingelesen... Fertig
Die folgenden NEUEN Pakete werden installiert:
  libcpanel-json-xs-perl
Fortschritt: [ 20%] [###########............................................]
Es müssen 126 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 290 kB Plattenplatz zusätzlich benutzt.
Holen:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libcpanel-j                                                  son-xs-perl armhf 4.25-1+b1 [126 kB]
Es wurden 126 kB in 1 s geholt (200 kB/s).
Vormals nicht ausgewähltes Paket libcpanel-json-xs-perl wird gewählt.
(Lese Datenbank ... 108722 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../libcpanel-json-xs-perl_4.25-1+b1_armhf.deb ...
Entpacken von libcpanel-json-xs-perl (4.25-1+b1) ...
libcpanel-json-xs-perl (4.25-1+b1) wird eingerichtet ...
Trigger für man-db (2.9.4-2) werden verarbeitet ...
pi@fhem4:~ $

bingo,
geht wohl damit:

Internals:
   API_LAST_MSG 200
   API_LAST_RES 1731443529.16582
   DEF        file:///opt/fhem/python/neu.json
   FUUID      67309b2d-f33f-a625-301d-a6751c6ebcf6ab2c
   NAME       PVJSON
   NEXT       2024-11-13 12:00:00
   NR         225
   SOURCE     /opt/fhem/python/neu.json (39)
   STATE      ???
   SVN        28481 2024-02-05 22:14:33 UTC
   TYPE       JsonMod
   eventCount 1
   CONFIG:
     IN_REQUEST 0
     SOURCE     file:///opt/fhem/python/neu.json
     SECRET:
   READINGS:
     2024-11-12 21:32:09   zeit            1
Attributes:
   interval   0 12 * * *
   readingList single(jsonPath('$.info.time'), 'zeit', 'default value');
   room       test
   verbose    1


wowogiengen

Hallo,
und wenn ich eine richtige, große Datei nehme, kommt auch das richtige dabei raus,
siehe Anhänge

Ich freu mich...
Zusammen haben wir es ja dann doch geschafft...

Gibt es keine Möglichkeit, vor dem Ausführen von Code festzustellen, was noch installiert werden müsste?

Wenn ich auf neue Hardware umziehe, vergesse ich bestimmt wieder die Hälfte zu installieren


Vielen Dank nochmal an Alle

Prof. Dr. Peter Henning

Zitat von: wowogiengen am 12 November 2024, 21:39:49Gibt es keine Möglichkeit, vor dem Ausführen von Code festzustellen, was noch installiert werden müsste?
Nur, wenn man den auszuführenden Code auch versteht...

LG

pah

betateilchen

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

betateilchen

Zitat von: wowogiengen am 12 November 2024, 21:39:49Gibt es keine Möglichkeit, vor dem Ausführen von Code festzustellen, was noch installiert werden müsste?

Prinzipiell ist eine Prüfung im Modul sogar vorhanden, die eine Logmeldung ausgeben soll, wenn das perl-Paket fehlt. Aber zum einen bin ich mir nicht sicher, ob diese Prüfung funktioniert (bei meinem Test kam keine Meldung, wenn das Paket fehlt) und zum anderen hättest Du bei Deinem eingestellten verbose=1 die Meldung nicht ins Log bekommen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wowogiengen

Zitat von: betateilchen am 13 November 2024, 05:44:54Prinzipiell ist eine Prüfung im Modul sogar vorhanden, die eine Logmeldung ausgeben soll, wenn das perl-Paket fehlt. Aber zum einen bin ich mir nicht sicher, ob diese Prüfung funktioniert (bei meinem Test kam keine Meldung, wenn das Paket fehlt) und zum anderen hättest Du bei Deinem eingestellten verbose=1 die Meldung nicht ins Log bekommen.

Hallo,
ich hatte testweise den Loglevel auch schon auf 5 gesetzt, aber auch da habe ich nichts im Log gesehen...