Hauptmenü

FHEM mit bunten Bildern

Begonnen von Prof. Dr. Peter Henning, 22 März 2015, 15:49:50

Vorheriges Thema - Nächstes Thema

RAM5869

#30
Hallo Zusammen,

ich versuche seit einiger Zeit SVG-Widgets in FHEM zu nutzen und habe dazu ein Beispiel aus pah FHEM-Buch verwendet. Leider wird mir in FHEM nicht das gewünschte SVG-Widget angezeigt, sondern stattdessen nur noch einmal die gesamte FHEM Website (siehe Anhang).
Hier mal der Code aus meiner 99_Utils.pm:

package main;
use strict;
use warnings;
use POSIX;

sub FW_p0(@);
use vars qw($FW_RET);
use vars qw($FW_RETTYPE);
use vars qw(%FW_webArgs);

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
  $data{FWEXT}{"/SVGX_widget"}{FUNC} = "SVGX_widget";
  $data{FWEXT}{"/SVGX_widget"}{FORKABLE} = 1;
}

sub
SVGX_widget($)
{
  my ($arg) = @_;
  my $type = $FW_webArgs{type};
  my $subtype = $FW_webArgs{subtype};
  my @size=split('x',($FW_webArgs{size} ? $FW_webArgs{size} : "320x240"));
  $FW_RETTYPE = "image/svg+xml";
  $FW_RET="";
  FW_p0 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 320 210" width="'.$size[0].'px" height="'.$size[1].'px">';
  if($type eq 'colorcircle')
  {
    my $p1 = $FW_webArgs{p1};
    my $raw1;
    if( $p1 =~ /\d*(\.\d*)?/ )
      {
      $raw1 = $p1;
      } else {
      $raw1 = ReadingsVal($FW_webArgs{dev},$p1,0);
      }
      my $color="#".Color::pahColor(14,20,27,$raw1,2);
      FW_p0 '<circle cx="115" cy="105" r="50" stroke="black" stroke-width="3" fill="'.$color.'"/>';
   }
  FW_p0 '</svg>';
  return ($FW_RETTYPE, $FW_RET);
}


Das stateFormat Attribut im Device habe ich so definiert:

attr Dachboden_Temperatur stateFormat <embed src='https://192.168.1.3:8083/fhem/SVGX_widget?type=colorcircle&p1=temperature&size=32x32'/>

Hat jemand eine Idee wo mein Fehler liegt?

Prof. Dr. Peter Henning

Ich bin nur durch Zufall auf diesen Post gestoßen, weil der Beginn des Threads ja nun wirklich ein paar Jährchen in der Vergangenheit liegt. Ich kann die Frage nicht sofort beantworten, weil ich selbst erst einmal wieder über das Thema nachdenken muss. Werde mir also das nicht funktionierende Beispiel gerne ansehen - aber vermutlich dieses Jahr nicht mehr ...

LG

pah

RAM5869

Hallo pah,

das wäre toll wenn du dir das nochmal anschauen könntest.
Mein letzter Stand war, dass es wohl am verwendeten Browser liegt.
Mein Browser im Anhang falsch es hilft.

Gruß

betateilchen

Die verwendete Funktion heißt nicht FW_p0(), sondern FW_pO() (das ist ein Großbuchstabe O, keine Null)

Eigentlich sollte es dazu aber auch eine entsprechende Fehlermeldung im FHEM-Log geben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning