{"id":8387,"date":"2025-02-21T09:16:20","date_gmt":"2025-02-21T08:16:20","guid":{"rendered":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2025\/02\/21\/motorized-tv-ceiling-mount-control-via-home-assistant\/"},"modified":"2025-02-21T09:16:20","modified_gmt":"2025-02-21T08:16:20","slug":"motorized-tv-ceiling-mount-control-via-home-assistant","status":"publish","type":"post","link":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2025\/02\/21\/motorized-tv-ceiling-mount-control-via-home-assistant\/?lang=en","title":{"rendered":"Motorized TV ceiling mount control via Home Assistant"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_8387\" class=\"pvc_stats all  \" data-element-id=\"8387\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p style=\"text-align: justify\">Since I&#8217;ve been working on home automation, I&#8217;ve naturally wanted to optimize and simplify as much as possible and adapt and implement it in line with the new buzzwords \u201cgreen electronics\u201d, \u201csustainability\u201d, \u201cenergy-saving\u201d &#8230; and so on. For example, my appliances switch off when they are not used or ignored, stand-by energy consumption is largely avoided and IOT technology also prevents human forgetfulness (leaving windows open in winter or forgetting to switch lights off).\u00a0As readers of the blog already know, I use systems such as HomeMatic, NodeRed and, for some time now, Homeassistant with ESPHome, Zigbee2Mqtt etc. Of course, the aim is also to keep all systems cloud-free. I don&#8217;t want the data to take a detour via some server in the Far East to switch a light on and off in my home. So, if possible, everything should take place within my own network and not \u201cphone\u201d to the outside and also work if I cut the data line.<\/p>\n<p style=\"text-align: justify\">For a long time now, various suppliers have been offering an extremely practical device for comfort in the parents&#8216; quiet room. I&#8217;m talking about a space-saving way of accommodating the flicker box (nowadays also known as a flat-screen TV) in the room. I&#8217;m just mentioning terms like:<\/p>\n<p style=\"text-align: justify\">Speaka Professional TV ceiling mount electric motorized (1439178) or MyWall HL46ML &#8230; etc. Some of these devices can be controlled with a wireless remote control, others via the Tuya CloudApp. You can bypass the Tuya app via the Tuya IOT development environment and bring these devices into your home assistant via the \u201cTuyaLocal\u201d integration &#8211; it works &#8211; but it&#8217;s more of a \u201cONLY\u201d solution.\u00a0In my opinion, the ideal solution is to integrate these devices into the ESPHome system. Using the Speaka Professional TV ceiling mount as an example, I will show you how it can be integrated into the ESPHome network and thus into the Home Assistant with a small extension. This version of the SpeaKa part has no Internet connection and is only controlled via a wireless remote control.<\/p>\n<div id=\"attachment_8071\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-scaled.jpg\"><img fetchpriority=\"high\" decoding=\"async\" aria-describedby=\"caption-attachment-8071\" class=\"wp-image-8070 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-1024x627.jpg\" alt=\"\" width=\"474\" height=\"290\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-1024x627.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-300x184.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-768x471.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-1536x941.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-3-2048x1255.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8071\" class=\"wp-caption-text\">TV ceiling mount with open cover<\/p><\/div>\n<p style=\"text-align: justify\">With a little reverse engineering, we (my colleague Werner and myself) analyzed the existing appliance factory. The system is structured something like this:<\/p>\n<div id=\"attachment_8067\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-scaled.jpg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-8067\" class=\"wp-image-8066 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-1024x768.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-1024x768.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-300x225.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-768x576.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-1536x1152.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-1-2048x1536.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8067\" class=\"wp-caption-text\">Circuit board in the ceiling bracket<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_8120\" style=\"width: 908px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/systemdiagram-e1708696072848.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8120\" class=\"wp-image-8119 size-full\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/systemdiagram-e1708696072848.jpg\" alt=\"\" width=\"898\" height=\"501\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/systemdiagram-e1708696072848.jpg 898w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/systemdiagram-e1708696072848-300x167.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/systemdiagram-e1708696072848-768x428.jpg 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><p id=\"caption-attachment-8120\" class=\"wp-caption-text\">Systemdiagramm<\/p><\/div>\n<p style=\"text-align: justify\">The system diagram above shows how the circuit board is constructed. The power supply comes from a plug-in power supply with DC 24V output at 1.5A. On the board you can still see an unpopulated area whose solder pads are wired with +3V3, GND and RX, TX lines suitable for an ESP8266. A USB socket can also be seen. These two interfaces are not included in the diagram. We examined the RX\/TX lines that are routed from the unpopulated solder pads (ESP8266) to the microcontroller (1301 X 016B). However, no signals could be measured here. (Presumably the interface is not activated in the flashed program version).<\/p>\n<div id=\"attachment_8075\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8075\" class=\"wp-image-8074 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-5-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8075\" class=\"wp-caption-text\">\u201cDebug\u201d wires on the RX\/TX and on the RF chip<\/p><\/div>\n<p style=\"text-align: justify\">So this does not take us any further. In the next step, we looked at where the control signals of the radio remote control come from and how they are subsequently implemented. The RF receiver chip has 16 pins and unfortunately no labeling. Or has it been removed? The supply voltage of the RF chip is connected to pin 1 and pin 16, pin 2 and pin 3 are connected to a crystal and a line is routed from pin 9 to the microcontroller.\u00a0So this must be the data output. Using the \u201cPulseView\u201d software from Sigrok and a Far East logic analyzer, we sniffed this output. And lo and behold, data packets with a duration of 10.3ms were revealed here. The PulseView software was able to recognize the protocol as an RS232 protocol after a few attempts with different analyzed data rates. It was then easy to log the received and decoded control commands to the microcontroller.<\/p>\n<div id=\"attachment_8073\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8073\" class=\"wp-image-8072 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-4-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8073\" class=\"wp-caption-text\">RF chip with connected \u201csniffer\u201d cable<\/p><\/div>\n<p>The baud rate of the RS232 port on the RF chip output is 9600 at 8N1. 10 bytes are received in HEX for each command sent. Here is the list of commands: (missing bytes follow&#8230;maybe sometime)<\/p>\n<table style=\"height: 351px\" width=\"562\">\n<tbody>\n<tr>\n<td colspan=\"3\" width=\"240\">Befehl<\/td>\n<td width=\"80\">Byte0<\/td>\n<td width=\"80\">Byte1<\/td>\n<td width=\"80\">Byte2<\/td>\n<td width=\"80\">Byte3<\/td>\n<td width=\"80\">Byte4<\/td>\n<td width=\"80\">Byte5<\/td>\n<td width=\"80\">Byte6<\/td>\n<td width=\"80\">Byte7<\/td>\n<td width=\"80\">Byte8<\/td>\n<td width=\"80\">Byte9<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">UP<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td>0x01<\/td>\n<td>0x00<\/td>\n<td>0x02<\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">DOWN<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td>0x00<\/td>\n<td>0x10<\/td>\n<td>0x11<\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">LEFT<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">RIGHT<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">BUTTON1<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">BUTTON2<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td>0x00<\/td>\n<td>0x08<\/td>\n<td>0x09<\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">MEM1<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">MEM2<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">OK<\/td>\n<td>0xAA<\/td>\n<td>0x06<\/td>\n<td>0x04<\/td>\n<td>0x25<\/td>\n<td>0x03<\/td>\n<td>0xD5<\/td>\n<td>0x00<\/td>\n<td>0x40<\/td>\n<td>0x41<\/td>\n<td>0x55<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\">SET<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<td>xx<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8084 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-10-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Once the data protocol had been found using the logic analyzer, we tried to send the data to the microcontroller using a terminal program and a USB to TTL232 converter. The RF chip was removed for this purpose. It pulled the level to VCC in the idle state and prevented parallel operation of the \u201cRS232 transmitter\u201d.<\/p>\n<div id=\"attachment_8095\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8095\" class=\"wp-image-8094 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-1024x781.jpg\" alt=\"\" width=\"474\" height=\"362\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-1024x781.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-300x229.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-768x585.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-1536x1171.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-15-2048x1561.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8095\" class=\"wp-caption-text\">RF-Chip removed<\/p><\/div>\n<div id=\"attachment_8091\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8091\" class=\"wp-image-8090 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-13-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8091\" class=\"wp-caption-text\">Board without chip with debug line<\/dd>\n<dd><\/p><\/div>\n<p>&nbsp;<\/p>\n<div style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8086 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-11-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p class=\"wp-caption-text\">USB UART for sending commands<\/p><\/div>\n<p style=\"text-align: justify\">The control commands from the table above could be successfully sent via the terminal program. Now only an ESP32 board had to take over this task. An ESP32 NodeMCU board from the pool was equipped with a basic ESPHome image and integrated into the Homeassistant network. The ESPHome node now only had to be taught to send the byte sequence via the TX pin of the ESP32 when the corresponding trigger was activated in the Homeassistant. To do this, the ESP32 board was attached to the PCB and the VCC3V3, GND and TX lines were soldered to PIN9 of the former RF chip.<\/p>\n<div style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8104 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-950x1024.jpg\" alt=\"\" width=\"474\" height=\"511\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-950x1024.jpg 950w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-278x300.jpg 278w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-768x828.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-1425x1536.jpg 1425w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-20-1900x2048.jpg 1900w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p class=\"wp-caption-text\">ESP32 on the board of the Speaka ceiling bracket<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_8107\" style=\"width: 484px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8107\" class=\"wp-image-8106 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-1024x770.jpg\" alt=\"\" width=\"474\" height=\"356\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-1024x770.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-300x226.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-768x578.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-1536x1155.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-21-2048x1540.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><p id=\"caption-attachment-8107\" class=\"wp-caption-text\">Re-installed in the ceiling bracket<\/p><\/div>\n<p style=\"text-align: justify\">The following esphome script must now be added to the ESPHome web environment.<\/p>\n<pre style=\"font-family: arial;font-size: 12px;border: 1px dashed #CCCCCC;width: 99%;height: auto;overflow: auto;background: #f0f0f0;;background-image: url('http:\/\/2.bp.blogspot.com\/_z5ltvMQPaa8\/SjJXr_U2YBI\/AAAAAAAAAAM\/46OqEP32CJ8\/s320\/codebg.gif');padding: 0px;color: #000000;text-align: left;line-height: 20px\"><code style=\"color: #000000\"> esphome:  \r\n  name: tvhalterung  \r\n  friendly_name: TVHalterung  \r\n   \r\n esp32:  \r\n  board: esp32dev  \r\n  framework:  \r\n   type: arduino  \r\n   \r\n # Enable logging  \r\n logger:  \r\n   \r\n # Enable Home Assistant API  \r\n api:  \r\n  encryption:  \r\n   key: \"hier dein key beim Anlegen des device\"  \r\n   \r\n ota:  \r\n  password: \"hier dein ota password\"  \r\n   \r\n wifi:  \r\n  ssid: !secret wifi_ssid  \r\n  password: !secret wifi_password  \r\n   \r\n  # Enable fallback hotspot (captive portal) in case wifi connection fails  \r\n  ap:  \r\n   ssid: \"Tvhalterung Fallback Hotspot\"  \r\n   password: \"hier wieder deins\"  \r\n   \r\n captive_portal:  \r\n   \r\n uart:  \r\n  tx_pin: 4  \r\n  rx_pin: 5  \r\n  baud_rate: 9600  \r\n   \r\n # Example button configuration  \r\n button:  \r\n  - platform: template  \r\n   name: TV Halterung UP  \r\n   id: tv_up  \r\n   icon: \"mdi:arrow-up-bold-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Up\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x01,0x00,0x02,0x55]  \r\n    \r\n  - platform: template  \r\n   name: TV Halterung OK  \r\n   id: tv_ok  \r\n   icon: \"mdi:stop-circle-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV OK\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x40,0x41,0x55]  \r\n   \r\n  - platform: template  \r\n   name: TV Halterung DOWN  \r\n   id: tv_down  \r\n   icon: \"mdi:arrow-down-bold-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Down\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x10,0x11,0x55]  \r\n   \r\n  - platform: template  \r\n   name: TV Halterung Button1  \r\n   id: tv_button1  \r\n   icon: \"mdi:numeric-1-circle-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Button1\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x20,0x21,0x55]  \r\n   \r\n  - platform: template  \r\n   name: TV Halterung Button2  \r\n   id: tv_button2  \r\n   icon: \"mdi:numeric-2-circle-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Button2\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x08,0x09,0x55]  \r\n    \r\n  - platform: template  \r\n   name: TV Halterung Left  \r\n   id: tv_left  \r\n   icon: \"mdi:arrow-left-bold-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Left\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x20,0x21,0x55]  \r\n   \r\n  - platform: template  \r\n   name: TV Halterung Right  \r\n   id: tv_right  \r\n   icon: \"mdi:arrow-right-bold-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV Right\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x20,0x21,0x55]  \r\n    \r\n  - platform: template  \r\n   name: TV Halterung MEM1  \r\n   id: tv_mem1  \r\n   icon: \"mdi:alpha-m-circle-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV MEM1\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x01,0x02,0x55]  \r\n   \r\n  - platform: template  \r\n   name: TV Halterung MEM2  \r\n   id: tv_mem2  \r\n   icon: \"mdi:alpha-m-circle-outline\"  \r\n   on_press:  \r\n    - logger.log: \"Button pressed TV MEM2\"  \r\n    - uart.write: [0xAA,0x06,0x04,0x25,0x03,0xD5,0x00,0x01,0x02,0x55]  \r\n<\/code><\/pre>\n<p style=\"text-align: justify\">Once the esphomescript has been compiled and uploaded to the ESP, there is a new ESPHome device with the name TV holder in the Home Assistant environment. The buttons for the control are now listed here as entities. If everything went well, you should now be able to control the TV mount via the Home Assistant.<\/p>\n<p>(Not all control commands have been implemented correctly yet &#8211; the correct codes will be added to the table)<\/p>\n<p><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8108 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-1024x578.jpg\" alt=\"\" width=\"474\" height=\"268\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-1024x578.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-300x169.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-768x434.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-1536x867.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-22-2048x1156.jpg 2048w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8114 size-large\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827.jpg\" alt=\"\" width=\"474\" height=\"513\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827.jpg 2365w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827-277x300.jpg 277w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827-946x1024.jpg 946w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827-768x831.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827-1419x1536.jpg 1419w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2024\/02\/TVLiftMod-25-scaled-e1709023875827-1892x2048.jpg 1892w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_8387\" class=\"pvc_stats all  \" data-element-id=\"8387\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>Since I&#8217;ve been working on home automation, I&#8217;ve naturally wanted to optimize and simplify as much as possible and adapt and implement it in line with the new buzzwords \u201cgreen electronics\u201d, \u201csustainability\u201d, \u201cenergy-saving\u201d &#8230; and so on. For example, my appliances switch off when they are not used or ignored, stand-by energy consumption is largely&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2025\/02\/21\/motorized-tv-ceiling-mount-control-via-home-assistant\/?lang=en\">Weiterlesen<\/a><\/p>\n","protected":false},"author":86,"featured_media":8107,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[1506,1499],"tags":[2618,2571,2624,2617,2621,2622,2625,2626,2620,2619,2623],"class_list":["post-8387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronics-hobbyist","category-miscellaneous","tag-hack-my-tv-mount","tag-homeassistant-en","tag-mod-for-homeassistant","tag-motorized-tv-ceiling-mount","tag-out-of-the-cloud","tag-plb-m0544-en","tag-pulseview-en","tag-sigrock-en","tag-speaka-professional-en","tag-tv-ceiling-mount-conversion-for-homeassistant","tag-tv-ceiling-mount-electric"],"a3_pvc":{"activated":true,"total_views":272,"today_views":1},"_links":{"self":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/8387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/comments?post=8387"}],"version-history":[{"count":0,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/8387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media\/8107"}],"wp:attachment":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media?parent=8387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/categories?post=8387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/tags?post=8387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}