Kindle als Fhem-Display

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

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo Koerly,

das Modul habe ich umbenannt, damit man es auch einfach parallel zum alten testen kann und damit keine Missverständnisse mit den geänderten Attributen auftreten. Wenn es keine Probleme macht, würde ich die Änderungen auch im Wiki ändern (neuer Name, teilweise geänderte Attribute).

Gruss
    Stefan

koerly

Hallo Stefan,

kurzes Feedback ... bei mir mit Kindle4 funktioniert der neue Filereplacer wunderbar ... Thumb up!

...
Mir kam so eine Idee, ob es aufgrund des kleinen Kindle Bildschirmes wohl möglich währe den Bildschirm
zu toggeln, so das er mehrere Seiten im z.B. 30sek Takt wechselt.

Wie siehst Du die Möglichkeiten und die Sinnigkeit sowas umzusetzen.

rpi2; cul868; jeelink

StefanStrobel

Hallo Koerly,

das mit dem Toggeln wäre schon technisch machbar. Nur ob es wirklich was bringt, da bin ich mir nicht sicher.
Ich hab mir das auch schon mal überlegt. Nur wäre dann vermutlich immer dann, wenn man die Temperatur sehen will, gerade die andere Anzeige da. Und dann muss man auf den Wechsel warten. Zudem kann ein Kindle Paperwhite dann nicht mehr mehrere Minuten schlafen und der Stromverbrauch wird ansteigen. Bei einem K4, der ohnehin am Netzteil hängen muss, wäre das natürlich egal.
Der ganze onlinescreensaver besteht ja nur aus einfachen Shellscripten. Daher ist er recht leicht änderbar.
scheduler.sh ist quasi das Hauptprogramm und die letzten 5 Zeilen sorgen dafür das immer nacheinander update.sh zum Aktualisieren des Bildschirms und wait_for aus der utils.sh aufgerufen wird...

Gruss
   Stefan

mikeljo

Vorweg: Super Arbeit
Inzwischen funktioniert mein PW2 als fhem Display.

Leider kann ich die beiden Timeouts (t1_timeout und t2_timeout) nicht ändern.
vi sagt die Dateien sind schreibgeschützt.
mntroot rw ist durch geführt.
Komischerweise ist der Pfad bei meinem PW2 (5.4.3.2) "/etc/kdb.src/wario/system/daemon/powerd/"
bei "mount" kommt u.A. dies:
/dev/loop/4 on /etc/kdb.src type cramfs (ro,noatime,nodiratime)
ich bekomm es auch nicht rw eingebunden.
Nee Idee?

Thx

Bye
mikeljo

Steeeve

probierst du die Datei als root zu bearbeiten?

sudo vi <Dateiname>

mikeljo

Zitat von: Steeeve am 09 November 2014, 13:54:59
probierst du die Datei als root zu bearbeiten?

sudo vi <Dateiname>

a bin ich root
und
b ist sudo not found

StefanStrobel

Hallo Mikeljo,

Die Timeouts muss man eigentlich nur auf einem K4 ändern, da der sonst einschläft und nicht wieder aufwacht. Auf dem PW2 ist das nicht nötig. Der onlinescreensaver setzt in der RTC einen Alarm, so dass der PW2 zum richtigen Zeitpunkt aufwacht. Das Schlafen ist hier erwünscht und nur so hält der Akku deutlich länger als beim K4 ...

Gruß
    Stefan

Steeeve

Hi!

Wie ich eh schon mal vor einiger Zeit geschrieben habe, gibt's die Verzeichnisse bei meinem K4 leider auch nicht. jetzt muss ich den alle 1-2 Tage aufwecken. das ist lästig!

Hat mittlerweile jemand eine Idee!

Sg
steeeve

mikeljo

Zitat von: StefanStrobel am 10 November 2014, 16:19:58
Hallo Mikeljo,

Die Timeouts muss man eigentlich nur auf einem K4 ändern, da der sonst einschläft und nicht wieder aufwacht. Auf dem PW2 ist das nicht nötig. Der onlinescreensaver setzt in der RTC einen Alarm, so dass der PW2 zum richtigen Zeitpunkt aufwacht. Das Schlafen ist hier erwünscht und nur so hält der Akku deutlich länger als beim K4 ...

Gruß
    Stefan

Davon bin ich auch ausgegangen. Aber nach ziemlich genau 24 Stunden hört der PW2 mit der Aktualisierung auf.  >:(
Akku ist voll genug gewesen.

Bye
Michael

StefanStrobel

Hi Michael,

hast Du mal die geänderte utils.sh ausprobiert, die ich am 5.11. gepostet habe?
Seit der Zeitumstellung ist auch mein PW immer wieder nicht mehr aufgewacht.
Mit den Änderungen klappt es bei mir wieder.

@steeeve: wenn es die Verzeichnisse bei Dir nicht gibt, hast Du offenbar eine andere Firmware auf dem K4.
Hast Du mal im Mobileread Forum nachgefragt? da tummeln sie die Spezialisten zum Kindle und der ursprüngliche Autor des Onlinescreensavers.

Gruss
    Stefan

mikeljo

Hi Stefan,

danke.
Hab deine neue utils.sh (incl. der angepassten config.sh) eingespielt und damit den screensaver neu gestartet.
Jetzt heißt's warten.......

Bye
Michael

AHA1805

Zitat von: StefanStrobel am 05 November 2014, 22:58:34
Hallo Hannes,

auch ich habe das automatische updaten eigentlich unterbunden, aber irgendwas muss sich geändert haben. Die Zeitzone alleine kann es nicht sein, da die Timer alle mit UTC arbeiten sollten.
Im Kerner Ringbuffer fällt mir folgende Zeile auf:
[54998.390259] ar6000_drc.c: ar6000_transfer_bin_file cal file name: /opt/ar6k/target/AR6003/hw2.1.1/bin/active_calibration_pinot
Ich erinnere mich nicht daran, die früher schon gesehen zu haben.
Anbei jedenfalls mal meine geänderte utils.sh. Da stehen jetzt eine Menge Debug-Ausgaben drin (bei mir gehen die in /tmp/onlinescreensaver.log). Das ganze ist noch keine finale Lösung, aber bei mir klappt es mit den Änderungen bisher. Im Prinzip verwende ich jetzt zwei Alarm-Timer parallel. Falls der erste nicht greifen sollte oder der Kindle während das WLAN hochfährt schon wieder einschläft (im bisherigen Code war in der Zeit kein Alarm aktiv), dann greift der zweite Timer 2 Minuten später und weckt den Kindle wieder auf. Wie gesagt betrachte ich das noch nicht als echte / saubere Lösung. Eigentlich müsste man den Code etwas massiver umbauen, nur dazu bin ich noch nicht gekommen.

in der config.sh sind folgende Änderungen nötig:

# Whether to create log output (1) or not (0).
LOGGING=1

# Where to log to - either /dev/stderr for console output, or an absolute
# file path (beware that this may grow large over time!)
#LOGFILE=/dev/stderr
LOGFILE=/tmp/onlinescreensaver.log

# whether to disable WiFi after the script has finished (if WiFi was off
# when the script started, it will always turn it off)
DISABLE_WIFI=0

# Domain to ping to test network connectivity. Default should work, but in
# case some firewall blocks access, try a popular local website.
TEST_DOMAIN="www.google.com"

# How long (in seconds) to wait for an internet connection to be established
# (if you experience frequent timeouts when waking up from sleep, try to
# increase this value)
NETWORK_TIMEOUT=30



#############################################################################
# Advanced
#############################################################################

# the real-time clock to use (0, 1 or 2)
RTC=1
RTC2=0


entscheidend sind die Zuweisungen zu RTC und RTC2.

Gruss
   Stefan

Hallo Stefan,

ich habe gerade die Zeit gefunden, die neue utils.sh mit den Anpassungen auszutauschen.
Jippie jetzt funktioniert er wieder :)
Danke Stefan.

Gruß Hans
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

Steeeve

Hi!

Wie ich eh schon mal vor einiger Zeit geschrieben habe, gibt's die Verzeichnisse bei meinem K4 leider auch nicht. jetzt muss ich den alle 1-2 Tage aufwecken. das ist lästig!

Hat mittlerweile jemand eine Idee?

Danke Steeeve

StefanStrobel

#253
Hallo,

auch wenn ich befürchte, dass ich mich jetzt unbeliebt mache: ich habe den FReplacer nochmal erweitert und wieder ein paar Attribute dabei umbenannt ...

Am Wochenende hatte ich die Idee, dass das mit den Expr Attributen alleine auf Dauer etwas unelegant ist, vor allem für Anwender, die sich nicht mit Perl-Funktionsaufrufen beschäftigen wollen. Deshalb habe ich als Alternative zusätzliche Attribute eingebaut, mit denen man direkt ein Device und Reading angeben kann, ohne Aufruf von ReadingsVal.

Ausserdem hatte ich das Problem, dass manche Sensoren auch mal keine Werte mehr liefern und im Display dann solange der alte Wert angezeigt wird, bis jemandem auffällt, dass der sich ja nie ändert. Deshalb habe ich ein weitere Attribut MaxAge eingebaut, mit dem man angeben kann, wie alt ein Reading sein darf und falls es älter ist, wird statt dessen ein Ersatz-String angegeben - z.B. "kein Empfang", oder "Heizung Aus".

Dabei ist mir dann noch deutlicher aufgefallen, dass die alphabetische Sortierung der bisherigen Attribute die Anzeige recht unhandlich macht. Als Lösung habe ich den Variablen Anteil der Attributsnamen an den Anfang gestellt. Aus Regex01 wird jetzt Rep01Regex, aus Expr01 wird Rep01Expr und dazu kommen dann die neuen Attribute Rep01MaxAge, Rep01Reading sowie noch Rep01Format, Rep01MinValue und Rep01MaxValue. So bleiben auch bei alphabetischer Sortierung die zusammengehörigen Attribute zusammen.

Für eine Wärmepumpe, die im ausgeschalteten Zustand keine Readings mehr liefert sieht die Konfiguration bei mir jetzt so aus:


attr fr Rep01Reading WP:Status
attr fr Rep01Regex HausHeizung

attr fr Rep02Reading PWP:Temp_Delta
attr fr Rep02Regex PWPHeizung
attr fr Rep02Format Heizung: %s K
attr fr Rep02MaxAge 120:Heizung Aus
attr fr Rep02MinValue 0.4:Heizung Idle


Mit RepFormat kann man beispielsweise recht einfach die Anuahl der Nachkommastellen steuern. Beispiel:

attr fr Rep03Reading ZL:Temp_Abluft
attr fr Rep03Regex 22,5
attr fr Rep03Format %.1f


Alte Expressions finktionieren natürlich weiter wie bisher, nur der Name des Attributs mus korrigiert werden und man kann für komplizierte Fälle auch RepReading mit RepExpr kombinieren.

Aus der Doku:

Rep[0-9]+Regex
    defines the regex to be used for finding the right string to be replaced with the corresponding Reading / Expr result
Rep[0-9]+Reading
    defines a device and reading to be used as replacement value. It is specified as devicename:readingname
Rep[0-9]+MaxAge
    this can optionally be used together with RepReading to define a maximum age of the reading.
    It is specified as seconds:replacement. If the corresponding reading has not been updated for the specified number of seconds,
    then the replacement string is used instead of the reading to do the replacement and further Expr or Format attributes will be ignored for this value
Rep[0-9]+MinValue
    this can optionally be used together with RepReading to define a minimum value of the reading. It is specified as min:replacement.
    If the corresponding reading is too small, then the replacement string is used instead of the reading to do the replacement
    and further RepExpr or RepFormat attributes will be ignored for this value
Rep[0-9]+MaxValue
    this can optionally be used together with Reading to define a maximum value of the reading.
    It is specified as max:replacement. If the corresponding reading is too big, then the replacement string is used instead of the reading to do the replacement
    and further RepExpr or RepFormat attributes will be ignored for this value
Rep[0-9]+Expr
    defines an optional expression that can be used compute the replacement value.
    If RepExpr is used together with RepReading then Expr is evaluated after getting the Reading and the value of the reading can be used in the expression as $replacement.
    If only RepExpr is specified then Readings can be used with the perl function ReadingsVal() inside the expression.
    If neither RepExpr nor Reading is specified then the match for the correspondig Regex will be replaced with an empty string.
Rep[0-9]+Format
    defines an optional format string to be used in a sprintf statement to format the replacement before it is applied.
    Can be used with RepReading or RepExpr or both.

Es wäre super wenn sich ein paar frewillige Helfer zum Testen finden. Ich weiss dass es lästig ist, die Attribute umzubenennen, aber auf Dauer sollte es so doch besser sein.
Wenn es so passt, würde ich es einchecken und die alten Versionen aus dem Threat entfernen.

Gruss
   Stefan

Edit: die aktuelle Version des Moduls ist eingecheckt.

mikeljo

Zitat von: mikeljo am 10 November 2014, 20:22:05
Hi Stefan,

danke.
Hab deine neue utils.sh (incl. der angepassten config.sh) eingespielt und damit den screensaver neu gestartet.
Jetzt heißt's warten.......

Bye
Michael

Hi Stefan,

Super!
Seit jetzt ca. 46 Stunden aktualisiert sich die Anzeige auf dem PW2.
Danke.

BTW: das PW2 zeigt seinen Akkuladestand an. Oben Rechts.



Gesendet von meinem iPad mit Tapatalk HD