Kindle als Fhem-Display

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

Vorheriges Thema - Nächstes Thema

Timmy.m

Zitat von: Gernott am 19 August 2015, 00:08:43
Ich stehe etwas auf dem Schlauch.

Hallo Gernott,

ich habe es auch nichts ans Laufen bekommen. Irgendwie komme ich auch nicht weiter.

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

Gernott

Bei mir läuft es, nachdem ich es genau so probiert hatte.
Dafür läuft jetzt einer meiner zwei Kindle K4 Amok. Irgendwann schaltet sich das WLAN ab und die Aktualisierung stoppt. Dann hilft nur ein Reboot. So richtig zuverlässig funktioniert das Zeugs leider  nicht. Wenn es läuft, sollte man sie nicht wieder anfassen.

Gruß
G.

alexmetz

Zitat von: Gernott am 23 August 2015, 21:31:20Irgendwann schaltet sich das WLAN ab und die Aktualisierung stoppt. Dann hilft nur ein Reboot. So richtig zuverlässig funktioniert das Zeugs leider  nicht. Wenn es läuft, sollte man sie nicht wieder anfassen.

Dasist bei meinem PW2 leider auch so. Weiss aber nicht worans liegt. Nervt...

Gruß,
Alex
FHEM auf RaspberryPi 4
Homematic

Torben

Hallo,

ich habe meine Kindle 4 zum Laufen gebracht und dachte mir, dass es nett wäre, wenn bestimmte Statusänderungen einen refresh am Kindle auslösen. Dazu habe ich eine Funktion, die über Net::OpenSSH den refresh auslösen soll:

sub updateKindle()
{
my $hostK = "192.168.178.33";
my $userK = "**USER**";
my $passwordK = "**PASSWORT**";
my $portK = "22";
#-- set up a new connection
my $ssh = Net::OpenSSH->new(host=>$hostK, user=>$userK, port=>$portK, password=>$passwordK, timeout => 10, kill_ssh_on_timeout => 1, master_opts => '-vvv', master_stderr_fh => \*LOG) ;
#-- execute the command
$ssh->error and die "ssh failed: " . $ssh->error;
$ssh->system("/mnt/us/extensions/onlinescreensaver/bin/update.sh");
$ssh->error and die "ssh failed: " . $ssh->error;
}

Die Verbindung wird auch aufgebaut und das Kommando wird auch gesendet, aber irgendwie nicht verarbeitet. Nach 10 Sekunden greif dann der Timeout. Ohne diesen läuft/hängt die Verbindung ewig. Das FHEM-Log-File sagt folgendes:
Zitatdebug1: Sending command: /mnt/us/extensions/onlinescreensaver/bin/update.sh
debug2: channel 2: request exec confirm 1
debug3: mux_session_confirm: sending success reply
debug2: callback done
debug2: channel 2: open confirm rwindow 24576 rmax 32759
debug2: channel 2: read<=0 rfd 6 len 0
debug2: channel 2: read failed
debug2: channel 2: close_read
debug2: channel 2: input open -> drain
debug2: channel 2: ibuf empty
debug2: channel 2: send eof
debug2: channel 2: input drain -> closed
debug2: channel_input_status_confirm: type 99 id 2
debug2: exec request accepted on channel 2
debug2: channel 1: ctl read<=0 rfd 5 len 0
debug2: channel 1: read failed
debug2: channel 1: close_read
debug2: channel 1: input open -> drain
debug2: channel 1: ibuf empty
debug2: channel 1: input drain -> closed
debug2: channel 1: rcvd close
debug2: channel 1: output open -> drain
debug2: channel 1: obuf empty
debug2: channel 1: close_write
debug2: channel 1: output drain -> closed
debug2: channel 1: is dead (local)
debug2: channel 1: gc: notify user
debug3: mux_master_control_cleanup_cb: entering for channel 1
debug2: channel 2: write failed
debug2: channel 2: close_write
debug2: channel 2: send eow
debug2: channel 2: output open -> closed
debug2: channel 1: gc: user detached
debug2: channel 1: is dead (local)
debug2: channel 1: garbage collecting
debug1: channel 1: free: mux-control, nchannels 3
debug3: channel 1: status: The following connections are open:
  #2 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug2: channel 2: send close
debug3: channel 2: will not send data after close
debug1: multiplexing control connection
debug2: fd 5 setting O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug1: channel 1: new [mux-control]
debug3: channel_post_mux_listener: new mux channel 1 fd 5
debug3: mux_master_read_cb: channel 1: hello sent
debug3: channel 2: will not send data after close
debug3: mux_master_read_cb: channel 1 packet type 0x00000001 len 4
debug2: process_mux_master_hello: channel 1 slave version 4
debug3: channel 2: will not send data after close
debug3: mux_master_read_cb: channel 1 packet type 0x10000005 len 4
debug2: process_mux_terminate: channel 1: terminate request
debug1: channel 0: free: /opt/fhem/.libnet-openssh-perl/root-192.168.178.33--15925-266493, nchannels 3
debug3: channel 0: status: The following connections are open:
  #2 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug1: channel 1: free: mux-control, nchannels 2
debug3: channel 1: status: The following connections are open:
  #2 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug1: channel 2: free: client-session, nchannels 1
debug3: channel 2: status: The following connections are open:
  #2 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)

debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
debug3: fd 2 is not O_NONBLOCK
Transferred: sent 3856, received 1424 bytes, in 10.4 seconds
Bytes per second: sent 371.5, received 137.2
debug1: Exit status -1

Wenn ich mich regulär über SSH auf dem Kindle einlogge, kann ich den Refresh einfach auslösen:
Zitat[root@kindle /]# /mnt/us/extensions/onlinescreensaver/bin/update.sh
Sat Aug 29 09:48:56 UTC 2015: Screen saver image updated
Powerd state: Screen Saver
Sat Aug 29 09:48:56 UTC 2015: Updating image on screen

Hat jemand eine Idee, woran es liegen könnte?

Gruß
Torben

Gernott

Zitat von: Torben am 29 August 2015, 11:54:07
Wenn ich mich regulär über SSH auf dem Kindle einlogge, kann ich den Refresh einfach auslösen:
Hat jemand eine Idee, woran es liegen könnte?
ssh über WLAN funktioniert? Die Prozedur hattest Du erledigt: http://blog.joschika.tk/2012/03/01/kindle-4nt-ssh-over-wifi/?

Gruß
G.

Torben

Ja, ich kann mich über die Konsole per WLAN auf dem Kindle einloggen, aber als Funktionsaufruf in FHEM bleibt er immer hängen...

Torben

Ich habe es jetzt über ein Script gelöst, das von FHEM aufgerufen wird und mit dem dann die SSH-Verbindung aufgebaut wird. So funktioniert es, mir ist aber nicht klar, warum es nicht direkt aus FHEM (perl) heraus funktionierte.
Jetzt habe ich meinen (ur)-alten Kindle am Eingang stehen und kann beim Rausgehen sehen, ob noch ein Fenster offen ist. Das könnte man auch noch schön z.B. mit einer Herdüberwachung ergänzen.

Timmy.m

Hallo Torben.

Ich bin nicht der Linux-Experte... kannst du vielleicht kurz erklären, wie man deine Lösung mit dem Script mit FHEM bewerkstelligen kann?
Deine Lösung könnte ich gut gebrauchen, weil mein Kindle bei einem Update-Intervall von 1Minute regelmäßig aufhört zu arbeiten. Bei einem Intervall von 5 Minuten ist alles gut. Daher würde ich gerne Änderungen "pushen".

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

Torben

Klar. Ich habe in der 99_myUtils.pm folgende Funktion, die ich für das Update nutze:
sub updateKindle()
{
   system('/opt/fhem/updateKindle.sh &');
}

Und das Script (updateKindle.sh) sieht so aus und liegt im fhem-Verzeichnis:
#!/bin/bash
sshpass -p "HIER_PW_EINTRAGEN" ssh -o StrictHostKeyChecking=no -t root@IP_ADRESSE_DES_KINDLE << HERE
/mnt/us/extensions/onlinescreensaver/bin/update.sh
exit
HERE

Weil ich mich auch nicht so gut mit Linux, ssh und so auskenne und ich mit der Passwortübergabe an den Kindle Probleme hatte, habe ich das Linux Modul sshpass installiert. Damit kann man im Klartext das Passwort im Script mitgeben. Hier gibt es bestimmt viele Sicherheitsbedenken. Ich hatte es auch mit dem ssh-keygen probiert. Das lief aber irgendwie nicht. Wenn jemand eine einfache Anleitung für eine etwas sicherere Lösung hat, wäre ich auch glücklich.

Gruß
Torben

ChrisK

Gibt es eine Möglichkeit den (das?) Kindle auch ohne Jailbreak als FHEM-Display zu nutzen?
Leider bin ich wohl zu spät hier aufgesprungen und habe ein Kindle mit Version 5.6.2.1 bekommen, was wohl nicht wirklich jailbreakbar ist.

Mr. P

Da bist du nicht der Einzige...
Aber um es kurz und schmerzlos zu machen: ich werde mir das Wochenende entsprechendes Werkzeug ordern, um den Kindle auszumachen. ;-)

Gesendet von meinem SM-G800F mit Tapatalk

Greetz,
   Mr. P

ChrisK

Zitat von: Mr. P am 04 September 2015, 20:11:43
Da bist du nicht der Einzige...
Aber um es kurz und schmerzlos zu machen: ich werde mir das Wochenende entsprechendes Werkzeug ordern, um den Kindle auszumachen. ;-)
Meinst Du "aufzumachen"? ;)

Da bin ich ja beruhigt, dass ich nicht der einzige bin.
Berichte mal bitte, wie es gelaufen ist! Ich bin kein Elektriker, hatte aber vor kurzem mal wieder nen Lötkolben in der Hand und zwei Bausätze zusammengebaut.

Mr. P

Ja, natürlich... Aufzumachen! :-)
Ein Hurra auf die Autokorrektur!

Halte dich gern am laufenden!

Gesendet von meinem SM-G800F mit Tapatalk

Greetz,
   Mr. P

trfr3ak

Zitat von: Torben am 04 September 2015, 16:57:09
Klar. Ich habe in der 99_myUtils.pm folgende Funktion, die ich für das Update nutze:
sub updateKindle()
{
   system('/opt/fhem/updateKindle.sh &');
}

Und das Script (updateKindle.sh) sieht so aus und liegt im fhem-Verzeichnis:
#!/bin/bash
sshpass -p "HIER_PW_EINTRAGEN" ssh -o StrictHostKeyChecking=no -t root@IP_ADRESSE_DES_KINDLE << HERE
/mnt/us/extensions/onlinescreensaver/bin/update.sh
exit
HERE

Weil ich mich auch nicht so gut mit Linux, ssh und so auskenne und ich mit der Passwortübergabe an den Kindle Probleme hatte, habe ich das Linux Modul sshpass installiert. Damit kann man im Klartext das Passwort im Script mitgeben. Hier gibt es bestimmt viele Sicherheitsbedenken. Ich hatte es auch mit dem ssh-keygen probiert. Das lief aber irgendwie nicht. Wenn jemand eine einfache Anleitung für eine etwas sicherere Lösung hat, wäre ich auch glücklich.

Gruß
Torben


Hi, coole Idee, das mit dem automatischen aktualisieren!
Wie oft lässt du dann das Bild aktualisieren? oder ist es nicht sinnvoller vorher das Bild von fhem aktualisieren zu lassen und dann den refresh auszuführen?
Grüße
Jonas

Torben

Absolut richtig. Ich hatte es ursprünglich alles etwas anders aufgebaut. Ich rufe aber vorher direkt das Neugenerieren des Bildes auf. Die Funktion sollte also so lauten:
sub updateKindle()
{
   fhem("set kindledisplay ReplaceNow");
   system('/opt/fhem/updateKindle.sh &');
}


Gruß
Torben