weblink -- keine Update des browsers ?

Begonnen von roli, 13 November 2017, 11:33:37

Vorheriges Thema - Nächstes Thema

roli

Also ich versuche ein Bild ( Diagramm ) einzuspielen. 
Wenn ich einen  Button auslöse, so wird in Perl die Datei erzeugt und  ebenfalls  mittels fhem  ein Weblink define --
Doch leider wird kein Update durchgeführt !!
Wenn ich den Raum verlasse und dann wieder aufrufe erscheint das Objekt korrekt.   

Wenn sich ein Status ändert -- so wird dies ja auch reflektiert.  Wie kann ich dies lösen ?

Perl sequence:

# lösche das bisherige Object 
fhem ("delete group=Vorschau");

$tmp_str = basename( $filename, ".png");

        fhem ("define $tmp_str weblink htmlCode { rw_showgraph() } ");
fhem ("attr   $tmp_str   room   ElektroSpeicher_Ladekurve") ;
fhem ("attr   $tmp_str   group  Vorschau") ;
FHEM auf Debian Wheezy(RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp, GPIO based Relais-Schalter;i2c Bus
Integration von Sonnenbatterie Eco8;
Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

viegener

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

roli

Erst mal vielen Dank für den Hinweis.   
Ich habe es jetzt wohl  gelöst !!

Sprich meine Grafik  - Bilddatei wird aktualisiert    ( und ich bin mit den Nerven fast am Ende, da dies eine endlose testerei ist - was tut wie und was nicht ! )

Meine Lösung:

  Fhem config Auszüge :



define EH_Calc dummy
  attr EH_Calc alias   Berechne Ladezeit
  attr EH_Calc devStateIcon on:rc_RED:off .*:rc_GREEN:on

define EH_Kurve1 weblink iframe http://raspilan:80/fhem/graf.png?cachebust=1
  attr EH_Kurve1 htmlattr width="640" height="380"


# Manuelle Berechnung der Ladezeit durchführen
define n_EH_Calc    notify   EH_Calc:on { rw_EH_Berechne();; rw_ladekurve();; }
define n_EH_Calc2  notify   EH_Calc:off  trigger WEB JS:location.reload(true)



Meine PERL  Routine  --  rw_ladekurve


sub rw_ladekurve()
{

   my @x;
   my @y1;
   my @y2;
   my @y3;
   my $graph;
   my @data;
   my $gd;

   #  alle mögliche X Werte zuerst festlegen   
   $x[0] = -25;
   $x[1] = $E1;
   $x[2] = $EH_Avg_Temp + $EH_TempOffset;    # Korrigierter Wert
   $x[3] = $EH_Avg_Temp + $EH_TempOffset;    # Korrigierter Wert 
   $x[4] = $EH_Avg_Temp;                     # Normaler Wert
   $x[5] = $EH_Avg_Temp;                     # Normaler Wert
   $x[6] = $E2;
   $x[7] = $E2;
   $x[8] = 25;
   
   # Daten der LAdekurve
   $y1[0] = 480;
   $y1[1] = 480;
   $y1[2] = undef;
   $y1[3] = undef;
   $y1[4] = undef;
   $y1[5] = undef;
   $y1[6] = $S;
   $y1[7] = 0;
   $y1[8] = 0;   
   
   # Linien für wirkl. berechnung
   $y2[0] = $EH_Max_Dauer;
   $y2[1] = undef;
   $y2[2] = $EH_Max_Dauer;
   $y2[3] = 0;
   $y2[4] = undef;
   $y2[5] = undef;
   $y2[6] = undef;
   $y2[7] = undef;
   $y2[8] = undef;

   
    # Linien für wirkl. berechnung
   $y3[0] = $EH_Max_Dauer_Avg;
   $y3[1] = undef;
   $y3[2] = undef;
   $y3[3] = undef;
   $y3[4] = $EH_Max_Dauer_Avg;
   $y3[5] = 0;
   $y3[6] = undef;
   $y3[7] = undef;
   $y3[8] = undef; 
   
   @data = (\@x,\@y1,\@y2, \@y3);
   
   # Erzeuge Graph image
   $graph = new GD::Graph::linespoints(800, 500);
   
 
   
   # set parameters for graph
   $graph->set(
    transparent          => 0,
long_ticks => 1,
    title                => 'Ladekurven - Kennlinie',
text_space           => 10,
line_width           => 2,
skip_undef           => 0,
marker_size          => 2,
markers              => [1, 3, 7],

    x_label              => 'Temperatur',
x_min_value          => -25,
    x_max_value          =>  25,
    x_tick_number        => 50,
x_label_skip         => 5,

    y_label              => 'Ladezeit in Min',
    y_min_value          => 0,
    y_max_value          => 480,
    y_tick_number        => 16,
    y_label_skip         => 2,
);


# plot the data on the graph
my $gd = $graph->plot( \@data ) ;

# output file
    my $pathfile = "/var/www/fhem/graf.png";
open(PNG, ">$pathfile") or die $!;

# set output file handle PNG to binary stream
binmode PNG;
# print the image to the output file
print PNG $gd->png;
close PNG;


fhem ("set EH_Calc off");
# refresh  die  Graphic  für fhem
#fhem ("trigger EH_Kurve1 JS:location.reload(true)") ;
#fhem ("trigger WEB JS:location.reload(true)") ;

}


Meine Tests haben gezeigt, dass  die   fhem - trigger Aufrufe  aus PERL  keinerlei Wirkung haben.  Funktioniert nur über commando
aus der Config.   --Könnte noch Fehler in FHEM sein ? oder habe ich falsche Annahme.

weiterhin  ist  ?cacheburst=1   ebenfalls wichtig für den Dateinamen, da sonst die Datei im Cache gehalten wird und sich gar kein
update durchsetzt.

--  Auf jeden Fall  habe ich jetzt eine Lösung und hoffe andere können dies gebrauchen !
FHEM auf Debian Wheezy(RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp, GPIO based Relais-Schalter;i2c Bus
Integration von Sonnenbatterie Eco8;
Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

viegener

Zitat von: roli am 14 November 2017, 12:10:01
Meine Tests haben gezeigt, dass  die   fhem - trigger Aufrufe  aus PERL  keinerlei Wirkung haben.  Funktioniert nur über commando
aus der Config.   --Könnte noch Fehler in FHEM sein ? oder habe ich falsche Annahme.

weiterhin  ist  ?cacheburst=1   ebenfalls wichtig für den Dateinamen, da sonst die Datei im Cache gehalten wird und sich gar kein
update durchsetzt.

--  Auf jeden Fall  habe ich jetzt eine Lösung und hoffe andere können dies gebrauchen !

Schön, dass es geht.

Das die trigger aufrufe keinerlei Wirkung haben kann ich mir eigentlich nicht vorstellen, aber ich habe die Lösung auch nicht bei mir am Laufen. Was es heissen soll, dass die aus der Config. funktionieren verstehe ich nicht - meinst Du die fhem.cfg?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

roli

JA.
Siehe unten. Ich habe  eine Notify  eingefügt. Ich drücke den Button, welcher  über Notify on Regel die  Perl Routinen
zur Berechnung meiner Ladekurve und zur Erzeugung des Plot Grahp  aufrufen.

Zuletzt wird der Button wieder auf OFF gesetzt was das off notify auslöst und  trigger aufgerufen wird.  Nur so funktioniert es bei mir.

Siehe Screen shot zum besseren Verständnis was ich tue.
FHEM auf Debian Wheezy(RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp, GPIO based Relais-Schalter;i2c Bus
Integration von Sonnenbatterie Eco8;
Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag