Kindle als Fhem-Display

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

Vorheriges Thema - Nächstes Thema

alexmetz

weiß nicht, ob das was hilft, aber mein Paperwhite 2 zickt auch manchmal, d.h. plötzlich macht er das auto update nicht mehr. Ist allerdings keine Regelmäßigkeit festzustellen. Manchmal läufts ein paar Tage, manchmal nur paar Stunden. Ich reboote den Kindle dann einfach. Müsste bei Gelegenheit mal alles mitloggen...

LG
Alex.
FHEM auf RaspberryPi 4
Homematic

AHA1805

#61
Hallo zusammen,

Im Grunde funktioniert es.
Jetzt habe ich nur ein Problem mit dem Ausführen des convert Befehls.

Ich habe mir jetzt gedacht,
ich lasse das SVG File durch einen at alle 2 Minuten erstellen.
Parallel soll auf dem Beagbone ein Script mit Root Rechten laufen, welches überprüft ob ein neues SVG File vorhanden ist,
und wenn ja dieses in ein PNG File konvertieren.

#!/bin/sh
# ----------------------------------------------------------------------
# Soll für den Kindle gehören
#
# Autor: Hannes
# Lizenz: GPL
# Version: 0.1
# PRG-Name: konvert.sh
# ----------------------------------------------------------------------

svgfile=/opt/fhem/www/images/KindleDisplay/wetter.svg
pngfile=/opt/fhem/www/images/KindleDisplay/wetter.png


# Check root-Rechte
# -----------------
if [ "`id -gn`" != "root" ]; then
echo; echo "Script bitte mit root-Rechten starten."; echo; exit 1
fi

# Verzeichnis wechseln
# -----------------



ls -l /opt/fhem/www/images/KindleDisplay/wetter.*

echo "Überprüfung von $svgfile ..."

i=0
while true
do
     i=$((i+1))
     if [ -e $svgfile ] # existiert das svg File
     then
         sleep 5
         cd /opt/fhem/www/images/KindleDisplay
         convert $svgfile  -type GrayScale -depth 8 $pngfile
         rm $svgfile
         ls -l /opt/fhem/www/images/KindleDisplay/wetter.*
         echo "[$i] SVG File konvertiert."
     else
         echo "[$i] Das Quellfile $svgfile ist nicht vorhanden"
     fi
     sleep 60
done

echo "Script beendet!"




So der Gedanke, aber nun scheitere ich daran,
dass der Beagle beim Starten automatisch dieses Script mit Root Rechten startet.
So dass dieses Script parallel zu FHEM läuft.

Zusätzlich hätte ich damit den Vorteil, dass FHEM beim eigentlichen Konvertieren nicht geblockt ist.

Ich weiß, dass dies etwas OT ist, aber vielleicht hat ja jemand das gleiche Problem.

UPDATE
Leider habe ich das Starten eines asynchronen Scriptes nicht hin bekommen, so habe ich weiter gesucht und nun funktioniert der Aufruf auch aus
der Funktion kindledisplay in FHEM.
system("convert $Ausgabedatei.svg -type GrayScale -depth 8 $Ausgabedatei.png &");
Blockiert bei Euch, FHEM bei der Konvertierung auch für 3 Sekunden?
2014.09.03 22:01:46 1: KindleDisplay aktualisiert
2014.09.03 22:02:06 1: Perfmon: possible freeze starting at 22:02:03, delay is 3.227


Kann man das aufrufen von convert nicht auch asynchron machen, so das FHEM nicht auf die Rückgabe wartet?
Irgendwie funktioniert der Parameter & bei mir nicht richtig, ansonsten kann es doch eigentlich nicht sein.

Update2

Nun habe ich den BBB nochmals neu gestartet und plötzlich sind die Verzögerungen (hänger) weg !?!,
ich weiß zwar nicht warum aber freu mich total das es jetzt funktioniert.


Nochmals an alle, vielen Dank es schaut einfach absolut edel aus  :D
Schöne Grüße
Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

micomat

So, nachdem jetzt der Kindle #1 zufriedenstellend laeuft, und ich es geschafft habe einige zusaetzliche Daten darzzustellen, frage ich mich, wie ich es am besten anstelle, einen zweiten Kindle einzubinden. Da ich leider kein grosser Programmierer bin, bitte ich um Hilfe :)

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

alexmetz

@Markus:
willst Du am 2. Kindle dasselbe anzeigen wie am 1. oder was anderes? Ersteres wäre sehr unproblematisch. Du müsstest am Fhem gar nix ändern, sondern nur den 2. Kindle identisch wie den ersten einrichten.

Gruß,
Hades
FHEM auf RaspberryPi 4
Homematic

micomat

danke :) gleiches darstellen schaff soagr ich als Laie. aber ich möchte andere Infos darstellen
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

alexmetz

@Markus:
Der einfachste Weg ist wohl (auf die schnelle)
- eine 2. Vorlagedatei erstfllen
- die Funktion in 99_Myutils zu verdoppeln und mit den Werten für den 2. Kindle zu befüllen. Dabei darauf achten, dass Dateinamen etc unterschiedlich sind
- die defines in fhem.cfg ein zweites mal anlegen mit anderen namen
- im Kindle das richtige png runterladen.

LG
Hades
FHEM auf RaspberryPi 4
Homematic

micomat

darf euch mal kindle no1 vorstellen

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

StefanStrobel

#67
Hallo,

ich habe die Funktionalität zum Ersetzen der Texte in einer SVG-Date und zum Aufrufen der Konvertierung mal in ein Modul gepackt. Dann muss man keine MyUtils basteln und kann die Ersetzungen in der Fhem.cfg als Attribute setzen.
Für mehrere verschiedene SVGs / Kindles kann man einfach zwei Defines verwenden.

Beispiel:

define fr FileReplacer /opt/fhem/www/images/template1.svg /opt/fhem/www/images/status1.svg 60
attr fr DoPNG 1
attr fr UTF8-Encode 1
attr fr room Display


fr ist der Name des logischen "Replacers", FileReplacer der Name des Moduls, die 60 am Ende ist das Intervall.
Die Ersetzungen werden dann per Attributen gesetzt. Je ein Regex und ein Expr gehören zusammen. Die Regex definiert die Stelle, an der ersetzt wird, und die Expr holt den neuen Inhalt, meist per ReadingsVal.


attr fr Regex1 Haus Heizung aktiv
attr fr Regex2 22,5
attr fr Regex3 15,7
attr fr Regex4 23,4
attr fr Regex5 mittel

attr fr Expr1 ReadingsVal("WP", "Status", "")
attr fr Expr2 sprintf("%.1f", ReadingsVal("ZL", "Temp_Abluft", 0))
attr fr Expr3 sprintf("%.1f", ReadingsVal("ZL", "Temp_Aussen", 0))
attr fr Expr4 ReadingsVal("EnO_Thermostat1", "temperature", 0)
attr fr Expr5 ReadingsVal("ZL", "Stufe", 0)



Ohne DoPNG 1 wird keine PNG-Konvertierung gestartet (vielleicht kann man das Modul ja auch mal für andere Ersetzungen brauchen) und UTF8-Encode definiert dass beim Schreiben Zeichen nach UTF8 Konvertiert werden sollen. bei mir hat das sonst mit den Umlauten nicht gepasst.

Als Template habe ich einfach eine Grafik mit Inkscape entworfen und fiktive Zahlen reingeschrieben, die ich dann im Modul per Regex / Expr mit den realen Werten ersetze.
Bei mir läuft das so seit ein paar Wochen stabil. Vielleicht hilft es ja noch jemandem weiter.

Gruss
   Stefan

Edit: die aktuelle Version des Moduls ist eingecheckt.

micomat

Hallo Stefan,

danke fuer das Modul. Werde demnaechst testen da ich gestern einen zweiten Kindle 4 bestellt hab.
Der WAF bei diesen Teilen ist enorm :D

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

micomat

Hallo Stefan,

funktioniert :) Danke!

Gruß
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

micomat

#70
Eine Auffaelligkeit:
Das FHEM-Logo wird in der erzeugten SVG/PNG Grafik nicht angezeigt obwohl es in der Vorlage drin ist. Beim alten myUtils Modul hat das aber funktioniert. Any ideas?

EDIT: und wie bekomme ich die zeit der letzten aktualisierung wieder rein? bin leider nicht coder genug um mir aus dem myutils file das wieder zusammen zu basteln =(

EDIT2: kann ich denn ein readingsVal noch irgendwie "bearbeiten"? Ich moechte gern wieder on durch an und off durch aus ersetzen.

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

micomat

okay soweit. funktioniert :)
die uhrzeit hab ich mit { FmtDateTime(time()) } wieder rein bekommen.
aber das ersetzen von on zu an usw bekomme ich nicht gebacken =(
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

StefanStrobel

Hallo,

für Das "Last Update" hat das Modul ein eigenes Reading, das man beim Ersetzen verwenden kann:
Bei mir sieht das z.B. so aus:

attr fr2 Expr14 ReadingsVal("fr", "LastUpdate", "never")

Für das Umsetzen von on/off zu an/aus könntest Du den "?:" Operator von Perl nutzen (siehe http://perldoc.perl.org/perlop.html)
z.B.


attr fr2 Expr11 (ReadingsVal("XY", "Reading", "off") eq "on" ? "An" : "Aus")


Gruss
   Stefan

micomat

danke Stefan :)
werde das testen und wenn alles geht mal
den Wiki Artikel dazu anlegen


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

micomat

#74
Hallo zusammen,

ich hab den Wiki Artikel nun mal angelegt und hoffe nichts grundlegendes vergessen zu haben.
http://www.fhemwiki.de/wiki/Kindle_Display
Wenn jemand Zeit und Lust hat, bitte gerne Korrekturlesen. Deutsche Uebersetzung kommt vielleicht auch noch irgendwann.

Gruesse,
Markus
PS: Templates attached
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