Kindle als Fhem-Display

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

Vorheriges Thema - Nächstes Thema

Marlen

Ich hab gerade gesehen, dass die svg - Datei in Ordnung ist nur die png nicht.

Dann muss das Problem doch an
system("convert $Ausgabedatei.svg -type GrayScale -depth 8 $Ausgabedatei.png &");
liegen.

Hat da jemand eine Idee?

LG
  Marlen

Marlen

#601
Hat niemand eine Idee?

Das steht im log:
Zitatconvert-im6.q16: non-conforming drawing primitive definition `text-align' @ error/draw.c/RenderMVGContent/4301.

atmelfreak

Hallo Marlen,

so sieht mein Postcommand aus:
(rsvg-convert --background-color=white /opt/fhem/www/images/kindle_display.svg -o /opt/fhem/www/images/kindle_display.png && convert -rotate 90 /opt/fhem/www/images/kindle_display.png /tmp/kindle_display_quer.png && pngcrush -q -c 0 -m 4 -nofilecheck /tmp/kindle_display_quer.png /opt/fhem/www/images/KindleDisplay.png) &

Viele Grüße
Frank

AndreasS

Einen guten Tag zusammen,
ich nutze die Zeit in Quarantäne aktuell auch, um ein Kindle-Display zu basteln. Habe einen älteren Kindle Touch.
Folgende Befehle habe ich (anhand der Anleitung aus dem Wiki) eingegeben:

define kindledisplay FReplacer /opt/fhem/www/images/KindleDisplay_Vorlage.svg /opt/fhem/www/images/status1.svg 60
attr kindledisplay PostCommand convert /opt/fhem/www/images/status1.svg -type GrayScale -depth 8 /opt/fhem/www/images/status.png 2>/dev/null &
attr kindledisplay ReplacementEncode UTF-8
attr kindledisplay room Display

attr kindledisplay Rep01Regex Temp1
attr kindledisplay Rep01Reading AussenTemp
attr kindledisplay Rep01Format %.1f
attr kindledisplay Rep02Regex Temp2
attr kindledisplay Rep02Reading WWTemp
attr kindledisplay Rep02Format %.1f

Eine Fehlermeldung gab es zumindest nicht. Allerdings wird die PNG-Datei nicht erzeugt.
Die KindleDisplay_Vorlage.svg  (habe testweise die erste Vorlage aus dem ersten Posting verwendet) liegt an der richtigen Stelle, die kann ich per Browser auch problemlos öffnen. Die andere liegt wie gesagt gar nicht im Order.

Muss ich noch etwas tun, damit die Datei erzeugt wird? Imagemagick ist installiert. Und wenn es denn mal funktioniert, wie kann ich eigentlich festlegen, wie oft die Ausgabedatei aktualisiert wird?

Im Voraus schon mal vielen Dank für eure Mühe. Dieses Projekt ist super!

andi11

Wird diese Datei erzeugt? /opt/fhem/www/images/status1.svg ggf. z.b. mit Inkscape anschauen.
Dort sollten deine Readings schon drinstehen Also statt z.b. Temp1 die entsprechende Temperatur.

Falls die Datei existiert, was bringt die Linux Kommandozeile wenn du convert /opt/fhem/www/images/status1.svg -type GrayScale -depth 8 /opt/fhem/www/images/status.png 2>/dev/null & ausführst?
Zur sicherheit ohne das >/dev/null hinten dran, denn das schmeißt einige Ausgaben einfach weg die man im Normalbetrieb nicht braucht.

AndreasS

Zitat von: andi11 am 18 April 2020, 07:18:32
Wird diese Datei erzeugt? /opt/fhem/www/images/status1.svg ggf. z.b. mit Inkscape anschauen.

Nein, die wird leider schon nicht erzeugt.

Meine Vermutung ist, dass er mit den Variablen bzw. User Readings WWTemp und AussenTemp nichts anfangen kann. Könnte es daran liegen? Die hatte ich auf folgende Weise angelegt (Werte kommen von einer THZ):

attr Mythz userReadings AussenTemp:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[1]}, VorlaufTemp:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[3]}, RuecklaufTemp:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[5]}, WWTemp:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[9]}, BoosterStage1:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[37]}, BoosterStage2:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[35]}, BoosterStage3:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[33]}, Compressor:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[31]}, HeatingCircuitPump:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[27]}, HC1SeasonMode:sHC1.* {(split ' ',ReadingsVal("Mythz","sHC1",0))[15]}, HC1OpMode:sHC1.* {(split ' ',ReadingsVal("Mythz","sHC1",0))[19]}

In Plots und für einfache Ausgaben lassen die sich einwandfrei verwenden. Muss ich die noch global verfügbar machen oder habe ich gedanklich einen Fehler gemacht?

andi11

Userreadings funktionieren genauso, und man muss an den Readings nix extra machen.
Lösch im Zweifel doch die Readings aus dem Replacer Modul mal raus, dann siehst du ob es prinzipiell klappt.
Userrechte am Ablageort der SVG hast du aber?

AndreasS

An die Rechte hatte ich auch gedacht. Das müsste eigentlich gepasst haben. Habe aber dennoch testweise mal den ganzen Ordner auf 777 gestellt (also frei für alle) und es wird immer noch keine Datei erzeugt. Jetzt gehen mir die Ideen aus... Gibt es irgendwo eine Logdatei, die man sich anschauen könnte?

andi11

In FHEM hast du schon set kindledisplay  ReplaceNow probiert?

Der normale Weg wäre das verbose Attribute vom Modul hochzustellen. Hast das schon probiert was dann im Log auftaucht?

AndreasS

Danach finde ich im Log folgendes:

2020.04.20 10:09:33 5: kindledisplay: Start conversion as convert /opt/fhem/www/images/status.svg -type GrayScale -depth 8 /opt/fhem/www/images/status.png 2>/dev/null &
2020.04.20 10:09:33 5: kindledisplay: Conversion started
2020.04.20 10:09:38 5: kindledisplay: Update: Internal timer set for hash HASH(0x1cf61e0) to call update again in 5 seconds
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep01Reading
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep02Reading
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep03Reading
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep04Reading
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep05Reading
2020.04.20 10:09:38 3: kindledisplay: wrong format in attr Rep06Reading
2020.04.20 10:09:38 5: kindledisplay: got reading LastUpdate of device kindledisplay with default never as 20.04.2020 10:09:38 with timestamp 2020-04-20 10:09:38
2020.04.20 10:09:38 5: kindledisplay: Replacing AKTUALISIERT with 20.04.2020 10:09:38

Also scheint es doch an den UserReadings zu liegen? Rep 01 bis 06 beinhalten meine User Readings, dann kommt noch eins mit dem Zeitstempel - das einzige, was laut Log erfolgreich ersetzt wird.

andi11

arg, jetzt fällt mir der Fehler erst auf:

RepxxReading Format Device:ReadingName
Also in Deinem Falle Mythz:AussenTemp

was das sglobal dahinter bedeuten soll bei dir weis ich nicht.

AndreasS

Tausend Dank! Genau das war das Problem. Nun funktioniert es wunderbar.

Wird auch schön auf dem Kindle angezeigt, allerdings aktualisiert der sich noch nicht automatisch. Er lädt das Bild nur neu, nachdem ich ihn einmal kurz angeschaltet hatte. Hier fehlt wohl noch etwas Feintuning.

yamfhem

Hallo,
bisher (ja, es ist schon eine Weile her) hatte ich die Yahoo Wetter Icons mittels "fc1_code" über korrespondierende "Code".svg Dateien im imageurl ersetzt und auf dem Kindle wurden dann die Icons schön angezeigt. Bei Proplanta, welches ich jetzt verwenden will, ist das anders.
- Muss ich aus dem fc1_weatherIcon-Pfad die Zahl vor dem .gif (1 für sonnig z.B.) extrahieren und damit operieren, oder kann man das irgendwie mittels Übersetzungstabelle machen?
- Wie macht ihr das?

Gruß
yam

yamfhem

... vielleicht interessiert es ja noch jemanden. Dank atmelfreaks Hilfe, habe ich das mit folgenden Aufrufen gelöst:

attr kindle_neu Rep41Expr sprintf("%s", $1) if ReadingsVal("proplanta", "fc0_weather21Icon", 0) =~ /\/(\w\d+).gif$/
attr kindle_neu Rep41Regex fc_icon6



Gleich noch eine Frage:
gibt es im FReplacer eine einfache Möglichkeit, den Wochentag zu einem Datum zu bestimmen? (Bei Yahoo-Wetter stand der Wochentag schön in den Readings mit drin, bei Proplanta muss man das selbst erledigen.)

Gruß yam

Gernott

#614
Zitat von: yamfhem am 01 Mai 2020, 18:54:47
Gleich noch eine Frage:
gibt es im FReplacer eine einfache Möglichkeit, den Wochentag zu einem Datum zu bestimmen? (Bei Yahoo-Wetter stand der Wochentag schön in den Readings mit drin, bei Proplanta muss man das selbst erledigen.)
Ja, mit der DayName()-Funktion. Update: Muß in der 99_myUtils.pm definiert werden, siehe meinen nächsten Beitrag.
DayName(0) returniert den heutigen Wochentagsnamen, mit (1) den von morgen.