Fhem -> Samsung TV

Begonnen von mcbain2k, 25 Mai 2013, 11:45:13

Vorheriges Thema - Nächstes Thema

Andre0909

#390
Okay aber irgendwie raff ich dann nicht die richtigen definitionen oder die Übergabe an den TV.
ISt die Dummy definition richtig?
Wie übergeb ich ein Bild an den Fernseher. An den dummy?

Vielleicht kann irgendjemand mal ein Beispiel posten, damit man es entsprechend anpassen kann?

Bis dahin war die Anleitung super, aber bei dem eigentlich Thema steigts bei mir irgendwie aus

Tatsächlich habe ich eine Kamera die ein Screenshot macht wenn es klingelt. Wäre z.B. super das anzeigen zu lassen

Det20

#391
1. Du musst erstmal eine Grafik mit dem erzeugen, was Du auf dem TV anzeigen lassen möchtest: https://forum.fhem.de/index.php/topic,22520.0.html
2. Die musst Du auf einen Mediaserver kopieren, z.B. auf ne Fritz oder miniDLNA
3. Dann musst Du dem DLNAClient sagen, dass er die in 2. erzeugte Daten anzeigen soll

Was ich noch nicht verstehe: Wie kann ich die vom RSS Modul erzeugte JPG so ändern, dass dort ne Rufnummer eingetragen wird?

Andre0909

#392
Zitat von: Det20 am 05 Februar 2018, 12:16:29
Wie Du die Grafik erzeugst, die dann auf dem TV angezeigt wird, hier hier beschreiben (nimm Dir Zeit): https://forum.fhem.de/index.php/topic,22520.0.html

Also wenn ich das richtig verstehe beschreibt dies das Modul RSS. Dies ist, wenn ich das richtig verstanden habe, gar nicht zwingend notwendig da ja jedes Bild angezeigt werden können sollte.
Mir geht es z.B. um den TEil:

ZitatTatsächlich lassen sich mit DLNA alle Medien, ob Video, Audio, Foto, die auf einem Medien-Server gespeichert sind,  auf den TV "pushen". Das eröffnet dann für die Hausautomatisierung unendlich viele Anwendungsmöglichkeiten. Ich zähle nur mal ein paar Ideen als Anregung dazu auf:
- es klingelt an der Tür --> Kamera nimmt Bild auf --> Bild wird auf dem TV angezeigt
Ich habe ja bereits Bilder auf meinem "Server" die ich abrufen kann. Mir geht es darum wie ich dieses abcdefg.jpg jetzt an den TV Codetechnisch übergebe.. Das ist mein Problem, weil ich net raffe ob dummys geschaltet werden müssen. Müssen die Attribute Server und CallerURI aktiviert werden und wie ist dann die Ausgabeform.. Set Fernseher Screen Bildurl?

Denke das ich das völlig falsch interpretiere:


define MeinRenderer DLNAClient [TV]Samsungtv
define MeinFernseher STV 192.168.178.101 wse MeinRenderer
attr MeinFernseher callerURI 1
attr MeinFernseher screenURI 1
define screenURI dummy



Det20

Zitat von: Andre0909 am 05 Februar 2018, 12:24:37
Dies ist, wenn ich das richtig verstanden habe, gar nicht zwingend notwendig da ja jedes Bild angezeigt werden können sollte.

Die brauchst Du nur, wenn Du kein Bild von z.B. einer Webcam hast. Du kannst auf dem TV nur Bilder anzeigen, das ist der Grund für die RSS Geschichte.
Wenn Du ein Bild von z.B. einer Webcam anzeigen möchtest, kannst Du den RSS Kram überspringen.

Andre0909

Zitat von: Det20 am 05 Februar 2018, 12:26:31
Die brauchst Du nur, wenn Du kein Bild von z.B. einer Webcam hast. Du kannst auf dem TV nur Bilder anzeigen, das ist der Grund für die RSS Geschichte.
Wenn Du ein Bild von z.B. einer Webcam anzeigen möchtest, kannst Du den RSS Kram überspringen.

genau aber wie kriege ich es jetzt angezeigt. Ich müsste ja auch jedes JPG einer beliebigen URL anzeigen lassen können. Aber wie mache ich das mit "Screen"

raimundl

Zitat von: KölnSolar am 04 Februar 2018, 22:03:35
Hallo Walter,
kannst Du bitte die attachte DLNA-Version testen. Die sollte mit Port 55000 u. einem ordentlichen Status connected/disconnected funktionieren.
Grüße Markus

Hallo Markus - ja, funktioniert: connected, POWEROFF o.k.!

LG Walter
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

KölnSolar

ZitatDu kannst auf dem TV nur Bilder anzeigen
Naja nicht ganz. Es lässt sich jede URI darstellen. Also jeder Link auf ein auf dem Mediaserver(selbst extern ginge) liegendes Medium(Video, Audio, Bild).

Zum RSS mal ein Auszug bzgl. Anruferinfo aus meiner RSS-Layout-Datei
date  10 30
time  650 30
rgb "00FF00"
text 250 30 { ReadingsVal('WetterAussen','temperature','')." °C"}
rgb "2E64FE"
text 420  30 { ReadingsVal('WetterAussen','humidity','')." %"}
# Anzeige Kommunikation
text  10 100 "Telefon:"
text 200 100 { ReadingsTimestamp('FritzBox','external_name','')}
pt 48
rgb "FF0000"
text 10 190 { "Name: ".ReadingsVal('FritzBox','external_name','')}
text 10 270 { "Nr.:  ".ReadingsVal('FritzBox','external_number','')}

WetterAussen ist mein Temp-/Hygrosensor und FritzBox ist mein FB_CALLMONITOR-device.

Hat man RSS definiert, kann man es sich mit IP:FHEMWebPort/fhem/rsss/Euerrss.jpg im Browser anzeigen lassen.

@Walter: Prima, danke fürs testen. Dann nehm ich die Version jetzt wieder raus und packe sie in den Dokuthread.

Grüße Markus

Klarer  :-\
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Det20

#397
@Andre0909
Also, wenn Du nur ein Webcam-Bild anzeigen möchtest, dann geht das recht einfach auch ohne 70_STV. Wenn Du den Samsung aber noch steuern willst (Lautstärke usw), dann brauchst Du noch das STV Modul. Ich nutze beide, für die Status-Meldung aber nur den DLNAClient.


define SamsungTv_MSG DLNAClient [TV]Samsungtv
set SamsungTv_MSG stream http://ip/webcam.jpg


====

Um Text anzuzeigen, habe ich mir einen Dummy namens "SamsungTv_RSS_Text", außerdem ein RSS:


define SamsungTv_RSS_Text dummy

define SamsungTv_RSS RSS jpg 192.168.0.55 ./FHEM/samsung_rss_text.layout
attr SamsungTv_RSS autoreread 1


Der Inhalt der RSS ist bei mir:


font /usr/share/fonts/truetype/msttcorefonts/arial.ttf
rgb c0c0c0 # HTML color notation, RGB
pt 48 # font size in points
time 0.04 0.15
pt 24
text 0.05 0.50 { ReadingsVal("SamsungTv_RSS_Text","state","?") }


Um nun einen Status auf dem TV anzuzeigen, gibt es bei mir in der 99_MyUtils eine eigene Funktion:


sub SamsungText($)
{
  my ($text) = @_;
 
  fhem("set SamsungTv_RSS_Text $text");
  fhem("set SamsungTv_MSG stream http://Username:Kennwort@192.168.0.55:8083/fhem/rss/SamsungTv_RSS.jpg");
  fhem("defmod close_SamsungTV_Txt at +00:00:10 set SamsungTv_MSG exit");
}


Die Funktion kannst Du dann recht einfach über ein notify aufrufen.

Allodo

Hallo,

ich werde demnächst eine Doorbird D202 Videotürsprechanlage verbauen und da kam mir die Idee, ob es möglich ist, beim klingeln das Videobild auf dem Samsung TV (H-Serie) anzeigen zu lassen?

Besteht die Möglichkeit dazu und ginge das dann auch per PIP?


Det20

Zitat von: Allodo am 06 Februar 2018, 08:49:26
Hallo,

ich werde demnächst eine Doorbird D202 Videotürsprechanlage verbauen und da kam mir die Idee, ob es möglich ist, beim klingeln das Videobild auf dem Samsung TV (H-Serie) anzeigen zu lassen?

Besteht die Möglichkeit dazu und ginge das dann auch per PIP?

Ich kenne die Sprechanlage nicht. Wenn Du aber irgendwie an ein Webcam-Bild über das Netzwerk rankommst, dann geht es. Allerdings (noch) nicht PIP.

Allodo

Ja, an das Videobild kommt man heran, da es eine offene API gibt.

Wie würde das Ganze denn dann angezeigt (Vollbild) und kann man die Anzeigedauer einstellen?

KölnSolar

Vollbild. Und die Dauer kannst Du per FHEM-Boardmitteln(at, notify, DOIF.....) beeinflussen. Grundsätzliche Voraussetzung ist ein MedienServer. Lies mal hier.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Det20

#402
Sorry aber einen Mediaserver brauchst Du nicht zwingend. Du brauchst lediglich den DLNAClient (KölnSolar hat den irgendwo angehängt)


define SamsungTv DLNAClient [TV]Samsungtv
set SamsungTv stream http://ip/webcam.jpg
defmod close_SamsungTv at +00:00:15 set SamsungTv exit

KölnSolar

Da wär ich aber überrascht und hätte DLNA nicht verstanden. FHEM ist an der Stelle ja nur DMC(ControlPoint), also Vermittler zwischen MediaServer(DMS) und MediaRenderer(DMR=TV). Kannst Du mit DLNAClient ein Bild streamen, das nicht auf einem MediaServer liegt, also z.B. als URI http://DeineFHEMIP:8083/fhem/www/images/default/fhemicon.png ? Ich schaff das nicht. Aber, wenn es wider erwarten doch ginge, könnte ich die Beschreibung zum MediaServer aus der Anleitung rausnehmen.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Det20

#404
Zitat von: KölnSolar am 06 Februar 2018, 11:10:16
Da wär ich aber überrascht und hätte DLNA nicht verstanden. FHEM ist an der Stelle ja nur DMC(ControlPoint), also Vermittler zwischen MediaServer(DMS) und MediaRenderer(DMR=TV). Kannst Du mit DLNAClient ein Bild streamen, das nicht auf einem MediaServer liegt, also z.B. als URI http://DeineFHEMIP:8083/fhem/www/images/default/fhemicon.png ? Ich schaff das nicht. Aber, wenn es wider erwarten doch ginge, könnte ich die Beschreibung zum MediaServer aus der Anleitung rausnehmen.

Das funktioniert nicht, weil der Samsung nicht mit Authentifizierung und/oder Port 8083 klar kommt. Versuch mal eine andere URL:


define SamsungTv DLNAClient [TV]Samsungtv
set SamsungTv stream http://www.tv-testbild.com/ont/10.jpg


Wenn Du RSS streamen möchtest, brauchst Du wg Port und/oder User einen Workaround. Ich habe dafür auf dem Raspberry einen Apache mit PHP laufen und verweise bei "set stream" auf die PHP. Ginge bestimmt schöner, aber es funktioniert :)


<?php
  ini_set
('default_socket_timeout'2); // 900 Sekunden = 15 Minuten
  
$url      'http://192.168.0.55:8083/fhem/rss/SamsungTv_RSS.jpg';
  
$username 'xxx';
  
$password 'yyy';
  
$context stream_context_create(array('http' => array('timeout' => 2,'header' => "Authorization: Basic " base64_encode("$username:$password"))));
  
$data    file_get_contents($urlfalse$context);
  
  
header("HTTP/1.1 200 Ok"); 
  
header("Content-Type: image/jpeg");
  
header('Content-Length: '.strlen($data));
  Echo 
$data;
?>