Hallo!
Die FHEM Installation bei mir ist auf einem Raspberry Pi 4 mit 4Gbyte auf Ubuntu 20.04.1 LTS 64bit ausgeführt.
Beim Implementieren des TelegramBot bzw. dem Versenden von SVG-Graphen mittels plotAsPng bin ich drauf gekommen, dass die unterschiedlichen Farben zwar in der Legende korrekt dargestellt werden, allerdings nicht in der Grafik selbst. Die Linien sind alle schwarz.
Siehe auch hier angefügtes File svgDachDb.png.
Im Web-Interface sieht alles normal bzw. in Farbe aus. Siehe auch hier angefügtes File svgDachDb_web_screenshot.png
Zuerst dachte ich, es liegt am cmdSend Befehl vom TelegramBot.
Habe dann festgestellt, dass es wohl eher doch am printAsPng liegt weil der Export in ein File genau so aussieht wie das übertragene File an Telegram (svgDachDb.png), also ohne Farbe bei den Linien.
In anderen, meist recht alten Threads aus diesem Forum wurde noch auf ein Update der 98_SVG.pm bzw. das www/pgm2/svg_style.css verwiesen.
Da mein FHEM up2date ist denke ich nicht, dass alte Versionen der Module bei mir im Einsatz sind.
Die Abhängigkeiten lt. Wiki für printAsPng sind natürlich installiert und aktuell laut apt-get:
libimage-librsvg-perl 0.07-8build5
libgd-graph-perl 1.54~ds-2
libgd-text-perl 0.86-9
Gerade auch libimage-librsvg-perl (bzw. Perl Modul Image::LibRSVG), worauf in einigen Threads bei Problemen mit plotAsPng verwiesen wird ist definitiv da und up2date.
Habe auch versucht mit cpan eine neuere Version zu installieren, dürfte allerdings keine zu bekommen sein.
Langer Rede kurzer Sinn.
Hat jemand eine Idee wie ich meine Linien für den File-Export bzw. den TelegramBot in der lt. Web-Interface gewohnten Farbe hinbekomme?
Danke und bleibt gesund!
Markus
Hi,
ich hatte das gleiche Problem wie du. Damit ich meine Lösung teilen kann, habe ich mich extra registriert.
Drauf gekommen bin ich durch diesen alten Thread (https://forum.fhem.de/index.php?topic=32791.0) hier im Forum. Das Problem hat ausnahmsweise nicht mit dem Stylesheet zu tun, sondern vermutlich mit einer gepatchten libimage-librsvg-perl. Vor dem Update von Ubuntu 18.04LTS auf 20.04LTS ging es bei mir nämlich ebenfalls.
Letzlich muss die damals eingefügte RegEx-Befehlszeile in FHEM/98_SVG.pm auskommentiert (# davorstellen) oder gelöscht werden:
$svgdata =~ s/\.SVGplot\./\./g;
Letzlich sieht die Datei bei mir nun so aus:
--- 98_SVG_old.pm 2020-12-13 21:03:48.024076933 +0100
+++ 98_SVG.pm 2020-12-13 20:52:02.649492067 +0100
@@ -2439,7 +2439,7 @@
my ($w, $h) = split(",", AttrVal($plotName[0],"plotsize","800,160"));
$svgdata =~ s/<\/svg>/<polyline opacity="0" points="0,0 $w,$h"\/><\/svg>/;
- $svgdata =~ s/\.SVGplot\./\./g;
+ #$svgdata =~ s/\.SVGplot\./\./g;
eval {
require Image::LibRSVG;
Probier es mal aus!
@rudolfkoenig: Bitte mal reinschauen und ggf. einchecken.
Hallo und schönen 3. Advent ndschambar !
Ich danke Dir vielmals, Du hast mein Problem gelöst.
Auskommentieren der von Dir erwähnten Zeile und in Fhem ...
reload 98_SVG.pm
... und siehe da, alles in Farbe.
Ich war schon kurz davor manuell auf die neueste Version der Image::LibRSVG umzusteigen (https://debian.pkgs.org/sid/debian-main-arm64/libimage-librsvg-perl_0.07-8+b7_arm64.deb.html).
Das wäre dann das Build 7 gewesen (anstatt Standardmäßig bei Ubuntu 20.04.1 LTS mitgeliefert Build 5). Diese hätte allerdings auch Perl > 5.32.0-4 benötigt und hier schreibt ein User in einem anderen Thread (https://forum.fhem.de/index.php?topic=112649.0), dass er in der 5.32er Version von Perl mit Memory Leaks zu kämpfen hat.
Naja, tut jetzt auch nichts mehr zur Sache.
Mit Deinem Hint geht's ja jetzt und ich kann ansonsten keine Einschränkungen in der Funktion der plotAsPng Funktion erkennen.
Nochmal vielen Dank, dass Du Dein Wissen gepostet und einen User im Forum angelegt hast und eine den Umständen entsprechend schöne Vorweihnachtszeit!
Markus
@ndschambar Danke für den Hinweis, konnte das Problem auch lösen.
Thema schon etwas älter, hat mir aber bei der aktuellen Version von FHEM heute auch geholfen.
#$svgdata =~ s/\.SVGplot\./\./g;
in der 98_SVG.pm
Gruss
Enno
Oh wie schön, ich bin mit dem Problem nicht allein und bei mir hat der Patch auch geholfen. :)
Ich habe noch ein altes System mit einer älteren Perl-Version: 5.20.2
Da kommen die Farben auch ohne den Patch.
Aber bei meinem Hauptsystem:
Ubuntu 20.04.2 LTS
Perl v5.30.0
waren die Linen bei plotAsPng alle in Schwarz --> durch Entfernen der Zeile
$svgdata =~ s/\.SVGplot\./\./g;
in 98_SVG.pm sind sie wie im Browser von FHEMWEB in Farbe.
Vielleicht kann mann das ja offiziell machen?
//Roger
Hab auf debian bullseye aktualisiert.
sw-plots via telegram.
der fix hilft, plots jetzt farbig
pls check in to trunk!!
Zitat von: knopf_piano am 21 August 2021, 20:12:06
Hab auf debian bullseye aktualisiert.
sw-plots via telegram.
der fix hilft, plots jetzt farbig
pls check in to trunk!!
Hi, ist es möglich, den fix einzuchecken?
was mir grad noch aufgefallen ist, dass eine yellow-fill-spur im png als schwarze linie exportiert wird.
bei fill mit grün/blau funktioniert es.
habe aktuell den fix aktiv auf debian bullseye.
Package: libimage-librsvg-perl
Version: 0.07-8+b8
1. anhang: fhemweb screenshot
2. anhang: plotaspng-export
Ich habe diesen Beitrag uebersehen, vmtl weil plotAsPng in SVG.pm nicht von mir stammt.
Die erwaehnte Zeile zerstoert CSS Anweisungen, die praezisiert wurden, damit sie nur die SVG-Plots beeinflussen.
Mir fehlt die Fantasie vorzustellen, was der Sinn dieser Anweisung urspruenglich gewesen sein sollte.
Habe die Zeile auskommentiert und eingecheckt.
thx!
Guten Morgen,
Seit dem update gestern sind bei mir alle Linien in den gesendeten Plots schwarz.
RaspiOS Buster und FHEM wurden gestern aktualisiert.
Danke & Grüße
Frank
Zitat von: Frank_Huber am 23 Februar 2022, 08:32:23
Guten Morgen,
Seit dem update gestern sind bei mir alle Linien in den gesendeten Plots schwarz.
RaspiOS Buster und FHEM wurden gestern aktualisiert.
Danke & Grüße
Frank
kannst du die Version mal prüfen:
Package: libimage-librsvg-perl
Version: 0.07-8+b8
root@FHEM-HOF-BUSTER:~# apt list libimage-librsvg-perl
Auflistung... Fertig
libimage-librsvg-perl/oldstable,now 0.07-8+b5 armhf [installiert]
root@FHEM-HOF-BUSTER:~#
laut AptToDate Modul ist alles aktuell.
Habe jetzt erstmal einen restore der "alten" SVG.pm gemacht. damit ist erstmal wieder alles i.O.
Hallo, habe auch seit einigen Tagen nur noch Schwarz Weß Diagramme von meinen Plots die ich mit Telegram versende. Vorab war jahrelang alles gut. Ich nutze die aktuellste Buster Version. Fhem iat aktuell. Bei der Recherche habe ich gelesen, das ca. vor einem Jahr bei einigen Usern dieses Problem schonmal aufgetreten ist. Daraufhin wurde bei einem der letzten Updates eine angepasste 98_SVG.pm eingestellt.
Nachdem ich die aktuelle Änderung hier rückgängig gemacht habe, wird wieder alles farbig dargestellt.
(ziehmlich am Ende der Datei; Forumsverweis ist an Änderungsstelle hinterlegt).
Nach dieser Erfahrung müsste das Problem an einer anderen Stelle liegen. Wäre es ggf. dann möglich die Standartversion (vorherige) wieder herzustellen
LG Jörg
Zitat von: rudolfkoenig am 16 Februar 2022, 10:51:47
Mir fehlt die Fantasie vorzustellen, was der Sinn dieser Anweisung urspruenglich gewesen sein sollte.
Das war wohl der Sinn:
https://forum.fhem.de/index.php/topic,32791.msg253080.html#msg253080
Danke fuer den Hinweis.
Ich habe das SVG Attribut plotAsPngfix eingebaut. Commandref Eintrag:
ZitatplotAsPngFix [0|1]
Betrifft nur die plotAsPng Funktion: Bestimmte LibRSVG Versionen können nicht mit komplexen CSS Selektoren umgehen, und das Ergebnis ist ein schwarz/weiß Bild. Falls dieses Attribut auf 1 gesetzt wird, werden die CSS Anweisungen vereinfacht.
Da ich es nicht testen konnte, brauche ich Feedback.
Zitat von: rudolfkoenig am 26 Februar 2022, 11:08:50
Danke fuer den Hinweis.
Ich habe das SVG Attribut plotAsPngfix eingebaut. Commandref Eintrag:
Da ich es nicht testen konnte, brauche ich Feedback.
Danke Rudi,
Ich werde es morgen testen und Dir Rückmeldung geben!
Grüße
Frank
Hallo Rudi,
Das Problem ist mit dem Fix bei mir gelöst.
Also das Attribut auf 1 ist der "alte" Stand.
Danke!
Grüße
Frank
Hallo Rudi,
auf meinem ältesten Raspberry funktioniert es nun auch wieder.
Danke und schönen Sonntag
Gerd
Moin Rudi,
bei mir ging es vorher ja schon mit der ersten Änderung. Nach dem Update geht es immer noch. :D
Mit dem Attribut kann man sich das gut einstellen, wie man es braucht. Sehr schön!
Gruss
Enno
Moin,
ich komme erst jetzt zum testen. Mit der neu geschaffenen Option funktioniert wieder alles :)
Vielen Dank für den tollen Support.
LG Jörg
Bei mir funzt es leider nicht (mehr)... :(
Ich habe den Rpi mit Bullseye neu aufgestzt und ein Backup von fhem zurückgespielt. Nun werden die Plots nur in s/w zu Telegram gesendet.
Das Attribut war vorher schon gesetzt, ich habe es probehalber mal auf 0 und wieder auf 1 gesetzt - ohne Erfolg. Die erforderlichen Bibliotheken sind alle auf dem neuesten Stand.
Update:
Die weiter oben angeführte Zeile in der 98_SVG.pm gibt es offenbar nicht mehr, sodass sie nicht auskommentiert werden kann.
Wenn ich das Attribut "plotAsPngFix" auf "1" setze (wie es vorher auch schon war), bleibt die Darstellung s/w.
Die drei Perl-Module haben folgende Versionsnummern - sind also aktuell:
libimage-librsvg-perl ist schon die neueste Version (0.07-8+b8)
libgd-graph-perl ist schon die neueste Version (1.54~ds-2)
libgd-text-perl ist schon die neueste Version (0.86-10)
Mehr Ansatzpunkte kann ich leider nicht finden.
Habt ihr noch eine Idee?
ZitatDie weiter oben angeführte Zeile in der 98_SVG.pm gibt es offenbar nicht mehr, sodass sie nicht auskommentiert werden kann.
Ist auch nicht noetig, das erwaehnte Attribut macht genau das: Falls der Wert 0 ist (Voreinstellung), dann ist die Zeile inaktiv ("auskommentiert"), falls der Wert 1, dann ist die Zeile aktiv. Es geht darum, dass aeltere LibRSVG Versionen nicht in der Lage waren mehr als eine Klasse in der CSS Anweisungen zu beruecksichtigen.
Die aufgefuehrten Pakete (lib*-perl) sind die Perl-Wrapper fuer die Bibliotheken, nicht die Bibliotheken selbst.
Danke für die Erleuterung.
Ok, ich habe das Attribut jetzt auf "0" und die Plots werden wieder farbig gesendet.
Allerdings wundert mich, dass ich unter "Buster" das Attribut auf "1" hatte seit das Thema relevant war und die Plots farbig übertragen wurden...
Aber egal, Hauptsache, es läuft wieder alles wie es soll... :D
Ich bin mir nicht sicher, ob ich in diesem Thread richtig bin. Ich versende Bilder via SignalBot und zwar kommt die SVG an, jedoch werden keine Linien gezeichnet (also nicht schwarz-weiß, sondern gar nicht), siehe Anhang.
Der Fix hier hilft dort nicht. Weiß jemand, wo ich weitersuchen kann? Das System ist auf dem neuesten Stand, FHEM auch.
Der Bot (aber an dem wird es nicht liegen, vermute ich)
Internals:
FD 32
FUUID 62528168-f33f-1115-5f0f-30b84c5f03f76435
FVERSION 50_Signalbot.pm:0.260080/2022-04-30
NAME SignalBot
NOTIFYDEV global
NR 456
NTFY_ORDER 50-SignalBot
STATE Connected to /org/asamk/Signal/_XXXXXXXXXX
TYPE Signalbot
VERSION Signalbot:3.8 signal-cli:0.10.5 Protocol::DBus:0.19
eventCount 2
model Raspbian GNU/Linux 10 (buster)
READINGS:
2022-07-25 13:09:57 account +XXXXXXXXX
2022-07-25 13:09:57 accountName FHEM
2022-07-25 13:11:45 lastError Unknown recipient XXXXX
2022-07-25 13:15:07 sentMsg
2022-07-25 13:15:11 sentMsgRecipient XXXXXXXX
2022-07-25 13:15:11 sentMsgTimestamp 25-07-2022 13:15:08
helper:
accounts 1
init 1
multi 1
signalpath /org/asamk/Signal/_XXXXXXXXX
version 1005
accountlist:
+XXXXXXXXXX
contacts:
+XXXXXXX YYYYYYY
Attributes:
allowedPeer XXXXXX
authDev GoogleAuth
comment nach Neustart
get SignalBot contacts all
defaultPeer XXXXXXX
registerMethod Voice
Das Plot
Internals:
DEF DbLog:SVG_DbLog_Wasserzaehler_1:CURRENT
FUUID 5f64e557-f33f-1115-4639-875d9eb9fbaf5acd
FVERSION 98_SVG.pm:0.258760/2022-03-23
GPLOTFILE SVG_DbLog_Wasserzaehler_1
LOGDEVICE DbLog
LOGFILE CURRENT
NAME WasserPlot
NR 387
STATE initialized
TYPE SVG
Attributes:
plotAsPngFix 0
DbLog
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./db.conf
DEF ./db.conf (Autobatterie:Spannung.*|shellyplug_s4:(relay_0_power|AnAus).*|Salzmenge:.*Distance.*|Blitzwolf1:.*ENERGY_Current.*|Temp_.*:myTemperatur.*|Stromzaehler:energy_differenz.*|Viessmann:.*NurGestern.*|DECT.*:temp.*|.*:.*emperatur.*|Heizungskeller:(Gasverbrauch|Wasser):.*|Sonoff_pow1:.*|DECT_Heizungskeller:power.*|.*thermostat_Clima:measured-temp.*|.*:.*(V|v)erbrauch.*|.*rssi_at_WLAN_HmUART.*|Regenmesser:rain_.*|W132_5:wind.*|Unifi:.*_(accesspoint|snr).*|hydr_Abgleich:median.*|HM_76A0B1_SenF:state.*|.*:(H|h)umidity.*|Feinstaubsensor:SDS0X1_PM.*)
FUUID 5e244bd9-f33f-1115-99ae-2017c7fcc35c975a
FVERSION 93_DbLog.pm:v4.12.7-s25800/2022-03-08
MODE asynchronous
MODEL MYSQL
NAME DbLog
NR 31
NTFY_ORDER 50-DbLog
PID 3976
REGEXP (Autobatterie:Spannung.*|shellyplug_s4:(relay_0_power|AnAus).*|Salzmenge:.*Distance.*|Blitzwolf1:.*ENERGY_Current.*|Temp_.*:myTemperatur.*|Stromzaehler:energy_differenz.*|Viessmann:.*NurGestern.*|DECT.*:temp.*|.*:.*emperatur.*|Heizungskeller:(Gasverbrauch|Wasser):.*|Sonoff_pow1:.*|DECT_Heizungskeller:power.*|.*thermostat_Clima:measured-temp.*|.*:.*(V|v)erbrauch.*|.*rssi_at_WLAN_HmUART.*|Regenmesser:rain_.*|W132_5:wind.*|Unifi:.*_(accesspoint|snr).*|hydr_Abgleich:median.*|HM_76A0B1_SenF:state.*|.*:(H|h)umidity.*|Feinstaubsensor:SDS0X1_PM.*)
STATE connected
TYPE DbLog
UTF8 0
dbconn mysql:database=fhem;host=localhost;port=3306
dbuser pi
eventCount 20
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 4.12.7
READINGS:
2022-07-25 13:19:27 CacheOverflowLastNum 0
2022-04-03 04:02:35 CacheOverflowLastState normal
2022-07-25 13:19:32 CacheUsage 19
2022-07-25 13:19:27 NextSync 2022-07-25 13:19:57 or if CacheUsage 1500 reached
2022-07-25 13:19:27 state connected
Attributes:
asyncMode 1
cacheLimit 1500
group intern
Kannst Du bitte testweise die .png Datei mit
{ WriteFile("www/images/plot.png", plotAsPng("WasserPlot")) }
erzeugen und diese Datei (/opt/fhem/www/images/plot.png) dann mit einem anderen Programm, z.Bsp. Browser anzeigen?
Das geht auch direkt ueber FHEM mit http://fhemhost:8083/fhem/images/plot.png
Ich tippe auf Probleme mit DbLog, waere nett, wenn Du das mit einem SVG auf FileLog Basis verifizieren koenntest.
Ich habe den oben genannten Befehl in FHEM eingegeben und dann in dem genannten Verzeichnis die Datei im Anhang gefunden. Die sieht so aus wie im SignalBot, also ohne Linien. In FHEM selbst wurde aber die Datei mit Linien angezeigt, also nach dem Befehl (siehe Screenshot).
Wg. Schwarzweiss tippe ich auf das hier erwaehnte Problem.
Wg. fehlende Linien auf DBLog.
Ich habe aber keine Erfahrung mit plotAsPng (stammt nicht von mir), noch mit DbLog.