Hallo,
heute einmal das Update durchgeführt und FHEM will nicht
Can't call method "width" on an undefined value at ./FHEM/02_RSS.pm line 204.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
Zurück auf ein Backup von 10. Februar und das RSS Modul führt nicht zum Abbruch von FHEM.
Wo soll ich weitersuchen?
Hallo Amatic,
Zitat von: Amatic schrieb am Mi, 06 März 2013 23:24heute einmal das Update durchgeführt und FHEM will nicht
Can't call method "width" on an undefined value at ./FHEM/02_RSS.pm line 204.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
ich hatte RSS am 24.02. überarbeitet. Hintergrundbilder, die bereits im Format des Bilderrahmens sind, werden daraufhin nicht noch skaliert. Ich habe die Funktionsfähigkeit bei mir mit Bildern passender und nicht passender Größe erfolgreich getestet.
Wenn Du eine Lösung willst, dann poste bitte
- die Definition des RSS-Geräts mit allen zugehörigen Attributen
- ein minimales Layout, mit dem sich der Fehler nachstellen läßt.
Wenn die Erstellung des Bildes fehlschlägt, wird außerdem von Perl eine Warnung geschrieben. Am besten startest Du
fhem.pl daher einmal auf der Konsole, um Dir anzusehen, ob zusätzliche Meldungen kommen.
Viele Grüße
Boris
Hallo Boris,
danke für die Tips. In der fhem.cfg steht jetzt nur noch:
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd none
attr global sendStatistics 1
attr global statefile ./log/fhem.save
attr global userattr devStateIcon icon webCmd
attr global verbose 5
#
# pgm2 / autocreate configfile. Take a look at the other examples for more.
#
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
attr WEBphone smallscreen 1
define FrameRSS RSS jpg 192.168.178.37 /opt/fhem/layout
attr FrameRSS bg /usr/share/pictures
attr FrameRSS size 960x690
attr FrameRSS tmin 1
Das Layout ist wie folgt:
font /usr/share/fonts/truetype/msttcorefonts/arial.ttf # must be a TrueType font
rgb ffffff # HTML color notation, RGB
pt 120 # font size in points
time 0 125
#pt 60
#seconds 400 125 colon
Folgende Fehlermeldungen erscheinen auf der Console von der fhem.pl gestartet wurde:
root@debian:/opt/fhem# ./fhem.pl ./fhem.cfg
root@debian:/opt/fhem# Can't call method "width" on an undefined value at ./FHEM/02_RSS.pm line 204.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
Das fhem.log ist wie folgt:
root@debian:/opt/fhem# less log/fhem-2013-03.log
2013.03.07 20:45:22 1: Including ./fhem.cfg
2013.03.07 20:45:22 5: Cmd: >attr global autoload_undefined_devices 1<
2013.03.07 20:45:22 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2013.03.07 20:45:22 5: Cmd: >attr global modpath .<
2013.03.07 20:45:22 5: Loading ./FHEM/99_SUNRISE_EL.pm
2013.03.07 20:45:23 5: Loading ./FHEM/99_Utils.pm
2013.03.07 20:45:23 5: Loading ./FHEM/99_XmlList.pm
2013.03.07 20:45:23 5: Cmd: >attr global motd none<
2013.03.07 20:45:23 5: Cmd: >attr global sendStatistics 1<
2013.03.07 20:45:23 5: Cmd: >attr global statefile ./log/fhem.save<
2013.03.07 20:45:23 5: Cmd: >attr global userattr devStateIcon icon webCmd<
2013.03.07 20:45:23 5: Cmd: >attr global verbose 5<
2013.03.07 20:45:23 5: Cmd: >define WEB FHEMWEB 8083 global<
2013.03.07 20:45:23 5: Loading ./FHEM/01_FHEMWEB.pm
2013.03.07 20:45:23 3: WEB: port 8083 opened
2013.03.07 20:45:23 5: Cmd: >define WEBphone FHEMWEB 8084 global<
2013.03.07 20:45:23 3: WEBphone: port 8084 opened
2013.03.07 20:45:23 5: Cmd: >attr WEBphone smallscreen 1<
2013.03.07 20:45:23 3: WEBphone: attribute smallscreen deprecated, converted to stylesheetPrefix
2013.03.07 20:45:23 5: Cmd: >define FrameRSS RSS jpg 192.168.178.37 /opt/fhem/layout<
2013.03.07 20:45:23 5: Loading ./FHEM/02_RSS.pm
2013.03.07 20:45:23 5: Cmd: >attr FrameRSS bg /usr/share/pictures<
2013.03.07 20:45:23 5: Cmd: >attr FrameRSS size 960x690<
2013.03.07 20:45:23 5: Cmd: >attr FrameRSS tmin 1<
2013.03.07 20:45:23 1: configfile: WEBphone: attribute smallscreen deprecated, converted to stylesheetPrefix
2013.03.07 20:45:23 5: Interface "interface": readings "", getters "", setters ""
2013.03.07 20:45:23 5: Interface "switch": readings "onoff", getters "onoff", setters ""
2013.03.07 20:45:23 5: Interface "switch_active": readings "onoff", getters "onoff", setters ""
2013.03.07 20:45:23 5: Interface "switch_passive": readings "onoff", getters "onoff", setters "on:off"
2013.03.07 20:45:23 5: Interface "dimmer": readings "onoff:level", getters "onoff:level", setters "on:off:dimto:dimup:dimdown"
2013.03.07 20:45:23 5: Interface "temperature": readings "temperature", getters "temperature", setters ""
2013.03.07 20:45:23 5: Interface "humidity": readings "humidity", getters "humidity", setters ""
2013.03.07 20:45:23 5: Interface "wind": readings "wind", getters "wind", setters ""
2013.03.07 20:45:23 5: Interface "power": readings "power:maxPower:energy", getters "power:maxPower:energy", setters ""
2013.03.07 20:45:23 5: Triggering global (1 changes)
2013.03.07 20:45:23 5: Notify loop for global INITIALIZED
2013.03.07 20:45:23 0: Server started with 4 defined entities (version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 2852 2013-03-04 19:58:34Z rudolfkoenig $, pid 1971)
2013.03.07 20:45:32 4: Connection accepted from FHEMWEB:192.168.178.36:49285
2013.03.07 20:45:32 4: Connection accepted from FHEMWEB:192.168.178.36:49286
2013.03.07 20:45:32 5: Loading ./FHEM/98_SVG.pm
2013.03.07 20:45:32 4: HTTP FHEMWEB:192.168.178.36:49286 GET /fhem/rss/FrameRSS.jpg
Zitat von: Alexander Bauer schrieb am Do, 07 März 2013 20:51Hallo Boris,
danke für die Tips.
Danke für die ausführlichen Logs.
Ich sehe noch nicht, woran es bei Dir liegen könnte. Ich poste am Wochenende mal eine Version von 02_RSS.pm mit ganz vielen detaillierten Debug-Meldungen. Wenn Du diese einsetzt, kommen wir der Ursache vielleicht auf die Schliche.
Noch zwei Fragen:
- Die Hintergrundbilder sind nicht in der Größe des Rahmens (andere Pixelbreite/-höhe)?
- Was gibt Dir
dpkg -l|grep libgd
aus?
Viele Grüße
Boris
Hallo Boris,
anbei die Ausgabe wegen dem der libgd
root@debian:/opt/fhem/FHEM# dpkg -l|grep libgd
ii libgd-gd2-perl 1:2.39-2+b1 Perl module wrapper for libgd - gd2 variant
ii libgd-graph-perl 1.44-3 Graph Plotting Module for Perl 5
ii libgd-text-perl 0.86-5 Text utilities for use with GD
ii libgd-tools 2.0.36~rc1~dfsg-5 GD command line tools and example code
ii libgd2-xpm 2.0.36~rc1~dfsg-5 GD Graphics Library version 2
ii libgdbm3 1.8.3-9 GNU dbm database routines (runtime version)
Daran lag es aber nicht. Die Ursache sind die Bilder bzw. das der Pfad nicht existierte. Der vorherigen Version war das wohl egal,
hab wohl beim umzug der fhem Umgebung die Hintergrundbilder nicht mitgenommen. Nun liegen die Bilder innerhalb von opt/fhem und dann
passiert das nimmer.
Vielen Dank für die Hilfe sowie den Einsatz für fhem.
Zitat von: Alexander Bauer schrieb am Do, 07 März 2013 22:13Daran lag es aber nicht. Die Ursache sind die Bilder bzw. das der Pfad nicht existierte. Der vorherigen Version war das wohl egal,
hab wohl beim umzug der fhem Umgebung die Hintergrundbilder nicht mitgenommen. Nun liegen die Bilder innerhalb von opt/fhem und dann
passiert das nimmer.
Danke fürs rechtzeitige Bescheidsagen. Ich schaue mir dennoch mal an, ob ich nichtexistente Pfade abfangen soll.
Grüße
Boris
nur mal so nebenbei angemerkt: Seit 5.4 sorgt die 02_RSS.pm auch bei mir grundsätzlich dafür, beim Aufruf des RSS-Feeds den gesamten FHEM Server zum Absturz zu bringen. Nach jedem Update (auch gestern wieder) muss ich diese Datei durch eine Version aus 5.3 ersetzen, die völlig problemlos funktioniert. Einen Zusammenhang mit Hintergrundbildern konnte ich nicht feststellen.
Hallo,
auf welche Version gehts Du zurück?
Zum Ausschließen eines Moduls vom Update gibt es laut Command.ref den
folgenden Befehl
exclude_from_update
Contains a space separated list of file which will be excluded by an update. This Attribute is used by the update command.
Example:
attr global exclude_from_update 21_OWTEMP.pm temp4hum4.gplot FS20.on.png FS20.off.png
Ciao
PS PM ist ausgeschaltet
Danke für den Tipp mit dem exclude - ich hatte das bisher mit chown gelöst, damit fhem die Dateien beim Update einfach nicht mehr überschreiben darf :)
Welche Version bei mir genau funktioniert, muss ich nachschauen, wenn ich wieder zu Hause bin, das wird aber erst Sonntagabend oder Montagmorgen sein.
Offtopic: Wen es interessiert: Ich habe meine 02_RSS.pm um eine Funktion zum Linienzeichnen ergänzt und das in Codeschnipsel (http://forum.fhem.de/index.php?topic=12776.0) gepostet.
Zitat von: betateilchen schrieb am Do, 13 Juni 2013 11:25nur mal so nebenbei angemerkt: Seit 5.4 sorgt die 02_RSS.pm auch bei mir grundsätzlich dafür, beim Aufruf des RSS-Feeds den gesamten FHEM Server zum Absturz zu bringen. Nach jedem Update (auch gestern wieder) muss ich diese Datei durch eine Version aus 5.3 ersetzen, die völlig problemlos funktioniert. Einen Zusammenhang mit Hintergrundbildern konnte ich nicht feststellen.
nur mal so nebenbei gefragt: welche Revision hat die bei Dir funktionierende Version von 02_RSS.pm (siehe Kopf der Datei:
# $Id: 02_RSS.pm 2793 2013-02-24 08:47:30Z borisneubert $
Grüße
Boris
nur mal so nebenbei geantwortet:
Zitat von: betateilchen schrieb am Fr, 14 Juni 2013 09:26Welche Version bei mir genau funktioniert, muss ich nachschauen, wenn ich wieder zu Hause bin, das wird aber erst Sonntagabend oder Montagmorgen sein.
da steht nix...
1 #
2 #
3 # 02_RSS.pm
4 # written by Dr. Boris Neubert 2012-03-24
5 # e-mail: omega at online dot de
6 #
7 ##############################################
8 # $Id $
9
Wenn ich die aktuelle 02_RSS.pm verwende, passiert folgendes:
# $Id: 02_RSS.pm 2793 2013-02-24 08:47:30Z borisneubert $
Can't call method "colorResolve" on an undefined value at ./FHEM/02_RSS.pm line 213.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
Und hier noch meine RSS-Definition inkl. Layout:
Internals:
DEF jpg rasp-fhem /opt/fhem_add/rss_layout
NAME FHEMRSS
NR 69
STATE FHEMRSS
TYPE RSS
Fhem:
filename /opt/fhem_add/rss_layout
hostname rasp-fhem
layout font /usr/share/fonts/truetype/msttcorefonts/arial.ttf
pt 24
rgb ffffff
date 30 50
time 700 50
style jpg
Attributes:
room 97_RSS
size 800x600
Diese 5 Zeilen in der Layout Datei reichen bereits, um FHEM komplett zum Absturz zu bringen.
Zitat von: Dr. Boris Neubert schrieb am Fr, 14 Juni 2013 21:09nur mal so nebenbei gefragt: welche Revision hat die bei Dir funktionierende Version von 02_RSS.pm (siehe Kopf der Datei:
Hallo Boris,
wie schon geschrieben, in der von mir verwendeten 02_RSS.pm steht keine ID drin.
Ich habe jetzt mal anhand des SVN verglichen und die Dateiversion, die bei mir problemlos läuft, ist die 02_RSS.pm (ohne ID) aus FHEM 5.3 Ursprünglich hatte ich für einen ersten Test das 5.3 Debian Paket runtergeladen und nach dem Produktivstart hier mit 5.4 die Datei aus dem glücklicherweise noch vorhandenen "alten" Paket verwendet, da die 5.4 Version von 02_RSS nicht mehr funktionierte.
Viele Grüße
Udo
Hallo Betateilchen,
Deine Layout Datei sieht so aus ?
font /usr/share/fonts/truetype/msttcorefonts/arial.ttf
pt 24
rgb ffffff
date 30 50
time 700 50
Ich habe gleiches in der Layout Datei (und noch mehr) und mit obiger fhem.cfg funktioniert die aktuelle Version.
Das Layout sieht so aus, ja.
Es ist aber nicht das "wirkliche" Layout (da steht viel mehr drin) sondern ein möglichst einfaches Test-Layout für die Fehlersuche, das bei mir mit der aktuellen 02_RSS.pm eben NICHT funktioniert, wohl aber mit der alten. (und mit der alten Version funktioniert auch das komplette Layout völlig problemlos)
Zitat von: betateilchen schrieb am Mo, 17 Juni 2013 13:32Das Layout sieht so aus, ja.
Es ist aber nicht das "wirkliche" Layout (da steht viel mehr drin) sondern ein möglichst einfaches Test-Layout für die Fehlersuche, das bei mir mit der aktuellen 02_RSS.pm eben NICHT funktioniert, wohl aber mit der alten. (und mit der alten Version funktioniert auch das komplette Layout völlig problemlos)
Ich vermute, daß es am fehlenden Hintergrundbild liegt. Kannst Du bitte mal mit Bild versuchen?
Danke
Boris
Guten Abend,
das Hintergrundbild macht keinen Unterschied:
Can't call method "colorResolve" on an undefined value at ./FHEM/02_RSS.pm line 213.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 116.
Lediglich die Zeile mit dem Blocking ist hinzugekommen.
Zitat von: betateilchen schrieb am Mo, 17 Juni 2013 23:08Guten Abend,
das Hintergrundbild macht keinen Unterschied:
Can't call method "colorResolve" on an undefined value at ./FHEM/02_RSS.pm line 213.
Can't call method "jpeg" on an undefined value at ./FHEM/02_RSS.pm line 450.
Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 116.
Lediglich die Zeile mit dem Blocking ist hinzugekommen.
Danke für die Info. Ich schaue es mir demnnächst an.
Viele Grüße
Boris
Hallo Boris,
danke für Deine Unterstützung.
Mach Dir keinen Streß deswegen, denn ich sag mal so: ich verwende einfach die alte Version weiter, die tut alles, so wie ich es mir vorstelle und mit der kann ich sogar meine heißgeliebten Linien zeichnen :)
Hallo Boris,
ich glaube, Du hast einfach die Sprungmarke SKIPBG an die falsche Stelle gesetzt, deshalb existiert bei nicht definiertem Background gar kein GD-Objekt, in welches das Layout geschrieben werden und das dann zurückgeliefert werden kann.
Durch geschicktes Umstellen im Code läuft das Modul jetzt bei mir ohne Backgrouddefinition, ich habe aber noch nicht getestet, ob es auch mit BG noch funktioniert. Vielleicht befasse ich mich heute abend noch einmal damit.
Viele Grüße
Udo
Ich habe mal ein diff erstellt (da ist auch meine Lieblingsfunktion Linienzeichnen schon mit drin) mit der Bitte um wohlwollende Prüfung :)
Viele Grüße
Udo
Linienzeichnen: Link (http://forum.fhem.de/index.php?topic=12776.0)
so... Feierabend... endlich zu Hause und Zeit zum Testen.
Zu testen sind m.E. Fälle:
1. Attribut bg nicht definiert => getestet, funktioniert nun (hat vorher bei mir zum Absturz von fhem geführt)
2. Attribut bg definiert, aber Verzeichnis nicht existent => getestet, funktioniert
3. Attribut bg definiert, Verzeichnis existent, aber leer => getestet, funktioniert
4. Attribut bg definiert, Verzeichnis existent, enthält Hintergrundbild in passender Größe (kein resize notwendig) => getestet, funktioniert
5. Attribut bg definiert, Verzeichnis existent, enthält Hintergrundbild in anderer Größe (resize notwendig) => getestet, funktioniert
Zitat von: betateilchen schrieb am Mo, 29 Juli 2013 19:08Zu testen sind m.E. Fälle:
Danke! Ich liebe systematisch getestete Patches!
Gepatcht, geprüft, dokumentiert und eingecheckt. Morgen per Update verfügbar.
Viele Grüße
Boris
Hallo Boris,
nix zu danken, war ja auch in meinem eigenen Interesse :)
Was mir in dem Modul noch sehr gut gefallen würde: wenn man das "rgb" evaluieren könnte, sodass die Farbe für das nächste item per { irgendwelcheAbhängigkeiten } dynamisch festgelegt werden kann.
Zitat von: betateilchen schrieb am Mo, 29 Juli 2013 20:32Hallo Boris,
nix zu danken, war ja auch in meinem eigenen Interesse :)
Was mir in dem Modul noch sehr gut gefallen würde: wenn man das "rgb" evaluieren könnte, sodass die Farbe für das nächste item per { irgendwelcheAbhängigkeiten } dynamisch festgelegt werden kann.
Ungetestet: versuche doch bitte mal in
if($cmd eq "rgb") {
$params{rgb}= $def;
}
das
$def
durch
AnalyzePerlCommand(undef, $def)
zu ersetzen.
Grüße
Boris
Hallo Boris,
das funktioniert grundsätzlich, ist aber nur bedingt abwärtskompatibel,
das funktioniert alles korrekt:
rgb { return "7F7F7F"; } # grau
rgb { "00FF00" } # grün
rgb "00FFFF" # türkis
aber das funktioniert nicht mehr:
rgb ffffff # weiss
Ich habe das bei mir jetzt mal so eingebaut und die Layouts geändert. Mit den zusätzlichen Anführungszeichen kann ich leben :)
Eine tatsächliche Evaluierung mache ich morgen. Aber grundsätzlich gehe ich davon aus, dass es so funktioniert.
Viele Grüße
Udo
-------------------------------
edit: es funktioniert :)
rgb { if(ReadingsVal("out_Balkon", "temperature", "n/a") < 23.7) {"00FF00"} else {"FF0000"} }
(http://up.picr.de/15339474ow.png)
(http://up.picr.de/15339475gc.png)
So funktioniert es auch abwärtskompatibel:
if($cmd eq "rgb") {
$def= "\"$def\"" if(length($def) == 6 && $def =~ /[[:xdigit:]]{6}/);
$params{rgb}= AnalyzePerlCommand(undef, $def);
Hallo Boris,
bin gerade auf ein "kleines" Problem in der RSS-Generierung gestoßen.
Folgende Einträge in der Layout-Datei
text 220 260 {if(ReadingsVal("gds","a_valid","")){"gültig von: ".ReadingsVal("gds","a_onset","?")." bis: ".ReadingsVal("gds","a_expires","?")}}
text 220 300 { "gültig von: bla" }
liefern diese Ausgabe:
(siehe Anhang / see attachement)
Wird ein Text mit Umlauten "direkt" übergeben, wird der Text ("gültig von: bla") absolut korrekt im RSS dargestellt.
Wird der Text über eine Perl-Evaluierung zurückgeliefert, werden Umlaute falsch dargestellt.
Wen oder was kann man dafür verantwortlich machen?
Viele Grüße
Udo
Hallo Udo,
Zitat von: betateilchen schrieb am So, 25 August 2013 21:44Folgende Einträge in der Layout-Datei
text 220 260 {if(ReadingsVal("gds","a_valid","")){"gültig von: ".ReadingsVal("gds","a_onset","?")." bis: ".ReadingsVal("gds","a_expires","?")}}
text 220 300 { "gültig von: bla" }
Wird ein Text mit Umlauten "direkt" übergeben, wird der Text ("gültig von: bla") absolut korrekt im RSS dargestellt.
Wird der Text über eine Perl-Evaluierung zurückgeliefert, werden Umlaute falsch dargestellt.
In beiden Fällen wird alles ab dem vierten Token durch AnalyzePerlCommand gefüttert (siehe
fhem.pl), was im wesentlichen eval darauf losläßt und das Ergebnis oder die Fehlermeldung zurückliefert. Ich würde an Deiner Stelle in
fhem.pl mit dem Debugging ansetzen, zunächst aber prüfen, ob nicht einfach nur die ü in derselben Datei unterschiedlich kodiert sind. Kann zwar eigentlich nicht sein, aber wer weiß...
Viele Grüße
Boris
Gibt es dazu einen Workaround?
Das Problem scheint noch zu bestehen.
Habe einen Workaround gefunden:
text 5 60 { my $text=ReadingsVal('Wetterdienst','a_headline','Keine Warnung'); $text = decode('utf-8',$text); return $text }
Dann werden die Umlaute korrekt angezeigt.
Vom 26.08.2013 bis 18.12.2014 ist eine sehr lange Zeit.
Ich denke nicht, dass das Problem mit den Umlauten tatsächlich immer noch besteht. Bei mir sind jedenfalls schon sehr lange alle Umlaute korrekt dargestellt, sonst wäre dieser Thread nicht so lange in der Versenkung verschwunden.
Die Konvertierung von UTF8 ist schon lange (nicht nur aufgrund der aufgetretenen Problematik in RSS) Bestandteil von fhem und steht mit der Funktion utf8ToLatin1() in der fhem.pl zur Verfügung:
text .50 425 { utf8ToLatin1(ReadingsVal("gds","a_headline","")) }
Das wurde meines Wissens auch schon an anderer Stelle im Forum so vorgeschlagen.
Ohne Workaround ist das bei mir noch so.
Update war gestern.
Nochmal: ich kann mir nicht vorstellen, dass Dein Problem noch besteht, wenn Du die Konvertierung mit ut8ToLatin1() machst, so wie ich das beschrieben habe.