FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: bugster_de am 07 Februar 2017, 17:09:11

Titel: eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: bugster_de am 07 Februar 2017, 17:09:11
Hi Leute,

gehört eigentlich eher in die Developers Corner, aber da darf ich keine Beiträge schreiben.

Ich habe mir ein kleines Modul gebaut, welches die Google-Time-API abfragt und daraus Sommer- / Winterzeit rausholt und dann als state reading ausgibt. Funktioniert und tut.

Das Modul nutzt allerdings die Perl Lib für JSON (use JSON). Beim ersten Quercheck mit dem Modul HTTPMOD habe ich den Eindruck, dass das HTTPMOD Moduel diese Lib nicht braucht. Da der Code im HTTPMOD Module jetzt, sagen wir mal höflich, schwer lesbar ist, habe ich auf die Schnelle jetzt nicht gefunden, wie das Modul die JSON Rückgabe Werte verarbeitet. Kann mir da jemand auf die Sprünge helfen?



Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: marvin78 am 07 Februar 2017, 17:11:44
Ganz einfach: Es nutzt JSON, aber nur dann, wenn es gebraucht wird.

Aktuell: Zeile 530


Edit: welchen sinnvollen Grund kann es geben, das nicht zu "wollen"?
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: DeeSPe am 07 Februar 2017, 18:04:40
Wenn Du mit JSON arbeiten willst kommst Du wohl um die Library nicht herum.
Entweder JSON benutzen und JSON einbinden oder kein JSON benutzen!

Gruß
Dan
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: Dietmar63 am 07 Februar 2017, 19:00:50
In Twilight wandele ich JSON ohne lib in Perl um.
Läuft seit Jahren
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: bugster_de am 07 Februar 2017, 22:56:47
Hi,

Danke für die Infos. Ich schaue mir das im Twilight Modul gleich mal an. Ist übrigens ein cooles Modul: nutze ich seit Jahren um abends die Rolläden abhängig vom ss zu setzen (im Sommer sunset und im Winter sunset für Inneräume) Passt immer perfekt und hat die Akzeptanz der automatischen Rolladensteuerung zu Hause deutlich erhöht, das das Haus quais nun immer genau richtig die Rolläden zu macht

ZitatEdit: welchen sinnvollen Grund kann es geben, das nicht zu "wollen"?
Ganz einfach: ich bin immer mal wieder mit meinem FHEM umgezogen RPi1 --> BananaPi --> RPi2 --> RPi3
Und jedesmal geht es von vorne los, dass man ewig im CPAN dran sitzt um die benötigten Module nachzuinstallier. Und noch länger dauert es raus zu finden, warum eine bestehende Funktion nun nicht mehr tut. Und wenn dann die Logfile Einträge noch kryptisch sind ...
Zugegeben: das JSON ist jetzt ein blödes Beispiel, da man das immer wieder mal braucht

ZitatAktuell: Zeile 530
ah, Danke. Ich hatte per Suchfunktion die Zeile schon gefunden, aber wie gesagt die Lesbarkeit dieses Codes ....

Aber genau das ist eines der Themen, weshalb man beim FHEM Umzug ewig dran sitzt: wenn dann der das Modul auch nur erst bei Bedarf nach geladen wird, ist es Zufall ob man die fehlende Lib entdeckt.

Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: Dietmar63 am 08 Februar 2017, 01:11:59
der Code: siehe Anhang.

Es könnte JSON-Antworten geben, die weitere s/// Befehle benötigen - die yahoo Wetterdaten lassen sich so seit ca. einem Jahr problemlos parsen.
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: marvin78 am 08 Februar 2017, 09:31:46
Zitat von: bugster_de am 07 Februar 2017, 22:56:47

Ganz einfach: ich bin immer mal wieder mit meinem FHEM umgezogen RPi1 --> BananaPi --> RPi2 --> RPi3
Und jedesmal geht es von vorne los, dass man ewig im CPAN dran sitzt um die benötigten Module nachzuinstallier. Und noch länger dauert es raus zu finden, warum eine bestehende Funktion nun nicht mehr tut. Und wenn dann die Logfile Einträge noch kryptisch sind ...


Ich würde das, wenn es eben geht, ohnehin nicht mit CPAN machen. Da es sich (wegen Pi) vermutlich um eine Debian-Variante handelt, ist ein

apt-get install <perl-modul>

aus meiner Sicht besser. Mir ist bisher noch kein Perl-Modul untergekommen, dass sich nicht so installieren lies und dann auch einwandfrei seinen Dienst tat.

Ich bin auch schon oft umgezogen. Eine Liste der benötigten Perl-Module lässt sich in der Regel ganz gut aus der commandref holen. Manche Module sind an der Stelle zwar nicht 100%ig gut dokumentiert aber in den meisten Fällen kommt man damit schnell zum Ziel. Mittlerweile schreiben auch viele der Module tatsächlich vernünftige Fehlermeldungen ins Log. Es geht voran ;)
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: bugster_de am 08 Februar 2017, 12:42:20
Zitatder Code: siehe Anhang.
Danke ! Die Idee das mit Regex auf Ausdrücke zu mappen, die mittels eval ausgeführt werden ist natürlich cool.

ZitatEs geht voran
Das stimmt!

Meine FHEM Installation zu Hause ist halt im echt produktiven Einsatz und die bessere Hälfte beschwert sich schon massiv, wenn sie mal die Rolläden von Hand verfahren muß. Parallel bin ich jobbedingt einiges unterwegs und achte deshalb nun verstärkt darauf, das System auch Wartungsfreundlich zu halten. Worst Case ist, dass ich sonntags mal Wartungsarbeiten (update etc.) durchfürhe und dann den Rest der Woche unterwegs bin und irgendwas nicht so tut, wie man es gewohnt ist. Heißt also bevor ich auf andere zeige fange ich erstmal bei meinen eigenen Module damit an.

ZitatIch würde das, wenn es eben geht, ohnehin nicht mit CPAN machen. Da es sich (wegen Pi) vermutlich um eine Debian-Variante handelt, ist ein
hmmm. Sehe ich genau andersrum: ich versuche es immer erstmal mit CPAN, da hier die Namen im Module (use xxx) und der CPAN Name 1:1 gleich sind und man typischerweise eher die aktuelleste Version der Lib hat. Bei Installation via apt muß man erstmal suchen, wie das Package der Lib denn nun so heißt. Und ob das die aktuelleste Version ist. Gerade Debian positioniert sich da ja eher auf der vorsichtigen Seite
Titel: Antw:eigens Modul - benötigt JSON-Lib, will ich aber nicht
Beitrag von: marvin78 am 08 Februar 2017, 13:19:55
Ich wüsste nicht, wofür man in FHEM von etwas die "aktuellste Version" braucht. Genau dieses Vorsichtige ist der Vorteil an der Methode. Aber ich will dich gar nicht von etwas überzeugen. Ich mag CPAN nicht und ich mochte es noch nie. Ich habe viele gute Gründe dafür aber das ist hier sehr OT.