SMHarman Posted April 19, 2016 Share Posted April 19, 2016 Isn't it easier to rip the files to flac and despatch the changer to the great electronics recycle centrer in the sky? One hdd in the sata port. Job done. ??? thecodeman 1 Quote Link to comment Share on other sites More sharing options...
Cyknight Posted April 19, 2016 Share Posted April 19, 2016 40 minutes ago, SMHarman said: Isn't it easier to rip the files to flac and despatch the changer to the great electronics recycle centrer in the sky? One hdd in the sata port. Job done. ??? I don't think this is about 'ease' SMHarman 1 Quote Link to comment Share on other sites More sharing options...
SMHarman Posted April 19, 2016 Share Posted April 19, 2016 I don't think this is about 'ease' Ha I thought for all of 10 minutes about getting a DVD/BD changer for the stack of discs. Then I discovered UV and that a couple of 4GB hdds in my synology was quicker and easier and I moved on. I think I could have ripped these 400 discs to a hdd, tagged them, added artwork and had them in MyMusic before OP gets this displaying in the touch screen. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 19, 2016 Author Share Posted April 19, 2016 3 hours ago, Cyknight said: I don't think this is about 'ease' Correct, it's about challenges Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 20, 2016 Author Share Posted April 20, 2016 I see that communication between director and navigators (e.g.: touch screen) is using SSL, need to decrypt or otherwise disable that to see what's going on on the wire.... Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 20, 2016 Author Share Posted April 20, 2016 Well that was easy enough. Interesting stuff on the wire... this is an extract from when a touch screen reboots, we can spoil the various SOAP commands used to interact with director... I wonder what SPECIAL AUDIO means? <c4soap name="SendToDevice" async="False" seq="196"><param name="iddevice" type="number">6</param><param name="data" type="string"><devicecommand><command>GET_MOVIE_DEVICES</command><params><param><name>storage</name><value type="INT"><static>1</static></value></param></params></devicecommand></param></c4soap> <c4soap name="SendToDevice" seq="196" result="1"><sources><source><id>94</id><type>VIDEO_SELECTION</type></source><source><id>14</id><type>COMPONENT</type></source><source><id>357</id><type>COMPONENT</type></source><source><id>356</id><type>COMPONENT</type></source><source><id>355</id><type>COMPONENT</type></source><source><id>354</id><type>COMPONENT</type></source><source><id>353</id><type>HDMI</type></source><source><id>352</id><type>COMPONENT</type></source><source><id>351</id><type>COMPONENT</type></source><source><id>349</id><type>HDMI</type></source><source><id>328</id><type>HDMI</type></source><source><id>251</id><type>AUDIO_MEDIA_STORAGE</type></source></sources></c4soap> <c4soap name="SendToDevice" async="False" seq="190"><param name="iddevice" type="number">6</param><param name="data" type="string"><devicecommand><command>GET_MUSIC_DEVICES</command><params><param><name>storage</name><value type="INT"><static>1</static></value></param></params></devicecommand></param></c4soap> <c4soap name="SendToDevice" seq="190" result="1"><sources><source><id>14</id><type>DIGITAL_COAX</type></source><source><id>357</id><type>HDMI</type></source><source><id>356</id><type>HDMI</type></source><source><id>355</id><type>HDMI</type></source><source><id>354</id><type>STEREO</type></source><source><id>353</id><type>STEREO</type></source><source><id>352</id><type>STEREO</type></source><source><id>351</id><type>HDMI</type></source><source><id>350</id><type>STEREO</type></source><source><id>349</id><type>AUDIO_SELECTION</type></source><source><id>328</id><type>HDMI</type></source><source><id>100002</id><type>DIGITAL_AUDIO_CLIENT</type></source><source><id>402</id><type>DIGITAL_AUDIO_SERVER</type></source><source><id>251</id><type>AUDIO_MEDIA_STORAGE</type></source></sources></c4soap> <c4soap name="SendToDevice" async="False" seq="188"><param name="iddevice" type="number">6</param><param name="data" type="string"><devicecommand><command>GET_LISTEN_DEVICES</command><params><param><name>storage</name><value type="INT"><static>1</static></value></param></params></devicecommand></param></c4soap> <c4soap name="SendToDevice" seq="188" result="1"><sources><source><id>4294966298</id><type>SPECIAL_AUDIO</type></source><source><id>4294966299</id><type>SPECIAL_AUDIO</type></source><source><id>14</id><type>DIGITAL_COAX</type></source><source><id>272</id><type>HDMI</type></source><source><id>357</id><type>HDMI</type></source><source><id>356</id><type>HDMI</type></source><source><id>355</id><type>HDMI</type></source><source><id>354</id><type>STEREO</type></source><source><id>353</id><type>STEREO</type></source><source><id>352</id><type>STEREO</type></source><source><id>351</id><type>HDMI</type></source><source><id>350</id><type>STEREO</type></source><source><id>349</id><type>AUDIO_SELECTION</type></source><source><id>328</id><type>HDMI</type></source><source><id>100002</id><type>DIGITAL_AUDIO_CLIENT</type></source><source><id>402</id><type>DIGITAL_AUDIO_SERVER</type></source><source><id>251</id><type>AUDIO_MEDIA_STORAGE</type></source></sources></c4soap> <c4soap name="SendToDevice" async="False" seq="124"><param name="iddevice" type="number">482</param><param name="data" type="string"><devicecommand><command>NAVSTATE_GET</command><params /></devicecommand></param></c4soap> <c4soap name="SendToDevice" seq="124" result="1"><NAV_STATE><state><object name="data"><object name="saved_appList"><array name="items"><object name="0"><value val="1" type="number" name="type"/><value val="C4_weatherApp" type="string" name="appId"/><value val="Weather" type="string" name="name"/><value val="1_1" type="string" name="version"/><value val="1-C4_weatherApp-1_1-icon.swf" type="string" name="icon"/><value val="4247" type="number" name="iconSize"/><value val="e13bfdb3560e86f5c0eb564adfc16bd5" type="string" name="iconMd5"/><value val="1-C4_weatherApp-1_1.swf" type="string" name="file"/><value val="370876" type="number" name="fileSize"/><value val="4d3fd98e70b97fd69d539b9184bd75af" type="string" name="fileMd5"/><array name="resolutions"><value val="1" type="string" name="0"/><value val="2" type="string" name="1"/><value val="3" type="string" name="2"/><value val="4" type="string" name="3"/><value val="5" type="string" name="4"/><value val="" type="string" name="5"/></array><value val="false" type="boolean" name="beta"/><value val="true" type="boolean" name="builtIn"/></object><object name="1"><value val="1" type="number" name="type"/><value val="C4_news" type="string" name="appId"/><value val="News" type="string" name="name"/><value val="1_1" type="string" name="version"/><value val="1-C4_news-1_1-icon.swf" type="string" name="icon"/><value val="4403" type="number" name="iconSize"/><value val="0d295abbbf86b5b14293c2d730fa3eb9" type="string" name="iconMd5"/><value val="1-C4_news-1_1.swf" type="string" name="file"/><value val="194576" type="number" name="fileSize"/><value val="147e9d328ff0f462ecb35795fb7f00f6" type="string" name="fileMd5"/><array name="resolutions"><value val="1" type="string" name="0"/><value val="2" type="string" name="1"/><value val="3" type="string" name="2"/><value val="4" type="string" name="3"/><value val="5" type="string" name="4"/><value val="" type="string" name="5"/></array><value val="false" type="boolean" name="beta"/><value val="true" type="boolean" name="builtIn"/></object><object name="2"><value val="1" type="number" name="type"/><value val="C4_appstore" type="string" name="appId"/><value val="4Store" type="string" name="name"/><value val="1_4" type="string" name="version"/><value val="1-C4_appstore-1_4-icon.swf" type="string" name="icon"/><value val="3349" type="number" name="iconSize"/><value val="1ebc72f51ce52f904be0f5ee9c931dcf" type="string" name="iconMd5"/><value val="1-C4_appstore-1_4.swf" type="string" name="file"/><value val="346900" type="number" name="fileSize"/><value val="934941efd976d214e9ec9b87d8583fec" type="string" name="fileMd5"/><array name="resolutions"><value val="1" type="string" name="0"/><value val="2" type="string" name="1"/><value val="3" type="string" name="2"/><value val="4" type="string" name="3"/><value val="5" type="string" name="4"/><value val="" type="string" name="5"/></array><value val="false" type="boolean" name="beta"/><value val="true" type="boolean" name="builtIn"/></object></array><value val="2.1" type="string" name="version"/><value val="********" type="string" name="user"/><value val="1109302822571377012b7ed4.82487795" type="string" name="token"/><value val="*********" type="string" name="password"/></object><value val="E10B03AE-6BCF-EE4D-6CBB-00052FBBEA5B" type="string" name="__SO_ID__"/><array name="arrWirelessNetworks"/><value val="300" type="number" name="ScreenSaverTimeout"/><value val="1461144632899" type="number" name="timestamp"/><value val="1" type="number" name="ScreenSaverMode"/><value val="0" type="number" name="BacklightOffTimeout"/><value val="0" type="number" name="SuspendTimeout"/><value type="xml" name="folderItems"><FolderItems><item translate="true" hidden="false" children="0" canOrganize="false" readOnly="false" type="folder" icon="nav_ddbtnico_favorites.png" name="Favorites" id="1"/><item id="0" type="CustomButtons"/></FolderItems></value><value val="1" type="string" name="favoritesRoot"/><value val="false" type="boolean" name="ScreenSaverShuffle"/><value val="30" type="number" name="ScreenSaverPhotoTimeout"/><array name="arrDirectorEntries"/><value val="0" type="number" name="lightingActiveTab"/><value val="type" type="string" name="MotorsSort"/><value val="true" type="boolean" name="BrowseCDGrid"/><value val="27" type="number" name="ScreenSaverCustomMode"/><object name="customHome"><value val="0" type="number" name="retmode"/><value val="0" type="number" name="viewid"/><value val="413" type="number" name="roomid"/></object></object></state></NAV_STATE></c4soap> There is also license information... :-) <c4soap name="SendToDeviceAsync" async="True"><param type="number" name="iddevice">100117</param><param type="string" name="data"><devicecommand><command>GetState</command><params></params></devicecommand></param></c4soap> <c4soap name="OnDataToUI" result="0" async="1"><param name="iddevice" type="ulong">100117</param><param name="time" type="ulong">1461147555</param><param name="data" type="xml"><GetState><ServiceConnectionsAllowed>true</ServiceConnectionsAllowed><Status>Disconnected</Status><ClientSideCertExists>true</ClientSideCertExists><GetServiceList><Service>ANDROID:50</Service><Service>AlbumSearch</Service><Service>AllowSupport</Service><Service>BroadcastSearch</Service><Service>DiscChangerScan</Service><Service>DiscSearch</Service><Service>GENERICNAVFULL</Service><Service>GENERICNAVFULL:50</Service><Service>INTERCOM:1</Service><Service>IPADFULL:50</Service><Service>IPFULL:50</Service><Service>IPLIT:0</Service><Service>IPMUS:0</Service><Service>MediaScan</Service><Service>MovieSearch</Service><Service>Rhapsody</Service></GetServiceList></GetState></param></c4soap> I will try to sniff the touch screen session during changer operation, to see what goes on the wire... maybe something useful will turn out, and then hopefully c4soap can be used to talk to navigator directly without need to go through the proxy. Quote Link to comment Share on other sites More sharing options...
GoGo Delicious Posted April 20, 2016 Share Posted April 20, 2016 21 hours ago, ziocan said: Correct, it's about challenges I like his attitude. This is a fun thread. I want to see you succeed. Good Luck! therockhr and msgreenf 2 Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 21, 2016 Author Share Posted April 21, 2016 Thanks Gogo. So, it appears that when the disc changer event fires, the navigators fire this request to director: <c4soap name="SendToDevice" async="False"> <param name="iddevice" type="number">413</param> <param name="data" type="string"> <devicecommand> <command>GET_AUDIO_MEDIA</command> <params> <param> <name>type</name> <value type="STRING"><static>ALBUM_MP3</static></value> </param> <param> <name>category</name> <value type="STRING"><static>artist</static></value> </param> </params> </devicecommand> </param> </c4soap> <c4soap name="SendToDevice" seq="236" result="1"><media><artists/></media></c4soap> They ask the room (413 in this case) what the new current playing media is. Of course, no mp3 here so the answer is just an empty information. Perhaps I need to find a way to inject this information into the room somehow? Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 24, 2016 Author Share Posted April 24, 2016 Here we go.... a custom button that calls an announcement to show what's playing when pressed, plus an automatic announcement when the track changes with auto dismissal. The whole information is taken from a variable exported by my driver. Now looking to integrate the cover art into the announcement.... :-) SMHarman 1 Quote Link to comment Share on other sites More sharing options...
neil12011 Posted April 25, 2016 Share Posted April 25, 2016 Nice. Quote Link to comment Share on other sites More sharing options...
SMHarman Posted April 25, 2016 Share Posted April 25, 2016 Here we go.... a custom button that calls an announcement to show what's playing when pressed, plus an automatic announcement when the track changes with auto dismissal. The whole information is taken from a variable exported by my driver. Now looking to integrate the cover art into the announcement.... :-) Congratulations. It still takes up 6 more RU than a ssd. Quote Link to comment Share on other sites More sharing options...
SMHarman Posted April 25, 2016 Share Posted April 25, 2016 Here we go.... a custom button that calls an announcement to show what's playing when pressed, plus an automatic announcement when the track changes with auto dismissal. The whole information is taken from a variable exported by my driver. Now looking to integrate the cover art into the announcement.... :-) Congratulations. It still takes up 6 more RU than a ssd. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 25, 2016 Author Share Posted April 25, 2016 I don't have a rack, I have a custom built piece of furniture that holds the 777, my Nakamichi Dragon :-), the amp and an HC-300. I understand that you prefer to have anything on HDD, but I am an IT guy and see HDDs fail every day. A DVD or CD never fails, and if the changer fails you get a new (used) one for $100 (BTW I have two 777's and they are rock solid). HDD = need to take care of backups too (thought about that?) not mention that for purists, that is a NO GO. No I'm not a purist I like old tech and to keep my DVD and CD collection original. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 25, 2016 Author Share Posted April 25, 2016 Cover art problem solved (in 15 minutes... thought I'd have more fun with that!!) The funny thing is, I have seen many 3rd party drivers building http servers in the LUA code to serve HTML and/or images. WHY??? the controllers have lighttpd web server running already. Let's use it and not reinvent the wheel! A 5 line long cgi bash script is enough to fetch the cover art and send it to navigators... see code below. But first the obligatory screenshot... :-) Quote Link to comment Share on other sites More sharing options...
GoGo Delicious Posted April 25, 2016 Share Posted April 25, 2016 As an owner of a custom integration company I am VERY impressed at what you have done without any C4 programming experience or software. Not just the fact that you got it to work, but your determination to making it work despite others telling you you're wasting your time. Great job! Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 25, 2016 Author Share Posted April 25, 2016 The CGI script that serves the page. The announcement URL points to this script's URL. My driver writes the path to artwork in that file that this script reads. #!/bin/sh # ALBUM_ROOT=/mnt/media/images/album cover_path=$(cat /control4/drivers/lua/sandbox/*/now_playing_cover.txt) echo -e "Content-type: image/jpeg\r\n" cat $ALBUM_ROOT/$cover_path.jpg exit 0 Quote Link to comment Share on other sites More sharing options...
GoGo Delicious Posted April 25, 2016 Share Posted April 25, 2016 Quote 5 minutes ago, ziocan said: The funny thing is, I have seen many 3rd party drivers building http servers in the LUA code to serve HTML and/or images. WHY??? The answer is that most dealers and programmers do not have the necessary programming skills. I am sure quite a few do not even know how to write a "hello world" cgi script. Let alone write a Quote 8 minutes ago, ziocan said: A 5 line long cgi bash script Again, congrats! Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 25, 2016 Author Share Posted April 25, 2016 28 minutes ago, GoGo Delicious said: The answer is that most dealers and programmers do not have the necessary programming skills. I am sure quite a few do not even know how to write a "hello world" cgi script. Don't think so. Writing an HTTP server in LUA is no joke. I think the skills are there, what's missing is perhaps the curiosity to learn controller's internals, which is what allowed me to solve my problem. Thank you for your appreciation. But I am especially happy to have reached my goal :-) And I have learned a lot along the way. I only wish I had a more decent documentation, the SDK is a joke. Perhaps the driver editor has more info coming with it, I don't know... Quote Link to comment Share on other sites More sharing options...
Cyknight Posted April 25, 2016 Share Posted April 25, 2016 Nicely done - though your are essentially bypassing the original goal of having this showing under now playing as well as screensavers media art. Quote Link to comment Share on other sites More sharing options...
Cyknight Posted April 25, 2016 Share Posted April 25, 2016 28 minutes ago, ziocan said: I think the skills are there, what's missing is perhaps the curiosity to learn controller's internals For some the skill will be there, though I dare say many, perhaps most, do not (one could say our company has three programmers, yet I would bet only one of us would be able to do what you did) - but more often it's the problem of time, not curiosity - plus weighing time vs need. And like I said, technically you haven't "solved" the initial issue of this not showing under now playing, the bottom info bar or the media screen saver , though it's a neat way to bypass that, using the pop-up with a url call. Now, on to rewriting the DVD changer driver to the iPod or media player proxy . Quote Link to comment Share on other sites More sharing options...
SMHarman Posted April 25, 2016 Share Posted April 25, 2016 As an owner of a custom integration company I am VERY impressed at what you have done without any C4 programming experience or software. Not just the fact that you got it to work, but your determination to making it work despite others telling you you're wasting your time. Great job! I'm impressed also but feel this is reinventing wheels. Except that image grab last part. I don't have a rack, I have a custom built piece of furniture that holds the 777, my Nakamichi Dragon :-), the amp and an HC-300. I understand that you prefer to have anything on HDD, but I am an IT guy and see HDDs fail every day. A DVD or CD never fails, and if the changer fails you get a new (used) one for $100 (BTW I have two 777's and they are rock solid). HDD = need to take care of backups too (thought about that?) not mention that for purists, that is a NO GO. No I'm not a purist I like old tech and to keep my DVD and CD collection original. So 777s fail juSt like hdds with more moving parts. Purists can deal with flax or bit perfect copies and a good dac. I have a raid 1 backup on my synology and an attached my book and a offsite older copy at the in laws. If all else fails I crack open the cardboard boxes of silver discs. Oh and silver discs do rot. I thought about adding the DVD version to my stsyem but in the end backing up the discs and a popbox made more sense. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 26, 2016 Author Share Posted April 26, 2016 12 hours ago, Cyknight said: Nicely done - though your are essentially bypassing the original goal of having this showing under now playing as well as screensavers media art. True. But I found that I really like the auto popup every time a new song starts. Don't think you can do that with media proxy, can you? Actually I tried to look into the Media Proxy thing, but the lack of proper documentation and the added complexity to have to proxy a proxy (assuming that is possible) made me look for alternatives. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 26, 2016 Author Share Posted April 26, 2016 12 hours ago, Cyknight said: technically you haven't "solved" the initial issue of this not showing under now playing, the bottom info bar or the media screen saver I haven't investigated the screen saver part in fact, but I can eventually give it a try ;-) It all depends whether this information is stored in director vs into navigator. Right now the auto popup will just wake up the touch screen from whatever screen saver it has, and display the info for 10 seconds. Neat enough :-) Quote Now, on to rewriting the DVD changer driver to the iPod or media player proxy I wish I could do that. The changer proxy, and all other proxies for that matter, are binary only. But I can program with C/C++ just send me the source code of the driver ..... :-) Speaking of the changer driver - if you look on the controller you can actually find a 2-way changer driver written in LUA. It could be that at some point in time, C4 produced/sold a disc changer (maybe a rebranded one), or at least wanted to. It controls the changer via RS232, but unfortunately the command set is not the 777 command set so it would take a lot of effort to adapt that, plus bugs would be introduced, etc... <copyright>Copyright 2008 Control4 Corporation. All rights reserved.</copyright> <manufacturer>Control4</manufacturer> <version>2</version> <creator>Control4</creator> <created>08/12/2008 12:30 PM</created> <modified>08/12/2008 12:30 PM</modified> <model>Control4 DVD Changer</model> <composer_categories> <category>Audio/Video</category> </composer_categories> <front/> <back/> <top/> <bottom/> <left/> <right/> <capabilities> <serialsettings>115200 8 none 1 none</serialsettings> <can_poll_serial>False</can_poll_serial> <can_scan_media>True</can_scan_media> <has_direct_disk_access>True</has_direct_disk_access> <has_direct_track_access>True</has_direct_track_access> <media_count>400</media_count> <media_type>5</media_type> </capabilities> Quote Link to comment Share on other sites More sharing options...
Cyknight Posted April 26, 2016 Share Posted April 26, 2016 Those are likely just example drivers included in the system, places to work from, and/or learn from. You'll find 'control4' gear in numerous categories for that purpose. Quote Link to comment Share on other sites More sharing options...
ziocan Posted April 26, 2016 Author Share Posted April 26, 2016 2 minutes ago, Cyknight said: Those are likely just example drivers included in the system, places to work from, and/or learn from. You'll find 'control4' gear in numerous categories for that purpose. Well why upload them on the controller then? Don't think that average dealer will go looking on the controller for these. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.