Kindle als Fhem-Display

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

Vorheriges Thema - Nächstes Thema

Spezialtrick

#15
Weiß jemand wie man vorgeht, wenn die FHEM Oberfläche verschlüsselt ist?
FHEM - Debmatic - Zigbee2MQTT - Homekit

mattes1007

Hallo,

habe jetzt alles so gemacht, wie beschrieben.
Leider klappt es mit der Ausgabe der svg Datei nicht.
Sie wird zwar erstellt, aber man sieht beim Aufruf nur das FHEM Logo.

Fehlermeldung siehe Bild.

Jemand einen Tipp ?

Gruß mattes

alexmetz

#17
Zitat von: mattes1007 am 18 Mai 2014, 12:36:25
Hallo,

habe jetzt alles so gemacht, wie beschrieben.
Leider klappt es mit der Ausgabe der svg Datei nicht.
Sie wird zwar erstellt, aber man sieht beim Aufruf nur das FHEM Logo.

Fehlermeldung siehe Bild.

Jemand einen Tipp ?

Gruß mattes

funktioniert die Vorlagedatei? Falls ja, dann ist in deinem Code ein Fehler. Guck doch mal in der produzierten svg an der Stelle, die im Fehler angegeben wird bzw. häng mal die svg als svg an, damit sie hier jemand anschauen kann. Und häng dann am besten den Code auch noch an.

Zitat von: Spezialtrick am 16 Mai 2014, 11:32:43
Weiß jemand wie man vorgeht, wenn die FHEM Oberfläche verschlüsselt ist?

teste mal, ob Du mit dem Browser auf folgenden URL zugreifen kannst (vorher an Deine Einstellungen anpassen):
http://user:passwd@fhem-ip:8083/fhem/www/images/KindleDisplay.png

Wenn das klappt, müsstest Du beim onlinescreensaver statt
IMAGE_URI="http://fhem-ip:8083/fhem/www/images/KindleDisplay.png"
folgendes:
IMAGE_URI="http://user:passwd@fhem-ip:8083/fhem/www/images/KindleDisplay.png"
schreiben. Hoffe es geht dann so.

Viele Grüße,

Alex.
FHEM auf RaspberryPi 4
Homematic

mattes1007

Danke für die Antwort.
Hat sich erledigt. Hab mal die Seite mit Firefox geöffnet.
Und da hatte ich es gleich  :)

Gruß mattes

Spezialtrick

Zitatteste mal, ob Du mit dem Browser auf folgenden URL zugreifen kannst (vorher an Deine Einstellungen anpassen):
Code: [Auswählen]
http://user:passwd@fhem-ip:8083/fhem/www/images/KindleDisplay.png

Wenn das klappt, müsstest Du beim onlinescreensaver statt
Code: [Auswählen]
IMAGE_URI="http://fhem-ip:8083/fhem/www/images/KindleDisplay.png"
folgendes:
Code: [Auswählen]
IMAGE_URI="http://user:passwd@fhem-ip:8083/fhem/www/images/KindleDisplay.png"
schreiben. Hoffe es geht dann so.

Viele Grüße,

Alex.

Ich habe versucht Variablen in die config.sh und in die update.sh einzubauen. Der Variante ist aber einfacher und funktioniert. :) Danke! Nun wird das Layout angepasst. :)
FHEM - Debmatic - Zigbee2MQTT - Homekit

mattes1007

#20
Soweit läuft das ganze jetzt bei mir. Nur mit den Daten das klappt nicht so, wie ich will  :(

So hab ich das in der fhem.cfg eingetragen

define kindledisplay_a at +*00:01:00 trigger kindledisplay_trigger
attr kindledisplay_a room KindleDisplay

define kindledisplay_trigger dummy
attr kindledisplay_trigger room KindleDisplay

define kindledisplay_n notify kindledisplay_trigger {kindledisplay(Value("myTemp_aussen"),Value("JSN_24"))}
attr kindledisplay_n room KindleDisplay


so sieht mein log von myTemp_aussen aus

2014-05-18_20:32:03 myTemp_aussen temperature: 18.12
2014-05-18_20:32:03 myTemp_aussen Vcc: 2995
2014-05-18_20:33:03 myTemp_aussen temperature: 18.06
2014-05-18_20:33:03 myTemp_aussen Vcc: 2995


wie muss ich jetzt das notify abändern, damit ich die Temperatur angezeigt bekomme ??

{ ReadingsVal("myTemp_aussen","temperature","?"). "°C" }

so bekomme ich die Werte angezeigt, nur klappt es nicht, wenn ich das anstelle von value verwende .....

Gruß mattes

edit

hiermit läuft es jetzt schon mal ohne Fehlermeldung

define kindledisplay_n notify kindledisplay_trigger {kindledisplay{ ReadingsVal("myTemp_aussen","temperature","")},{ ReadingsVal("JSN_24","temperature","")}}

Leider werden aber immer noch nicht die Temperaturwerte eingetragen  :-[ sondern das :

Aussen:
HASH(0x1c5ddf0) °C
Wohnzimmer:
HASH(0x1abad18) °C

letzte Aktualisierung: 20.05.2014 20:23:20


Wo könnte jetzt der Fehler liegen ?

Spezialtrick

Ich habe es nun zeitlich geschafft mich um den Kindle zu kümmern und habe es soweit hinbekommen. Der Kindle wird trotz FHEM Verschlüsselung aktualisiert und zeigt die Temperaturen dort an, wo sie hingehören. Leider bezieht die Anzeige zwei der angezeigten Temperaturen von 1-Wire Sensoren, die vier Stellen hinter dem Komma angeben. Gibts es eine Möglichkeit, diese auf eine Stelle hinter dem Komma zu runden? Ich habe es so versucht, aber leider bekomme ich es nicht hin, es sprechend einzubinden:

{ sprintf("%.1f", ReadingsVal("OWX_28_13C458050000","temperature","0")) " °C" }

Auszug aus meiner Fhem.cfg:

define kindledisplay_a at +*00:01:00 trigger kindledisplay_trigger
attr kindledisplay_a group Kindle
attr kindledisplay_a room Wohnzimmer

define kindledisplay_trigger dummy
attr kindledisplay_trigger group Kindle
attr kindledisplay_trigger room Wohnzimmer

define kindledisplay_n notify kindledisplay_trigger {kindledisplay(ReadingsVal("OWX_28_13C458050000","temperature","0"),ReadingsVal("OWX_28_589C58050000","temperature","0"),ReadingsVal("FHEMduino_KW9010_35","temperature","0"),ReadingsVal("FHEMduino_KW9010_35","humidity","0"))}
attr kindledisplay_n group Kindle
attr kindledisplay_n room Wohnzimmer


Auszug meiner der 99_Utils.pm:

sub
kindledisplay
{

### Definition der Beschriftungen ###
  my $schalter1 = 'Alarmanlage:';
  my $schalter2 = 'Schalter:';
  my $schalter3 = 'Lampe:';

  my $zimmer1 = 'Wohnzimmer:';
  my $zimmer2 = 'Schlafzimmer:';
  my $zimmer3 = 'Außen:';

### relativer Pfad zur Vorlagedatei und Ausgabedatei ###
  my $Vorlagedatei = './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 = $_[0]; ### Alternativ:   my $tmp1 = Value("bz_Temp");
  my $hum1 = $_[10];
  my $temp2 = $_[1];
  my $hum2 = $_[11];
  my $temp3 = $_[2];
  my $hum3 = $_[3];
  my $status1 = $_[4];
  my $status2 = $_[5];
  my $status3 = $_[6];

### wer mag: ersetzt (on|off) durch (EIN|AUS) ###
  $status1 =~ s/on/AN/;
  $status1 =~ s/off/AUS/;
  $status2 =~ s/on/AN/;
  $status2 =~ s/off/AUS/;
  $status3 =~ s/on/AN/;
  $status3 =~ s/off/AUS/;


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


### 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/SCHALTER1/$schalter1/;
  $svgdaten =~ s/STATUS1/$status1/;

  $svgdaten =~ s/SCHALTER2/$schalter2/;
  $svgdaten =~ s/STATUS2/$status2/;

  $svgdaten =~ s/SCHALTER3/$schalter3/;
  $svgdaten =~ s/STATUS3/$status3/;

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

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

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

  $svgdaten =~ s/DATUM/$Datum/;
  $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 &");

Log 1, "KindleDisplay aktualisiert"
}


Außerdem würde ich den Logeintrag "KindleDisplay aktualisiert" gerne in eine eigene Dateien loggen. Da fehlt mir jedoch jede Idee. Hat jemand einen Vorschlag?
FHEM - Debmatic - Zigbee2MQTT - Homekit

alexmetz

versuch mal das ReadingsVal zunächst in eine Variable zu lesen und diese dann mit sprintf zu bearbeiten. Hatte auch ähnliche Probleme.

Gruß,
Alex
FHEM auf RaspberryPi 4
Homematic

Spezialtrick


Zitat von: alexmetz am 28 Mai 2014, 23:03:01
versuch mal das ReadingsVal zunächst in eine Variable zu lesen und diese dann mit sprintf zu bearbeiten. Hatte auch ähnliche Probleme.

Gruß,
Alex

Kannst du das ein wenig ausführen? Bin noch nicht so lange dabei und ich weiß ehrlich gesagt nicht genau was du meinst.
FHEM - Debmatic - Zigbee2MQTT - Homekit

alexmetz

#24
so in der Art:
my $puffer = ReadingsVal("OWX_28_13C458050000","temperature","0");
my $ergebnis = sprintf("%.1f", $puffer);

und wenn das geht, dann zusammenfassen:
my $ergebnis = sprintf("%.1f", ReadingsVal("OWX_28_13C458050000","temperature","0"))." °C";

das sprintf musst Du einer Variablen zuweisen.
ich versteh aber bei deiner zeile auch nicht, weshalb geschweifte Klammern drum sind und was das " °C" am Schluss soll. Das müsstest Du mit
." °C"
anschliessen, wenn es an den String angehängt werden soll.

Hoffe das stimmt halbwegs, bin auch kein perl experte.

Gruß,
Alex.

UPDATE 29.5.2014 9:26:
mir sind noch paar Sachen eingefallen:
1. ich finde es mittlerweile übersichtlicher, die Werte in der kindledisplay-Funktion selbst abzufragen statt sie als Pataneter zu übergeben. Das erhöht v.a. beim Testen die Übersichtlichkeit.
2. warum machst Du das ReadingsVal nochmal, Du hast den Wert doch schon in $_[0].
3. Nur ne Idee zum Loggen. Evtl kannst Du ein Filelog für den trigger definieren. Das sagt aber dann natürlich nix über den Erfolg der kindledisplay-Funktion
FHEM auf RaspberryPi 4
Homematic

ferenc

Hallo, habe alles nach der Anleitung gemacht, bekomme auch eine mit Daten gefüllte "KindleDisplay.svg" Datei.
Nun benötigt man ja aber noch die Konvertierung in eine png-Datei. Wie funktioniert das nun auf einer Fritzbox 7390 ohne freetz?
Angeblich soll es ja mit dem SVG-Modul funktionieren, dazu habe ich aber auch nach langer Suche nichts passendes gefunden.
Kann mir jemand helfen? Wie konvertiert man diese Datei mit dem SVG-Modul?

P.A.Trick

OT: Geht das auch mit dem Tolino Vision?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

ferenc

@chris1284
Danke für deine Antwort , ich habe auch eine Weile probiert,aber es leider nicht hinbekommen. Den Syntax, den du aufgeschrieben hast, ist für das RSS-Modul, dieses läuft aber leider nicht auf der Fritzbox.
Wenn ich die Zeile in 99_myUtils.pm einfüge, kommt dann folgende Fehlermeldung im Log:

2014.07.21 21:22:13 1: plotAsPng(): Cannot create plot as png image for "./www/images/KindleDisplay": Can't locate Image/LibRSVG.pm in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2 /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2 /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at ./FHEM/98_SVG.pm line 1618.

Ich habe auch die Datei LibRSVG.pm gesucht, aber auf der FritzBox nicht gefunden.

StefanStrobel

Hallo Alex,

Super Idee, einen Kindle als Display zu benutzen. Ich bin gerade dabei das auf meinem Kindle 4 nachzubauen. Der Onlinescreensaver scheint da nicht verwendbar zu sein, da er für den Kindle PaperWhite gedacht ist und dort im Gegensatz zum Kindle4 upstart verwendet wird. Aber ich denke das bekomme ich noch hin.

Das mit der SVG-Konvertierung hab ich mir mal angesehen. Im SVG-Modul wird dafür die librsvg verwendet. Die erzeugt zwar PNGs, aber leider kann man sie wohl nicht dazu bringen PNGs im 8-Bit Grayscale-Mode zu erzeugen. Imagemagick ist also nicht verkehrt.

Ich hab auch mal angefangen, ein Modul aus der Idee zu bauen. Das finde ich eleganter als 99_utils.pm mit Triggern etc. Sobald das etwas ausgereifter ist, poste ich es hier.

Gruss
   Stefan

alexmetz

Hallo Stefan,

freut mich! Wegen Kindle4 kannste mal in den Links am Anfang des 1. Beitrags gucken, die basieren (ausser onlinescreensaver) alle auf Kindle4 .

Gruß,
Alex
FHEM auf RaspberryPi 4
Homematic