Website-Icon Dein Smart Home Blog

Samsung TV per Fibaro HC2 in das SmartHome einbinden

Bild © crissxcross

Fibaro HC2 virtuelles Modul steuert per Weboberfläche und APP den Samsung TV

Über die virtuellen Module im Fibaro Home Center 2 lassen sich viele Geräte im Netzwerk ansprechen und steuern. So auch dein Samsung TV.

Letztens hatte ich hier beschrieben, wie du deine Philips Hue Leuchten als virtuelles Modul in das Fibaro Home Center 2 einbinden kannst. Aber was nützt dir die tolle Lichtstimmung zum Kinofeeling oder Fernseher?

Solltest du einen netzwerkfähigen Samsung Smart TV haben, egal ob dieser per LAN oder WLAN mit deinem Netzwerk verbunden ist, kannst du ihn über das Fibaro HC2 steuern. Du kannst die gesamte Fernbedienung mit (fast) allen Befehlen als virtuelles Modul nachbauen. So ist es mit dem virtuellen Modul dann möglich, den Samsung Smart TV in Szenen einzubinden oder mit Z-Wave Schaltern, Fernbedienungen, Bewegungsmeldern ... ein- und auszuschalten, umzuschalten, das Menü oder den Guide zu öffnen und was auch immer du realisieren möchtest.

Virtuelles Modul anlegen

Auf der Weboberfläche des Fibaro Home Center 2 findest du unter dem Menüpunkt "Module" den Unterpunkt "Add or remove device". Über den Button "hinzufügen" erstellt du ein neues leeres Modul.

Fibaro HC2 - neues virtuelles Modul erstellen

Vergebe dem neuen virtuellen Modul einen passenden Namen. Ich denke Samsung Smart TV ist sehr passend ;-) . Nun dem ganzen noch einen Raum zuordnen.

In das Feld IP Adresse, muss logischerweise die IP Adresse des Samsung Fernseher eingeben. Diese bekommst du entweder über deinen Router heraus, oder über das Menü deines Smart TV. Dort unter Netzwerk -> Netzwerkstatus prüfen, zeigt er dir die IP Adresse an. Tipp: Vergib deinem Samsung TV eine feste IP Adresse, damit du diese nicht ständig im virtuellen Modul anpassen musst.

Als TCP Port verwende den Port: 55000

Fibaro HC2 - Titel vergeben und IP des Samsung TV eintragen

Wechsel in die Registerkarte "Fortgeschritten" und füge ein neuen Button hinzu.

Fibaro HC2 - neuen Button zum virtuellen Modul hinzufügen

Das Feld "Label" ist letztendlich die Beschriftung des Buttons. Das Feld "ID" kannst du frei definieren, der Quellcode wird sich später nicht darauf beziehen. Wechsel zu LUA Code.

Fibaro HC2 - Button per Label benennen

Kopiere den folgenden Code in den LUA Code des eben erstellten Button.

-- <configuration> -- 
selfId = fibaro:getSelfId()
tvIpAddress = fibaro:get(selfId, "IPAddress")
tvPort = 55000 
keycodestring = "KEY_POWEROFF"
tvAuthString = string.char(0x00,0x14,0x00,0x69,0x70,0x68,0x6f,0x6e,0x65,0x2e,0x2e,0x69,0x61,0x70,0x70,0x2e,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x38,0x00,0x64,0x00,0x14,0x00,0x4d,0x54,0x6b,0x79,0x4c,0x6a,0x45,0x32,0x4f,0x43,0x34,0x77,0x4c,0x6a,0x45,0x78,0x4d,0x41,0x3d,0x3d,0x18,0x00,0x4e,0x45,0x4d,0x74,0x4e,0x7a,0x49,0x74,0x51,0x6a,0x6b,0x74,0x4e,0x44,0x4d,0x74,0x4d,0x6a,0x51,0x74,0x4f,0x45,0x49,0x3d,0x04,0x00,0x54,0x51,0x3d,0x3d)
-- </configuration> --
-- character table string 
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-- encoding to base64
function enc(data) 
 return ((data:gsub('.', function(x) 
 local r,b='',x:byte() 
 for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end 
 return r; 
 end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) 
 if (#x < 6) then return '' end 
 local c=0 
 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end 
 return b:sub(c+1,c+1) 
 end)..({ '', '==', '=' })[#data%3+1]) 
end
-- helper function 
function num2bytes(num)
local retStr="" 
 for i=1,2 do 
 retStr = retStr .. string.char(num%256) 
 num = math.floor(num/256) 
 end 
 return retStr 
end
tcpSocket = Net.FTcpSocket(tvIpAddress, tvPort)
-- say hello to the TV ;) 
bytes, errorCode = tcpSocket:write(tvAuthString)
keycodebase = string.char(0x00,0x13,0x00,0x69,0x70,0x68,0x6f,0x6e,0x65,0x2e,0x69,0x61,0x70,0x70,0x2e,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67)
-- payload 
payloadinit = string.char(0x00,0x00,0x00) 
keycode = enc(keycodestring)
keycodesize = num2bytes(string.len(keycode))
payloadsize = num2bytes(string.len(payloadinit .. keycode ..keycodesize))
-- combining the message 
message = keycodebase .. payloadsize .. payloadinit .. keycodesize .. keycode
-- sending keycode 
bytes, errorCode2 = tcpSocket:write(message)
if errorCode == 0 and errorCode2 == 0 
then 
 -- printing log under virtual device 
 fibaro:log("transfer OK: " .. keycodestring) 
else 
 fibaro:log("transfer failed") 
end

Fibaro HC2 - LUA Code zum steuern des Samsung TV

Wenn du nun das virtuelle Modul speicherst, hast du bereits einen funktionierenden Ein- und Ausschalter für deinen Samsung Fernseher. Los probier es gleich mal aus!

Geht nicht aus? Richtig, wenn du alles richtig gemacht hast, wird auf deinem Fernseher jetzt eine Meldung erscheinen, welche dich fragt ob die Fernbedienung xxx berechtigt ist den Fernseher zu steuern. Mit der originalen (physischen) Fernbedienung wähle hier ok aus und bestätige dies. Danach versuche deinen neu erstellten Ausschalt-Button noch einmal.

[carousel arrows="display" buttons="display"]
[panel]

neue Fernbedienung für Samsung TV zulassen

[/panel]

[panel]

Samsung TV meldet neue Fernbedieung

[/panel]
[/carousel]

Geht?

Kurze Erklärung des Script.

Im Kopf des Script findest du folgendes Kommando.

selfId = fibaro:getSelfId()
tvIpAddress = fibaro:get(selfId, "IPAddress")

Mit dem Befehl fibaro:get(selfID, "IPAdress") lesen wir die IP Adresse aus, welche du oben vom Samsung TV eingegeben hast. Diese schreiben wir in die Variable "tvIpAdress" welche später im Script weiter verwendet wird.

Der folgende keycodestring ist der eigentliche Befehl welchen wir an den Fernseher senden. In diesem Fall PowerOFF, also ausschalten. Das ist alles. Du kannst also das Script nehmen und dir soviel Buttons anlegen wie du benötigst. Das einzige was im gesamten Script geändert werden muss ist der Keystring. Alle verfügbaren Befehle zähle ich am Ende dieses Beitrags auf.

keycodestring = "KEY_POWEROFF"

Fibaro HC2 - keystring im LUA Code anpassen

Das war es schon. Alles kein Hexenwerk. Nun kannst du dieses virtuelle Modul in Szenen aufrufen um zum Beispiel in der Szene TV-Abend, die Jalousien herunter zu fahren, die Philips Hue Leuchten zu dimmen und den Samsung Fernseher einzuschalten.

Ich hab mal eine kleine Fernbedienung als virtuelles Modul nachgebaut. Diese kannst du dir hier herunterladen. Nach dem Download auf deinem PC entpacken und die *.vif Datei einfach in das Fibaro HC2 unter virtuelle Module importieren.

[icons icon="icon-folder-open" color="#1e73be" size="13"]Samsung Smart TV - virtuelles Modul

Die gängigsten keyCodes:

 KEY_0
 KEY_1
 KEY_2
 KEY_3
 KEY_4
 KEY_5
 KEY_6
 KEY_7
 KEY_8
 KEY_9
 KEY_UP
 KEY_DOWN
 KEY_LEFT
 KEY_RIGHT
 KEY_MENU
 KEY_PRECH
 KEY_GUIDE
 KEY_INFO
 KEY_RETURN
 KEY_CH_LIST
 KEY_EXIT
 KEY_ENTER
 KEY_SOURCE
 KEY_AD #KEY_PLAY
 KEY_PAUSE
 KEY_MUTE
 KEY_PICTURE_SIZE
 KEY_VOLUP
 KEY_VOLDOWN
 KEY_TOOLS
 KEY_POWEROFF
 KEY_CHUP
 KEY_CHDOWN
 KEY_CONTENTS
 KEY_W_LINK #Media P
 KEY_RSS #Internet
 KEY_MTS #Dual
 KEY_CAPTION #Subt
 KEY_REWIND
 KEY_FF
 KEY_REC
 KEY_STOP
 KEY_TV

Alle verfügbaren keyCodes:

KEY_REWIND
 #KEY_0,
 KEY_1,
 KEY_2,
 KEY_3,
 KEY_4,
 KEY_5,
 KEY_6,
 KEY_7,
 KEY_8,
 KEY_9,
 KEY_11,
 KEY_12,
 KEY_3SPEED,
 KEY_4_3,
 KEY_16_9,
 KEY_AD,
 KEY_ADDDEL,
 KEY_ALT_MHP,
 KEY_ANGLE,
 KEY_ANTENA,
 KEY_ANYNET,
 KEY_ANYVIEW,
 KEY_APP_LIST,
 KEY_ASPECT,
 KEY_AUTO_ARC_ANTENNA_AIR,
 KEY_AUTO_ARC_ANTENNA_CABLE,
 KEY_AUTO_ARC_ANTENNA_SATELLITE,
 KEY_AUTO_ARC_ANYNET_AUTO_START,
 KEY_AUTO_ARC_ANYNET_MODE_OK,
 KEY_AUTO_ARC_AUTOCOLOR_FAIL,
 KEY_AUTO_ARC_AUTOCOLOR_SUCCESS,
 KEY_AUTO_ARC_CAPTION_ENG,
 KEY_AUTO_ARC_CAPTION_KOR,
 KEY_AUTO_ARC_CAPTION_OFF,
 KEY_AUTO_ARC_CAPTION_ON,
 KEY_AUTO_ARC_C_FORCE_AGING,
 KEY_AUTO_ARC_JACK_IDENT,
 KEY_AUTO_ARC_LNA_OFF,
 KEY_AUTO_ARC_LNA_ON,
 KEY_AUTO_ARC_PIP_CH_CHANGE,
 KEY_AUTO_ARC_PIP_DOUBLE,
 KEY_AUTO_ARC_PIP_LARGE,
 KEY_AUTO_ARC_PIP_LEFT_BOTTOM,
 KEY_AUTO_ARC_PIP_LEFT_TOP,
 KEY_AUTO_ARC_PIP_RIGHT_BOTTOM,
 KEY_AUTO_ARC_PIP_RIGHT_TOP,
 KEY_AUTO_ARC_PIP_SMALL,
 KEY_AUTO_ARC_PIP_SOURCE_CHANGE,
 KEY_AUTO_ARC_PIP_WIDE,
 KEY_AUTO_ARC_RESET,
 KEY_AUTO_ARC_USBJACK_INSPECT,
 KEY_AUTO_FORMAT,
 KEY_AUTO_PROGRAM,
 KEY_AV1,
 KEY_AV2,
 KEY_AV3,
 KEY_BACK_MHP,
 KEY_BOOKMARK,
 KEY_CALLER_ID,
 KEY_CAPTION,
 KEY_CATV_MODE,
 KEY_CHDOWN,
 KEY_CHUP,
 KEY_CH_LIST,
 KEY_CLEAR,
 KEY_CLOCK_DISPLAY,
 KEY_COMPONENT1,
 KEY_COMPONENT2,
 KEY_CONTENTS,
 KEY_CONVERGENCE,
 KEY_CONVERT_AUDIO_MAINSUB,
 KEY_CUSTOM,
 KEY_CYAN,
 KEY_BLUE(KEY_CYAN), // Proxy for KEY_CYAN
 KEY_DEVICE_CONNECT,
 KEY_DISC_MENU,
 KEY_DMA,
 KEY_DNET,
 KEY_DNIe,
 KEY_DNSe,
 KEY_DOOR,
 KEY_DOWN,
 KEY_DSS_MODE,
 KEY_DTV,
 KEY_DTV_LINK,
 KEY_DTV_SIGNAL,
 KEY_DVD_MODE,
 KEY_DVI,
 KEY_DVR,
 KEY_DVR_MENU,
 KEY_DYNAMIC,
 KEY_ENTER,
 KEY_ENTERTAINMENT,
 KEY_ESAVING,
 KEY_EXIT,
 KEY_EXT1,
 KEY_EXT2,
 KEY_EXT3,
 KEY_EXT4,
 KEY_EXT5,
 KEY_EXT6,
 KEY_EXT7,
 KEY_EXT8,
 KEY_EXT9,
 KEY_EXT10,
 KEY_EXT11,
 KEY_EXT12,
 KEY_EXT13,
 KEY_EXT14,
 KEY_EXT15,
 KEY_EXT16,
 KEY_EXT17,
 KEY_EXT18,
 KEY_EXT19,
 KEY_EXT20,
 KEY_EXT21,
 KEY_EXT22,
 KEY_EXT23,
 KEY_EXT24,
 KEY_EXT25,
 KEY_EXT26,
 KEY_EXT27,
 KEY_EXT28,
 KEY_EXT29,
 KEY_EXT30,
 KEY_EXT31,
 KEY_EXT32,
 KEY_EXT33,
 KEY_EXT34,
 KEY_EXT35,
 KEY_EXT36,
 KEY_EXT37,
 KEY_EXT38,
 KEY_EXT39,
 KEY_EXT40,
 KEY_EXT41,
 KEY_FACTORY,
 KEY_FAVCH,
 KEY_FF,
 KEY_FF_,
 KEY_FM_RADIO,
 KEY_GAME,
 KEY_GREEN,
 KEY_GUIDE,
 KEY_HDMI,
 KEY_HDMI1,
 KEY_HDMI2,
 KEY_HDMI3,
 KEY_HDMI4,
 KEY_HELP,
 KEY_HOME,
 KEY_ID_INPUT,
 KEY_ID_SETUP,
 KEY_INFO,
 KEY_INSTANT_REPLAY,
 KEY_LEFT,
 KEY_LINK,
 KEY_LIVE,
 KEY_MAGIC_BRIGHT,
 KEY_MAGIC_CHANNEL,
 KEY_MDC,
 KEY_MENU,
 KEY_MIC,
 KEY_MORE,
 KEY_MOVIE1,
 KEY_MS,
 KEY_MTS, //Dual
 KEY_MUTE,
 KEY_NINE_SEPERATE,
 KEY_OPEN,
 KEY_PANNEL_CHDOWN,
 KEY_PANNEL_CHUP,
 KEY_PANNEL_ENTER,
 KEY_PANNEL_MENU,
 KEY_PANNEL_POWER,
 KEY_PANNEL_SOURCE,
 KEY_PANNEL_VOLDOW,
 KEY_PANNEL_VOLUP,
 KEY_PANORAMA,
 KEY_PAUSE,
 KEY_PCMODE,
 KEY_PERPECT_FOCUS,
 KEY_PICTURE_SIZE,
 KEY_PIP_CHDOWN,
 KEY_PIP_CHUP,
 KEY_PIP_ONOFF,
 KEY_PIP_SCAN,
 KEY_PIP_SIZE,
 KEY_PIP_SWAP,
 KEY_PLAY,
 KEY_PLUS100,
 KEY_PMODE,
 KEY_POWER,
 KEY_POWEROFF,
 KEY_POWERON,
 KEY_PRECH,
 KEY_PRINT,
 KEY_PROGRAM,
 KEY_QUICK_REPLAY,
 KEY_REC,
 KEY_RED,
 KEY_REPEAT,
 KEY_RESERVED1,
 KEY_RETURN,
 KEY_REWIND,
 KEY_REWIND_,
 KEY_RIGHT,
 KEY_RSS, // Internet
 KEY_INTERNET(KEY_RSS), // Proxy for KEY_RSS
 KEY_RSURF,
 KEY_SCALE,
 KEY_SEFFECT,
 KEY_SETUP_CLOCK_TIMER,
 KEY_SLEEP,
 KEY_SOUND_MODE,
 KEY_SOURCE,
 KEY_SRS,
 KEY_STANDARD,
 KEY_STB_MODE,
 KEY_STILL_PICTURE,
 KEY_STOP,
 KEY_SUB_TITLE,
 KEY_SVIDEO1,
 KEY_SVIDEO2,
 KEY_SVIDEO3,
 KEY_TOOLS,
 KEY_TOPMENU,
 KEY_TTX_MIX,
 KEY_TTX_SUBFACE,
 KEY_TURBO,
 KEY_TV,
 KEY_TV_MODE,
 KEY_UP,
 KEY_VCHIP,
 KEY_VCR_MODE,
 KEY_VOLDOWN,
 KEY_VOLUP,
 KEY_WHEEL_LEFT,
 KEY_WHEEL_RIGHT,
 KEY_W_LINK, // Media P
 KEY_YELLOW,
 KEY_ZOOM1,
 KEY_ZOOM2,
 KEY_ZOOM_IN,
 KEY_ZOOM_MOVE,
 KEY_ZOOM_OUT;
Die mobile Version verlassen