Kindle als Fhem-Display

Begonnen von alexmetz, 25 März 2014, 22:59:15

Vorheriges Thema - Nächstes Thema

Timmy.m

#75
Hallo!

Tolles Projekt... ich arbeite auch gerade an einer Kindle-Lösung mit Wettersymbole. Kann man mit dem Tool FileReplacer auch mit Readings für "Regex" nutzen? Gelingt mir irgendwie nicht.

Grüße Tim

FHEM5.9@RaspPi.3B|HMLAN|CUL868V3|1Wire|HUE|FritzBox|BotVacDconnected|3xKindleDisplay|
FHEM2FHEM|
FHEM5.9@RaspPi.2B|nanoCul868|TCM310|JeeLinkClone|RFXTRX433E|ZWave|Zigbee|xiaomi
RaspberryMatic@RaspPi.3B+ in Planung

micomat

klar sind doch im Wiki ;)
readingsVal und co
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Timmy.m

Hallo Markus,

irgendwie werde ich nicht fündig.
In deinem Wiki Artikel finde ich auch nur den Hinweis
ZitatThe FileReplacer will replace the pattern XYZ with the ReadingsVal from Sensor1.
Ich möchte jedoch ein "Pattern" aus einem ReadingVal mit einem anderem ReadingVal ersetzen.

Grüße Tim
FHEM5.9@RaspPi.3B|HMLAN|CUL868V3|1Wire|HUE|FritzBox|BotVacDconnected|3xKindleDisplay|
FHEM2FHEM|
FHEM5.9@RaspPi.2B|nanoCul868|TCM310|JeeLinkClone|RFXTRX433E|ZWave|Zigbee|xiaomi
RaspberryMatic@RaspPi.3B+ in Planung

micomat

Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Timmy.m

#79
Ich habe SVG Symbole in meiner "Kindle Svg" eingebettet. Ein Wetter-Reading liefert mir den Namen für das aktuelle Wetter Icon. Dieses Icon soll in der Kindle SVG so umbenannt werden. Damit von meiner zweiten FileReplacer Routine die nicht umbenannten ICONs ausgeblendet werden können.


attr fr Expr80 { fhem "".ReadingsVal("YahooWETTER","fc4_icon",0)}
attr fr Regex80 { fhem "_1_".ReadingsVal("YahooWETTER","fc4_icon",0)}

FHEM5.9@RaspPi.3B|HMLAN|CUL868V3|1Wire|HUE|FritzBox|BotVacDconnected|3xKindleDisplay|
FHEM2FHEM|
FHEM5.9@RaspPi.2B|nanoCul868|TCM310|JeeLinkClone|RFXTRX433E|ZWave|Zigbee|xiaomi
RaspberryMatic@RaspPi.3B+ in Planung

micomat

interessant... hab ich mir auch schon ueberlegt. mir ist allerdings keine idee eingefallen, wie ich icons im svg suchen und ersetzen koennte.
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

trfr3ak

@Timmy.m
Ich habe bei meinem Setup auch Icons für die Wetterpräsentation benutzt, jedoch hab ich die nicht eingebettet, sondern verlinkt.
Jeder Wetterzustand hat eine andere Ziffer (bei Yahoo).
Beim ersetzten kann man dann genau wie beim String ersetzten vorgehen.
Hier ein Bild von meiner "Wetterstation"

micomat

Waere vermutlich auch fuer andere interessant, wenn du deinen Beispielcode hier postest.
In die Wiki kann ich ihn dann ebenfalls einbauen.

Gruesse,
Markus
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

trfr3ak

#83
Ok gerne =),
meine Perl-Kenntnisse sind leider gleich null und ich habe es noch wie ursprünglich mit einer myUtils.pm gemacht... vielleicht hilft es dennoch dem ein oder anderen:

99_myUtils.pm
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
1;


sub
kindledisplay
{


### relativer Pfad zur Vorlagedatei und Ausgabedatei ###
  my $Vorlagedatei = './www/KindleDisplay_Vorlage.svg';
  my $Ausgabedatei = './www/images/KindleDisplay';    ### Dateierweiterung svg bzw png wird automatisch angefügt

### die zu übergebenden Werte, man könnte hier auch direkt die einzelnen Werte abfragen ###
  my $temp1 = sprintf("%.1f", $_[0]);    ### Alternativ:   my $tmp1 = Value("bz_Temp");
  my $hum1 = $_[1];
  my $temp2 = sprintf("%.1f", $_[2]);
  my $hum2 = $_[3];
  my $temp3 = sprintf("%.1f", $_[4]);
  my $hum3 = $_[5];
  my $temp4 = sprintf("%.1f", $_[6]);

  my $tag1 = $_[7];
  my $info1 = $_[8];
  my $min1 = sprintf("%02d", $_[9]);
  my $max1 = sprintf("%02d", $_[10]);

  my $tag2 = $_[11];
  my $info2 = $_[12];
  my $min2 = sprintf("%02d", $_[13]);
  my $max2 = sprintf("%02d", $_[14]);

  my $tag3 = $_[15];
  my $info3 = $_[16];
  my $min3 = sprintf("%02d", $_[17]);
  my $max3 = sprintf("%02d", $_[18]);

  my $tag4 = $_[19];
  my $info4 = $_[20];
  my $min4 = sprintf("%02d", $_[21]);
  my $max4 = sprintf("%02d", $_[22]);

  my $nummer1 = $_[23];
  my $nummername1 = substr($_[24],0, 22);

  my $nummershow;

if($nummername1 eq "unknown"){
$nummershow = $nummer1;
}else{
$nummershow = $nummername1;
$nummershow =~ s/&//gi;
}
  #$nummershow = $nummer1;
  my $kalender = $_[25];

  my $wochentag = $_[26];

  my $tag1_icon = $_[27];
  my $tag2_icon = $_[28];
  my $tag3_icon = $_[29];
  my $tag4_icon = $_[30];
  my $tagh_icon = $_[31];

  my $wind = $_[32];
  my $pressure = "Luftdruck: ".$_[33]." hPa";
  my $condition = $_[34];



### Generiert die Anzeige für die Aktualisierungszeit ##
  my @now = localtime;
  $now[5] += 1900;
  my $Datum = sprintf("%02d",$now[3]).".".sprintf("%02d",$now[4]+1).".".$now[5];
  my $Uhrzeit = sprintf("%02d",$now[2]).":".sprintf("%02d",$now[1]).":".sprintf("%02d",$now[0]);
  my $Jetzt = $Datum." ".$Uhrzeit;
  $Datum = '';    ### weil ich das Feld DATUM in der Vorlagedatei leer haben will

  my @wtarray = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
  my $wochentag = $wtarray[$now[6]].",";
 
  my @marray = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
  my $datumanzeige = sprintf("%02d",$now[3]).". ".$marray[$now[4]];

### Vorlagedatei öffnen und in $daten einlesen ###
  my $svgdaten;
  open (DATEI,'<',$Vorlagedatei) or die $!;
    while(<DATEI>){
      $svgdaten = $svgdaten.$_;
    }
  close (DATEI);

### Platzhalter in der Vorlagedatei durch echte Werte ersetzen ###

  $svgdaten =~ s/TEMP1/$temp1/;
  $svgdaten =~ s/HUM1/$hum1/;

  $svgdaten =~ s/TEMP2/$temp2/;
  $svgdaten =~ s/HUM2/$hum2/;

  $svgdaten =~ s/TEMP3/$temp3/;
  $svgdaten =~ s/HUM3/$hum3/;

  $svgdaten =~ s/TEMP4/$temp4/;

  $svgdaten =~ s/TAG1/$tag1/;
  $svgdaten =~ s/INFO1/$info1/;
  $svgdaten =~ s/min1/$min1/;
  $svgdaten =~ s/max1/$max1/;

  $svgdaten =~ s/TAG2/$tag2/;
  $svgdaten =~ s/INFO2/$info2/;
  $svgdaten =~ s/min2/$min2/;
  $svgdaten =~ s/max2/$max2/;

  $svgdaten =~ s/TAG3/$tag3/;
  $svgdaten =~ s/INFO3/$info3/;
  $svgdaten =~ s/min3/$min3/;
  $svgdaten =~ s/max3/$max3/;

  $svgdaten =~ s/TAG4/$tag4/;
  $svgdaten =~ s/INFO4/$info4/;
  $svgdaten =~ s/min4/$min4/;
  $svgdaten =~ s/max4/$max4/;

  $svgdaten =~ s/KALENDER1/$kalender/;

  $svgdaten =~ s/WTAG/$wochentag/;
  $svgdaten =~ s/DATUM/$datumanzeige/;


  $svgdaten =~ s/NUMMER1/$nummershow/;

  $svgdaten =~ s/tag1_imageurl/$tag1_icon/;
  $svgdaten =~ s/tag2_imageurl/$tag2_icon/;
  $svgdaten =~ s/tag3_imageurl/$tag3_icon/;
  $svgdaten =~ s/tag4_imageurl/$tag4_icon/;
  $svgdaten =~ s/tagh_imageurl/$tagh_icon/;

  $svgdaten =~ s/WIND/$wind/;
  $svgdaten =~ s/LUFTDRUCK/$pressure/;
  $svgdaten =~ s/INFOH/$condition/;

  $svgdaten =~ s/AKTUALISIERUNG/$Jetzt/;




### geänderte Daten in neue Datei schreiben / vorhandene Datei wird überschrieben ###
  open (DATEI,'>',$Ausgabedatei.".svg") or die $!;
    print DATEI "$svgdaten";
  close (DATEI);

### in png umwandeln ###
  system("convert $Ausgabedatei.svg -type GrayScale -depth 8 $Ausgabedatei.png &");
  #system("rsvg-convert $Ausgabedatei.svg -o $Ausgabedatei.png &");
Log 1, "KindleDisplay aktualisiert"
}


und dann in der fhem.cfg folgendes:
define kindledisplay_n notify kindledisplay_trigger {kindledisplay(ReadingsVal("04Thermo","temperature","0"),ReadingsVal("04Thermo","humidity","0"),ReadingsVal("03Thermo","temperature", "0"),ReadingsVal("03Thermo","humidity", "0"),ReadingsVal("02Thermo","temperature", "0"),ReadingsVal("02Thermo","humidity", "0"),ReadingsVal("01Thermo","temperature","0"),ReadingsVal("MeinWetter", "fc2_day_of_week", "0"),ReadingsVal("MeinWetter","fc2_condition","0"),ReadingsVal("MeinWetter","fc2_low_c","0"),ReadingsVal("MeinWetter","fc2_high_c","0"),ReadingsVal("MeinWetter", "fc3_day_of_week", "0"),ReadingsVal("MeinWetter","fc3_condition","0"),ReadingsVal("MeinWetter","fc3_low_c","0"),ReadingsVal("MeinWetter","fc3_high_c","0"),ReadingsVal("MeinWetter", "fc4_day_of_week", "0"),ReadingsVal("MeinWetter","fc4_condition","0"),ReadingsVal("MeinWetter","fc4_low_c","0"),ReadingsVal("MeinWetter","fc4_high_c","0"),ReadingsVal("MeinWetter", "fc5_day_of_week", "0"),ReadingsVal("MeinWetter","fc5_condition","0"),ReadingsVal("MeinWetter","fc5_low_c","0"),ReadingsVal("MeinWetter","fc5_high_c","0"),ReadingsVal("Fritz_Box", "external_number", "0"),,ReadingsVal("Fritz_Box", "external_name", "0"),fhem("get Familienkalender text modeUpcoming 2"),$wday,ReadingsVal("MeinWetter","fc2_code","0"),ReadingsVal("MeinWetter","fc3_code","0"),ReadingsVal("MeinWetter","fc4_code","0"),ReadingsVal("MeinWetter","fc5_code","0"),ReadingsVal("MeinWetter","fc1_code","0"),ReadingsVal("MeinWetter","wind_condition","0"),ReadingsVal("MeinWetter","pressure","0"),ReadingsVal("MeinWetter","condition","0"))}

Im Anhang auch mal meine svg, die kann sich jeder aber auch selbst erstellen.
Ich hab lediglich einen String im href tag ersetzt:
z.B.
xlink:href="plain_weather/flat_black/svg/tag4_imageurl.svg"
hier wird dann tag4_imageurl durch den richtigen Namen ersetzt.
Was mir Kopfzerbrechen bereitet hat ist, dass keine absoluten Pfade mit dem imageconverter funktioniert haben... deswegen hab ich die Bilder in den www Ordner von Fhem kopiert.
Ich hoffe es ist etwas verständlich... Bei Zeit will ich auch die Methode zum ersetzten der Strings benutzten, ich blick aber mit Perl und Fhem noch nicht so ganz durch :O
Grüße
Jonas

micomat

danke :) mal sehen ob ich das mit meinem ebenfalls duerftigen perl-kenntnissen auf die file-replacer variante portieren kann :)
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Timmy.m

@Jonas
Das verlinken hatte ich, warum auch immer, nicht auf dem Schirm. Deine Lösung sieht wie in meinen Träumen aus.
Ich werde mal mit dem Verlinken weiter arbeiten... danke für die Hilfe!

Grüße Tim

FHEM5.9@RaspPi.3B|HMLAN|CUL868V3|1Wire|HUE|FritzBox|BotVacDconnected|3xKindleDisplay|
FHEM2FHEM|
FHEM5.9@RaspPi.2B|nanoCul868|TCM310|JeeLinkClone|RFXTRX433E|ZWave|Zigbee|xiaomi
RaspberryMatic@RaspPi.3B+ in Planung

micomat

Funktioniert auch mit dem File_Replacer :)

Welches Icon-Set verwendest Du denn da?
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200


micomat

danke :) werde sie mal auf das Yahoo wetter anpassen und sie uploaden. 
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

trfr3ak

sind schon angepasst, du musst nur den Code anstatt dem Icon verwenden:
fc1_code [.svg]