Mister House Announcement List

- This is a copy of the mh update announcements made to MisterHouse mailing list (an archive of all the list messages is at http://sourceforge.net/mail/?group_id=1365 )


Version 2.32 posted on 10/22/00

Version 2.32 was just uploaded to:

  http://misterhouse.sourceforge.net/download
  http://misterhouse.net/download

New Features:

- Added mh.ini code_dir_common, like code_dir, but for common code files. Moved the tk*, mh_control, mhsend_server, and benchmark .pl files into there. This should ease the mh upgrade process. To pick up the default mh/code/common versions of these files, delete these files from your code_dir.

- Added mh/code/common/mh_sound.pl . This currently does 3 things:

1: I figured out a way to work around the bug in Win32::Sound::Volume, so we can now control volume each time we call speak and play (any suggestions on how to patch this for unix?). Defaults to a new mh.ini sound_volume parm. Set to blank to disable auto-volume adjustment. Use either of these formats to override the default volume (range 0->100):

  speak 'volume=100 Hello from Mr. Bruce';
  speak volume => 5, text => 'Hello from Mr. Bruce';

2: mh_sound also sets a mh_speakers object, which can be used to turn relays on/off before and after TTS and wave file sounds for room speaker control (see mh/code/bruce/pa_control.pl).

3: Plays the mh.ini sound_pre wav file before all sounds. Useful if you want to add delay and/or an activation noise for things like VOX (Voice Activated) Radios .

- Figured out a way to monitor memory usage from NT/2k, using Win32::PerfLib. Added mh/code/common/monitor_memory.pl as an aid to finding code members that leak memory (works on unix and NT/2k only).

- Danal Estes made various updates to Bill's DCS_Alarm code, including support for multiple serial ports. See mh/lib/DSC_Alarm.pm and mh.pod/txt/html for more info.

- Bill Sobel came up with the idea of using a http redirect command to allow mh to return the browser back to the calling web page, or some other arbitrary web page. Use either 'Referer' or 'http://your_url' as the response string. For example:

 <a HREF="http://misterhouse.net:8080/SET:Referer?$camera_light&on">Light on</a>

 <a HREF="http://misterhouse.net:8080/SET:http://misterhouse.net?$camera_light&off">Light off</a>

Examples, Bug Fixes, and Minor Changes:

- Fixed the MsAgent code added last time so it works with all VR commands.

- Fixed a memory leak in barcode_scan.pl.

- Fixed a bug in mh_control.pl that disabled web based code reloads after the first reload.

- Fixed mh/bin/trivia to reset count correctly (messed up after 250 questions).

- Fenghua Zong found a problem with Timer actions being corrupted by a object state save.

- Wally Kissel found a bug that disabled MS VR after a code reload.

- Chris Witte sent in a patch to fix dissapearing Group problem when reloading changes in format=A tables.

- Stephen Merrony found a problem with SunTime.pm calculation for -time_zone 0.

- Danel Estes noted that Serial_Items without defined state strings returned 'default_state'. We switched it back to return the ID string like it used to.

- Ingo Dean discovered that incoming DIM/BRIGHT commands crashed mh when using a non-CM11 interface (e.g. HomeVision).

- David Norwood updated the ncpuxa code (Applied Digital interfaces) to allow for preset dim working on LM14A and Leviton units.

- Bill Sobel ran into a problem where mh went into an X10 loop, with a house code and a device code each setting each other off. To avoid this, mh now checks and avoids sending out the same X10 code on consecutive passes.

- Bill sent in a http_server update to disable caching.

- Improved iButton reliabilty on Windows. I can now used it again from NT/2k.

- Modified read_file to chomp newlines, when used in an array context.

- Added mh/lib/site/HTML/TableExtract.pm and mh/lib/site/Win32API/Resources.pm and Resources.html

- Added +-100 to X10_Item (max/min use to be +-95), so we can do full bright/dims.

- Added the mh.ini no_log parm. Use no_log=pause to turn of the 'mh paused' message.

- Added FAQ entry 1.17: How can I use Family Radios with MisterHouse?' and pointed it to Danel Estes's Family Radio Service FAQ mh/docs/faq_frs.html.


Version 2.29 posted on 10/01/00

Version 2.29 was just uploaded to:

  http://misterhouse.sourceforge.net
  http://misterhouse.net/download

New Features:

- Re-organized the http://misterhouse.net homepage. This is now fully mirrored in mh/docs and at http://misterhouse.sourceforge.net

- mh now goes into a 'catch up' mode after it detected that it paused for more than a second. This mode guarantees that we won't miss any time based events. When this occurs, you will see a 'mh paused for ## seconds' messaging in the log. Thanks to Craig Schaeffer for this suggestion.

- Changed the Web Items menus to list all legal item states, rather than just an ON/OFF toggle. A new mh.ini x10_menu_states parm controls which X10 states are displayed on the tk and web menus.

- Added set_states, add_states, and get_states as a way to specify legal states to Generic_Items. See mh/bruce/tv.pl for an example.

- Added a set_expect method to Socket_Item. This allows us to easily walk through telnet menus by specifing pairs of prompt/response strings. Here is an example from the 'reboot the router' command at the end of mh/code/bruce/monitor_router.pl

  set_expect $router_client (Password => $config_parms{router_password},
                             Number => 24, Number => 4, Number => 11);

- David Norwood added monitoring and IR support to the ncpuxa code for Applied Digital interfaces. See mh/code/examples/ncpuxa_example.pl for an example

- Bill Sobel sent in updates for Compool.pm, Stargate485.pm, Xantech.pm, and read_table_A.pl. He also added a new Mp3Player.pm object. See mh/code/public/AudioControl.pl for an example.

- Jeffrey Ferris sent patches to enable MsAgent characters. MsAgent allows remote IE web browsers to do TTS and VR on the remote box. Note, you can do this even if you are running mh on a linux box as long as your remote box is running IE. To enable, add the new mh.ini html_msagent_script* parms that points to a mh/web file with the agent code (currently only Jeff's miniJeff agent is available). Then click on the MSAgent checkbox at the top of the Web menu to turn him on or off. IE will do each command only once, unless you change this setting: Tools, Internet Options, General, Settings button on Temporary Internet Files, under ``Check for new versions of stored pages'' select the option ``Every visit to the page.''

- Added mh.ini password_menu parm. It now defaults to html, which gives an html password form that is compatible with web browsers that don't support popup password menus. The crypted password is stored in a cookie, so if you don't like cookies, set password_menu=browser to get the old menu (browser popup).

- Added the restore_data method to Generic_Item. This calls the restore_string method we added last time so we can easily define object data that we want saved across mh reloads/restarts. See mh/code/bruce/weather_log.pl for an example.

- Added set_authority and get_authority to Generic_Item. This allows us to bypass password protection for specified commands, like the mh.ini password_allow_file parm did, except with set_authority we can specify it in user code. Examples in mh/code/test/time_info.pl

- Added the mh/code/test/barcode* members. These will process data from the Cue Kat keyboard simulator barcode scanner, which you can pick up for free at Radio Shack. The manufacture of the Cue Kat prefers that you use their software (thats why they give it away), and if you want to look up data on the web for an item, their software is probably best, as they have a large databse of UPC codes. If, however, you want to use the scanner for some sort of home inventory purpose, their software does not do that. The problem is that if you use their software, you must agree to a Licence that says you will only use the scanner with their software. Hopefully they will not notice or care that small group of us HA hobbiest are using it without their software (other people who have written similar code have gotten cease-and-desist letters).

Examples, Bug Fixes, and Minor Changes:

- Brian Rudy sent in mh/public/aws_weather.pl,weather_aws.pl, and weather_monitor_aws.pl for getting weather data from aws web sites.

- Mark Lamourine sent in a patch for mh/bin/configure for sparc boxes.

- Charles D. sent in a fix for Caller_ID.pm for Canadian caller ID format.

- Brian Rudy and Bill Sobel sent in mh/code/public/sprinkler_*.pl

- Updated the internet_data.pl 'Top 10 list' url.

- Fixed a bug in Socket_Item raw.

- Kip Gebhardt noticed extra 'unmatched incoming serial' data errata, on matched X10 data.

- Bill Sobel added $Time_Sunrise_Twilight and $Time_Sunset_Twilight, with a new mh.ini twilight parm to pick what kind of twilight you want.

- Bill also noticed that sending out X10 All On/off house commands did not set the states of individual items within that house code. Another fix was to make sure that items with duplicate codes have their states mirrored.

- Modified X10_Item to accept any level from 0%->100%, in 1% increments, instead of 5% increments. These preset dims can only be done with a CM11->LM14.

- Fixed Preset Dims (xx% or &Pxx) so it will work on all Device codes.

- Allow for passing parms with code hooks.


Version 2.28 posted on 09/09/00

Version 2.28 was just uploaded to:

  http://misterhouse.sourceforge.net
  http://misterhouse.net/download

New Features:

- Added hidden method to most objects. If you set to 1 (e.g. $item1->hidden(1) ), then the object will not show up on Tk or web menus.

- David Norwood added support for Applied Digital CPU-XA/Ocelot interfaces via the cpuxad daemon server from Mark Day's xalib package (unix only). xalib is available from David at judapeno@gte.net . Enable with the new ncpuxa_port mh.ini parm.

- Brad Reed has coded a ViaVoiceTTS.pm module that calls the IBM's ViaVoice TTS engine directly from perl. David Lounsberry worked with Brad to add hooks into mh using mh/bin/vv_tts.pl. Since this is a more direct/flexible interface than what we had with David's vvo_speak server, David decided to take out mh support for vvo_speak. To install Brad's module, follow his instructions at http://sammy.reednet.org/~breed/ViaVoiceTTS then set the mh.ini voice_text parm to vv_tts

- Added Serial_match, Play_pre, Play_post, Speak_pre, and Speak_post code hooks, like the Mainloop hooks we added a few months ago. These give us more flexibility than the &serial_stub and &pa_stub subroutines that were in mh, so those have been removed. If you were using one of those stub subroutines, add these lines to your code (see mh/code/bruce/pa_control.pl for an example):

  &Serial_match_add_hook(\&serial_stub) if $Reload;
  &Speak_pre_add_hook(\&pa_stub)        if $Reload;
  &Play_pre_add_hook (\&pa_stub)        if $Reload;

- Added &net_jabber_send, like the &net_im_send function we have for sending messages to AIM clients. Jabber is a new, open, XML based protocol for instant messaging. You can get free IDs and client for various platforms at http://jabbercentral.com or http://www.jabber.com . We can also code mh events to respond to incoming Jabber messages. Currently, it will simply pop up a tk display window.

- Allow Process_Item to run multiple commands in series. This way we can build simple batch/shell type scripts within mh, and run them as a detached, monitored process. See mh/code/examples/test_process.pl for an example.

- Allow Process_Item to run internal mh subroutines. If the command passed to Process_Item starts with a & (e.g. &main::net_ftp), then the command is run with eval, rather than an external system command. This allows us to call long running internal mh functions with a Process_Item fork, so we can avoid mh pauses. This currently only works on unix systems. In theory it will also work with Win32 perl 5.6+, but on my box, perl abended when I tried it :(

- Added mh/bin/net_ftp, with the same options as the mh &net_ftp function. This allows us the option of doing ftp commands with separate processes, so mh does not pause. See mh/code/examples/test_ftp.pl and/or mh/docs/mh.html for an example.

- Bill Sobel had the great idea of moving the code that saves states from mh into the various object models, so now we can customize the various objects to save whatever data should be persistent between mh restart/reloads, using a &restore_string object method.

Examples, Bug Fixes, and Minor Changes:

- Cullen Simpson found a 2.27 problem with X10 bright/dim decoding.

- Bill Sobel found a problem with decoding incoming PRESET_DIM commands.

- Ron Wright found yet another mis-decoding of bright/dim commands that would sometimes trigger the wrong events.

- Justin Matlock inspired the addition of &serial_match_log to mh_control.pl. This will do a &print_log the object names that match incoming serial (e.g. X10) data.

- Switched to the Cpan Astro/SunTime.pm module, to avoid the problems some people were having calling sun_time.

- Fixed a problem with ViaVoice recognition after a code reload.

- Add mh.ini parm time_format_log, so you can choose the time_date format for the speak and print logs. Any &time_date_stamp function format is valid. Set to 16 to get date hh:mm:ss am/pm (e.g. 04/14/97 2:28:00 PM). (see mh.html for other format examples).

- Implemented the pause function (F2 from the tk or dos console).

- Added a small delay in &read_counter funcion of ibutton device.pm.

- Used an older compiler so mh.exe works on more boxes.

- Added $Loop_Speed to Tk Cpu Used widget. Moved memory used (unix only) to $Tk_objects{label_memory_used}.


Version 2.27 posted on 08/18/00

Version 2.27 was just uploaded to:

  http://misterhouse.sourceforge.net
  http://misterhouse.net/download

New Features:

- Mark Lamourine set up a SPECs file so I can create a tar and rpm file from our beloved zip file. The rpm file installs to the docs to /usr/doc/misterhouse-#.##. and everything else to /usr/local/mh.

- Created mh/code/bruce/monitor_router.pl. This monitors incoming and outgoing traffic on NetGear RT311 and RT314 routers. The RT311 is a really nifty $130 firewall/router designed to allow multiple home computers to share internet cable/dsl access. The RT314 ($180) is the same, with a built in 4 port hub. They both can log activity to remote computers via a Syslog connection, so we can set up monitor_router.pl to monitor a Syslog udp port to track internet activity. This is what I used to do with mh/bin/monitor_weblog to monitor apache weblogs and monitor_firewall.pl to monitor linux ipchain logs.

Examples, Bug Fixes, and Minor Changes:

- Allow Group to inherit Generic_Item methods, like state_now and tie*/untie*.

- Added a get_changed_by method, to detect which object set a tied object.

- Allow for items to have more than one state set per pass. Each state will be processed, one per subsequent pass.

- Add a weeder_baudrate mh.ini parm

- Added a delay to when sending phrases set to viavoice on startup, so we avoid 'no data' errors with faster computers.

- Added mh/bin/test_x10.pl as a simple test for those X10 interfaces.

- Added mh/code/examples/test_tie.pl as an example of how to tie/untie items/events.

- Added mh/code/examples/test_group.pl as an example of how to use groups.

- William Steiner found a 2.24 bug with sunrise/sunset on Win95/98 boxes.

- Brad Reed fixed a 2.24 problem with the tk $cpu_used display.

- Craig Schaeffer found a 2.24 problem with Serial_Items with undefined states.

- Brian Klier found a problem with multi-event X10 processing.

- Bill Sobel found a problem when running untie* on some, but not all, child objects.

- Monte discovered that direct X10 commands like 'house XA1AJ' didn't work. Note you can also enter direct X10 commands directly in the Tk Command/search field.

- CyberLink discovered that mh/code/public/mp3_control_GQmpeg.pl got overwritten in 2.24.

- Improved error processing if voice_cmd=MS and the MS VR engine is not installed.

- Fixed member name parsing, so mh can be in a dir with a . (e.g. misterhouse-2.26).

- Fixed a minor get_tv_grid error with vcr links on shows that cont. between grids.

- Fixed a bug that disabled simultaneous X10 Group action with a CM11.


Version 2.24 posted on 08/06/00

Version 2.24 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Added a &dir_index html function, so we can now get sortable file name type, date, and size listings of selected directories. Enable it by creating a index.shtml file that calls &dir_index. Try http://localhost:8080/graphics (mh/web/graphics/index.shtml) as an example, or look for &dir_index in mh.html.

- Enabled showing of gif and jpg files with the display function (e.g. display /pictures/pic1.gif). Unfortunately, it looks like both perl 522 and 616 leak memory with each picture displayed. If you are using the uncompiled version of mh and want to display jpg files, you will need to run:

   windows: ppm install Tk-JPEG 
   unix:    perl -MCPAN -e 'install Tk::JPEG'

- Made many small changes to allow us to the option of running with the perl Diagnostics module (enables the 'perl -w' option). This enables a ton of warning messages that often point out potential coding errors. To enable, set the mh.ini parm diagnostics (or w) to 1, or just run: mh -w 1 This takes about 1 meg more of memory and causes mh to run about 10% slower, but the messages it displays often point to valid problems.

- Improved processing of errors that do not show up on reload (i.e. only triggered by an event). The first time this happens, a console/tk message will be displayed, and a message spoken. Since these errors might happen on sequential passes of mh, subsequent errors are only listed in the console window. If more than 10 occur, another window is displayed, and the code member there error was in is disabled.

- Improved messages when you load user code with perl errors. It should now point to the correct line number of the error, including those nasty 'global symbol' errors.

The only exception I have seen is if you have too few/many {} around code. In these cases, if you can not find the file with the error, you can try a new option: mh -error_by_file 1 . This will try loading one file at a time until the error is found, but it runs pretty slow and may not work with members that have # noloop directives.

- New untie_items and untie_event methods. All the tie/untie methods now allow for on-the-fly calls, instead of being set just on code reload. If you do use these conditionally, make sure you also call the methods on $Reload, as the tie states are not saved between reloads.

- Reworked how mh processes the merging/breaking of X10 strings to provide consistent monitoring of longer X10 strings that might be broken up by the receiver (e.g. DSC Alarm panel).

- Created mh/bin/get_ceiva and mh/code/bruce/ceiva.pl. This code will download and display new pictures that are deposited in electronic picture frame folders at http://www.ceiva.com . As various relatives deposit pictures there for my Dad's picture frame, we get the new pictures also! get_ceiva is an example of how perl can log onto a site that uses cookies for user/password security.

- Brian Paulsen wrote a Slinke.pm module to send/receive IR data from the Nirva Slink-e interface. His examples are in mh/code/public/slinke*, but it has not been integrated into mh yet.

- Bill Sobel made some changes/additions to mh/lib members Compool.pl, DSC_Alarm.pm, Stargate485.pm, Xantech.pm, and read_table_A.pl. The Xantech code is the initial pass at controlling the Xantech preamp. The Stargate485 is his first pass at interfacing with the stargate (and the stargatelcd keypads) via the 485 interface.

Examples, Bug Fixes, and Minor Changes:

- Ron Wright spotted an recent error with the VCR start/stop times in get_tv_grid html.

- Brian Paulsen's sent in a fix to avoid repeating voice commands when using Viavoice.

- Bradford Reed helped fix an error with group commands on CM17 controlled X10 items.

- Bill Sobel sent in a patch that allows for auto-loading of new or user-defined mh/lib modules (e.g. Compool.pm). These new object types will also show up in the tk and web menues.

- Fixed the on.gif blinking status icon so it will also blink in Netscape.

- Fixed the html_info= tag in mh.ini (html popups accidently got disabled in 2.22)

- Added mh.ini x10_errata parm, so you can turn up/down the print_log errata on X10 data.

- Allow for muli-line mh.ini parms (see mh/bin/mh.ini favorite_tv_shows for an example)

- Added mh/code/examples/generic_item.pl

- Added a -quiet option to get_email and get_tv_info, so you can avoid mh console clutter.

- Added browser function. This simply calls the browser defined by mh.ini browser parm on the specified url or file.

- Moved Tk* widgets from various mh/test/code files into tk_widgets.pl, for easier ordering.

- Dropped the B prefix on incoming bright/dim decoding and added bright/dim states to house X10_Items. This allows us to monitor bright/dim commands easier.


Version 2.22 posted on 06/24/00

Version 2.22 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Updated all items that have states (Voice_Cmd, Serial_Item, X10_Item, iButton, IR_Item) to inherit Generic_Item methods. This allows for easier maintance of common methods.

- Bill Sobel and I came up with 2 new methods for Generic_Item: tie_items and tie_event. Per the above change, this is inherited by all state items. When an item's state changes, so will the state of all items tied to it. For example, if we have this:

  $indoor_fountain   = new X10_Appliance 'C3';
  $v_indoor_fountain = new Voice_Cmd 'Indoor fountain [on,off]';

Then instead of this:

  set $indoor_fountain $state if $state = state_now $v_indoor_fountain;

We can do this:

  $v_indoor_fountain -> tie_items($indoor_fountain);

or use the indirect object style like this:

  tie_items $v_indoor_fountain $indoor_fountain;

- Another Bill Sobel idea was to allow for table based entries for codeing mh objects and events. With table data, we should be able to enable gui or web based front end tools for editing. Currently we have defined just one format defined, creativly named A (I suggested we call it Bill, but Bill didn't want the fame), but other formats (e.g. xml) should be easy to implement.

To use, create one or more *.mht (mh table) files in your code directory, specifying the table format with Format=A at the top of the table. Then mh will process (on starup and reload) each record with mh/lib/read_table_A.pl, to create *.mhp (mh processed) files, which are then processed with all your other, normal mh code.

Examples are in mh/code/bruce/*.mht and mh/code/test/*.mht. If you want to create another table format, all you need to do is create a mh/lib/read_table_xyz.pl member, then set Format=xyz.

- Updated tk_radiobutton and tk_entry so they can now use state objects, like Generic_Item. This allows for easier triggering and auto-saving of Tk entered changes. Here is an example (from mh/code/examples/tk_examples.pl):

  $mp3_search_text =  new Generic_Item;
  $mp3_search_text -> tie_event('print_log "mp3 search text is now $state"');
  &tk_entry('mp3 Search', $mp3_search_text);

- Douglas Nakakihara sent in a pointer mrMP3, a mh compatable Windows mp3 player he wrote. The mh code he wrote to control it, along with a download url, is in mh/code/public/mp3_control_mrMP3.pl

- Added an example of how to push data from mh to a java applet I got from the Linux Home Automation mailing list (http://linuxha.sourceforge.net) called tattler, written by John W. Klar. To test, include mh/code/test/tattler.pl with your code and point your java enabled browser to http://localhost:8080/tattler

- Bill Sobel added X10_IrrigationController to support the RCI X10 based sprinkler system ( http://ourworld.compuserve.com/homepages/rciautomation/p6.htm ).

- Added initial (untested) support for sending X10 commands via the Marrick interface.

Examples, Bug Fixes, and Minor Changes:

- Bill Sobel has updated mh/lib/compool.pm and added mh/lib/weather.pm

- Dan Wilga sent in various improvements to http_server.pl, including correctly mime-typing external files.

- Brent Gross added a -type option to ftp, so we can upload/download binary files also.

- Monte Freeman cleaned up and reformated mh/bin/mh.ini

- Fixed get_tv_grid to work with a new clicktv format.

- Fixed a bug in sendkeys_find_window that could cause mh to hang if the program was not able to start.

- Changed mh to not create empty _loopcode subroutines.

- Commented out the Cyan console color change, for win32 mh users. If anyone wants this as an option, let me know.


Version 2.20 posted on 05/27/00

Version 2.20 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Danal Estes has added mh/code/public/Danal/ISDN*.pl and Cat_Box.pl. The ISDN code monitors incoming and outgoing calls for ISDN modems, including caller ID processing. He also added/mh/bin/set_ip_3com_tzo to get the Internet connection from a 3com ISDN Lan Modem and sets TZO service appropriately.

- Added server_*_protocol=udp, and server_*_datatype=raw options to socket servers specified in mh.ini. datatype=raw, like the serial_*_datatype parm, allows for raw/binary or record based data. Also allow for udp in Socket_Port clients.

- Frank Varnavas and Bill Sobel came up with the option to add user callback functions, so you can have user functions called, once per loop, before and/or after all the other user code is run. For an example, look for &MainLoop_pre_add_hook in mh/docs/mh.html.

- Bill Sobel added mh/code/public/Compool* files, for monitoring and controling ComPool pool/spa equipment.

Examples, Bug Fixes, and Minor Changes:

- Added mh.ini parm play_mode, so you can control the default mode for playing wav files (e.g. wait so older sound cards will only try to play one thing at a time).

- Allowed the mh.ini local_addresses and password_allow_clients parms to be regular expressions.

- Added internet_speak_flag so you can control if all, local, or none speech data will be spoken when requested from the web interface.

- Change speak log to include file contents, not just file name.

- Tom Kotowski updated his mh/code/public/news* files. He also added a Drudge Report file.

- Bill Sobel updated mh/code/public/internet_ip_update.pl to allow for sending email and finding NAT/firewall ip addresses.

- Bill Sobel sent in a update to mh/code/public/weather.pl so it can find weather by zipcode.

- Fixed a bug introduced in 2.15 in the code used to read the weeder analog module (code/bruce/sensors.pl).

- Fixed a problem with parsing HTML TABLE data, introduced in 2.13 for those who are on perl 5.6.

- Fixed an error in mh.ini comment. Now reads ``use positve numbers longitude'', not latitude.

- Fred Richards reports that a Tk ``font doesn't exist at PERL2EXE_STORAGE/Tk/Widget.pm'' error was fixed with this version of mh.exe, probably due to Tk being upgraded from version 8.020 to 8.021.

- Changed to a simpler way of reading tcp socket data (thanks go to Danal).

- Renamed server1 to server_telnet in mh.ini and code/test/telnet.pl

- Added FAQ question 6.7 What do I need to use the iButtons?

- Added FAQ question 5.2 What are good editors to use with perl?

- Added these new bugs to the mh.html bug list:

  Windows Activestate perl 5.6 build 613 leaks memory
  when running mh.  On my box about 30 Meg a day. 

  Some people are getting CRC errors when running iButton
  code under Windows NT.

  Adding, deleting, or changing Voice commands does is not
  recognized by the Windows MSVoice application while it
  is running.  You have to exit and restart MSVoice, then
  restart mh to get it to recognize new commands.
  Hopefully we can get this to work with release 5.0
  of the MS Speech SDK.


Version 2.15 posted on 05/06/00

Version 2.15 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Brian Klier is working on some nifty code to interface with a voice modem in mh/code/public/voicemodem.pl. Currently it works with modems based on the Rockwell chip set. The script can pickup your phone after so many rings, play an outgoing message, and take a message. There is also code to dial up a number you specify and play a voice message.

- Ingo Dean and Radi Shourbaji made some X10 updates to HomeVision.pm

- Clay Jackson added iButton support for the 1822 temperature button.

- Kees Cook added the mh.ini prounoucable_list_file option, so you can change change to phonetic spellings of words, but still keep the correct spelling in your code and logs. Control this with the new mh/data/pronouncable_words.list file.

- Kees also sent in a patch to make Caller_ID a bit smarter. I added a mh.ini caller_id_format parm, so we can adapt to various caller ID formats. Also, Caller_ID::make_speakable now returns just the caller name, so you can create control the phrasing better (see mh/code/bruce/phone_modem.pl for an example).

- Allow for duplicate Serial_Items and X10_Items. Now all items with the same ID code will get set when data is received, rather than just the last defined item.

- Added tk_font and tk_font_fixed mh.ini parms. Like most mh.ini parms, you can change them while mh is running and use the F1-reload button to evaluate the change.

Examples, Bug Fixes, and Minor Changes:

- Christopher Witte send in a fix for the 'broken pipe' problem that unix users could get when doing multiple quick web browser reloads.

- Chris also updated the CVS repository to be a full copy of mh, so in theory, people can do a full install of mh via cvs.

- Ron Klinkien sent in some updates for mh on FreeBSD.

- Kees Cook send in a patch to Text_Cmd.pm to allow Festival to use esdplay, so mh can share the sound card with other programs. The is controled with a new mh.ini festival_init_cmds parm.

- Christopher Kodadek send a fix for a bug introduced in 2.13 where get_mail would announce incoming mail twice.

- Added a '3digit' option to IR_Item to it can be used with devices that require all 3 digits to be entered for channel numbers.

- Re-fixed a bug in CM11.pm that created ``unrecognized X10 data:'' messages.

- Added Volume Up/Down to mp3_control.pl (latest httpq 1.6 winamp plugin required)

- Added HTML::Parse to get_tv_info, so we can drop HTML tags from TV data.

- Allow for tabs in speakable data.

- Fixed a bug that caused duplicate filename to be listed on the web page popups if code was reloaded with errors.

- Fixed a bug that cause an eval error when listing Global Variables via the web interface.

- Added mh/code/examples/x10_motion_sensor_ben.pl

- Added FAQ question 3.2: How can I set the default volume level for Festival?

- Added FAQ question 1.15 How can I call mh from a non-mh web server like Apache?


Version 2.13 posted on 04/09/00

Version 2.13 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Added IR_Item to support the new X10 IR transmiter, available for $50 at http://www.x10.com/products/ux17a_bj2.htm . Documentation is in mh.pod and example is in mh/code/test/tv.pl. Also updated tv_grid.pl to use IR_Item instead of the older, one-for-all mh/bin/ir_cmd

- Added Kevin Olande's mh/code/public/x10_ma26.pl code for monitoring the X10 wireless mouse receiver. This also monitors other X10 rf traffic, so may prove to be a good way to improve latency on things like X10 motion sensors.

- Craig S. added a iButton read_switch method, for the DS2407 switch. He also has started on code for monitoring the Dallas 1 wire weather station: mh/code/public/iButton_ws.pl

- Added volume, rate, and voice options to the speak function. An example is in mh/code/test/test_voice.pl. Unfortunatly, these don't work yet. I don't think the MS TTS engine can be controled (with perl via OLE anyway), and I couldn't get my Festival speech engine to use the SABLE parms that Neil posted. Maybe a newer version of Festival will work ... if someone gets this to work with Festival, let me know.

Examples, Bug Fixes, and Minor Changes:

- Documented iButton_Item in mh/docs/mh.html

- Updated mh to be compatable with the new 5.6 perl release. Note, the install.html instructions now specify a required step for perl 5.6+ Win32 users: ppm install Win32::API. Without this you will get ``illegal operionation'' popup.

- Updated code to be compatable with the new Tk 8.020 release (was getting Can't locate delgate.al errors).

- Fixed a Windows bug that cause mh to hang while wav files were played. They are now played asynchronously.

- Added Kevin O.'s fix to CM11.pm to fix the problem he was having with not receiving all incoming X10 signals.

- Fixed a bug introduced in 2.11 that disabled dialup on Windows.

- Disabled the mh/web/overlib.js tracking.

- Fixed a bug where mh would respond with ``I heard'' when using the ms speech recognition engine.

- Added David L.'s linux mp3 control code as code to mh/code/public/mp3_control_GQmpeg.pl.

- Added Brian Klier's example of a custom status pannel page to mh/code/public/statuspannel.pl and .shtml. Also added a screenshot of what Brian's mh page looks like at http://misterhouse.net/pictures/brian.gif . If anyone else wants to send in screenshots of their mh web interfaces, send them my way and I'll post them.

- Refreshed Tom K.'s mh/code/public/news_*.pl members

- Added an optional net_mail_account_server_send parm, to allow for accounts that have different send and receive (stmp/pop) mail servers.

- Changed tv_grid.pl to use the optional mh.ini html_alias_tv parm, so you can put your tv pages in a directory other than the main mh/web directory, enabling easier upgrades.


Version 2.11 posted on 03/09/00

Version 2.11 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

New Features:

- Added Brian Warner's iButton perl modules. I have tested it with a Id button (DS1990), temp sensors (DS1820) and the 2 channel digital IO (DS2406, via the sixpoint.com TR1 relay card). Examples on talking to these devices are in mh/code/test/ibutton.pl. A couple of urls with prices are listed in the hardware section of mh/docs/mh.html. I converted the iButton modules to use Bill's SerialPort module, so it now works on Windows as well as Linux!

- Split mh/code/bruce/phone.pl into phone.pl, phone_weeder.pl, phone_modem.pl, and phone_logs.pl. This should allow caller ID modem users another option. phone.pl differs from the mh/public/calllog.pl code that Brian and Ernie O. put together. The phone_modem.pl code is a bit simpler (e.g. no auto-hangup), but it logs data for use with display_callers.

- Reworked the default web page again (now mh/web/mh4). This now uses the javascript overlib.js library from Erik Bosrup. This allows us to use a new Voice_Cmd set_info method to display additional information in a pop-up box that will show up when your mouse hovers over the command text. Unfortunately this does not work with Netscape because onMouseOver only works with href tags, so I added a special option for Netscape users that adds small info and log links. This option can be turned off with a new new mh.ini parm, along with several other other new html related parms. For example, you can now control if and when a dropdown select list gets used for Voice_Cmd states. As with many mh.ini parms, you can use the Reload function to quickly test/play with these options, without restarting mh.

- Added support for winamp plugin httpq to mp3_control.pl and mp3_playlist.pl. This lets mh control mp3s on any computer in your network. A new mh.ini parm mp3_program_control lets you choose between this and the windows only wactl program. Also added code from Nicholas Brink for a 'Random Song' option.

- Added code to monitor_shoutcast.pl so it can re-connect the player to the server if disconnected or stopped. My shoutcast server should be up most of the time now, if any of you want to stop by and say hi: http://misterhouse.net:8080/speak/

- Added Global and Save variables to the web widget menu.

- Added widgets and vars as mh.ini password_protect options. When used (the default), computers other than those listed in password_allow_clients, will not be able to view that data.

Bug Fixes and Minor Changes:

- Included Craig S.'s sump pump code and Tom's news_* code to mh/code/public.

- Added Voice_Cmd set_order method so you can control the order that the commands are listed in web Category list. The default is alphabetically by file, then by name.

- Pointed to a new top 10 list url in internet_data.pl

- Put time-date stamp back into the speech log

- Check for valid serial state data before saving, to avoid object state restore eval errors.

- Added a head_tail option to logit, so we can log records to the top (instead of the bottom) of a file (e.g. tracking_bruce.pl).

- Added mh/code/examples/test_open2.pl as an example of how to read/write to another program's STDIN/STDOUT

- Fixed a mh.exe problem with mail related steps.

- Fixed a bug that disabled brightening lights via the web interface

- Disabled auto-refresh on .shtml included html, per suggestion from Ron W.

- Fixed a bug where the web category name was lost on a code reload.

- Allow /graphics to be an http_alias.

- A web request to display data will now only display to the web page and not also create a tk popup window.

- Added Tom K.'s $Time_Of_Day global var (morning, afternoon, evening, and night)


mh ver 2.1 posted on 02/19/00

Version 2.1 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

Mainly a few bug fixes from the 2.00 release.

New Features:

- The widgets now also show up in the category lists, before the voice commands.

- /widgets now shows widgets listed in code order, as it was before 2.00. Added /widgets_type to be the widgets in sorted order like 2.00.

- Added mh.ini html_alias* parms. This allows you to point to directories that are not under html_dir

- Added code to monitor All-lights-on and All-off, so mh can correctly track the state of X10_Item and X10_Appliance objects.

- Changed web Items and Groups to auto-refresh, so the state of the items stays current.

- Moved Speak_Log from Voice_Text to mh so the web interface will echo spoken text even when muted.

- Jay A. sent a bunch of new icons.

Bug Fixes and Minor Changes:

- Enabled web response from widget commands

- Fixed a bug with the auto-refresh of the speak, log, and widget screens. It no longer will run the last selected commands on every refresh.

- Fixed a bug in set_password, when run directly from perl

- Fixed a bug that would cause + to be inserted instead of blanks for web entered data.

- Re-enable .shtml /list?xyz directives.

- Fixed a bug that caused netscape not to load really small graphics files.

- 'List X10 items' now includes Appliances. Fixed 'List serial items' to list all ID codes.

- Fixed a bug that would add a suffix of 'nd' instead of 'th' to 11,12, and 13th Date_Now_Speakable dates.

- Fixed mp3_playlist so it does not fail if DB_File is not installed.

- Changed mh.ini to read vvo_speak instead of vvo_server (to enable IBM viavoice outloud)

- Move the get_email_rule.pl from mh/bin to the code_dir. This allows you to modify it without changing files in the main distribution directory.

- Added FAQ 2.13: How can I control Command Categories

- Craig S. fixed a set_clock 2k bug.

- Delete X10_Item 'none' state (use manual instead).

- Updated monitor_server.pl to allow for 'web hits per hour'.


mh ver 2.00 posted on 02/12/00

Version 2.00 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

We overflowed the mh version number, so rather than go from version 1.99 to 1.100, we decided to use 2.00. This isn't a major re-write of mh (except for the web interface), but mh has had enough changes since 1.00 that we thought maybe it deserved a new number :)

New Features:

- Dave Lounsberry and I re-vamped the web interface. There are too many changes to summarize here, but most of it documented in the 'Customizing the Web Interface' section of mh.html. There are some new parms in mh.ini so you can taylor it somewhat with just parm changes. For example, you can turn the icons off and you can set the refresh rate of the speak, log, and widget label screens. mh uses various search strategies for picking the best icon to match a command or item (documented in mh.html), but if you want to manually pick an icon, you can use the new set_icon method for various objects.

- Also include in the web overhall is a new last_response html response function, which is now used by all the web RUN commands. This will allow the web interface to see all the Display and/or Spoken data, so now you -tk 0 guys can have some fun!

- Added state_log method to various items. This is used in the Tk Items pull down state_log entry and the new web pages. It shows the time_date stamps of the last max_state_log_entries (mh.ini parm, default is 10) state changes.

- Added net_im_send. This allows mh to send messages to AOL AIM clients. Set the new mh.ini net_aim_* parms and try running mh/test/internet_im.pl. More info is in mh/docs/mh.html.

- Added a tracking_mailto option to mh/code/Bruce/tracking_bruce.pl. mh will now send me email or an instant messages whenever it detects our cars have gone somewhere. It is a great way to keep track of the family from work!

- Added a call to the new Astro::MoonPhase module to create, $Moon{phase}, $Moon{brightness}, $Moon{age}, and $Moon{new,first,full,last} entries. See mh/code/test/time_info.pl for examples.

- I created a survey at http://sourceforge.net/survey/survey.php?group_id=1365&survey_id=10139 Unfortunatly it seems to only allow me to look at the results, but I'll post a summary of the survey in a month or 2 so you can all see the results.

Bug Fixes and Minor Changes:

- Moved the loading of playlists from mp3_control.pl to mp3_playlist.pl

- Fixed CM11.pm so it would not do a power fail time reset after sending a D5 command.

- Added FAQ question 6.5 What is X10?.

- Added 'Coding your own events' to install.html

- Added mh/code/examples/x10_motion_sensors_kevin.pl

- Jay Archer added mh/code/public/door_monitor_jay.pl as an example of using an X10 powerflash and hawkeye motion sensors to monitor and control a garage door

- Restored the mh/data/remarks/deep_thoughts.txt database (accidently deleted in the last release)

- Drop the extra ``'' in mh.ini favorite_tv_shows parm

- Fixed the web server stats report in monitor_server.pl

- Add plural_check to de-pluralize a string (example in monitor_shoutcast.pl).


mh ver 1.97 posted on 01/27/00

Version 1.97 was just uploaded to:

  http://misterhouse.net/download
  http://misterhouse.sourceforge.net

Lets try this again! The only change between 1.97 and the 1.96 posted earlier today is the O_CREAT error is fixed and the new X10 Garage_Door state is now saved.

New Features:

- Moved the mh CVS repository to sourceforge.net. This doesn't affect most of you, but if anyone who wants to get involved in updating core mh code, let me know and I'll send you a howto note.

- Added the time_random function. This can be used to code randomly fired events. See mh/code/test/goofy.pl and mh/doc/mh.html for examples.

- Danal Estes updated CM11.pl so it can now receive extended X10 data, in addition to sending it. He also added a X10_Garage_Door object to X10_Items.pl and created code/public/Garage_Door.pl. This allows mh to read Stanley Homelink modules. See code/public/Garage_Door.txt for more info.

- Added mh/code/test/mp3_playlist.pl. After setting the mh.ini mp3_dir to point to all your mp3 directories, run ``build the mp3 database''. When that step is done (it took about a minute to read many songs spread across 4 computers at my house), you can then use the MP3 Search and/or MP3 Genre tk fields to start your mp3 player for the requested songs.

- Updated internet_slashdot.pl to work with the newer slashdot xml standard.

- Added a said method to File_Item. This allows us to easily monitor the tail end of log files. See shoutcast.pl for an example.

- Updated mh/code/Bruce/shoutcast.pl so it can be used with the newer, web based shoutcast servers. This code will announce when you have new listeners to your mp3 streamed broadcasts.

- Added mh/code/public/callerid.pl as another example on how to do callerid with a modem.

- Added Dave L.'s motion sensor code as code/examples/x10_motion_sensors_dave.pl

Bug Fixes and Minor Changes:

- Fixed an 'unrecognized data: X##' bug recently introduced into CM11.pm.

- Added a new_mail_light example to internet_mail.pl.

- Fixed the {a,b,c} enumeration problem on web category lists.

- Fixed the CM11 group set method so items are left in the correct state, rather than none.

- Fixed the DNS lookup in monitor_server.pl. It always said 'web access from unknown', even if you had the mh.ini DNS parm enabled.

- Allow display_callers to work with the compiled mh.exe.

- Fixed ``What is your uptime?'' in mh_control.pl, for linux users (again!)

- Added FAQ 4.2: How do I set setup networking between Windows boxes, 1.14: How does mh read and use the user code in code_dir and, 6.5: How can I use cvs to co-develop core mh code


mh ver 1.93 posted on 01/05/00

Version 1.93 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Changed Voice_Text to allow for calls David L.'s new ViaVoice Outloud TTS server for Linux. David has an rpm and a tarball, with installation documention, at: http://dittos.penguinpowered.com/automation/index.html#software

- Added mh/code/test/stocks.pl. This will use Yahoo to look up stock data for the symbols listed in the new mh.ini stock parm. All it does now is pop up a Tk window and update a Tk widget with last prices and change data. This could be exended to do logging, alerts, charts, etc.

- Added a Tk Code Search option to mh_control.pl. This can be used to quickly find which objects and/or variables are in which code files. It pops up a Tk window that shows which code files the specified string is found in.

- Added ``List X10 Items'' and ``List serial items'' to mh_control.pl. These will display an sorted list of your items, so you can easily review what is assigned to what.

- If you are using an CM11, the Group object will now control all X10 devices simultaneously, rather than sequentially. Thanks to Nic Brink for pointing out this option.

- Allow for the Voice_Cmd state to be in the response field with either of the following:

  $v_fan = new Voice_Cmd 'Fan [on,off]',
           'Ok, I turned the fan $v_indoor_fountain->{said}';
 
  $v_fan = new Voice_Cmd 'Fan [on,off]',
           'Ok, I turned the fan %STATE%';

Bug Fixes and Minor Changes:

- Fixed the time_now problem with ``12:xx AM'' tests that Brent J. found.

- Fixed the 100 -> 00 date display problem on the Tk windows.

- Added Ron Wrights drop down box updates to get_tv_grid.

- Added Nic Brink's mh/code/public/cd_player.pl code (for linux).

- Created $Date_Now_Speakable, complements of Amaury J.

- Added mh/code/public/send_alpha_page.pl from David L. It uses a linux program called bip to send pages.

- Bill B. updated CM11.pm to an official CPAN 2.06 version (extended data added).

- William S. found a bug in trivia.pl

- Fixed a bug with mh_server processing mhsend -run commands.

- Added File_Item read_all, read_head, and read_tail methods.

- Added numbers to the FAQ questions. Added a ``What are the advantages/disadvantages to the compiled vesions of mh'' question.


mh ver 1.90 posted on 12/12/99

Version 1.90 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Craig S. added mh/lib/RCS_Item.pm and mh/code/public/rcs.pl, to allow for control of the RCS TX thermostats.

- Added the option for internet_mail.pl to run commands via email. To test it, fill in the new mh.ini net_mail_command_code, then run 'send test e mail', then a little later 'list new e mail'. See mh/docs/faq.html question 'Can do I send mh comands via email?' for more info. Thanks to Chris H. for this idea!

- Added mh/bin/outlook_read and mh/code/Bruce/outlook.pl. This code will read events from Outlook '97, '98, or 2000 calendars and create a mh code file. The subject of the calendar entry can be ``VCR CH# Show name'', ``voice_cmd_to_run'', or ``message to speak''. Run outlook_read -help for more info.

- Added &Voice_Cmd::said_this_pass and &Voice_Cmd::noise_this_pass so we can get better feedback from the viavoice VR engine. See mh/code/Bruce/lcdproc.pl for an example, where I use an LCD to display if a command or noise was detected. Other minor changes to viavoice_control.pl

- Added a 'find a command' function to viavoice_control.pl. This lets speak a word or two of and have mh return a list of all commands that match those words.

- Added an html log to tracking_bruce.pl. Check out where our cars have been at http://misterhouse.net:8080/aprs

- Enabled Bright/Dim, and +-##% when using the X10 Weeder kit interface

- Added mh.ini date_format parm, so you can pick US mm/dd/yy or non-US dd/mm/yy. You can also choose 2 year yy or 4 year yyyy formats.

- Took out hard coded small fonts and put in more html_style mh.ini parms (e.g. html_style_tk).

Bug Fixes and Minor Changes:

- Fixed a http server problem where Netscape would sometimes say 'Document contains no data'.

- Allow mh.ini parm html_default to be a list of possible default files, rather than just one (e.g. index.html,index.shtml).

- Return a web Error page for unrecognized web requests.

- Return 'not authorized' if someone tries to access web files above the root web directory.

- Added $New_Week, like $New_Day, $New_Month etc.

- Added file_cat so we can concatonate data from one file to another.

- Fixed ``What is your uptime?'' in mh_control.pl, for linux users.

- Fixed 2 recently introduced log related bugs with display_callers.

- Allow for blanks before and after the = in mh.ini files.

- Allow for mh objects to be declared without () around the new argument. Either of these are now allowed:

  $test1 = new Voice_Cmd "Test 1";
  $test1 = new Voice_Cmd("Test 1");

Along with this change, mh now requires objects declarations (e.g. new Voice_Cmd) to start in column 1-3. This is consistant with global 'my' variables. Unfortunatly, this may break some code that used to have global objects that were indented. For example, several objects in the old test_stuff.pl were that way.

I debated this change for some time, but it seems better to be consistant. I could see problems with pulling out any/all objects (e.g. eliza object in speak_server.pl). I can get talked out of it if this is a problem for someone.


mh ver 1.89 posted on 11/20/99

Version 1.89 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Added HomeVision support, complements of Ingo Dean. Set the Homevision_port mh.ini parm to enable. Check mh/code/public/test_homevision.pl for example code.

- Upgraded viavoice_server to V2.0 SDK. Added instructions in install.html on how to install viavoice SDK (available free from IBM, for linux only).

- Added 3 new Voice_Cmd options: $response, $confirm, $vocabulary. These are currently only used if you are using the viavoice engine, which currently is only available on linux (you linux guys now have a leg up!). We might be able to add these new options to the MS VR engine, but I'm not convinced the current MS VR engine is accurate enough to justify the effort. If you have a linux box running on your network, you can use the viavoice_server from your windows mh (which is what I am doing). Another option is maybe we can compile a version of viavoice_server for Wwindows, but that would not be free. I think IBM sells their windows version of viavoice for around $100.

- Created mh/code/Bruce/viavoice_control.pl. Using this, you can switch between 'awake', 'asleep', and 'off' modes. Added a bunch of viavoice_* parms to mh.ini so you can personalize how these modes work.

Bug Fixes and Minor Changes:

- Added an -hour option to get_tv_grid, so you can specify grid times other than the default of 4 hours.

- Added -size and -type options to report_weblog. Change -type default from gif to png. I am a little late to the 'burn all gifs' party!

- Added a check for an html browser, before displaying the help text.

- Changed the 3rd argument to logit to be the &time_date_stamp format used. The default is unchanged 14 (e.g. Mon 04/14/99 14:28:00).

- Fixed a bug with the new set_with_timer option added last to X10_Item.

- Added mh.ini sound_program parm. If you are on linux and to not have a sound card or do not want sound files played, set this to blank.

- Drop 50 frow/o + from X10_Items.


mh ver 1.87 posted on 11/07/99

Version 1.87 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Added the option to interface to a viavoice_server Voice Recognition server running on linux. The server (complements of Michael Flaster) currently requires the V1.0 SDK installed. The V2.0 SDK was just release and probably requires a different executable, so unless you really want to be bleeding edge, you probably want to wait till Michael and I get the new version up. Mike, I'll send you a seperate note on how to enable mh to use it and what works and what doesn't.

- Added Voice_Cmd 'phrase enumeration' with {} (e.g. {tell me the time,what time is it}). Unlike the existing 'state enumeration' with [] (e.g. [on,off]), you can have as many phrase enumeration groups as you want. Examples are in mh.html and in http://misterhouse.net/mh/code/examples/Voice_Cmd_enumeration.pl .

- Extended X10 Preset Dim commands are now supported, if you have the CM11 interface and a compatible (LM14A) module. You can send them directly, like XA1&P64 (set unit A1 to Preset level 64), or use the new X10_Item ##% state. Examples are in http://misterhouse.net/mh/code/examples/x10_preset_dim.pl . Also look for ``Preset Dim'' in mh.html.

- Added a set_with_timer X10_Item and X10_Appliance method. This idea is complements of Craig. Examples are in mh.html.

- Added $Reread. This is true on the first pass after a Reload(F1) request. Unlike $Reload which is is true only if one or more code members changed, $Reread is always true on a Reload request. Using $Reread, you can create events to quickly re-read input files without restarting mh (e.g. the tracking.pl position file).

- Added mh.ini time_format=24 option, for our non-US buddies.

Bug Fixes and Minor Changes:

- Moved X10_xx items from Serial_Item.pm to X10_Items.pm.

- Allow for X10_Item brighten levels to work without the '+' sign (e.g. 50 instead of +50).

- Fixed a mh.exe bug with get_url ('port not specified' message).

- Fixed a recent bug that caused Serial_Item not to start after being stopped.

- Fixed a get_weather bug where conditions were not always retreived.

- Used the mh.ini data_dir in get_tv_info, instead of the hardcoded mh/data.

- Closed an file handle in Display.

- Added code/public/weather from Ernie O.

- Added code/Bruce/tracking_bruce.pl. This is a subset of Brian's mh/public/Brian/tracking.pl code that just does GPS tracking.

- Renamed the convert_wind_direction to convert_direction (since we can use it in the gps tracking code also).

- Updated to the latest version of Geo::WeatherNOAA.pm, used by get_weather.

- Changed time/date format of logit (uses 24 hour time and includes seconds and year). If anyone wants the old format back, let me know and we can put in an option.

- renamed file_change to file_changed (and granfathered in old name) and added file_unchanged.


mh ver 1.83 posted on 10/09/99

Version 1.83 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Added mh.ini password_protect=all option. If this is used, and mh/bin/set_password has been run, none of the mh web pages will be displayed unless you have entered the password.

- Added mh.ini max_log_entries, to control how many entries are shown in the web print and speak logs.

- Updated the FireCracker CM17.pm module to allow for numeric bright/dim (e.g. ``set light to +50''). As noted in the mailing list earlier this week, the CM17 only supports one DIM and BRIGHT command, so we have to run a loop in CM17.pm. Each CM17 command takes about 1 second, and it takes 7 DIM/BRIGHTS to cover the whole range, so a +95 will cause mh to pause for about 7 seconds.

- Updated mh/code/Bruce/phone.pl and mh/bin/display_callers so they search mh.ini caller_id_file data also.

Bug Fixes and Minor Changes:

- Re-fixed the DB_file compile bug in handy_utilites, introduced in 1.82.

- Updated Serial_Item.pm so it works with mh/code/public/rcstx15.pl again.

- Fixed test on zero length xcmd_files.

- Fixed a bug in time_date_stamp format 13.

- Added dbm_read function, for reading just one record from a dbm.

- Added mh/code/public/Nick. This is the code we set up for my son Nick's room.

- Refreshed CM11.pm and CM17.pm to from CPAN and moved from mh/lib/site/HomeAutomation to mh/lib/site/ControlX10.


mh ver 1.82 posted on 10/02/99

Version 1.82 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Added X10_Item interface field, so you can specify if which X10 device you want to use to control that item.

- Allow for serial port sharing. For example, you can put the CM11 and CM17 (ActiveHome and FireCracker) interfaces on the same port.

- Changed logit_dbm and display_callers from SDBM_file to DB_file. This is a more reliable DBM storage format. If you have been using display_callers or have your own DB file that used the logit_dbm function, you will need to convert to the new format using http://misterhouse.net/public/dbm_sdbm_to_db

- Added a search_dbm function. Updated mh/code/Bruce/phone.pl and mh/bin/display_callers to use it. Using this, we can quickly search for the phone number of anyone who has ever called us, using a part of their name or phone number (e.g. area code).

Bug Fixes and Minor Changes:

- Updated mh/phone/phone.area_codes.txt (thanks Bill!)

- Exposed CallerID.pm names and states arrays.

- Fixed 'use lib' with mh.exe bug in get_tv_grid and set_password.

- Fixed a bug with the file 'copy' function when run from mh.exe

- Changed file_change to return undef when first called. So it returns 1 if the file has changed, 0 if it has unchanged, and undef it we don't know (because mh just started).

- Minor bug fix in processing of a get_email_rule.pl rule.

- Updated mh.exe to latest Activestate build (520)

- The new release of ActiveState perl, build 520, has a new function for volume control: Win32::Sound::Volume($left, $right). So those of you with that build or those using mh.exe can try this function. I found it didn't work as documented ( http://www.activestate.com/ActivePerl/docs/lib/site/Win32/Sound.html ) Looks to me like the sound range is from 0 to 255), and it would always zero out the right channel. If we can get this to work, we can add in a volume_stub to speak so we can support different volume levels.


mh ver 1.79 posted on 09/26/99

Version 1.79 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Buffer incoming X10 data so that multi-keyed events can be processed, one keystroke per pass. For more info, see the mailing list thread ``missed'' X10 signals.

- Added mhsend and mhsend_server.pl. These are a more flexible replacement for the speak_server.pl code. They allow you to send data to mh over the intra/internet. Data can be logged, filed, spoken, displayed, or run. Password authorization is the same as for web pages.

- Added -mail_to option to get_tv_grid. If specified (see http://misterhouse.net/mh/code/test/tv_grid.pl for an example), it will email the default tv web page so you can have the current TV schedule in your html compatible inbox.

- Allow control of Reload and Error sounds in mh.ini.

- Added sound_dir to mh.ini, so you can point to your own directory of wav files.

- Added sendkeys_find_window. It adds the option of starting a program if its window is not found. See mh.html or http://misterhouse.net/mh/code/test/internet_mail.pl

- Another example of how to use SendKeys to send/receive mail with Outlook and Outlook Express in mh/code/test/internet_mail.pl

- Add mh.ini password_allow_clients parm so we can specify intranet boxes that do not require password protection.

Bug Fixes and Minor Changes:

- Added a note on the Windows 98 DCOM update to install.html and faq.html.

- Added 2 missing .gifs to the TV web pages. Re-enabled the detailed program discriptions from the clicktv site. Unfortunatly, I'm not sure how to get the Javascript popup windows re-enabled. The web pages I download do not use PDetail javascript subroutine.

- Enabled the get_tv_grid -label option. Default it to <img src=``/tv/vcr.jpg''>

- Fixed a bug where web pages would keep waiting when running events that do not respond with spoken or displayed data.

- Fixed the 'command not found' bug that Bill B. noticed at startup.

- Added a check for bad data in code/mh_temp.saved_states.

- Fixed a bug where web links to commands with _ in them would not work.

- Changed set_password, set_clock, get_tv_grid, get_weather, and display_calls to use the new mh.ini data_dir and html_dir parms.

- Save state of debug flag between code reloads.


mh ver 1.77 posted on 09/17/99

Version 1.77 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

New Features:

- Added Socket_Item is_available and set_port methods, so we can have mh make sure various socket ports are up (see http://misterhouse.net/mh/code/Bruce/monitor_mh.pl for an example). Don't tell the 'script kiddies' about it or they will use it as a port scanner.

- On Windows, there are two new functions that can be used for controlling other applications. WaitForAnyWindow and SendKeys are new functions exported from a perl module called Win32::Setupsup. Full documentation is in mh/lib/site/Win32/Setupsup.html, but most of what you need to know can be gleaned from the function descriptions in mh.html. Examples can be found in http://misterhouse.net/mh/code/test/ members mp3_control and test_stuff.pl (tests o and p)

Bug Fixes, small changes:

- Fixed the CM17 bug that Bill B. found. Also moved CM11.pm to the lib/site/HomeAutomation/X10 directory.

- Fixed a bug where blanks in '# Category=my category' directives messed up web pages listings.

- Changed the Tk Command menu items so it will not list empty groups.


mh ver 1.75 posted on 09/12/99

Version 1.75 was just uploaded to:

  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html
  http://misterhouse.net/mh (for unziped, individual files)

Here is what's changed:

- Added a data_dir parm, and renamed html_root to html_dir (html_root will still work). As outlined at the top of mh.ini, changing code_dir, data_dir, and web_dir should be enough to keep your files seperate from the mh distribution, for easier upgrades.

- Changed the mh/web/mh_chaz and mh/web/mh2. Renamed the old page from mh_default to mh1. You can play/change with the different web pages by pointing to:

  http://localhost:8080/mh_chaz 
  http://localhost:8080/mh1
  http://localhost:8080/mh2

Or you can edit your mh.ini html_dir parm and hit Reload, then refresh your browser window.

mh2 is a combination of the old mh1 interface with some of the nifty new stuff that Charles has in mh_chaz. Thanks to Charles for his expert web work!

- Added mp3_control.pl for controlling mp3 songs. On Windows it uses wactrl.exe from David Kindred. We should be able to find a linux player we can control from the command line in a similar way. If not we can compile the new perl MP3 module.

- Improved, but didn't fully fix the memory lead on Reload problem. I (painfully) tracked this down to a Tk Menu problem and the perl Tk author is taking a look at it. Until that is fixed, if you are doing frequent code reloads, you may want to turn off the pull down menus by editing the 3 tk_* parms in your mh.ini or run with:

   mh -tk_items 0 -tk_commands 0 tk_groups 0

Items uses the most memory, so just turning that one off will probably be enough. On my box with -tk_items 0, mh leaks about 200k per reload, it costs me 2 meg per 10 reloads.

- Added mh/docs/faq.html (and faq.txt). Added/changed a few items from when it was first posted a few weeks ago.

- Added $Holiday. See mh.ini holiday_dates parm.

- Added mh.ini html_style option. Use this to change mh web pages colors and fonts.

- Added mh/bin/alpha_page from Craig S.

- Some more homebase updates. Bob and I are closing in on getting this working.

- Some SerialPort and CM17/CM11 updates. Bill B. is kindly going through all the work to preparing the CM17/CM11 modules for eventual upload to a new perl CPAN HomeAutomation::X10 directory.

- Updated get_tv_grid to work with the new click.tv pages. It now also deletes old shows from the dbm database.

- mh/web/mh_default/test bar graphs were pointing to the wrong directory, so the color from the one dot gif did not show.

- Changed the Reload and Error sounds to use mh/sound/sound_click1 and sound_beep1.


mh ver 1.71 posted on 08/29/99

Version 1.71 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Here is what's changed:

- Added support for 4x20 LCD interface with keypad. I've just started using it, but this looks like it will be a really handy, inexpensive ($100) way to query/display mh data. See mh/code/Bruce/lcdproc.pl and/or the hardware section of mh.html for more information.

- Added support for the $30 IRman receiver. mh/code/Bruce/irman.pl shows how to program a database for your IR, and how to set a Generic_Item that you can then use to trigger events in any code member. See irman.pl and/or mh.html for more info.

- Added support for .pl web files. Like 'cgi' programs, this allows us to generate html on the fly, that reflects the status of various mh items. For a few examples, try http://misterhouse.net:8080/mh_default/test/test_stuff.shtml . Brian K. has another example in mh/web/examples/statuspanel.pl

- Added set_dtr set_rts methods to Serial_Item. See irman.pl for an example.

- Added a Process_Item set method, so the Process_Item program and/or arguments can be set/changed after mh startup. See mh/code/Bruce/reports.pl and/or mh.html for an example.

- Fixed the Log(F5) option, so it correctly toggles on and off. Useful if you want to turn logging on for just a bit, then turn it off again.

- Fixed get_email and display_callers so they work when mh.private.ini is pointed to with ENV var mh_parms.

- Disabled Serial_Item state_now results for the first few passes after startup. This way we can initialize Serial Items at startup and not get false triggers.

- Added mh/code/test/startup_msg.pl to give a few pointers to first time mh users.

- I just noticed a resource leak when doing code reloads. About 6% of windows resources (per the Win98 resource meter) on each reload! I'm suspect this bug has been with us a for a few releases. I'll try to fix it next time round. Till then, best restart mh about every 10 reloads or so.

- More Homebase.pm debug. Bob, I'll send a seperate note to you on this.


mh ver 1.69 posted on 08/01/99

Version 1.69 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Heres what's changed:

- Fixed the run bug that Craig found, introduced in 1.68.

- Added status option. For those with CM11 and the newer, smarter, more expensive queriable X10 modules (e.g. PLM21 lamp module). Now you can send periodic 'set $my_light STATUS' and it will set the state of the item, so you can account for manual control of lights. Thanks to Brandon for starting the work on this one!


mh ver 1.68 posted on 07/31/99

Version 1.68 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Heres what's changed:

- Some new HomeBase subroutines to test. Bob, copy mh/code/Bruce/test_homebase.pl into your code dir and try the various tests. I have very little confidence in any of them, but they should give us a place to start debuging. The documentation I have is very poor, so if you can dig up anything better, that would help.

- Added html_reponse method last_displayed (see previous posts and/or mh.html).

- Added Charles C.'s javascript to the mh/web/mh_default/category.shtml. The only example that uses it is the 'deep thought' button.

- Added mh.ini allow_password_file and mh/data/password_allow. This gives those of us who password protect our web pages (with mh/bin/set_password) the option of allowing specific command and/or items to not be password protected. For example, anyone can click on the 'display the next deep though' on my web page at http://misterhouse.net:8080

- Bill B. updated Device/SerialPort.pm so should now load OK even on Unix boxes without the proper .ph files.

- Added some new small sounds in mh/sounds. mh will now bypass logging the wave file name in the speak log if the name of the file starts with sound_*. These are ment to be short, frequent sounds.

- Added mh/code/test/monitor_server.pl. This code will make a clicking sound whenever anyone hits on the misterhouse web server. It also can announce new clients. There is also a new local_addresses mh.ini parm so this code can distinguish between local hits and external hits.

- Added mh/bin/monitor_weblog, which does the same sort of monitoring as above, but it monitors an Apache server log, rather than the MisterHouse web server. This can run on a different box, as it passes the hit info to MisterHouse via the speak_server port.

- Added mh/bin/report_weblog, and mh/code/Bruce/reports.pl. This code generates gif graphs that reflect how many hits and clients Apache and/or Misterhouse logs shows. It can optionally email the graphs. For an example of the graphs, check out: http://misterhouse.net/report_weblog.html

- Added a mh.ini browser parm and enabled the tk Help button (brings up mh.html).

- Log files now include startup info (e.g. program version).

- Added mh/bin/test_cm* scripts for testing CM11 (Activehome) and CM17 (Firecracker) X10 interfaces stand alone, without mh.

- Fix a bug that disabled the DOS console controls.

- Fixed a bug with run if the full pathname to the program was specified.


mh ver 1.65 posted on 07/22/99

Version 1.65 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Heres what's changed:

- Enabled the Firecracker CM17 interface on both Unix and Windows. Much thanks to Bill Birthisel for his efforts in updating the SerialPort modules! If you know of someone who wants cheap one-way (transmitting) control with X10, they can still get the $6 deal at http://www.x10.com/free_fire.htm The ``offer ends at midnight'' is the standard X10 ploy which typically last for months. Also handy if you want wireless control from a laptop (it transmits commands to an RF receiver).

- If you have password protection on (i.e. you have run the mh/bin/set_password program), the web speak log and print_log files will now require authorization. You can change it back to allowing anyone to view those logs by blanking out the new mh.ini password_protect option.

- You can now use 'server side include' directives in your web html, to allow better control of the mh generated lists. Charles, this wasn't exactly the function you asked for, but I thought it would us more control and be more secure than allowing functions to be passed in via the url name. If you still see benefit in what you originally asked for, or think of something else useful as you design your mh web page, let me know. See the 'include file' string in mh_default/category.html and/or the mh.html docs for an example. Note: the files must have a .shtml extension for this to work.

- Moved the default web files from mh/web/mh to mh/web/mh_default. As before, you can create your own web files and point to them with mh.ini html_* parms.

- Added a state method to voice_cmd (see previous post to this list and/or the mh.html doc).

- Created mh/code/Bruce/shoutcast.pl to monitor the coming and going of listeners to any shoutcast server you have a password for. Shoutcast servers (available on many platforms from http://shoutcast.com) stream live audio from winamp players. I often have one running at my house if you want to stop by and say hello at http://misterhouse.net/speak/ Using my microphone, I can respond to any comments you might type in.

- Made the debug messages in HomeBase.pm conditional.

- Speed up the processing of unbuffered socket data. Telnet sessions to mh (telnet localhost 1234) are now much faster.

- Fixed a SET_VAR bug with strings that had blanks in them (introduced in 1.63).

- Fixed a get_tv_grid bug where it would mess up the 'set the vcr' name for the show.


mh ver 1.63 posted on 07/05/99

Version 1.63 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Guess who stayed home over the 4th :)

Two really nifty new functions with this version. A 'chatbot' speak server, and a searchable TV database. I also finished the mh.html document.

Here is the detailed list:

- Modifed get_tv_grid to create DBM database files of TV show times and content.

- Added get_tv_info to query the tv DBM files. After visting the clicktv.com site and personalizing your listing, update clicktv_id in your mh.private.ini with your id. Then create/update your databse by running something like:

    get_tv_grid -hour all -days 2
  
  If you already have been running this, you can use the mh/web/tv/clicktv 
  files already downloaded and quickly update the database with:

    get_tv_grid -hour all -days 2 -redo

  You can then run a test search with something like this:

    get_tv_info -channels 4
    get_tv_info -keys dilbert

  Now you can search the database using the voice commands or 
  tk entry widget setup by mh/test/tv_info.pl.

- The get_tv_* programs use the DB_File DBM, rather than the built in SDBM_File DBM. The good news is that DB_File works (SDBM_File has a bug under windows and is in general slow and flaky). The bad news it is not installed by default. Those of you who are not running the compiled versions of mh will need to run:

  On windows:  ppm install DB_file

  On unix:       > perl -MCPAN -eshell
             cpan> install DB_file

- Modified speak_server.pl. You can how used it to process HTML FORM data directly, without a real web server. It is seperate server from the mh http server (on a different port), so you can control authentication on it differently. You can password protect the rest of the mh web server functions, but allow people to talk to you via the net without a password. For an example, come say hello to us at:

    http://misterhouse.net:8080/speak/index.html

To enable this, copy speak_server.pl to your code dir, edit mh/web/speak/speak.html to point your IP address (localhost will work also) and match the port with the entry in mh.ini (the default is now 8082) and then point your browser to:

    http://localhost:8080/speak/index.html

This also has a 'ChatBot' option, so you can program your house to talk back :) The rules are in mh/data/eliza/*.txt.

- I finally finished filling in the blanks for all the Items, Variables, Functions, and Companion Programs in the mh.html/mh.txt documents. I'm sure the description of much of mh still leaves much to be desired, but its a start and it has plenty of examples.

- Allow for a simple mode of calling the play function. Also included a sample wav file ( try 'How do you pronounce MisterHouse' from mh/test/hello_play.pl). Changed the default so that the play process will fork under linux (i.e. mh does not wait for sound file to finish playing).

- Added more smarts to the net_domain_name function. See mh.html for details and examples.

- Move html_escape function into the http server, so you no longer need to call it to clean up html SET_VAR results.

- Fixed the get_tv_grid Copy.PM proglem and added a -label option so you can change 'Set the VCR' to whatever html you want.

- Updated CM11.pm so that when it resets after a power fail, it sends the correct time, rather than a bogus 0 time.

- Fixed a bug in the file_head function.

- Added a flag option to the File_Item set_watch method (used in code/test/tv_info.pl).

- Added a %Tk_results hash, so we can use Tk entry items better. See tk_entry in mh.html for details.


mh ver 1.61 posted on 06/27/99

Version 1.61 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Here is a list of this months changes:

- Fixed a bug where various files were not allowed to be changed while mh was running (forgot to close some file handles).

- Fixed a bug where X10 Appliance states were not saved.

- Fixed a bug that caused a timer action to be duplicated, if the timer was reset.

- Include File::Copy so get_tv_grid works for everyone.

- Allow for multiple DNS servers.

- Added &html_unescape function, to decode HTML FORM data. Here is an example:

  if ($Save{web_text1}) {
      my $msg = "Internet message: " . &html_unescape($Save{web_text1});
      speak $msg;
      &display($msg, 120, 'webcam text'); # 120 seconds till autoclose
      $Save{web_text1} = ''; 
  }
  
- Fixed it so the compiled versions no longer have to be started from the mh/bin directory.

- Allow for a mh_parms enviromental variable. See the mh.ini header for examples on syntax. This allows you to have your 'mh.private.ini' file wherever you want. If you also specify the mh.private.ini code_dir parm, you should be able to keep all of your personalized mh stuff seperate from the standard distribution. Hopfully this will make upgrading as simple as unziping the new distribution.

- Added a 'state' link on the default 'By Object Type' section of the web page. This allows you to view the current state of various items. This is less noisy than the normal list that shows all possible states.

- Added support for the new CM17 X10 interface (aka firecracker). Not very useful, as it Currently only works on Windows, it is slow (2-3 seconds per command), and it is transmit only. But it is cheap :) ($6 from x10.com).

- Modified the syntax of the optional html_response directive for the RUN, SET, and SET_VAR html commands. Also added the option of having the html reponse be a user defined function. See mh.html for more info.

- Moved Brian K's code from mh/code/public to mh/code/public/Brian. Added Mike M's webcam code. I'd be happy to distribute any other code, for those brave enough :)


mh ver 1.58 posted on 06/20/99

Version 1.58 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Here is a list of this months changes:

- Fix uptime on linux (was counting down, thanks Matt!).

- Fixed a get_tickcount problem that caused uptime to count down after 25 days on windows (thanks Craig!). Windows still has the problem of rolling over its counter after 49 days.

- Fix 'data=165' CM11 problem that Matt found. The documentation said you had to download a macro to turn off this power-fail indicator, but that did not work. Reseting the CM11 clock, however, does the trick.

- Store the IP address of clients. For example, the address from the last web access is in $Socket_Ports{http}{client_ip_address}.

- Added the DNS_server mh.ini parm and the &net_domain_name function. This allows us to look up the domain name of any IP address.

- Allow for different html responses to the html RUN and SET commands. The response can be a string, contents of a file, or the last spokent text. For example:

  <li><a href=http://localhost:8080/RUN?WebCam_light_brighten?test/test3.html>; +50</a>

will return the contents of mh/web/test/test3.html after running the command 'WebCam light brighten'. See 'Customizing the Web Interface' section of mh.html for more examples.

- Allow for setting of variables directly from html. This allows us to specify web widgets indpendently of tk widgets. For example:

  <FORM ACTION="SET_VAR">Test 1:<INPUT SIZE=5 NAME="$Save{test_input1}"</form>

- Change the debug flag. It now indicates the category of debug, rather than just everything on or off. For example, set debug to serial to see serial port debug.

- Took blanks out of the timer categories string, so they work on from the web interface.

- Changed web page so it only list categories that have commands (i.e. empty categores will not be listed).

- Changed how the new TV schedule is loaded in tv_grid.pl. The old read_user_code method would sometimes cause a perl abend.


mh ver 1.56 posted on 05/30/99

Version 1.56 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html
  http://misterhouse.net/house/programs/index.html

Here is a list of this months changes:

- Got a new domain name! misterhouse.net. Thanks to Jon for helping me set this up. This is via a cable modem to a linux box in my house. It has a limited upload data rate, so you probably want to download large files from one of the other 3 servers.

- The files are packaged differently now. A mh_src_156, mh_win_156, and mh_linux_156. Everyone will want the mh_src_156 file. The other 2 files contain only the compiled files, required for those who do not have perl installed. The compiled linux version is new, but other than an error on exiting, seems to be working OK.

- Fix a get_email bug that caused it to re-announce old, unreceived email as new email. Also changed get_email so it will not list blank names, as filtered by get_email_rule.pl

- Cleaned up some net_mail_login errata.

- Updated mh.exe to SerialPort 0.15, Tk to 8.014, and perl to 5.005_003 build 517.

- Added a check that freezes the current time, if the system clock was set back in time. mh keeps processing real time events, but it will not re-trigger timed events. When the real time catches up to the time mh was at, normal mode resumes. This fixes the problem of events re-triggering after a call to set_clock, where the pc clock was adjusted back in time.

- Added -time_start, -time_stop, and time_increment options. This allows you to debug time events in a simulated fast mode. For example, the following will simulate one days worth of events (takes about 3 minutes on my box), with a default of -time_increment 60 (60 seconds per loop). There are more examples in mh.html.

    mh -time_start 0 -time_stop 24 -voice_text 0

- Fixed Cpu Used %, uptime, and loops per second meters for linux users. Also added 'Memory Used' (only for linux ... I don't know how to do that for windows). Never guess who has finially gotten his linux box up and running and has been reading proc manpages :)

- Added web widgets. All the tk_xxx widgets (except the tk_button widget) will be echoed to a 'widgets' frame. The default html file, mh\web\mh\index_1.html has been modified to include this frame.

- Added an index in the mh/code/public/README.txt, and added 2 examples on how to send pages using a modem from Brian and Jeff and Brian's house code, which includes examples on how to run Winamp.

- Added test_stuff.pl. Try entering 'a', 'b', 'c', ... etc in the 'Test 1' Tk widget field to run these tests. The idea is that you can easily test a chunk of code by adding another elseif section.

- Added a generic tk_entry, inspired by Charles wakeup_time tk widget. When running test_stuff.pl, try entering 'g' on the tk 'Test input 1' for a demo, and watch the tk 'Test out' widget for the results.

- Allow mh.ini tk_geometry updates on Reload. This was working before, but was broken in a recent release.

- Documented time_* functions, and Serial_Item a bit more.


mh ver 1.54 posted on 04/27/99

Version 1.54 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html

- Fix the 'killing run process' errata on mh exit (Craig S. bug # 1).

- Fix a bug where mh would exit if a process_item was re-started before a previous process for that item had finished (Craig S. bug # 2).

- Play a wav file only once on linux (thanks to Kevin P. for that fix).

- Added tk_checkbutton widget (see docs and/or tk_widgets.pl for an example).

- Allow for house code (one character) X10_Items. These translate to ALL_ON and ALL_OFF commands.

- Change the mult-X10 event check, so it checks for 2 and 4 character X10 events.

- Decode and store incomming CM11 dim/bright codes. You can set up Serial_Items to trigger off of the dim amount. This also fixes the Craig S. bug # 3 he found in mh 1.52.

- Switched to the latest version of the Serial_Port.pm code. SerialPort_Linux.pm renamed to SerialPort.pm.

- mh.exe is built with the latest version of perl (5.005_03 build 515). I don't think this causes any noticble changes or fixes anything in mh, but it is 'the latest and greatest' :)

- Add a -cgi option to display_callers, so it can be called from a web server. Not fully implemented yet.

- A http server log is created for each month, in the data/logs directory.

- Turn on command buffering when using -log, so the log is always up to date.

- Allow for unlimited number of server#_ports

- Add server_name_buffer parm, so you can allow for buffered socket ports.

- Add server_speak example to mh.ini, and code/test. You can use this to pass text to speak into mh via a socket port. An example is in the speak.cgi script, which can be called by a perl enabled web server and/or tested with the speak.cgi.bat script.


mh ver 1.51 posted on 03/27/99

Version 1.51 was just uploaded to:

  http://members.home.net/winters/house/programs/index.html
  http://www.geocities.com/ResearchTriangle/Lab/5514/index.html
  http://misterhouse.webjump.com/index.html

Once again, a ton of changes/fixes/updates:

- Yet one last fix to time_now. It now correctly handles day boundaries with offsets.

- Fixed the 'said $serial_object' method so it no longer drops records.

- Fixed the web authentication so it works with IE 3.0 and IE 5.0.

- Fixed the Process_Item hang on exit problem! For those of you who are into gory details, I discovered that you can not kill unfinished .BAT files (command.com) Win32::Processes, but kill works fine on other programs (e.g. no kill on get_url.bat, but we CAN kill 'mh.exe -run get_url' or 'perl get_url'). So, I put in code that bypasses most bat files when called with Process_Item. If anyone still gets a hang on exit, note the names of the unfinished processes it was trying to kill.

- Moved the 'check email' function from get_internet_mail.pl into a stand alone get_mail script. This allows us to call get_mail with a Process_Item and not have mh hang when checking email.

- Added a &net_ping function and use it in the functions called by get_mail, so it doesn't waste much time on trying to get to in-accessable mail accounts.

- Fixed a bug in phone display_callers script so it can be called from mh with 'do' rather than 'run' (much faster).

- Completely changed how the tk windows are created. You can now customize the tk windows by modifying the tk_frame.pl and tk_widgets.pl members. Details are in the 'customizing the Tk interface' section of mh.html.

- Added a tk mail flag widget to code/Bruce/internet_mail.pl so you can see how much mail is in various mailboxes.

- Added code/Bruce/tk_eye.pl. This adds one of those nifty 'live eye' type displays to the menu bar, so you can visually see mh running. It also has a 'opps, I fell asleep' checks in it, so we can log when mh gets hung up on something. Should be much less frequent now that get_mail is forked.

- Added code/bruce/weather_wx200.pl. This code parses the data from a WX200 or WM918 weather station. $200->$300 from Radio Shack and other places, it does indoor/outdoor temp, humidity, barom. pressure, and wind speed/dir. Also added some tk widgets to code/Bruce/weather_monitor.pl.

- Fixed bux on speak ``rooms=all $text'' when $text was muli-lined.

- Rename the temp files in the code dir from -*- to mh_temp.* (e.g. mh_temp.user_code).

- Added a file_head, file_tail, file_read, and file_write functions (see mh.html).

- Added a log_format option to logit (see mh.html).

- Added a serial#_datatype mh.ini parm. A datatype of 'raw' allows mh to better process binary datastreams.

- Added mhl.bat (dos users) and mhl (unix users). The 'l' suffix is for loop. These shells loop if mh had a non-normal exit, so mh will be restarted if it somehow accidentally dies.

Next up ... I'm not sure. Guess we will find out in a few weeks :)


mh ver 1.46 posted on 03/12/99

Version 1.46 was just uploaded to:

  http://members.home.net/winters/house/programs
  http://misterhouse.webjump.com/
  http://www.geocities.com/ResearchTriangle/Lab/5514/

Lots of changes:

- Fixed the XD1DJ -vs- XD1 XDJ problem. mh will now break up XD1DJ into XD1 XDJ and form XD1 XDJ into XD1DJ. It decides to break or merge by looking at what events are defined. See code/examples/x10_multievent_tests.pl for an example. Note, the later (forming seperate stirngs into one event) occurs over a 5 second window, so you can use this to create multi-key X10 keypad events.

- Simulate incoming serial data from Tk cmd window or xcmd file (e.g. type house XA1AJ to turn on X10 light A1)

- Fixed get_tv_grid so it will refresh old (last month's) data.

- Fixed the typo in get_url and allowed it to work with proxies.

- Fixed the 'Charles bug', where mh would hang when transmiting commands (like C1 DIM-30) that had a checksum that matched the X10 'data to send' string 0xa5. Also limit the number of times we loop through the retry code.

- Fixed the 'Craig bug' in str2time that messed up time arithmetic with minutes :08 and :09 because they looked like illegal octal numbers (e.g. time_now(``11:08 + 0:01''). Also added more error checking so it is clear when there is a problem.

- Fixed the 'Craig2 bug' in time_now where it would not trigger if mh was busy doing something else (like an internet mail check) on a minute boundary. I checked all the other time related tests and it looked like this was the only one that was broken.

- Fixed the 'Craig3 bug' where state_now was not turned on when mh was sending serial item states.

- mh IS exposed to the 49.7 day bug (2**32 milliseconds) that has been in the news lately: http://www.news.com/News/Item/0,4,33117,00.html?st.ne.ni.rel . If you manage to keep windows running for that long, mh should be restarted. As a quick fix, I just put in a 'better restart' warning if uptime > 48 days. If windows ever gets reliable to stay up that long, I'll put in a better fix. Hmmm, now that we are running on linux as well, I should give this some more serious thought :)

- Seperated the timer_kitchen code into seconds, minutes, and hours members for better control and more managable menus. Complements of Lee McLaren. Also changed the seconds timer as an example of how to use local objects, so we can easily create simultaneous timers. The down side to this is that these timers are not saved between reloads, since all local objects are destroyed. Because of this, I left the minutes and hours timers as global, so they are 'one at a time, but saved' timers.

- Added a mh.ini seasons parm so our southern buddies can be backwards :) Also put in the standard dates for season changeover. On the average, it is right, but it will be off by a day every once and a while. If anyone has forumlas for equinox and/or 'phase of the moon' calculations, let me know.

- Documented mh.ini time_zone and longitude parms better (should always both be positive).

- Added a mh.ini option to save the my 'process ID' to a file, so you can easily send mh signals (like 'reload code').

- Updated the uptime and %cpu used indicators so they work under linux.

- Reset window size/position on reload only if the mh.ini tk_geometry parm was changed.

- Modified internet_mail.pl so it can check for multiple email accounts. See mh.ini on how to define as many accounts as you want.

- Added Serial_Item methods stop, start, is_stopped, and is_available. See mh.html and/or code/examples/serial_port_examples.pl. Brian had the good idea of trying to share a dial out modem with mh caller-id monitoring function. Hopefully these new methods will enable that.

- Brian K. added code/public/phone_callerid.pl. It will allow your internet/data modem to also be used by mh for callerid function. Brian is still working on it, but it mostly works.

- Included the display_callers program. This tk window will display outgoing and incoming phone info. Incoming as logged by callerid code (see Brian's code for a modem example and bruce/code/phone.pl for a weeder callerid kit example) and outgoing call monitoring (see bruce/code/phone.pl, which uses the weeder phone tone monitoring kit).

- Allow for more than 2 generic serial ports. Defined as many serial#_ mh.ini parms as you want. Also, if the port is in use when mh is started, you can use 'start $serial_item' to start it later after the port frees up.

- Errors on code reloads will put relevent errata to a tk popup. With -tk 0, it will remain in the console where it has always been. Unfortunatly, this error errata is not always useful/relevant, but it is sometimes useful.

- Added a 'mode' option to speak, so you can force speech even if mh is in mute or offline mode. See speak section of mh.html and code/test/mh_control.pl $mh_mode as an example (it toggles between modes with an X10 keypush)

Unfixed bugs:

- I tried to fix the 'hang after bye bye' on exit problem, but no luck. It is caused by a 'get_url' Process_Item that does not finish. The time-out feature does not work on Windows, nor does the 'process kill' function. Not a problem on linux, where killing things is easy.

Next up, programable Tk widgets. I know, thats what I said last time ... this time I mean it :)


mh ver 1.42 posted on 02/26/99

Version 1.42 was just uploaded to:

  http://misterhouse.webjump.com/
  http://www.geocities.com/ResearchTriangle/Lab/5514/

- The SerialPort abend with the 1.40 compiled mh.exe is fixed. I messed it up for just the compiled version when I added some debug for the HomeBase.pm code. I also added some more errata so it is clearer where the problem is if this type of problem happens again.

- The memory leak problem is fixed. It occured only if you were lucky enough to put a tab character in the wrong place in object add records.

- The web server will now default to being not authorized.

- The get_url program was changed so that it will now timeout after 2 minutes. If mh was exited and a get_url process had not finished, perl was SUPPOSED to kill the process, but I had problem with it waiting for get_url to finish (which it sometimes never would). It would be better if the 'kill on exit' worked, but allowing it to time out is at least a bit better than hanging on exit.


mh ver 1.40 posted on 02/20/99

- The web page can now (optionally) require password authentication to function, like the telnet.pl server does. See the mh.html Authentication section for more details.

- Allow search commands to also match on filenames

- Added new Group item. Thanks to Craig for this suggestion! This shows up on both the Tk menu and the web interface. See mh.html and code/test/test_x10.pl for examples.

- Added a Tk items menu. If you have many items, this can slow the mh startup down a by a few seconds and add another Meg to the mh memory useage, so I made this menu optional. If you don't think you will use this menu much, you may want to set tk_items=0 in mh.private.ini file.

- code/public/tracking.pl now is configurable with parms in the mh.ini. This code is for anyone with a ham radio receiver and a 'tnc' (radio modem). It tracks, logs, announces radio annoucements, weather data, and gps position data. Those with a ham licence can add a gps unit to your car and have your house track and announce where you are! I just got my ham licence :) Thanks to Brian for writing this one!

- Added bin/get_slashdot_news program and code/test/internet_slashdot.pl. This gets/displays/reads the most recent news titles from the popular slashdot.com web site. Thanks to David for writing this one!

- Added a Process_Item object. This allows mh to start and stop a detached program. Most importantly, it also allows my to test for when the detached program is finished. On Windows systems, the Win32::Process function is used, on Unix the fork function is used. In either case, the mh methods are the same. See internet_slashdot.pl and 'get top 10 list' in internet_data.pl for examples.

- Added get_url command, so we can get use Process_Item to get any internet web page in a background process. See ``get top 10 list'' in internet_data.pl for an example.

- Added the global $Reload and $OS_win variables. $Reload is true for the event pass after a 'reload code' event. It is also true when $Startup is true, when mh is first started.

- Fixed a bug where the initial Tk Cmd list would not respond to a double-click

I didn't get the customizable Tk widgets added yet. Also, I couldn't find any way to play compressed wave files on linux, so I didn't include any wav files. Uncompressed wav files are just too big.


mh ver 1.35 posted on 02/07/99

Version 1.35 was just uploaded to http://www.isl.net/~winter/house/programs and http://misterhouse.webjump.com. Here are the package files:

 - http://freehosting.at.webjump.com/mi/misterhouse-webjump/mh_135.zip
 - http://freehosting.at.webjump.com/mi/misterhouse-webjump/mh_135e.zip

 - http://www.geocities.com/ResearchTriangle/Lab/5514/mh_135.zip
 - http://www.geocities.com/ResearchTriangle/Lab/5514/mh_135e.zip

In my haste to turn off non-debug serial port write print_log errata, I also turned off the serial port writes!

If you happened to be un-lucky enough to have just downloaded 1.34, you can get it to work by turning debug on.

Honestly, I DID test this code, on linux, windows, and compiled windows. I just forgot to test serial port output :)


mh ver 1.34 posted on 02/07/99

Version 1.34 was just uploaded to http://www.isl.net/~winter/house/programs and http://misterhouse.webjump.com

Changes include:

- Added the 'search string' function to the web pages.

- Fixed tk Command menu so it is reset on reload, rather than added to.

- Added filename to all the Tk and web item lists

- Added a mh -run option, so the compiled mh.exe can be used to run any arbitrary perl script from the command line. Changed get_weather.bat, set_clock.bat, get_tv_grid.bat, and set_password.bat to use this, so they can now be called stand alone from a DOS shell, even if you do not have perl installed. This also lets us detatch these processes from mh events, so mh does not hang, waiting for them to finish. The tv_grid.pl event and internet_data.pl get_weather calls now do this.

- Added and documented File_Item methods 'name', 'set_watch', and 'changed'. See the 'Get internet weather data' for an example. This allows mh to respond to the detatched get_weather process after it is finished.

- Fixed a bug where an active timer would get cloned on a code reload.

- Added mh.ini parm tk_geometry so you can control size and position of the mh tk window

- Change the default to log serial IO to the log window only if debug is on. If people would rather see this on by default let me know. Maybe we should set a debug level, and thus have better control over this.

- Added some info on system requirements to README.html

Looking for ideas on what to put in the 'this space for rent' section of the tk menu. Right now a 'print_msg ``hi there''' will add an entry, but that I'm not sure we need that in addition to the print_log and speak log windows.


mh update 02/04/99 version 1.32

Version 1.32 was just uploaded to http://www.isl.net/~winter/house/programs and http://misterhouse.webjump.com

Changes include:

- Fixed the Windows OLE calls, so they work better. Thanks to Walley for helping with this! No more ghost DDE and OLEmain windows!!

- Fixed the Tk bug on Windows where you could not press buttons. The Shortcut keys still do not work :(

- Added a Tk menu pull down with all the voice commands. Also allow the Tk command entry to do a string match to list all voice commands that match whatever string (e.g. try typing: time).

- Added a mh.ini delay_speak parm. Wally, try setting this to 500 or so (.5 seconds) to see if we can get your 1/2 duplex sound card not to que up speech after VR. You should see ``Sleeping for xxx ms'' in your mh console, after doing VR that requires speech.

- Fixed 'bad time record: time=' on startup.

- Fixed internet.pl to it reports non-Rochester forecast. Thanks Craig!

- Fixed 'duplicate socket item' message.

- Fixed display so it will run stand alone, if perl is installed.

- Added an code/example directory. Keep those code snippets comming!

- Fixed the web path so all the example interfaces work (index_1.html, index_2.html, index_3.html).

- Fixed a typo in tv_grid.pl, so PM is not added to all times

- Allow telnet.pl to run without a password file.


mh update 01/30/99 version 1.30

Version 1.30 was just uploaded to http://www.isl.net/~winter/house/programs

Changes include:

- Linux serial port support! Thanks to Joe Doss for creating SerialPort_Linux. I tested both a CM11 (i.e. activehome) and weeder X10 interface on it. Works great!

- Added a simple bin/configure file, to help with a linux install (See readme.html).

- Fixed case names on various lib modules. Now, all the files in the bin directory should work OK stand alone on linux (and windows if perl is installed).

- Change the zip so it creates an mh directory, so you can unzip right from a root drive/directory.

- Added the API.pm to the sit lib so that the uncompiled version will run 'out of the box' on windows with just the standard perl distribution installed.

- The web top 10 list works again.

- On windows, if you don't want/use voice recognitions, mh -voice_cmd 0 will now cause perl to load without those pesky 'DDE' and 'OleMain' ghost windows.

A note to potential linux users. The festival TTS engine works good, but it sucks up about 20-30 meg (it forks once). So, there can be a fair amount of latency with when speaking longer strings, on a 32 meg machine.


mh update 01/30/99 version 1.29

Version 1.29 was just uploaded to http://www.isl.net/~winter/house/programs

In addition to the bug fixes posted a few days ago, here is the list of fixes/updates:

- get_tv_grid now has a better index, so you can navigate different hours/days. You will need to run get_tv_grid -days 7 -hour all to get a full weeks worth of data.

- telnet.pl was updated with an example of how you can set a wakeup time item.

- Startup time for the windows mh.exe was improved.

- mh.ini and mh.private.ini are now reloaded on a reload command.

- A new file, internet_logon.pl, demonstrates how to do windows auto-dialing/auto-updating of net data.

- The set_clock now uses a simple socket call to get time from a server. Charles, if this still does not work behind your firewall, see if you can connect with: telnet time-a.timefreq.bldrdoc.gov 14 That should work unless your firewall is blocking port 14.

- internet_ip_update.pl can now update the TZO dynamic IP server and it can upload your current dynamic IP address to a web page (see http://www.isl.net/~winter/online for an example of what that page looks like).

- Fixed a bug with get_weather had a bug where it would not return the current weather conditions.

- Created 'house' and 'speak' shells for unix users.

- mh.html has a bit more documentaion on items and their methods.

- deep_though.pl has been re-worked. It no longer relies on a DOS program, so now linux dudes can revel in 'Deep thoughts for the day'


mh update 01/24/99 version 1.27

Version 1.27 was just uploaded to http://www.isl.net/~winter/house/programs. Lots of new tricks and changes:

- linux support! Except for a few minor things like VR and serial port IO :) Still, there should be enough function on a linux to be useful. TTS (with the Festival speech engine installed) and all the internet, telnet, and web function works. Details on installation are in the README.HTML and limitations are documented at the bottom of mh.html

- new function: get_weather. Gets current conditions and/or forecast data from the net. See 'Get internet weather data' in the test/internet_data.pl file and set the city and state entries in mh.ini

- new function: get_tv_grid. Gets tv programing from clicktv.com. You can go to their website and personalize your tv grid to your location and preferences, then set the clicktv_id in mh.ini. Now use the web interface to drive the test/tv_grid.pl code to program tv reminders and/or vcr programing. It needs a bit more work in navigating through different days, but I its a start.

- added a Generic_Item object, for storeing arbitrary data. An example is in tv_grid.pl

- added test/internet_ip_update.pl This is an example of how you can update an 'Dynamic IP address' server with your current dynamic IP address. This one is for the postmodem.com DIPS service, but I think we could also code one 2 other popular servers: tzo.com and dyn.ml.org.

- quite a few changes in mh.ini, so if you have your own mh.ini, you will probably want to put your changes in a mh.private.ini file, which has precedence.

- a bit more documention, especially on windows VR and TTS, in mh.html

- Probably other important changes I have forgotten to take notes on :)


mh update 01/13/99 version 1.21

I just uploaded version 1.21 of mh to

- fixed a bug where many of the commands would not work if the VR (Voice Recognition) engine was not installed. Now everything should work with or without VR.

- added the option for mh to be a socket port server. It defaults to monitoring the telnet port (23). If you are running telnet.pl (in the test directory), you should be able to do a 'telnet localhost' and run any voice command (as listed on by the web interface), in addition to 'say phrase/file' and 'display phrase/file'. Thanks to Brian for this idea!

Keep those ideas coming and we will soon have an automation engine capable of running the country! Someone needs to :)

Near term todos:

- A socket client option, so mh can start a socket communication (in addition to the server option that was just added).

- Add authentication, to optionally limit telnet and web interaction to 'good guys'

- More documentation

- Modify code so it can also run on Linux with the Festival TTS engine. Any linux users out there want to test it?


mh update 01/08/99 version 1.18

I just uploaded version 1.18 of hh. Changes include:

- Fixed the run command option. For example, this dos command should work now:

    house speak hi there

- Started documenting! There is now a \mh\docs\mh.html file. It is pretty sketchy for now, but it should grow pretty quick in the next week or two.


mh update 01/06/99 version 1.17

I just uploaded version 1.17 of mh. Changes include:

- 5% increments in bright dim (instead of 10%)

- fixed a memory leak introduced in the previous version

- added run_voice_cmd and allow $voice_item set method

- allowed time offsets in time_greater_than/less_than

- minor changes to the web interface