Page 1 of 1

Serial Two Way communication and Property Update

Posted: Tue May 17, 2005 7:03 am
by AM
I am currently evaluating Housebot during its trial period, so I apologise in advance, if I am missing the point here.



My configuration uses Housebot to control a LINN Unidisk player (SACD/CD and DVD player) through its RS232 link. Sending commands works great, but I want to update Housebot properties once I do a manual intervention in the system (e.g. pressing the Next Track key on the player directly).



I have parsed the "Received Data" Property and after reading the new Track Value, I want to update the Track Property on Housebot. The problem is that the moment I update the Track Property with the new track number, Housebot will send the command associated to Track property to the player, thus making the player to start playing the same track from the beginning. However, if I don't get to update the Track property on Housebot, my software remote will show the wrong track number.



Is there a way of updating the property value without sending the command to the device?



Also regarding parsing the "Received Data" property: is there a way to store the incoming data? My player sends sometimes several lines of data and they get lost before I can parse them.



Thanks in advance!

Re: Serial Two Way communication and Property Update

Posted: Tue May 17, 2005 9:30 am
by ScottBot
AM wrote:Is there a way of updating the property value without sending the command to the device?
The only way you would be able to do this is by creating your own Device and Hardware Interface plugin. A hack/workaround would be to create a second "display only" Track Value Property. The script that processes the received data would update this display property and it is the property that would be used for displaying the track in a software remote. You can then use a Task to update the display property whenever the REAL Track Value property is changed.
Also regarding parsing the "Received Data" property: is there a way to store the incoming data?
No. You can change the response timeout property on the Generic Serial Hardware interface to allow it to buffer a bit more data before passing it to the Device. Other than that you can manage the data yourself (with the help of a VB Script) in a DB, file, or even multiple HouseBot Properties. It would be nice if you could get at the Property Value history from the script, but you can't.

Posted: Wed May 18, 2005 12:40 am
by AM
Thank you Scott for the quick reply.



I am not very fit in programming, so I don't know how easy it will be to program my own plug-in, but I will definitely look into it.



On a similar subject: My SACD player can read the Album title from the disc. I can parse the Album title from the received data property and would like to display it on the software remote.



My initial attempt was to create a new property called "Album Title" for the SACD player and copy the parsed album title in that property. I defined the "Album Title" property as alpha-numeric, but my attempt to update the property with the parsed data fails. It looks like the propery does not allow not predefined text as new value. Am I doing something wrong here?

Posted: Wed May 18, 2005 5:09 pm
by ScottBot
AM wrote:I am not very fit in programming, so I don't know how easy it will be to program my own plug-in, but I will definitely look into it.
Probably not an option for you then.
On a similar subject: My SACD player can read the Album title from the disc. I can parse the Album title from the received data property and would like to display it on the software remote.

My initial attempt was to create a new property called "Album Title" for the SACD player and copy the parsed album title in that property. I defined the "Album Title" property as alpha-numeric, but my attempt to update the property with the parsed data fails. It looks like the propery does not allow not predefined text as new value. Am I doing something wrong here?
Sounds like it should work. There is no enforcement of any predefined values. You can specify property values when you create a new property, but these are only used to help the user pick a value, it is not limited to the list. You might want to check the error log and see if there is an error generated when you try and change the property. From the Script Device, you would use the SetPropertyValue() function and be sure to specify the property Description (not name). So it would be something like

Code: Select all

SetPropertyValue "SACD Player Name.AlbumTitle", "The New Title"

Posted: Thu May 19, 2005 2:00 am
by AM
I still get the following error:



Due to an error, Device [Unidisk] Property [Unidisk Album Name] DID NOT change.



This happens not only when I try to change the Property Value through the script, but also when I try to change the Value manually (under General Settings). I have tried changing the Value for other properties and I tend to get the error for all the Properties that don't have a command associated with a Value. e.g.:

Due to an error, Device [Unidisk] Property [Power State] DID NOT change. (I don't have any command for "On" or "Off" because the SACD does not have a standby mode)



Any idea why this is happening?



In any case, I would like to use this opportunity to congratulate you for the great work you have done with Housebot. It is a very impressive application and with a little bit more of development it could compete with far more expensive applications (e.g. Premisesystems). You have definitely convince me to purchase the software license for my personal use and hope that with future enhancements I will be able to recommend this software for commercial installations (my company does some integration projects).

Posted: Thu May 19, 2005 9:39 am
by ScottBot
AM wrote:Any idea why this is happening?
If you have added the Property to the Generic Serial Device, it will try and send the Property change (as you have discovered) and fail if it is not mapped. You can either:
  1. Begin the Property Description with an underscore character. This is a special case to allow for things like you are doing.
  2. Create a Null Device and add the Property to that Device. It's probably more logical to add it to the Device the Property is associated with, but it can live anywhere.