The Custom Integrator Show Installment 018 is live. In this Installment, Ian and I wrap up our series of Podcasts covering networking, Ethernet hardware, UPnP technologies, DLNA, Devices Profile for Web Services (DPWS), and Microsoft’s Rally platform. There are so many related and inner twined components that it makes designing, configuring, and troubleshooting a really complex task for even the most savvy integrator. Hopefully, with the background we have provided tied to the links we have posted over the last few blog entries, you are better positioned to understand the platform’s capabilities, how these various components and protocols communicate with each other, what you may or may not want commit to for your clients from an interoperability standpoint, and potentially what the future may hold in store for the next generation of the home ecosystem. I encourage you to listen to the Podcast and review the blog from the last installment for understanding how the technical pieces fit together.
This Installment’s blog takes a bit of a twist. As you probably know by now, one aspect of our business here at Interactive Homes, Inc. (http://www.interactivehomesinc.com/) is to provide consulting services to vendors and manufacturers on products they are designing and developing to fit into the home environment. Following is a write up on a product we helped design in with our friends at Archronix (ArcX) in Toronto, Ontario, Canada (http://www.archronix.com/index.html). To me, this product epitomizes the whole concept of DPWS, low resource-based intelligent devices in the home, and the concept of where these technologies are headed. We developed a portable system that demonstrated the capabilities of DPWS-based devices in the home, which is what I describe here. We even had the opportunity to take it up to show off to the Rally and DPWS product team at the Microsoft Rally Summit in Redmond, WA, a little while ago.
The product I am describing is Archronix’s ArcWay ZigBee to DPWS gateway wirelessly tied into a pair of the company’s prototype (at the time) ZigBee-based ArcLight light dimmers (which really are cool when you program the blue LED-based rear-lit clear paddles to fade up and down and sequence like a light show ) . Since then, companies like Crestron and CentraLite (JetStream) have brought out their own ZigBee=based light dimmers, too.
ArcX’s ArcLight ZigBee-based Lighting Devices
The ArcLight dimmers are based on the ZigBee Lighting Device profiles. ZigBee is one of the leading mesh networking wireless standards (based on IEEE 802.15.4) we discussed previously for connecting constrained and low power devices within the home. The standard has different “profiles” defined for various device classes. In this case, it they use a Lighting Device profile.
The concept is that the ArcLight dimmers are connected wirelessly to the ArcWay gateway using ZigBee. On the “other end” of the ArcWay gateway is an Ethernet interface that connects to the same home network as a Windows Vista PC running Windows Media Center. Using Microsoft’s Rally technologies built into Windows Vista (and now Windows 7), the gateway exposes the Lighting Devices (the dimmers) as discoverable DPWS-based objects and we will be able to control them from within the Windows Media Center experience without having to setup or configure anything.
As you can see in the following screen shot, the Lighting Devices (Dimmers) show up as resources in the Network Explorer within Windows Vista.
The ArcLight Dimmers dynamically show up in Windows Vista’s Network page
This means that applications running on Windows Vista now have access to them and they can interact with them using the standard Rally and Devices Profile for Web Services Application Programming Interfaces (APIs).
When we bring up the properties of the ArcLight by double clicking on it, we get the following information:
The properties of the ArcLight as seen through Windows Vista
These are the same types of properties we discussed when talking about the Device Control Protocol (DCP) XML schemas in our previous Podcasts. Notice that the dimmer has a Unique Identifier, which is how the system sees it, in addition to exposing various other properties like its Serial Number, Manufacturer, and Model Number (XML “tags” in the DCP).
These particular properties are all that Windows Vista lets you see by default. However, any application trying to control the Lighting Device expects to know a lot more about what capabilities the device has. It turns out many more attributes are available; we just need a better tool for viewing them. A great little utility we have talked about quite a bit on our show, which is included with the Windows Vista Software Development Kit, is called FDBrowser.exe (Function Discovery Browser). It lets us drill down into all of the attributes a device exposes through the Devices Profile for Web Services interfaces (it lets us look at other type of properties, but the DPWS category is the only one of interest to us for this). Unfortunately, the roots of Windows still uses the old moniker of Web Services for Devices or WSD, so the navigation tree on the left still exposes these devices as being WSD Providers.
The ArcLight’s attributes as seen through the FD Browser utility
Here you can see that there is a lot more to one of these devices than meets the eye (or is exposed via the Properties Page from the Windows Vista Network page). This is the information that lets us dynamically interact with the ArcLight dimming device without having to configure it or enter its capabilities into some kind of program. By “self-describing” its features, it is easy for a home control application to be able to interact with the device dynamically. This is the heart of Devices Profile for Web Services as it relates to home control applications.
It does not stop there, though. We still need to do something with the dimmer. ArcX wrote a simple Windows Media Center application using MCML (Media Center Markup Language). After the application is registered in Windows Media Center during a brief installation process, an icon shows up in the Start Menu.
A simple MCML Windows Media Center application for interacting with the ArcLights
Note that this is a demonstration application to show how easy it is for someone to interact with a dynamically discovered device using Devices Profile for Web Services. Its intent is not to replace a full-blown automation package like Exceptional Innovation’s Life|ware, which actually recognizes the same DPWS WSDLs we are using here. Since Life|ware does support DPWS technologies and the associated WSDLs I published as part of our previous Installment (http://thedigitallifestyle.com/cs/blogs/custom/archive/2009/08/07/the-custom-integrator-show-installment-017.aspx), you hopefully can get an appreciation for why they use DPWS for their connectivity and devices integration platform and the potential versatility it provides moving forward.
Now for the best part – the road to home control Nirvana almost is complete. When the application comes up, it discovers the two light dimmers and makes them available for us to control. We can operate the lights as if we were standing at the dimmers and physically adjusting them. Moreover, if you do adjust them from the physical dimmer itself, the user interface tracks the changes and displays the change of status in real time (remember the concept of event subscriptions?).
A simple Windows Media Center application interacting with the DPWS Lighting Devices
The first time I saw the entire process work, I had to smile and say, “This really is boss, man. It actually works.” We are able to plug in a dimmer, have the OS discover it automagically, and control it with a remote through the Windows Media Center experience – all without having to download drivers, set it up through some sort of application, or configure anything. Who says dreams can’t come true?
And a little plug for our friends at Archronix Corp. (ArcX)
Archronix Corporation (http://www.arcx.com/) is a technology design and product engineering firm specializing in hardware control systems and the associated enabling software. Archronix has taken its expertise in embedded processor and Windows application work and extended it into connected devices in the home. The company provides product development and integration services for several OEM clients in Canada and the US. Much of ArcX’s current work includes connectivity to and integration with Windows Media Center for both high-end audio and audio distribution systems. Archronix also is responsible for creating the Media Center interface for Magnum Dynalab’s MD109 high-end radio tuner in addition to Ethernet control for the Matrix MiSeries audio distribution controller. Keep an eye out in the not too distant future for some more innovative products we are helping them develop.
{"id":null,"mode":"button","open_style":"in_place","currency_code":"GBP","currency_symbol":"\u00a3","currency_type":"decimal","blank_flag_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"TheDigitalLifestyle.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"TheDigitalLifestyle.com","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"TheDigitalLifestyle.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}