Saturday, March 14, 2009
xEKG Monitors xPL and xAP Heartbeats
I just finished another application called xEKG. It monitors your xPL and xAP devices and informs you via osd messages that a device hasn't checked in. Read more about and download it from here.
Friday, March 13, 2009
OSDBuffer, an xPL OSD Display
Sometimes I just miss seeing an OSD message on my PC and there's no way to see what it was (unless I'm logging xPL messages). That inconvenience served as the inspiration for OSDBuffer, my second C# application. OSDBuffer is a typical OSD popup application, however, it buffers the last 10 OSD messages received. You can scroll through them when you want. You can also customize the frame around the popup to your liking. Here's a video of it in action.
Read more about it & download it from here.
Read more about it & download it from here.
Monday, March 9, 2009
Welcome!
Welcome! I've imported all blog posts from kjsdoghouse.blogspot.com and updated links. Hopefully, I haven't missed anything, but if I did, leave a comment & let me know. Thanks!
Saturday, March 7, 2009
Announcing xScript
After some pains, I've completed my first C# application. It's called xScript. It's a free form scripting engine for xPL and xAP - no point and click - just a text file as input. You can use either vbscript, jscript, perl or python as your scripting language of choice. The zip file contains 4 sample scripts - xScript.js.sample is the most complete. Whichever language you decide to use, remove the .sample suffix from the script name. Valid scripting file names are xScript.js, xScript.vbs, xScript.py and xScript.pl. Make sure you have only one valid file name otherwise you may confuse yourself as xScript automatically picks a script file based on the first one it finds with a valid name. Finally, make sure you have installed the latest .NET frameworks by using Windows update or downloading directly from microsoft.com.
Download xScript here and let me know how it works out for you.
Download xScript here and let me know how it works out for you.
Friday, March 6, 2009
Trying My Hand at C#
All the applications I've written so far have been in VB.net. It's very structured which makes learning it really easy. Yesterday, I decided it's time to take the plunge and learn C#. So far, it's been a pain trying to relearn things I knew so well in VB.net. I'm making slow progress, but it doesn't seem to be very intuitive to me right now. Hopefully that changes...
Thursday, March 5, 2009
Adobe Acrobat Reader Vulnerability
In case you're unaware, there is a major problem with Adobe Acrobat which doesn't even require you to open a PDF file. The best thing to do? Uninstall Acrobat Reader and install Foxit Reader. Foxit Reader is much lighter on resources as well.
Update: Foxit Reader has a problem as well, but they released a new version on 3/9/09
Update: Foxit Reader has a problem as well, but they released a new version on 3/9/09
Tuesday, March 3, 2009
xPL Gameport Enhanced & Released
This weekend, I was trying to add a CDS sensor in the family room to more accurately sense darkness. It works great with a DS10A, but I wanted to hardwire it to make it more reliable. I tried connecting it to an input on my gameport device that I use for contact closure detection, but the resistance of the CDS sensor with the light on is apparently too high for the gameport to detect a closed condition. What else can I use? What about using the X and Y axis inputs on the gameport as analog inputs? So that's what I did. I updated my gameport app to read the axis values and send out sensor.basic messages on changes. I had to add a larger debounce delay when sampling since the CDS input bounces a little when changing. In any case, it's up & running for a couple days now and works well.
This is probably one of my most favorite apps I've written and I know I haven't released it yet, so here it is. You'll need a config.txt file in the same directory. For each gameport you have hooked up, you'll need to label the inputs - 4 button inputs and 2 axis inputs. The final parameter will be the polling time in ms. The polling interval for the axis inputs in derived from the polling time specified in the file.
config.txt format:
<gameport0_button0>,<gameport0_button1>,<gameport0_button2>,<gameport0_button3>,<gameport0_xaxis>,<gameport0_yaxis>,<polling interval>
example:
garagedoor,doorbell,blank02,blank03,FRDark,yaxis0,50
If you have more than one gameport connected, then specify all the inputs first, then the polling interval (all on a single line):
garagedoor,doorbell,backdoor,garagemotion,FRDark,yaxis0, amppower,dvdpower,tvpower,blank13,xaxis1,yaxis1,50
Finally, don't forget to install the DirectX redistributable runtime from here.
I have only tested the app with the Super Joy Box 8 USB to gameport adapter, which has 4 gameports and gives you 16 digital and 8 analog inputs for about $20.
This is probably one of my most favorite apps I've written and I know I haven't released it yet, so here it is. You'll need a config.txt file in the same directory. For each gameport you have hooked up, you'll need to label the inputs - 4 button inputs and 2 axis inputs. The final parameter will be the polling time in ms. The polling interval for the axis inputs in derived from the polling time specified in the file.
config.txt format:
<gameport0_button0>,<gameport0_button1>,<gameport0_button2>,<gameport0_button3>,<gameport0_xaxis>,<gameport0_yaxis>,<polling interval>
example:
garagedoor,doorbell,blank02,blank03,FRDark,yaxis0,50
If you have more than one gameport connected, then specify all the inputs first, then the polling interval (all on a single line):
garagedoor,doorbell,backdoor,garagemotion,FRDark,yaxis0, amppower,dvdpower,tvpower,blank13,xaxis1,yaxis1,50
Finally, don't forget to install the DirectX redistributable runtime from here.
I have only tested the app with the Super Joy Box 8 USB to gameport adapter, which has 4 gameports and gives you 16 digital and 8 analog inputs for about $20.
Monday, March 2, 2009
Sample EventGhost Python Script for Parsing xPL Messages
To make my EventGhost xPL plugin really useful, you really need to be able to pick apart an xPL message to extract data from it. Luckily, EG allows you to associate a script with a macro. This makes it pretty simple to create complex interactions based on xPL messages. Just create an event to trigger on 'xPL.*' and add an action to it that's a Python script. Here's a sample script that sends an acknowledgment message when Blabber receives the word 'test' from a user. This script can easily be extended to handle all your xPL interactions.
import re
# split up the event components
xPLSplit = eg.event.suffix.split(':')
# make the pieces easy to remember
xPLType = xPLSplit[0]
xPLSchema = xPLSplit[1]
xPLSource = xPLSplit[2]
xPLTarget = xPLSplit[3]
xPLBody = xPLSplit[4]
# we only want xpl-trig messages
if xPLType == "xpl-trig":
# only want messages from blabber
if re.search('doghouse-blabber',xPLSource):
bodySplit = xPLBody.split(',')
# extract the components of the message body
for i in range(3):
if re.search('device',bodySplit[i]):
senderSplit = bodySplit[i].split('=')
elif re.search('type',bodySplit[i]):
typeSplit = bodySplit[i].split('=')
elif re.search('current',bodySplit[i]):
currentSplit = bodySplit[i].split('=')
# we only want the message type and messages that
# contain the word 'test'
if typeSplit[1] == "message" and currentSplit[1]=="test":
# if we get 'test' we'll reply back to the sender
# that we got his message
returnMsg = "device="+senderSplit[1]+"\n"+"current=EG got your test"
eg.plugins.xPL.sendxPL(u'xpl-cmnd', u'control.basic', xPLSource, \
returnMsg)
Don't Pay Regular Price for Your Monthly Services
I just got off the phone with DirecTV who offered me $10 off per month for the next 12 months, free HBO for 3 months and Starz for 6 months. They had even offered free HD for a year with a free HD DVR, but I declined as I'm still considering the SageTV route. It's an annual ritual for me, calling them when my current promo ends, and getting a lower price with some extras. If you have DirecTV and are out of contract, call them and say 'cancel' when the robot asks what you are calling about. When you get to a CSR, tell them about the great deal DISH or Comcast is offering you and that you'd really like to stay with them but the other deals are so much less. You should never pay regular price for cable or satellite service - especially in this economy. I also do the same thing every 6 months with my Internet provider, Comcast. Cellphone bills may also be up for negotiation if you're out of contract. Our is as good as it can get. We're on the Sprint SERO plan until they go under for $30/month, 500 minutes, unlimited data & SMS, 7-7 N&W.
HAL Thinks the Piano is a Person
I was messing around with HAL microphone VR last week and ran a mic from the HA server to the living room. It worked decently when I was the only one home. However, when my kids started practicing piano, HAL went crazy. Every 10 seconds, it would think its attention word was called - despite attempts to adjust the selectivity higher. Not only that, but once the piano had HAL's attention, it was able to tell it to "set the mode to normal" and "turn on nook light" and "good bye." Needless to say, the microphone has been disconnected.
Sunday, March 1, 2009
Zephyr Bluetooth Heart Rate Monitor
I just received a Zephyr HRM - a heart rate monitor that sends its data to a PC or smartphone via Bluetooth. It was a reasonable $99 + $30 for FedEx Priority shipping from New Zealand to the States. It shows up as a Bluetooth serial port after pairing with a PC so it makes it very easy to development a .NET application for it. I've currently got code running to talk to the device, verify the integrity of the data packet (CRC) and update new heartbeat timestamps. I'll be using it to track my workouts at home. I may even get adventurous and try to write an app for my WinMo HTC Touch Pro phone, but that will be some time in the future.
Subscribe to:
Posts (Atom)