plotAsPng liefert Linien bzw. Graphen nur in Schwarz / Weiß

Begonnen von koeberl2, 24 November 2020, 17:23:41

Vorheriges Thema - Nächstes Thema

koeberl2

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

ndschambar

#1
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 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.

koeberl2

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

Joesky

@ndschambar Danke für den Hinweis, konnte das Problem auch lösen.
_______________
FREI STATT BAYERN

enno

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
Einfacher FHEM Anwender auf Intel®NUC

Roger

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
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

knopf_piano

Hab auf debian bullseye aktualisiert.
sw-plots via telegram.

der fix hilft, plots jetzt farbig

pls check in to trunk!!
zotac nano mit proxmox und ganz viel zeug drauf

knopf_piano

#7
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
zotac nano mit proxmox und ganz viel zeug drauf

rudolfkoenig

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.

knopf_piano

zotac nano mit proxmox und ganz viel zeug drauf

Frank_Huber

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

knopf_piano

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
zotac nano mit proxmox und ganz viel zeug drauf

Frank_Huber

#12
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.

jonien

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

sinus61


rudolfkoenig

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.

Frank_Huber

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

Frank_Huber

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

Maista

Hallo Rudi,

auf meinem ältesten Raspberry funktioniert es nun auch wieder.

Danke und schönen Sonntag

Gerd

enno

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
Einfacher FHEM Anwender auf Intel®NUC

jonien

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

locodriver

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.
fhem 6.0 auf Rpi3 Bullseye
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

locodriver

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?
fhem 6.0 auf Rpi3 Bullseye
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

rudolfkoenig

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.

locodriver

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
fhem 6.0 auf Rpi3 Bullseye
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

andies

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
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+); Perl: v5.28.1
SIGNALduino (433 MHz) und HM-UART (868 MHz)
Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

rudolfkoenig

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.

andies

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).
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+); Perl: v5.28.1
SIGNALduino (433 MHz) und HM-UART (868 MHz)
Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

rudolfkoenig

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.