Mister House Announcement List
  Changes in the current test version
  Version 2.104 posted on 11/04/2007
    Version 2.104 can be downloaded from here:

      http://misterhouse.sf.net/download.html

    Detailed List of Changes from the SVN log:

    Gregg Liming :: Fri Oct 5 2007 - Revised parsing of state_monitor and
    device_monitor so that they properly strip spaces and allow both colon
    and equals signs as delimitters. Bug idenfified by Ron Klinkien.

    Matthew Williams :: Tue Sep 25 2007 - Made some print_logs dependent on
    Debug flags as per Chris Barrett's suggestion.

    Matthew Williams :: Tue Sep 25 2007 - Dave Lounsberry's patch to
    vv_tts.pl to fix a few problems: 1. vv_tts.pl errors out on missing
    right bracket. # ./vv_tts.pl -help Missing right curly or square bracket
    at ./vv_tts.pl line 296, at end of line syntax error at ./vv_tts.pl line
    296, at EOF Execution of ./vv_tts.pl aborted due to compilation errors.
    I noticed that sometime since 2.100 was released the end curly bracket
    for the BEGIN statement was moved up to the end of last line with text
    instead of on a line by itself. Moving the bracket back to a line by
    itself fix the error on what I run, perl 5.8.8 on Linux/Ubuntu. There is
    a comment on that line about making perl2exe happy. Maybe that change
    was required for perl2exe? Not sure. 2. I use the swift TTS engine which
    was not released back when I wrote vv_tts a long time ago. Added swift
    as an -engine option along side theta. Also changed the debug line
    noting the engine used. 3. Change some minor cosmetics and my email
    address.

    Matthew Williams :: Tue Sep 18 2007 - Fixing iButton list routine so
    that it doesn't repeat results twice if you don't have a second iButton
    serial port. Bug report and fix supplied by Chris Barrett.

    Gregg Liming :: Wed Sep 12 2007 - Force reinit of organizer_tasks on
    reload in case reload action causes empty tasks.tab.

    Gregg Liming :: Mon Sep 10 2007 - Constrained output of element color to
    print_log to occur only if debug is set to weather_graph. Bug and
    suggested fix provided by Chris Barrett.

    Gregg Liming :: Wed Sep 5 2007 - Protect against bad date formats
    (entered via web or perhaps from the flawed "stock" tab files).

    Gregg Liming :: Wed Sep 5 2007 - Trap write errors when upgrading vsDBs
    (if permissions or ownership is wrong).

    Gregg Liming :: Wed Sep 5 2007 - Rewrite vsdb upgrade function to be
    "safe" to include handling absent databases and databases w/ differing
    existing schemas.

    Gregg Liming :: Tue Sep 4 2007 - Ensure setby in set_receiver_RF_item is
    set to 'rf'.

    Gregg Liming :: Mon Sep 3 2007 - Wrap vsDB access code with eval to
    prevent errors from leaving incompletely generated organizer_*.pl code.

    Gregg Liming :: Fri Aug 31 2007 - Fix support for x10 security devices
    (e.g., ms10a). Fix based on submission from James Armstrong.

    Gregg Liming :: Fri Aug 31 2007 - Fix proper generation of speak
    announcement for all day events.

    Gregg Liming :: Fri Aug 31 2007 - Update version id to 2.104.

    Matthew Williams :: Wed Aug 29 2007 - Copied from: trunk revision 1176
    Creating branch for 2.104 stabilization.

    Gregg Liming :: Sun Aug 26 2007 - Change add method to support adding an
    array of devices

    Gregg Liming :: Sun Aug 26 2007 - Add task category and exception driven
    scheduling (initial) support.

    Gregg Liming :: Sun Aug 26 2007 - Fix handling of startdate for tasks
    and add task category support.

    David Norwood :: Sun Aug 26 2007 - documentation updates

    David Norwood :: Sun Aug 26 2007 - changed monitoring to include x10
    commands transmitted by the Ocelot

    David Norwood :: Sun Aug 26 2007 - downloaded latest area code list from
    internet

    David Norwood :: Sun Aug 26 2007 - documentation updates

    David Norwood :: Sun Aug 26 2007 - Minor changes

    David Norwood :: Sun Aug 26 2007 - I added support for ANALOG_SENSOR
    items.

    David Norwood :: Sun Aug 26 2007 - I enabled the photo resize feature,
    which was not functional before. There are new ini parameters to control
    this. See mh/bin/mh.ini for details.

    Howard Plato :: Sat Aug 25 2007 - Significant rewrite of the calendar
    and organizer code, allowing importing of iCal calendars directly into
    MH. To use edit the i2v.cfg and add the appropriate config_parms
    specified in organizer.pl. Kudos to Gregg for the huge assistance and
    contribution to making this work! The web scripts still need some work
    as data can be entered without format checking and will be updated at a
    later date.

    Gregg Liming :: Sat Aug 25 2007 - Forward on all "display_room" parms in
    route_display_rooms to allow extending to other device functions.

    Gregg Liming :: Fri Aug 24 2007 - Initial submission of the win32
    wrapper to ical2vsdb.

    Gregg Liming :: Fri Aug 24 2007 - Protect against undefined Tk grid
    object.

    Gregg Liming :: Fri Aug 24 2007 - Libs needed for iCal support (see
    newest bin/ical2vsdb and code/common/organizer.pl)

    Matthew Williams :: Thu Aug 23 2007 - Mike Pieper's patch to add EIB15
    support to EIB_Items and to add more detailed state support for EIB7 to
    http_server.pl. I also added descriptions for the recently added EIB3/4
    stuff to the top of EIB_Items.pm

    Gregg Liming :: Thu Aug 23 2007 - Added use reference to Weather_Common.
    Thanks to "declang" for the bug catch.

    Matthew Williams :: Wed Aug 22 2007 - Reverted r1158's patch to
    Voice_Text that I accidently included in the EIB patch.

    Matthew Williams :: Wed Aug 22 2007 - Added Ralf KlÁbe's enhancements
    that add EIB3 and EIB4 functionality.

    Matthew Williams :: Sun Aug 19 2007 - Added RK's patch to allow EIS5
    values to be sent from MH to the bus.

    Gregg Liming :: Tue Aug 14 2007 - Force print statements at startup to
    be controlled by debug=zone_minder.

    Gregg Liming :: Tue Aug 14 2007 - Add "writable" method so that class
    works well with Base_Item.pm and other inherited classes.

    David Norwood :: Mon Aug 13 2007 - I fixed a bug that Matthew Williams
    found that caused X10_Appliance items to always display as Off on the
    buttons web interface. I introduced the bug six months ago when I
    modified the interpretation of the $level instance variable for dimmers,
    but forgot to also test appliance items. I also modified X10_Appliance
    so its on off status is restored after a reload.

    Gregg Liming :: Wed Aug 8 2007 - Wrapped event eval with pair of package
    statements so that evaluation occurred in main namespace and not
    AnalogSensor_Item.

    Gregg Liming :: Wed Aug 8 2007 - Add call to check_tied_event_conditions
    in measurement method to ensure that event conditions are evaluated.
    Other minor errata improvements. Changes prompted by Andy McCallum.

    Gregg Liming :: Tue Aug 7 2007 - Added ability to optionally flip first
    and last names (when no comma delim) based on ini param,
    cid_reverse_names set. This is needed to compensate for certain US phone
    systems that can't/won't do things correctly.

    Gregg Liming :: Tue Aug 7 2007 - Allow non-US formatted phone numbers
    (such as VoIP extensions, etc.) to be parsed from callerid logs.

    Gregg Liming :: Sun Aug 5 2007 - Reverted to version prior to DOS attack
    fix due to problems encountered with POST.

    Howard Plato :: Sun Aug 5 2007 - added a file check to ensure that image
    files are not overwritten by 'file not found' message

    Howard Plato :: Sun Aug 5 2007 - Fixed minor spelling mistake on title
    window

    Howard Plato :: Sun Aug 5 2007 - Added config_parms to make 2.103 code
    act like 2.102 (async speech, no voice response to voice_cmd's)

    Howard Plato :: Sun Aug 5 2007 - Updated phone log system. caller id
    information is now updated while system is running, rather than reading
    in files at startup. Also includes wav and group functionality. Also
    includes updated set_func.pl by David S. that properly escapes single
    quotes

    Howard Plato :: Sat Aug 4 2007 - minor change to fix find_members that
    will work with SysDiag_xAP items

    Gregg Liming :: Sat Aug 4 2007 - Update reference to reliance of oxc to
    now include owfs.

    Howard Plato :: Sat Jul 28 2007 - Minor fix to allow fontsize if no
    $fontname. status_line now works for Audrey (font=1)

    Gregg Liming :: Sat Jul 28 2007 - Prevent remote DOS exploitation by
    sending false http header size value; instead, read socket data as it
    exists and failover accordingly.

    Gregg Liming :: Fri Jul 27 2007 - Setup setby as "web [ipaddress]" for
    voice command so that the respond will properly target the browser *if*
    the voice command menus are used in the context of web (vice nonweb).

    Gregg Liming :: Fri Jul 27 2007 - Rename pa_control_stub to
    xap_pa_control_stub so that this common code can coexist w/
    pa_control.pl

    Gregg Liming :: Thu Jul 26 2007 - Alternatively, echo messages received
    by the hub from mh back to mh if debug=xap or debug=xpl

    Gregg Liming :: Thu Jul 26 2007 - Allow hub to echo mh generated xAP or
    xPL messages back to mh listener port if xap_hub_echo=1 or
    xpl_hub_echo=1

    Matthew Williams :: Wed Jul 25 2007 - Reverted part of David Norwood's
    r1101 patch to http_server.pl that inadvertantly introduced a security
    hole. All users that are using r1101 or above are stronly advised to
    upgrade to this rev. Many thanks Chris Barrett for discovering the
    problem.

    David Norwood :: Sat Jul 21 2007 - Committed a bunch of changes on
    behalf of Chris Barrett

    Gregg Liming :: Fri Jul 20 2007 - Allow use of simple "instance" names
    (e.g., "house) or fully qualified xAP source address to initialize
    attached xAP_Item as listener.

    Gregg Liming :: Fri Jul 20 2007 - Allow use of simple "instance" name
    (e.g., house) as xAP source address or fully qualified xAP source
    address when initializing attached BSC_Items (as listeners).

    Gregg Liming :: Fri Jul 13 2007 - Align xPL send methods to recent
    changes to xAP_Items.pm

    Gregg Liming :: Fri Jul 13 2007 - Added on_set_message to permit ease of
    automating xpl-cmnd messages sent when setting an xPL_Item. [based on
    requests by Andy McCallum]. Additional, misc. bug fixes.

    Bruce Winter :: Tue Jul 10 2007 - - generalize security check for ../ in
    url pats.

    Gregg Liming :: Tue Jul 3 2007 - Prevent "state_value" tracking from
    reverting to message summary if the tracked state_value key is missing
    from the message. Change resulting from testing/suggestion from Andy
    McCallum.

    Gregg Liming :: Thu Jun 21 2007 - Initial implementation provided by
    Howard Plato. Provides support to collect systems informtation reported
    by psixc (also implemented by hplato). psixc is available at
    http://limings.net/xap/psixc

    Gregg Liming :: Thu Jun 21 2007 - Added support for ANALOG_SENSOR_R
    items and update to include new separate AnalogSensor_Item lib

    Gregg Liming :: Thu Jun 21 2007 - Refactored AnalogSensor_Item out for
    use as a separate lib

    Gregg Liming :: Thu Jun 21 2007 - AnalogSensor_Item was refactored from
    OneWire_xAP to be more common and usable for other purposes.

    Gregg Liming :: Thu Jun 7 2007 - Don't send volume property in tts.speak
    if it is blank.

    David Norwood :: Mon Jun 4 2007 - updated documentation so it displays
    better on the common code activation web interface

    David Norwood :: Mon Jun 4 2007 - changed trigger code

    David Norwood :: Mon Jun 4 2007 - fixed minor bug

    David Norwood :: Mon Jun 4 2007 - fixed minor bug

    Gregg Liming :: Mon Jun 4 2007 - Fix flaw with composing UID in query
    method

    Gregg Liming :: Mon Jun 4 2007 - Add support for xAP cid.incoming schema

    Gregg Liming :: Mon Jun 4 2007 - Add support for the param:
    callerid_raw_numbers such that the "raw" CID number string is spoken
    rather than "speakable" text. This is useful when forwarding on to xAP
    speak.

    Gregg Liming :: Mon Jun 4 2007 - Add ability to support other xAP
    sources than oxc--specifically, allowing flexibility with source
    addressing

    Matthew Williams :: Fri May 11 2007 - Missing semicolon inserted.

    Matthew Williams :: Fri May 11 2007 - Previous attempt to fix the
    weather graph color problem caused a failure for default installations
    as the default apparent temperature was set to '' and there was no check
    for empty colors.

    Matthew Williams :: Tue May 8 2007 - Fixed problem where graph color
    customizations were ignored. Bug and fix provided by Rick Steeves.

    Gregg Liming :: Wed Apr 25 2007 - Revised sending xAP weather messages
    to be more compliant (to include appropriate units switching) to the
    current schema

    Jason Sharpee :: Sun Apr 15 2007 - Add support for anti-water hammer
    zone overlap. ->zone_hammer(5); #5 second zone overlap

    Matthew Williams :: Sun Apr 8 2007 - Fixed rate rate calculation. Bug
    and fix found by Greg Satz.

    David Norwood :: Fri Apr 6 2007 - added trigger

    Gregg Liming :: Thu Apr 5 2007 - Allow BSC_Items to represent "gateways"
    not just "endpoints".

    Gregg Liming :: Mon Apr 2 2007 - Extended manual method to allow
    optional on-state timer and off-state timer so that manual mode will
    revert to automatic mode after "x" seconds. Added restrict_off property
    to control whether a Light_Restriction item will prevent a Light item
    from turning off.

    Jason Sharpee :: Sun Apr 1 2007 - - Generic Irrigation cycle logic

    Jason Sharpee :: Sun Apr 1 2007 - - Generic Irrigation cycle logic

    Jason Sharpee :: Tue Mar 27 2007 - - Add support for the WGL Designs
    Rain8 UPB sprinkler controller: http://www.wgldesigns.com/rain8upb.html

    Jason Sharpee :: Tue Mar 27 2007 - Add WGL Designs Rain8 UPB sprinkler
    controller support. http://www.wgldesigns.com/rain8upb.html

    David Norwood :: Mon Mar 26 2007 - added some sanity checks to the items
    web interface

    David Norwood :: Mon Mar 26 2007 - modified the mh4 interface to work
    with internet explorer 7, including changes to http_server.pl which fix
    "target" frame syntax for item lists. Also fixed some problems related
    to X10 brightness levels displayed on the web interface

    David Norwood :: Mon Mar 26 2007 - added a new resume instance variable
    to X10_Item to hold the level the light will come back on at. This was
    being stored in the level variable but that meant we couldn't tell if
    the light was off in certain cases

    Matthew Williams :: Sun Mar 25 2007 - Added CM11 macro clearing code
    copied from heyu along with the appropriate copyright notice. This code
    is currently not proven.

    Matthew Williams :: Sun Mar 25 2007 - Added "--alt-y-grid" to parameters
    for generating pressure graphs to have saner y-axis grid spacing.

    Gregg Liming :: Tue Mar 20 2007 - Prevent errors thrown if no
    ZM_ZoneItems are attached to the monitor (credit to Bruce W. for
    identifying the fix)

    Gregg Liming :: Tue Mar 6 2007 - Minor annoyance fix: reduce debug
    verbosity for state_now section processing

    Matthew Williams :: Thu Mar 1 2007 - Applied Chris Barrett's patch to
    allow complete configuration of activity detection timers. The
    configuration parameter MS13_Battery_timer now correctly controls
    activity timeouts.

    Matthew Williams :: Thu Mar 1 2007 - Disabled saving process states in
    Windows as we don't have a method for successfuly regaining visibility
    of Windows child processes.

    Jason Sharpee :: Mon Feb 26 2007 - CruiseControl Status Monitor Plugin
    for Misterhouse. http://ccnet.thoughtworks.com/

    Matthew Williams :: Sat Feb 24 2007 - Made "die" message more verbose
    when the rrd_dir can't be opened.

    Matthew Williams :: Sat Feb 17 2007 - Updated "creators" regex as
    "Archie" comic web page source changed. The new regex is more forgiving.

    Matthew Williams :: Fri Feb 16 2007 - Patch to internet_im.pl to allow
    sessionless Jabber authorization. This code allows {password_allow}
    regexes to match on the Jabber id stripped of its session. Patched
    supplied by Brian Rudy.

    Gregg Liming :: Mon Feb 12 2007 - Add support for messenger.cmd/event
    xAP schema--the default for xAP Four and axc.

    Gregg Liming :: Mon Feb 12 2007 - Allow xAPSend to support a single
    value rather than a hash--as is needed to support sending xAPBSC.query
    messages.

    Matthew Williams :: Wed Feb 7 2007 - Fixed typos that referred to legacy
    {foobar_ws} weather elements instead of the new {foobar} weather
    elements. Bug found by Mike Bahr.

    Gregg Liming :: Thu Jan 25 2007 - Added "allow_local_set_state(flag)"
    method to allow a change over the default behavior (which allows any
    programatic set to cause a state change) and instead (if flag set to 0)
    requires state change only on receipt of the device's BSC event or info
    message. Change resulting from need established by Martin Hagelin.

    Matthew Williams :: Sun Jan 21 2007 - Fixed some wonky html. Problems
    found by Chris Barrett.

    Matthew Williams :: Sun Jan 21 2007 - Modified purging of old data to
    keep data from today through 7 days from now. Change suggested by Jim
    Duda.

    Jim Duda :: Tue Jan 16 2007 - I qualified the print_log statement with
    $::Debug{network} in order to remove some chatter from the log files.

    Jim Duda :: Tue Jan 16 2007 - I turned all the print statements into
    print statements with a $main::Debug{group} qualifier in order to remove
    some chatter from the log files.

    Matthew Williams :: Fri Jan 12 2007 - Updated rules for speed bump and
    archie.

    Gregg Liming :: Thu Jan 11 2007 - Remove check on setby == $self in
    BSC's set method. Bug identified by Martin Hagelin

    Matthew Williams :: Thu Jan 11 2007 - Added new creators class to handle
    changes to the following comics: - B.C. - Andy Capp - Wizard of Id

    Bruce Winter :: Thu Jan 11 2007 - Mark Monnin updated lib/TI103 to
    Handle the limited transmit buffer and CRC messages and changed the
    support of PRESET_DIM1 and PRESET_DIM.

    David Norwood :: Wed Jan 10 2007 - added sanity checks for data input by
    user, spaces in item name converted to underscores

    David Norwood :: Sun Jan 7 2007 - Minor doc change

    David Norwood :: Sun Jan 7 2007 - Added "set ramp rate" and "set on
    level" states for SwitchLincs

    David Norwood :: Sun Jan 7 2007 - Fixed to work with item files that
    have spaces in name, will now create item file if none exists.

    Matthew Williams :: Sun Jan 7 2007 - Moved all '<base target="...">'
    into <head> sections, creating new <head> sections where needed. This is
    to fix frame issues with IE7.

    Matthew Williams :: Sun Jan 7 2007 - Moved mh/web/organzier/vsEmail.pm
    to mh/lib and removed mh/web/organizer/vsLock.pm as a duplicate version
    already exists in mh/lib.

    Matthew Williams :: Sun Jan 7 2007 - Removed v1.3.0 of vsDB.pm from
    mh/lib and moved v1.3.9 from mh/web/organizer to mh/lib.

    Matthew Williams :: Sat Jan 6 2007 - Changed foxtrot to use gocomic's
    DRM scheme.

    Matthew Williams :: Sat Jan 6 2007 - Added ability to specify font face
    in status lines.

    Matthew Williams :: Sat Jan 6 2007 - Modified "clearing" logic. Instead
    of erasing old data from a single day only, it clears all old data,
    except the data from the past few days.

    Matthew Williams :: Sat Jan 6 2007 - Added logic to limit humidity to
    100% when calculated from dew point and temperature. If there are
    measurement errors or the sources for outdoor temp and dew point are
    different, then this is a possibility.

    Matthew Williams :: Sat Jan 6 2007 - Added a mh specified block that
    searches all @INC paths for libnet.cfg, allowing existing site specific
    network configs to be used

    Matthew Williams :: Sat Jan 6 2007 - Changed voice command "set the
    house mp3 player ..." to "set house mp3 player ..." to make it
    consistent with mp3.pl's "set house mp3 player to playlist...". Change
    suggested by Rick Steeve's

    Matthew Williams :: Sat Jan 6 2007 - Corrected recognition of
    internet_internet_usgl.pl - Rick Steeven to internet_usgs.pl - Rick
    Steeve.

    Matthew Williams :: Sat Jan 6 2007 - Added support for Jabber services
    that require component_name to be set. One example is Google Talk. Code
    submitted by Brian Rudy.

    Matthew Williams :: Sat Jan 6 2007 - Fixed unintentional comment split
    typo.

    Matthew Williams :: Sat Jan 6 2007 - Added support for water sensor from
    ibuttonlink. Code from Rick Steeves.

    Matthew Williams :: Mon Jan 1 2007 - Modified regexes for temperature,
    dew point and pressure as they were occasionally being triggered on the
    wrong data fields. For example, the temperature/dew point regex was
    being triggered by "R32/6000FT/N"

    tbs007 :: Wed Dec 20 2006 - added 3 message types for the RCS UPB
    Thermostat

    Bruce Winter :: Sun Dec 17 2006 - John Wohlers added
    code/common/internet_weather_noaa.pl to collect and parse the XML
    weather data feeds from NOAA and populates the Weather_Common hash.

    Jim Duda :: Wed Dec 13 2006 - I updated the code module to attempt a
    restart of the ibws client every hour.

    Jim Duda :: Wed Dec 13 2006 - I'm restoring the changes I made to take
    advantage of the restore_string method. I found the problem I introduced
    to this method. I now have a proper method for handling the @cmd array.

    Matthew Williams :: Wed Dec 13 2006 - Two patches from Howard Plato. 1.
    New parameter mp3_no_tkupdates that disables the tk interface from
    checking the mp3 playlist every second. 2. New parameter
    net_mail_scan_timeout_cycles that allows internet_mail.pl to check VERY
    slow mail servers without prematurely timing out.

    Matthew Williams :: Wed Dec 13 2006 - Fixed some minor doc issues found
    by Rick Steeves.

    Matthew Williams :: Wed Dec 13 2006 - Forgot to increase the regex index
    in rev 1052. This completes the patchs.

    Matthew Williams :: Wed Dec 13 2006 - Patch submitted by Gregg Liming.
    Changed one of the regex patterns to allow PoPs to be reported as "near
    x percent".

    Gregg Liming :: Wed Dec 13 2006 - Allow less restricted eval on checking
    tied conditions to permit references to undeclared refs. In addition,
    include eval error in reported (printed) error.

    Gregg Liming :: Mon Dec 11 2006 - Modify handling of info_callback to
    ignore state=toggle (Submitted by Martin Hagelin)

    Jim Duda :: Mon Dec 11 2006 - I'm backing out the recent changes that I
    made to Process_Item.pl to use the restore_string method. There is
    something wrong, causing duplicates in the process $cmd string. I need
    to do better regression testing before pushing these changes.

    Matthew Williams :: Sun Dec 10 2006 - Made windows library paths
    absolute instead of relative. Commented out waitpid when sound_fork is
    used. This is to prevent unnecessary pauses on Linux boxes.

    Gregg Liming :: Sat Dec 9 2006 - Adjusted parsing to accomodate extra
    LNs. Altered URLs to match current preference. Submission thanks to
    Winston Gadsby.

    Matthew Williams :: Thu Dec 7 2006 - Fixed small bug where a file handle
    wasn't being closed.

    Matthew Williams :: Thu Dec 7 2006 - Fixed bug found by Dan Stern with
    patch suggested by Jim Serack. Added uppercase conversion to
    &X10_Interface::processData as there are cases (such as with
    x10_rf_relay) where incoming data may be in lower case and mh's X10 code
    relies on the data being uppercase..

    Gregg Liming :: Wed Dec 6 2006 - Force processing of respond targets if
    the object's target property or the target parm is declared. Pass the
    app param as well.

    Matthew Williams :: Fri Nov 24 2006 - Modifed sensor validation regex to
    allow whitespace before and after sensor value. This ability was
    requested by Jim Duda to support his weather_iB_OWW_client.pl changes.

    Jim Duda :: Fri Nov 24 2006 - I modified this code segment to use the
    latest %Weather hash values. This module now calls
    Weather_Common::weather_updated to annouce the updates. This module uses
    the weather_uom variables to do unit conversions. I removed the updates
    to windchill as those updates are done in Weather_Common now.

    Matthew Williams :: Wed Nov 22 2006 - Changed default file format for MS
    TTS generated files from 8 bit 8 kHz to 16 bit 16 kHz as the former
    wasn't being correctly written to the file. Also added additional
    conditional debug statements.

    Jim Duda :: Mon Nov 20 2006 - I added the restore_active method to the
    restore_string method. This is necessary to add the process to the
    active_processes array upon restart. Failure to do so prevents a process
    to be harvested when it completes after a resart is executed.

    Gregg Liming :: Fri Nov 17 2006 - Added support for "peer-based" speech
    proxies so that individual mh instances can proxy speech for each other.
    In addition, added per-function parms to enable/disable operation.
    Defaults to everything enabled.

    Gregg Liming :: Mon Nov 13 2006 - Fix faulty calculation of measurement
    change on submission of measurement

    Matthew Williams :: Thu Nov 9 2006 - Howard Plato's modified "newclock"
    that fits Audrey better and pulls the temperature directly from
    $Weather{TempOutdoor}.

    Matthew Williams :: Wed Nov 8 2006 - Howard Plato's improvements to the
    built-in calendar that allow days to be marked as holidays and/or
    vacations. organizer_vmode.pl will use this data to automatically set
    $mode_occupied to 'vacation' if today is a vacation day.

    Gregg Liming :: Mon Nov 6 2006 - Force measurement_change evaluation to
    absolute value

    Gregg Liming :: Mon Nov 6 2006 - Added measurement_change method to
    report latest change in measurement

    Matthew Williams :: Thu Nov 2 2006 - Upgraded all libwww related
    libraries. We moved from v5.68 to v5.805. This upgrade is intended to
    resolve incompatibilities between previously upgraded libraries.

    Jason Sharpee :: Tue Oct 31 2006 - Fix Default fade rate

    Matthew Williams :: Mon Oct 30 2006 - Committed Ben Griffith's updates
    to rrd_graph_web. rrd_graph_web.pl was leaking memory due to a bug in
    the RRD library. Ben has split off the graph generation stuff into a
    separate system call. As well, the CSS file has been renamed as it was
    previously misspelled.

    Gregg Liming :: Mon Oct 30 2006 - Fix direct dim quoting in combo boxes

    Matthew Williams :: Sun Oct 29 2006 - Fixed logic in &state. If $@ was
    set upon entry to &state, then a Weather_Item eval error would be
    printed if an undefined Weather item was being evaluated and $valid was
    set to 1. In other words, a Weather_Item eval error would be printed
    even if it was a previous eval error that caused $@ to be populated. In
    the reworked logic, the print statement is only reached if an eval
    statement is actually executed and an error is generated by that eval
    statement.

    Matthew Williams :: Sun Oct 29 2006 - Modifed ia5 earthquake interface
    to use earthquakes.txt instead of earthquakes.finger. Also added a
    default earthquakes.txt into standard data directory.

    Matthew Williams :: Sun Oct 29 2006 - Highly modified standard MD5.pm to
    always use the pure PERL interface, not the object file based interface.
    This is to prevent incompatibilities with locally installed versions of
    object files.

    Matthew Williams :: Sun Oct 29 2006 - Added set_clock method to allow
    easier setting of the DSC system clock.

    Matthew Williams :: Sun Oct 29 2006 - Added sending of initial poll as
    sometimes the first command sent generates an API Command Syntax Error.
    The poll is a NOP, so we use it to work around this problem before
    sending "real" commands.

    Matthew Williams :: Sat Oct 28 2006 - Updated LWP library.

    Matthew Williams :: Sat Oct 28 2006 - Changing case of mediatypes.pm to
    MediaTypes.pm to prepare for library upgrade.

    Matthew Williams :: Sat Oct 28 2006 - Added new config parms to more
    precisely control which weather elements are populated by each internet
    weather module. Fixed problem with wind gust handling in weather_aws.
    Thanks to David Satterfield for reporting this bug.

    Matthew Williams :: Sat Oct 28 2006 - Added units to reported wind
    speeds.

    Matthew Williams :: Sat Oct 28 2006 - Fixed bug where negative numbers
    in sensors weren't supported. Credit to Howard Plato for identifying the
    bug.

    Matthew Williams :: Sat Oct 28 2006 - Added ti103 and ncpuxa to
    @Serial_Item::supported_interfaces and
    @X10_Interface::X10_Interface_Names. Fixed small typo in comments within
    Device_Item.pm.

    Matthew Williams :: Thu Oct 26 2006 - Added configurable levels of
    warnings within Dummy_Interface to allow users to suppress warnings when
    Dummy_Interfaces are not a bad thing (rare, but possible). One example
    of this situation is when there is no X10 transmitter present, only a
    receiver. Each X10_Item will then have a Dummy_Interface as its
    {interface} as we can not transmit these codes.

    Matthew Williams :: Thu Oct 26 2006 - Modified definition of process
    item to use double quotes around URL, instead of single quotes, so that
    Windows doesn't choke on it.

    Gregg Liming :: Thu Oct 26 2006 - Enable an ability to prevent state
    updates to BSC items if the state value hasn't changed. The default is
    to set state anytime a BSC info is received. The method
    "always_set_state" can be used to disable this function. Fix implemented
    based on suggestions from Martin Hagelin.

    Gregg Liming :: Tue Oct 24 2006 - Allow optional use of "tk" in device
    parm. Also support tk, alpha, etc. devices in route_display_rooms as.
    These and previous display related mods suggested as mod/bug fixes per
    David Satterfield.

    Gregg Liming :: Tue Oct 24 2006 - Removed extaneous return from
    main::display

    Matthew Williams :: Tue Oct 24 2006 - Modified @INC to make mh lib
    directories relative to $Pgm_Root (instead of the current directory) and
    changed call in comic_dailystrips.pl to include full path to mh. This
    fixes the problem of dailystrips not being able to find its required
    libraries. In particular, on my system, if I didn't have a non-mh copy
    of URI::_foreign.pm, then dailystrips would not work. More detail: one
    of the first things that dailystrips does is to change the CWD to
    'basedir' which makes the current directory relative INC library paths
    no longer work.

    Gregg Liming :: Tue Oct 24 2006 - Correct main::display so that multiple
    devices will have their display functions called.

    Matthew Williams :: Tue Oct 24 2006 - Added recognition of mode=mute and
    mode=offline parameters to prevent Audrey from speaking.

    Matthew Williams :: Tue Oct 24 2006 - Added additional delays between
    each initialization command to prevent buffer overruns.

    Matthew Williams :: Tue Oct 24 2006 - Escaped URL in process definition
    as & was incorrectly being interpreted by the shell. Bug report and fix
    from David Satterfield.

    Matthew Williams :: Mon Oct 23 2006 - Removed debug statement from
    handy_net_utilities.pl regarding loading the Jabber library. Added
    Digest::base - required by other Digest libraries.

    Gregg Liming :: Mon Oct 23 2006 - Ensure incoming data is defined (i.e.,
    valid) before accepting for subsequent processing

    Matthew Williams :: Sat Oct 21 2006 - Changed some responds to speaks
    and fixed problem where rain would be reported when rain fall was 0.00
    units (Perl treats '0.00' as a true value).

    Matthew Williams :: Sat Oct 21 2006 - Added TLS support to jabber.
    Updated Authen::SASL libraries and added Auth::SASL::Perl pod.

    Matthew Williams :: Sat Oct 21 2006 - Fixed typo in windchill
    calculation.

    Jason Sharpee :: Sat Oct 21 2006 - Remove debug prints

    Jason Sharpee :: Sat Oct 21 2006 - Handle retransmissions and drop
    duplicates. Remove debuging print statements

    Gregg Liming :: Thu Oct 19 2006 - Fix ability for a BSC_Item to be set.
    Set values are "folded" into one of state, level and/or text based on
    the state value passed to set. Uid is automatically detected and
    persisted.

    Gregg Liming :: Thu Oct 19 2006 - Added uid method to xAP_Item and
    automatically extract xAP uid during data parse

    Jim Duda :: Wed Oct 18 2006 - I filled in the restore_item member
    function to allow the process id (pid) to be retained through a restart
    or code reload. Before this change, any processes started before the
    reload would be orphaned to mh and could not be stopped.

    Jim Duda :: Wed Oct 18 2006 - I corrected a race condition which occured
    across a restart or a reload due to a timer update condition. The timer
    was getting reset to the initial period value instead of the remaining
    value attached to the timer.

    Matthew Williams :: Tue Oct 17 2006 - Patched handy_net_utilities.pl to
    correctly access the Net::Jabber library. Upgraded Digest libraries to
    latest versions so that the Net::Jabber library works.

    Bruce Winter :: Tue Oct 17 2006 - Timo Sariwating sent in Nico's
    K8000.zip code for supporting the Vellman K8000 board

    Jason Sharpee :: Tue Oct 17 2006 - Push the speed of the interface up a
    little to the brink of failure ;)

    Jason Sharpee :: Sun Oct 15 2006 - Make the acknowledge mode
    configurable in derived classes.

    Jason Sharpee :: Sun Oct 15 2006 - Prevent loops on unavailable devices.
    Slow up command stack processing to give the bus some time to respond to
    incoming messages. Upon device add, query the devices initial status.

    Matthew Williams :: Sun Oct 15 2006 - Changed X10_Sensor constructor to
    not pass its $id to the X10_Item constructor to prevent the standard X10
    states being added to the X10_Sensor object. This was causing duplicate
    events. Thanks to Chris Barrett for reporting the bug and helping to
    diagnose the problem.

    Jason Sharpee :: Sat Oct 14 2006 - Optimize the state retrieving code

    Jason Sharpee :: Sat Oct 14 2006 - Turn on acknowledge confirmation.

    Jason Sharpee :: Sat Oct 14 2006 - Implement command queue system.
    Implement Acknowledge messages. Turn on acknowledge at protocol level.
    Various fixes and code cleanups.

    Jason Sharpee :: Sat Oct 14 2006 - Set the default acknowledgement
    protocols off. Make the 2way device support work for all other commands,
    not just lights.

    Jason Sharpee :: Sat Oct 14 2006 - Support UPB PIM 'busy signal' and
    resend command until it is processed. Bug reported by Adam D. (thank
    you)

    Jason Sharpee :: Sat Oct 14 2006 - Created a generic 'Scene' object for
    MH such that any device can participate in a 'software' scene even if
    the hardware doesnt.

    Jason Sharpee :: Sat Oct 14 2006 - Created a generic 'Scene' object for
    MH such that any device can participate in a 'software' scene even if
    the hardware doesnt.

    Gregg Liming :: Thu Oct 12 2006 - Prefer raw_text to text in
    respond_telnet

    Gregg Liming :: Thu Oct 12 2006 - Make telnet server use tracked respond
    and allow telnet to be supported by speach echo tag

    Gregg Liming :: Thu Oct 12 2006 - Make $search_command_string use
    object's respond--not global respond

    Jason Sharpee :: Thu Oct 12 2006 - Add support for UPB_Link (UPBL)
    device definition: UPBL, upb_family_movie, myPIM, 49,1

    Jason Sharpee :: Thu Oct 12 2006 - Add UPB_Link class.

    Jason Sharpee :: Thu Oct 12 2006 - Add support for UPB_Link sub class.
    Add Support for 'status' generic command. Fix: Argument parsing on
    device state report.

    Jason Sharpee :: Thu Oct 12 2006 - Fix: UPB Link recognition

    Matthew Williams :: Tue Oct 10 2006 - Added RainTotal and RainRate as
    valid internet sourced weather elements.

    Gregg Liming :: Tue Oct 10 2006 - Extend
    AnalogSensor_Item->map_to_weather to include an optional graph_title
    argument that will be used by RRDs when creating graphs.

    Matthew Williams :: Sun Oct 8 2006 - Added &:: in front of calls to
    convert_c2f. Thanks to Chris Barrett for finding the first bug in 2.103!

    Gregg Liming :: Sun Oct 8 2006 - Modified to illustrate use of
    AnalogSensor_Item tokens

  Version 2.103 posted on 10/07/2006
    Version 2.103 can be downloaded from here:

      http://misterhouse.sf.net/download.html

    New Features:

    - David Mark made lots of updates to the tk gui.

    - Matthew Williams created lib/Device_Item.pm and lib/X10_Interface.pm
    and modified X10_Items and Serial_Item so we have a more consistent set
    of classes.

    - Gregg Liming made various xAP and xPL updates including OneWire_xAP
    and AnalogSensor_Item support, proper xAP targetting on responds,
    BSC_Item, and auto-detect devices targeting slimdev-slimserv.

    - Jason Sharpee added suport for UPB PIM and Devices as: UPBPIM
    <name>,<network>,<password>,<address>. UPBD
    <name>,<UPBPIM>,<network>,<address>

    - Gregg Liming and David Mark added lib/X10_Scene.pm to provide a
    convenient mechanism for defining, managing and enrolling/unenrolling
    lighing scenes. Current support is limited to Switchlinc family of
    lights.

    - Gregg Liming added support for ZoneMinder ( http://www.zoneminder.com
    ).

    - Mike Wiebke added SOAP server capability and several client examples

    - Matthew Williams modified audreyspeak.pl to generate TTS files
    asynchronously.

    - Matthew Williams added support for standard CPAN Lingua modules to
    convert numbers to text.

    - Matthew Williams added lib/Weather_Common.pm and updated most of the
    weather interface modules to provide standard routines to update weather
    related variables. Among other things, this allows a local weather
    station to be supplemented with data from the internet (e.g. METAR)

    - Matthew Williams added support for Davis Weather Monitor II and
    updated Weather_Items.pm to monitor battery levels on the WMR968 group
    of weather stations.

    - John Murphy added support of DS2409 based 1-wire hubs.

    - David Norwood updated the rrd graphic code so that graphs are now
    created on-the-fly instead of every five minutes, less likely to cause
    pauses.

    - Matthew Williams split weather_rrd graph functionality out of
    code/common/weather_rrd_update.pl into bin/weather_rrd_update_graphs.
    This allows Windows boxes to update their graphs in a forked process,
    removing the long pauses that can be associated with updating the rrd
    graphs.

    - Updated code/common/internet_mail.pl to allow for reading of local
    mail files. For example, if using Thunderbird, install Thunderbird 'Tb
    autosave extention' from http://www.supportware.net/mozilla/#ext13 then
    set the mh.ini parm net_mail_save_dir to point to the save directory.
    This has the advantage over get_email of ignoring spam that you have
    filtered out of your inbox.

    Bug Fixes and Other Changes:

    - Matthew Williams made about 1 billion changes, a bit too numerous to
    list. Check the svn log for the complete list.

    - David Mark also made many changes, some (but not all) are listed in
    the svn log listing.

    - David Mark added several new options to display_alpha.pl

    - David Mark updated display_alpha.pm to work with older Beta Brite
    signs

    - David Mark updated mh_release.pl to use respond_in_kind function and
    trigger

    - David Mark fixed display app parameter bug

    - David Mark fixed bug in respond_log which sent parameters to the print
    log

    - David Mark updated serial_port_create and serial_port_open to handle
    start and stop bit variations

    - David Mark fixed tk response in set_password

    - David Mark added respond_in_kind function

    - David Mark fixed tk window display bug related to recycled windows.

    - David Mark updated code/common/event_sounds.pl to allow for an
    optional mh.ini event_sounds_file

    - David Mark added &recompose_uri to unencoded URI's from XML parsers
    and re-encodes them for output in tag attributes.

    - David Mark updated code/common/news_ap_breaking.pl from 'read/show' to
    'what is'.

    - Chris Barrett fixed a 2.102 X10_RF.pm bug that truncated the first
    character X10 code in the log errata.

    - Chris Barrett updated common/mh_release.pl to work with the new 2.102
    version name, which includes the SVN Rddd version.

    - Chris Barrett fixed a case sensitiviy bug in lib/X10_RF_security.pm .

    - Added a check on text lenght in &speak, and will display instead if
    too long.

    - Allow for end of line comments ( ... # comment) in .mht files.

    - Brent DeShazer found a bug when trying to set Timer objects from with
    web SET commands.

    - Chris Barrett fixed a potential security hole by removing double
    slashes in HTTP requests.

    - Matthew Williams added FAQ item 2.18 to explain the differences
    between 'on', 'ON' and ON.

    - David Mark added a state check in Door_Item set before setting the
    last opened or last closed times.

    - Added a speak length mh.ini parm, to allow for truncating long text
    before speaking. Default is set with mh.ini entry of speak_length=500

    - Axel Brown spoted a bug where the play sound_fork parm was ignored on
    non-winows boxes.

    - David Norwood improved pronto support, RSS processing, trigger
    actions, and usb-uirt support.

    - Dan Patellis updated lib/Marrick.pm to accept more X10 commands,
    including PRESET_DIMs.

    - Rick Steeves patched dailystrips to support 2 page retrieval support.

    - Joe Blecher added support in Lynx10PLC.pm to handle individual
    commands instead of requiring pairs. This allows "group" capability
    similar to the CM11

    - Chris Barrett fixed 4 bugs in vv_tts.pl

    - David Norwood added +-##% states to X10_Item, and made many
    improvements related to dimming.

    - Chris Kodadek and Matthew Williams put in a fix for said_next in
    Socket_Item.pm for cases where $datatype is 'raw' (i.e. a raw socket).

    - Kirk Bauer updated Musica.pm.

    - Troy Carpenter updated internet_weather.pl to add -nws_data forecast
    to limit it to just forecast data

    - Troy Carpenter added a new volume control module for Audreys.

    - Jim Duda updated audreyspeak which has more intelligent handling of
    "rooms".

  Version 2.102 posted on 04/02/2006
    Version 2.102 can be downloaded from here:

      http://misterhouse.sf.net/download.html

    New Features:

    - Brian McKissick created code/common/power_Xantrex.pl for communicating
    with a Xantrex GT3.0 grid-tied photovoltaic power inverter, allowing for
    home automation monitoring of generated solar power.

    - Ricardo Arroyo sent in code and web files he has modified to speak in
    Spanish, or to use Spainish web pages. Copied to mh/code/public/Ricardo

    - Jim Morrissey sent in mh/code/public/power_french_edf.zip, code and
    web pages he wrote to manage the different power rates that the French
    national electricity (EDF) provides.

    - Michael Easton created web/newclock ( http://localhost:8080/newclock
    ). Enable code/common/clock_map.pl to keep world maps updated.

    - David Mark added mh.ini option html_wav_format=client which will try
    to detect the best option for various browsers when playing mh TTS.

    - Gaetan Lord and Jocelyn Brouillard created lib/DSC5401.pm,
    code/examples/DSC5401.pl, and web/bin/DSC5401_*.pl for supporting the
    DSC5401.

    - Gaetan Lord, Matthew Williams, and David Mark added
    code/common/virtual_keyboard.pl to allow for a virtual keyboard within a
    web page, and updated web/bin/shopping_list.pl to use it.

    - Gaetan Lord created web/bin/listmanager.pl, based on shopping_list.pl,
    but more generic and targeted for use on a PDA.

    - Gregg Liming updated code/common/asterisk_gregg.pl which uses
    Telephony_xAP and and netcallerid objects to perform CID, output
    logging, MWI display and on-/off-hook processing (e.g, mute music on
    call pick-up or start). He also updated lib/Telephony_xAP.pm,
    lib/CID_Log.pm, CID_Lookup.pm, and phone_logs.pl.

    - David Norwood created code/common/monitor_versalink.pl which collects
    and graphs DSL traffic data from a Westell Versalink 327W modem/router
    used by Verizon.

    - A interview about the open source aspect of MisterHouse can be found
    at http://www.cocoontech.com/index.php?showtopic=3428 and a summary of
    that interview is at http://www.itbusinessedge.com/item/?ci=11747

    - Matthew Williams migrated the MisterHouse sourceforge repository from
    CVS to SVN (SubVersioN). This is much nicer than CVS and we now have ALL
    files in the standard distros checked in. You can continue to send
    updates to me directly, or feel free to send them in via SVN. Windows
    users can use touroiseSVN, which integrates into explorer:
    http://tortoisesvn.sourceforge.net/ Right click on explorer and do an
    SVN check out from here:
    https://svn.sourceforge.net/svnroot/misterhouse/trunk

    - If you want to track changes to the mh wiki, you can subscribe to a
    RSS or ATOM feed via this page:
    http://misterhouse.wikispaces.com/space/notify

    Bug Fixes and Other Changes:

    - Included mh/data/infrared/devicelib (missing from 2.101 release).

    - Neil Cherry updated mh.ini tv parms to use zip_code, rather than
    hardcoded values.

    - Allow for any $var substitution in .ini files, rather than just
    $config__parm vars.

    - Benjamin Griffith updated code/public/rrd_graph_web.pl to fix $timenow
    and to print better error errata.

    - David Mark changed the mh exit_pgm restart, so web based 'restart
    misterhouse' works better.

    - Mike Pieper added support for EIB access via eibd.

    - Tim Sailer noticed a 2.100 update to common/tv_info.pl broke it on
    *nix systems.

    - Chris Barrett and Neil Cherry updated some pointers to our nifty new
    wiki: http://misterhouse.wikispaces.com

    - David Norwood sent in more mh/lib/site/XML modules so
    rss_subscriber.pl works without requiring local perl modules to be
    installed.

    - Rick Steeves suggested we add favorite_tv_shows mh.ini parm, in place
    of hard coded channels in common/tv_info.pl

    - Steve Hammer and John Liss noticed the Wish::send call in
    lib/Serial_Item.pm was wrong.

    - David Mark fixed a quoting problem in code/common/news_ap_breaking.pl.

    - Brent DeShazer added time_date_stamp format 22 and he added cmd,
    findcmd, and speak to internet_im.pl

    - Matthew Williams updated code/public/weather_metar.pl to add hooks
    when new forecasts are retrieved and added new SummaryLong key to
    Weather Hash.

    - Matthew Williams updated common/internet_earthquakes.pl to allow for
    km, and fixed bug to us statutory miles instead of nautical miles.

    - Matthew Williams updated lib/CID_Announce.pm to handle case when name
    is sent as "UNKNOWN CALLER"

    - Matthew Williams updated lib/DSC5401.pm to add new partition_mode
    "Exit-Delay".

    - Matthew Williams updated lib/Group.pm to allow for nested groupe and
    Voice_Text.pm to speak numbers > 4 digits seperately.

    - Rick Steeves added a print_log call to X10_RF.pm, so you will see
    errata like: XM6MJ: Porch_Light on

    - David Mark updated the web .wav generator to minimized the problem of
    multiple web browsers talking at the same time by using a semi-random
    .wav file name.

    - David Mark added a webmute=2 option, which disables both local and
    remote speech.

    - David Mark added subs &quote_attribute, &escape, &unescape, and
    &html_encode to lib/http_server.pl

    - David Mark implemented the repeat command and the &mp3_radio_play sub
    in code/common/mp3_winamp.pl.

    - David Norwood updated mh/lib/site/ControlX10/CM11.pm to fix write
    retries which has been broken the past few releases. He also-wrote the
    send subroutine without goto's, so it should be clearer and easier to
    maintain.

    - David Mark fixed write_mh_opts to look for mh/bin/mh.private.ini, not
    mh/mh.private.ini, if mh_parms is not set.

    - Gregg Liming xAP/xPL code processing to not drop sockets due to EINTR
    (system interrupt) calls. He also added ability to override default
    broadcast on xAP/xPL data transmitions to ones defined by
    ipaddress_xap_broadcast and ipaddress_xpl_broadcast (useful in
    multi-NIC/VLAN environments).

    - Rick Steeves added RF_Item to web/bin/floorplan.pl

    - David Norwood added support to code/common/rss_subscriber.pl for
    individual download directories for each feed.

    - David Norwood fixed a bug in code/common/stocks.pl introduced two
    releases ago that caused stock alerts to be announced even if the
    threshold has not been exceeded.

    - David Norwood modified code/common/USB_UIRT_learning.pl to change the
    default repeat used for imported codes from 0 to 1.

    - David Norwood updated code/common/internet_earthquakes_cal.pl to
    include Matthew Williams' statutory vs nautical mile bug fix.

    - Brent DeShazer added a parity option for serial ports, defaulting to
    none.

  Version 2.101 posted on 01/29/2006
    Version 2.101 can be downloaded from here:

      http://misterhouse.sf.net/download.html

    New Features:

    - Matthew Williams created a new, spam free, Wiki here:
    http://misterhouse.wikispaces.com/

    - Created a MisterHouse Frapper map, so we can see where we all are:
    http://www.frappr.com/misterhouse

    - Ron Klinkien has lots of great new info on installing MisterHouse on
    linux at his wiki: http://mrhousefromscratch.tk

    - Howard Plato created code/common/azureus_info.pl to display and report
    on bittorrent client Azureus stats.

    - Neil Cherry created mh/lib/iplcs.pm and X10_iplcs.pm for Linux support
    of Smarthome's Insteon interface. He also created code/common/iplcs.pl
    to enable, and code/public/iplc.* to test. Code is Alpha level. More
    info on Insteon here: http://www.linuxha.com/athome/common/iplcd

    - Stphane Kattoor created code/common/ical.pl to allow for control of
    mh items from any ICal application (e.g. Mozilla, Outlook, or iCal for
    Mac). More iCal info here: http://en.wikipedia.org/wiki/ICalendar .

    - Matthew Williams added buddy icon capability for AOL/ICQ and added a
    new callback to notify mh when the AOL/ICQ connection is lost.

    - David Norwood created code/common/weather_tides.pl based on idea by
    Joey French. It collects information about ocean tides, moonrise and
    moonset from the University of Southern Carolina Tide Predictor:
    http://tbone.biol.sc.edu

    - Matthew Williams created lib/K8055.pm, web/bin/k8055.pl, and
    bin/k8055d.tar.bz2 to support the Velleman K8055 USB 5 in, 8 out digital
    IO card: http://www.velleman.be/ot/en/product/view/?id=351346

    - Dan Hoffard created code/common/LitterFree.pl which uses X10 to cycle
    the litter box based on cat movmemnt.

    - Andrew Baker created code/public/schoolday.pl which creates functions
    that flag school days.

    - David Lynch created mh/lib/TI103.pm for support of ACT's TI-103
    interface

    - Jason Spangler updated lib/X10_Wish.pm to send, as well as receive,
    X10 data via PowerLinc, using the Wish drivers.

    Bug Fixes and Other Changes:

    - Matthew Williams made some additional updated handy_net_utilites.pl
    improve AOL OSCAR.pm support.

    - Gregg Liming updated lib/Telephony_xAP.pm to fix a problem with the
    2.100 update.

    - Brent Gross updated bin/outlook_read to add a -all option to iterate
    over all entires, and a -dump_body option to dump the entire body af an
    entry and not just the subject.

    - Howard Plato updated lib/Caller_ID.pm to added a Format=6 option for
    custom scripts such as vocp_callerid.pl

    - David Mark updated lib/Group.pm to fix some 2.100 issues.

    - Brent Gross updated common/comic_dailystrip.pl to send html as inline
    instead of as an attachment.

    - Henry Laxen updated web/bin/photos.pl that removes an explicit link to
    /ia5 rather than the html_file parameter.

    - John Wohlers fixed a bug in internet_weather.pl so the nws_city
    configuration parameter works.

    - Matthew Williams updated code/public/weather_metar.pl, including
    fixing a bug caused by occastional enter a space after "RMK" string.
    Also moved it from code/public to code/common.

    - Matthew Williams updated web/bin/shopping_list.pl with a few
    enhancements and bug fixes.

    - Chris Barrett updated lib/X10_Items.pm to fix some battery timer bugs.

    - Chris Barrett fixed a html formating problem in web/bin/phone_list.pl

    - Gaetan Lord fixed a bug in time_date_stamp format=17, where it was
    doing a 12, rather than 24 hour format.

    - Neil Cherry and David Norwood updated faq 2.15: What is the format of
    MisterHouse X10 codes?

    - Ben Raymond updated iButton.pm to add (partial) support for DS2409
    one-wire net couplers.

    - David Mark commented out an uneeded timer in Motion_Item .

    - Joel Davidson updated lib/Omnistat.pm

    - David Norwood updated uirt2 and usb-uirt, which now use device data in
    mh/data/infrared/devicelib.

    - David Norwood updated lib/Serial_Item.pm, CM11.pm, and ncpuxa_mh.pm to
    add support for sending and receiving some of the rarely used X10
    commands.

    - David Mark updated lib/Lynx10PLC, Homebase.pm, and Stargate.pm to
    support the O and P (ALL LIGHTS ON, ALL UNITS OFF) X10 commands.

    - Zen Tormey fixed a 'AOL System Msg' loop in common/internet_im.pl

    - Joe Blecher updated Lynx10PLC.pm file to add support for all
    EXTENDED_CODE_1 commands. Also created new parameter
    Lynx10PLC_MULTI_DELAY that allows multiple packets to be combined
    together if they come in separate, but within the specified time of each
    other.

    - David Norwood updated code/common/internet_logon.pl,
    internet_weather.pl, weather_chance_of_rain.pl to make them configurable
    via triggers.

    - David Norwood fixed a parsing bug in rss_subscriber.pl and removed the
    duplicate code for from stocks.pl

    - Matthew Williams updated code/common/internet_im.pl to allow a var
    option (e.g. var: Object_name state)

    - Andrew Baker added an optional weeder_handshake parm to support his
    homebuilt board.

    - Craig Schaeffer noticed we inadvertantly dropped
    mh/data/remarks/full_moon.txt

    - Tom Valdes created a web icon for the shopping application.

    - Bill Young patched X10_RF_security.pm to add support for low battery
    and tamper indications from wireless devices that support these
    features. The new states generated look like AlertTamperMax or
    AlertBattLowMax.

    - Peter Sjodin and Rob VanHoboken updated the EIB modules to handle of
    physical addresses, allow for timer-driven reading of dimmer state, and
    added dimmer and drive (EIS 2 and 7) support in web interface.

    - Steve Goldman updated web/bin/weather_rrd_update.pl to make it
    compatable with rrd 1.2

    - Rick Steeves fixed some bugs in code/common/*weather* code.

    - David Mark updated the respond function to eliminate dual read/show
    commands.

  Version 2.100 posted on 10/02/2005
    Version 2.100 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - David Mark maded changes to code/common/news_mquote_oftd.pl,
    internet_earthquakes.pl, dvd_releases.pl, news_ap_breaking.pl,
    internet_top10.pl, time_info.pl, internet_weather.pl, tv_info.pl,
    trivia.pl, stocks.pl, internet_top10.pl, tv_info.pl, phone_minutes.pl,
    news_onthisday.pl, and internet_chance_of_rain.pl. Many of the changes
    were to enable speak -vs- show options, using the respond function
    better.

    - Brent DeShazer created lib/Display_osd232.pl and
    code/common/display_osd232.pl for interfacing with Intuitive Curciuts
    OSD-232 On-screen video overlay interface, available from
    http://www.icircuits.com/prod_osd232.html

    - Werner Lane created lib/Terminal_Menu.pm,
    code/common/terminal_menu.pl, and bin/terminalmenu-client.pl to allow
    for 'terminal window' control via SSH. Using something like PuTTY, it is
    fully operated with keys found on a mobile phone: 0-9, #, *, the arrow
    keys and ENTER. Screenshot:
    http://misterhouse.net/pictures/terminal-menu_on_nokia.jpg

    - Dan Hoffard created code/public/gas_prices.pl to find low gas prices
    in Fort Worth, TX.

    - Howard Plato created code/common/vocp_callerid.pl. Uses the vocp
    system to announce and log incoming phone calls.

    - Matthew Williams updated handy_net_utilites.pl to switch from
    Net/AOLIM.pm to Net/OSCAR.pm, so our AOL connections work again :)

    - Gregg Liming lib/BSC.pm and code/common/bsc.pl to monitor mh items and
    send out state changes via xAP BSC and to monitor incoming BSC commands
    and update corresponding mh item states.

    - Dan Wilga created mh/lib/X10_Wish.pm which interfaces to the Linux
    Wish X10 drivers: http://sourceforge.net/projects/wish . These are the
    currently supported device: PowerLinc Serial, PowerLinc 1132 USB, CM11A,
    and Firecracker/CM17A. Currently supports sending, but not receiving,
    X10 data. More info at the top of lib/X10_Wish.pm.

    - David Satterfield created code/common/phone_vcop.pl to interface to
    the Linux vocp system: http://www.vocpsystem.com

    - Peter Sjodin added Linux support for EIB (European Installation Bus,
    info here: http://en.wikipedia.org/wiki/European_Installation_Bus ). New
    modules are lib/EIB_Items.pm and lib/EIB_Device.pm. Example items are in
    code/examples/eib_items.mht.

    - The CaFe Perl Users Group has an online Interview with Bruce about
    MisterHouse: http://www.bit-man.com.ar/en/CaFePMMisterHouse

    - Wally Kissel sent in a presentation on MisterLab which shows how he
    uses MisterHouse at Fermi Labs: http://misterhouse.sf.net/MisterLab.ppt

    - Created lib/Network_Item.pm which uses ping to detect when specified
    ip address is up. Examples in docs/mh.* and at the top of
    lib/Network_Item.pm

    Bug Fixes and Other Changes:

    - David Mark changed the &respond_tk function to use &display, rather
    than respond_default, to tk requested data is more properly displayed.

    - David Mark updated common/mp3.pl and bin/get_mp3_data to enable wma
    files.

    - David Mark made more updates to CM11.pm to improve retry transmitions.

    - Larry Roudebush noticed we left debug turned on in 2.99
    lib/site/ControlX10/CM11.pm

    - Larry Roudebush added a mh.ini fork_sound option, which worked better
    with esdplay on his linux box.

    - David Norwood updated net_mail_send to support smtp authentication on
    messages with mime attachments and to support messages that contain both
    text and a file attachment.

    - Updated internet_weather.pl to allow it to writing to standard weather
    vars if you don't have a local weather station.

    - Jim Duda updated code/common/audreyspeak.pl to undo a 2.99 change
    involving the local ip address.

    - Gregg Liming updated bin/xAP-festival.pl to allow it to work better
    with hubs.

    - Limit outgoing im msgs to every other second, to avoid having im
    accounts closed due to rapid send messages.

    - Werner Lane patched lib/Numbered_Menu.pm to work with a 2.97 update
    dealing with parms and fixed a check for the keyed-in number (string
    comparison vs numeric comparison) that prevented the menu from
    functioning if more than 10 menu items were available.

    - Gregg Liming made a number of updates to lib/xAP_Items.pm .

    - Updated &force_prounce in lib/Voice_Text.pl to allow for regular
    expressions data/pronouncable_words.list

    - Todd Riesz noticed that menus Actions were not working for lcd menus.

    - Matthew Williams updated web/bin/shopping_list.pl, including options
    to allow for easier printing and a 'at shop' button which brings up a
    list of items currently in the shopping list.

    - Glenn Jensen noticed the ia5 news button wasn't working.

    - Brian McKissick noticed bin/alpha_page was missing the leading # in
    the first line

    - Brent Gross updated code/common/comic_dailystrips.pl to allow for
    email "to" and "basedir" parms.

    - Richard Koch fixed a problem in lib/X10_Item.pm with sending preset
    dim commands to preset2 devices.

    - Dave Hall added mh.ini parm events_table so DBI based event tables are
    disabled by default in lib/Base_Item.pm

    - Gregg Liming update lib/Light_Item.pm to add a always_set_state
    method. Setting it to 0 prevents set states when the value doesn't
    change.

    - Matthew Williams made some updates to
    web/comics/dailystrips/strips.def

    - Gregg Liming updated lib/Telephony_xAP.pm to implement most current
    xAP schemas for telephony, specifically CID.Meteor and CTI.*. The
    CID.Meteor support addresses both incoming CID hooks and outgoing call
    logging. The CTI.* support addresses MWI message counts (total and
    read).

    - David Norwood updated code/common/mp3.pl to remove playlists with
    unpronoucable characters from the playlist voice cmd and
    code/common/mp3_xmms.pl to take out the /sbin/ path to pidof, because
    it's in /bin on debian.

    - David Norwood updated code/common/rss_subscriber.pl to add support for
    podcasts and other RSS feeds with enclosures.

    - David Norwood updated code/common/stocks.pl to add back the stock
    alerts feature.

    - David Norwood made various updates to the UIRT2, USB-UIRT, and ncpuxa
    (Ocelot) code and modules (ncpuxa now work on Windows).

  Version 2.99 posted on 05/22/2005
    Version 2.99 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Pete Flaherty updated his new mhmedia code to collect, display,
    select/queue various media files, from MH web interface. He also created
    bin/mhmms-server.pl for use on the box Xine is running.

    - Pete Flaherty also created docs/faq_mhmedia.* to document his new
    mhmedia code.

    - Chris Barrett created mh/bin/xAP-festival.pl, which provides a simple
    xAP listener for the Festival text-to-speech synthesizer.

    - Gregg Liming added code/common/xap_pa_control.pl, so we can use
    distributed xAP/xPL TTS speech clients (like the new xAP-festival.pl) to
    create a distributed speech PA system.

    - Gregg Liming made numerous great updates to lib/xAP_Items.pm,
    including allowing for the use of the xAP target field, a heartbeat
    monitor, a section specific state_now option, and a new
    tie_value_converter method for modifying data on the fly.

    - Gregg Liming also updated Telephony_xAP.pm and created
    mh/code/public/asterisk_gregg.pl as an example of interfacing asterisk
    using xAP.

    - Jim Duda updated code/common/audreyspeak.pl to use the "rooms"
    parameter instead of the "address" parameter. It now also builds a queue
    of speak and play items such that speak and play events don't stomp on
    each other.

    - Dan Hoffard created code/public/weather_warning.pl to periodically
    checks the NOAA website for severe watches and warnings in any given
    area and speaks warning messages.

    - David Mark made extensive changes to the X10 processing code: added
    additional code for processing commands that were otherwise discarded
    ($BACKLOG variable), tweaked various timeouts and added some additional
    logic to the send function toeliminate the bad checksums, added support
    for the extended ack (LM14's send these when their states change) and
    extended preset dim commands, and polling is now reported in the logs.

    - David Satterfield created code/common/voicemail_vocp.pl to interface
    to the Linux vocp system: http://www.vocpsystem.com

    - Marcus Mller created a xAP driver for his 2-way, multi-zone capable
    IRTrans interface, available for 99 Euro from http://www.irtrans.com/

    - David Norwood created code/common/rss_subscriber.pl for downloading
    files in rss feeds (e.g. podcasts and torrent files for TV shows).

    - Updated common/phone_minutes.pl to work with Cingular (in addition to
    Sprint and Tmobile).

    - Added mh.ini options xap/xpl_enable_items to enable mh to echo mh item
    state changes to xap/xpl. Also added code to common/xAP_command.pl to
    allow external xAP programs to set states on mh items and to allow for
    multiple mh systems with the common mirrored items.

    - Created mh/bin/xAP-bluetooth.pl (called with mh/bin/xAP-bluetooth) and
    mh/code/common/xAP_bluetooth.pl for monitoring when bluetooth enabled
    devices (e.g. phones) go in and out of range. The xAP daemon runs on
    Linux and requires the bluez lib to be installed (pointers in the
    header).

    Bug Fixes and Other Changes:

    - Updated lib/Serial_Item.pm to cancel set_with_timer events if mh
    detects that device was set externally.

    - Chris Barrett updated web/bin/phone_out.pl to allow for numbers other
    than 12 digit numbers.

    - Sam Levine noticed a 2.98 typo on web/bin/floorplan.pl

    - Mark Radke updated code/common/weather_rrd_update.pl to correctly
    calculates the sea level pressure if the weather_uom_baro variable is
    set to mb. Mark also created code/common/weather_summary.pl to update
    the $Weather{Summary_Short} used in the web status bar.

    - Pete Flaherty updated code/common/phone_logs.pl to format the phone
    out logs with a bit more data.

    - Added $Loop_Count_Reload, so we can see how many passes we have had
    since the last reload.

    - Moved the GD .jpg images created by the web/button* code from
    html_dir/cache to data_dir/cache

    - Chris Barrett fixed two problems with net_mail_send which was creating
    mime email that was not quite legal.

    - Peter Woodall updated common/internet_earthquakes.pl to point to an
    updated usgs.gov ftp url

    - Gianni Veloce updated code/public/audrey_cid.pl

    - Tony Hall updated common/stocks.pl to work with new stock data from
    Yahoo.

    - Rick Steeves updated web/comics/dailystrips/strips.def to re-enable
    Dilbert. Also updated to the latest version from sf cvs.

    - Brian Ujvary updated X10_IrrigationController in lib/X10_Items.pm to
    fix issues with a timer, Rain8 All OFF, abort requests, and allowed for
    a second zone cascade request.

    - Allow for a user defined modem in lib/Telephony_Interface.pm.

    - Updated lib/Telephony_Interface.pm to clean up callerid data from the
    bluetooth Dock-N-Talk cell phone interface.

    - Jason Sharpee updated lib/Door_Item.pm to add a periodic alarm trigger
    and lib/Stargate.pm to remove "Thermostat parse error" debug message.

    - Updated lib/site/Date/*.pm modules to the latest versions.

    - David Mark updated code/common/internet_weather.pl to add barometric
    pressure rising/falling, wind chill, and changed the shell command to a
    processs_item call.

    - Nigel Titley sent in code/public/iButton_logcks.pl as an example of
    how he uses iButtons and a weeder module for a door lock.

  Version 2.98 posted on 03/20/2005
    Version 2.98 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Axel Brown created code/common/mh_release.pl which monitors the
    MisterHouse release page and lets the user know if there is a newer
    version of MisterHouse available.

    - Axel Brown created code/common/monitor_router_lingo.pl to monitor and
    optionally reboot a VoIP Lingo router.

    - Matthew Williams created code/public/weather-metar.pl for getting
    weather provided the international standard METAR format. Similar to
    code/common/internet_weather_metar.pl. He also added a weather_long
    option to web/bin/status_line.pl

    - Pete Flaherty created common/mhmedia_xine.pl and web/media for
    controling Xine Media player, available via a new Media Center button on
    the ia5 entertainment page. Currently for Linux only, but Xine Windows
    support is planned.

    - Pete Flaherty created code/public/phone_merlin.pl and an example for
    interfacing to the Merlin phone system.

    Bug Fixes and Other Changes:

    - Dominique Benoliel fixed a 2.97 wind conversion problem in
    lib/weather_wmr968.pm

    - Added a check to web/bin/items.pl to avoid creating any mh items with
    embeded blanks.

    - Chris Barrett noticed a typo in lib/Telephony_Interface. A callerid
    should have been caller_id in this check: config_parms{caller_id_format}
    eq 'number only';

    - Axel Brown updated bin/mh set the volume on a per sound basis on unix
    when using the standard play program.

    - Patched bin/mh to avoid this message that Lee Varga noticed: Undefined
    subroutine: main::respond_UserCode main::respond_UserCode

    - Craig ? found a 2.97 problem in handy_net_utilities.pl that caused the
    which function to not run the dailystrip code on some systems (switched
    -x file test to -f).

    - Jason Sharpee added a mos_precip_change (rain prediction) funciton to
    code/public/weather_mos_forecast.pl.

    - Jason Sharpee patched set_by problem he noticed with tied_item
    objects.

    - Jason Sharpee patched lib/X10_Items.pm to assume a ON to a
    non-presetable item means 100% light level.

    - Jac Botha found a problem with code_unselect on windows not
    deselecting code on Windows due to a case sensitve issue.

    - Pete Flaherty updated code/common/audrey_control2.pl to use get_url
    instead of get to avoid mh pauses.

    - Jason Sharpee re-wrote lib/Base_Item.pm and Light_Item.pm to add
    features, fix bugs, and clean up the code.

    - Bradley Erickson notice that lib/HomeBase.pm did not work with X10
    house code M.

    - Pete Flaherty updated docs/faq_ia.pod with the latest info on his
    http://mraudrey.net project.

    - Matthew Williams updated web/bin/shopping_list.pl, changing the modify
    option to update list. Also included the default data/shopping_list.txt
    that was left out in the last release.

    - Heath Pitts found a memory leak problem with .mht entries with blanks
    in the group records.

    - Pete Flaherty updated web/bin/phone_out.pl to display optional
    additional data.

    - David Norwood updated the common/USB_UIRT_learning.pl to handle two
    part raw codes.

    - Rob Walker noticed that mht entries flagged with 'hidden' group flags,
    inadvertantly created groups called hidden.

    - Rob Walker and I updated web/bin/floorplan.pl to not require the $om
    object.

    - Gregg Becnel fixed a bug in collect_accum in code/public/caddx.pl

    - James Bacus noticed code/common/callerid.pl would repeate the callerid
    data twice, if you only had one callerid device defined.

    - Rob Walker and I updated code/common/internet_im.pl to allow for new
    autoconnect parms, so that mh can log into im services at startup,
    rather than only when they first need to send data. To enable, set
    net_aim_autoconnect=1 (or _msn_, _icq_, or _jabber).

    - Added a list of defined constants (e.g. ON => 'on') to the 'List of
    global variables' of docs/mh.pod. Also added MOTION and STILL

  Version 2.97 posted on 01/23/2005
    Version 2.97 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Matthew Williams created web/bin/shopping_list.pl, now linked under a
    new web ia5 'events/calender' menu with a new shopping button.

    - David Norwood updated common/phone_minutes.pl to work with Tmobile (in
    addition to Sprint).

    - Pete Flaherty created code/common/audrey_control2.pl, which controls
    lights, screen, power, volume on multiple Audreys.

    - Added support for multiple Alpha LED displays. See
    lib/Display_Alpha.pm for more info. Also fixed a 2.96 bug with colors.

    - Jocelyn Brouillard created code/public/dsc_pc5401.pl DSC Alarm PC5401
    Serial interface.

    - Jason Sharpee created code/public/weather_mos_forecast.pl to decode
    MOS forecast data.

    - Dominique Benoliel, with input from Tom Valdes, Clive Freedman, and
    Tine Gornik updated common/weather_rrd_update.pl. Updates include
    smarter $Reload, correct Wind Direction ratio, correct Rain Rate/Total,
    change Celcius with Celsius, and added check for $Weather{TempInternet}.

    - Matthew Williams also updated weather_rrd_update.pl to allow for
    metric units and negative dew points. He also added a bunch of metric
    related convert_* functions to bin/mh. For a list, search for convert_
    in docs/mh.txt

    Bug Fixes and Other Changes:

    - Chris Barrett updated USB_UIRT.pm with debug updates.

    - Matthew Williams updated code/common/phone_logs.pl to allow for
    numbers without area codes.

    - Gianni Veloce made some updates to code/public/sms.pl .

    - Pete Flaherty updated weather_rrd_update.pl to allow for
    weather_rrd_format=GIF (defaults to PNG).

    - David Norwood updated weather_rrd_update.pl to fork when creating
    graphs, to avoid mh pauses, but this only works on non-windows boxes.

    - David Norwood noticed a 2.96 problem with set_output using open2 and
    not getting STDOUT results from Process_Item on Linux.

    - Fixed a 2.96 problem with sending internet messages with send_im.

    - Dan Puccio noticed a problem, caused by a bug in the which function,
    when mh was installed in installed in a /mh dir.

    - William Magill fixed the uptime calculation for OSx.

    - Gregg Liming update common/xAP_command.pl to allow for targets and
    ackmsg attributes.

    - David Satterfield noticed that unquoted arguments using the web SUB
    function were treated as one argument instead of multiple arguments.

    - Neil Wrightson noticed odd problems on Windows when mhe.exe was used
    with the mh -log_file command line option. I tried fixing it, but it is
    something deep in the Windows PAR compiler, although Linux PAR works
    fine. So I took that option out of the documentation, since simple
    redirection (mh > debug.log) works just as well and disabled it for
    windows mhe.exe users.

    - Jeff Bevis fixed a problem with an authorization check in
    web/bin/iniedit.pl

    - Updated lib/site/Geo/Weather.pm , to be compatable again with updated
    weather.com pages.

    - Rick Rolstin fixed a problem with frequent disconnects in
    common/voice_server.pl and public/voice_client.pl

    - Matthew Williams discovered that the 'admin password accepted' speak
    calls would cause problems with speak hooks. like in the Audrey code. We
    already had print_log calls there, so we took out the speak calls.

    - Jeff Bevis noticed we broke X10 BRIGHT/DIM states in 2.96.

    - Larry Roudebush noticed that common/xAP_send.pl disabled local speech.

    - Werner Lane found a bug in common/deep_thought.pl that was causing a
    file access on each mh pass!

    - Werner Lane updated common/display_slimserver.pl to work with the new
    slimserver 5.4+ releases.

    - Werner Lane updated common/speech_clash.pl to allow for speech with
    the ' character.

    - Werner Lane also updated bin/mh to use am/pm on Time_Sun* parms if
    time_format==12

    - Matthew Williams added listing of X10_Item timers to the "list all
    timers" to common/timers.pl

    - Joel Moore added Nextel support to phone_pcs_messaging.pl.

    - Dominique Benoliel modified lib/weather_wmr968.pm to calculate the
    pressure at sea level with the mh parameters "ratio_sea_baro" parm and
    make metric conversions to load $Weather global variables in coherence
    with the "weather_uom_..." mh parameters.

    - Dominique Benoliel modified common/weather_upload.pl to send the
    pressure sea level and not the absolute pressure if using the wmr968 and
    to make some metric->english conversions if needed, according to the
    "weather_uom_..." parms.

    - Jason Sharpee and Kirk Bauer fixed lib/Light_Item.pm to fix a problem
    with Lights and Motion sensors without occupancy (would not stay on
    during motion sequences) and another problem with X10 Sync timer killing
    a light when it has occupancy as well.

    - Jason Sharpee also updated lib/Door_Item.pm to make door alarm
    repeatable (keep on nagging until door is closed).

  Version 2.96 posted on 11/22/2004
    Version 2.96 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Craig Schaeffer and Danal Estes sent in code/public/monitor_mbm*.pl as
    examples of montioring motherboard temperature data, using mbm on
    windows.

    - Kirk Bauer updated lib/Musica.pm to support the new 4602 series and
    its FM Tuner keypads. Also did other small patches to some of his other
    audio modules.

    - Dave Hall updated code/public/robot_er1.pl with many improvments,
    including callerid, speak/play, and new drive commands. See header for
    the list of changes.

    - Timo Sariwating created code/public/dreambox.pl for interfacing to the
    the European Dreambox satelite receiver.

    - Russ Knize created a Debian package, available here:
    http://www.knizefamily.net/russ/software/misterhouse.html

    - Gregg Liming update lib/xAP_Items.pm so there are now two separate
    listeners/senders and hubs, to support xAP and xPL at the same time. He
    also added xap_disable and xpl_disable options.

    - Axel Brown updated common/internet_im.pl to to queue temporarily
    undeliverable IMs for all the supported IM protocols.

    - Rick Steeve created code/public/internet_usgs.pl for monitoring the
    water level of any river or lake in the continental US that is monitored
    by the USGS. Whenever that level passes a certain point MH will send
    notification.

    - Created lib/Servo_Item.pm to supports servo motors via the $40 Mini
    SSC II serial servo control board, available from http://seetron.com .

    - Created code/common/robot_esra.pl to control the $180 Robodyssy ESRA
    robot head from http://robodyssey.com . It has 5 servos (eye lid, eyes,
    lip top/bottom, and an optional neck) which are connected via the Mini
    SSC II serial servo controler. Pictures and a movie are at
    http://misterhouse.net/public/robot/ .

    - Created code/common/speak_insults.pl. You can use the mh.ini
    speak_apps parms to alternate the insults between different voices
    and/or sound cards. I use it so allow my 2 robots to insult each other
    ;)

    - Created code/common/phone_minutes.pl to check on remaining cell phone
    minutes. Currently for Sprint only, but could be extended for other
    services. I also updated get_url to add -cookie_file_in/out options to
    make navigating web sites that require password logins a bit easier.

    - Added -userid and -password options to get_url, so it can access pages
    with 'basic authorization' like those popup login menus you get when you
    access your router. This is now used for Linksys routers in the 'Reboot
    the router' command in common/monitor_router.pl . I found my new Ambit
    cable modem about once a week somehow glitches my Linksys router, so I
    now monitor $internet_connect_check from
    common/internet_connect_check.pl and run 'Reboot the router' if it goes
    down (see code/bruce/monitors.pl for an example).

    - Created code/common/xAP_send.pl for sending out various mh source data
    data as xAP messages, for use with other xAP enabled clients.

    - Gordon Meyer wrote a nice nice intro to mh article, originally
    published by OReilly ONLamp at
    http://www.onlamp.com/pub/a/onlamp/2004/11/11/smrthome_hks1.html , now
    included in the distro with various links from the mh and install docs.

    Bug Fixes and Other Changes:

    - Chris Barrett noticed we missed the 2.95 bin_dir update fix

    - Dan Hoffard create code/public/news_star_telegram.pl (top stories from
    the Fort Worth Star Telegram) and news_onion (news from
    mobile.theonion.com)

    - David Norwood updated lib/IR_Utils.pm to work with RC-5 and RC-6
    protocol signals. Also update USB_UIRT.pm with a minor update.

    - Dominique Benoliel updated lib/X10_W800.pm to support the RF KR21
    remote.

    - Kirk Bauer updated bin/mh to allow for : in object names.

    - Eric Marti updated the web ini edit option to allow non-admin users to
    browse different categories.

    - Delete lib/site/Digest/*SHA1.pm, as these older versions were causing
    problems with Jabber.

    - Kirk Bauer sent in mh/code/examples/mode_party.pl, to show how to set
    up a party mode object.

    - Added a 'Song and Dance' command to common/robot_robosapien.pl. He
    speaks random fun words while dancing to the YMCA song!

    - Kirk Bauer re-sent the read_record update that was supposed to be in
    2.95

    - Craig Schaeffer found that if we updated the MS V5 volume tag in
    lib/Voice_Cmd.pm to a slightly different syntax, we could fix a problem
    he was having with left and right volume control.

    - Neil Cherry fixed lib/handy_net_utilites.pl to do a 'use Jabber' only
    once, to avoide a problem with the Client function he was seeing.

    - Kirk Bauer fixed state_final so it works even if state is not defined.

    - Michael Grabowski noticed that a Group_Item X10 command addressed the
    last object twice. He also discovered some incoming dim/bright data was
    not being decoded properly.

    - Axel Brown updated lib/Telephony_Interface.pm to work with NetCallerid
    hooked to VoIP.

    - David Satterfield fixed a few bugs in lib/Display_Alpha.pm

    - Added the SSLeay module to mhe.exe on windows, so it can do get_url on
    https (encrypted) web pages.

    - Added a is_speaking 'any' option (i.e.
    &Voice_Text::is_speaking('any')) so we can test for speaking on all
    sound cards.

    - Added a file_default function to allow for an easy way to use a
    default file if an override does not exist.

    - Added a eval_with_timer function to run some code after some delay:
    eval_with_timer $code, $time. For example: eval_with_timer 'print_log
    "hi from the past"', 60;

  Version 2.95 posted on 09/25/2004
    Version 2.95 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Ant Skelton created mh/code/common/internet_irc.pl which allows
    MrHouse to talk to multiple channels and multiple users on multiple IRC
    servers.

    - Dan Wilga updated mh/bin/get_tv_grid to allow for multiple providers
    (e.g. local cable and Dish Network). To use more than one, the list of
    providers needs to be separated by commas, like: 1234,5678 or Charter
    Communications,Dish Network.

    - Scott Johnson created mh/code/public/siteplayer.pl as an example of
    sending digital signals to a $30 siteplayer ethernet interface:
    http://www.siteplayer.com

    - Mark Rogers added Ogg Vorbis support to the mp3 playlists.

    - Lou Montulli updates lib/Xantech.pm with some fixes to get it working
    on his Xantech whole house audio system. He also create
    code/public/Xantech_test.pl for a web based control test.

    - Pierrick Dintrat created web/bin/floorplan_svg.pl, a SVG (Scaleable
    Vector Graphic), version of the html only version, floorplan.pl.
    Required SVG plugin is available from
    http://www.adobe.com/svg/viewer/install .

    - David Norwood suggested we add mh/web/bin/dbmedit.cgi, hacked from
    from http://www.jmarshall.com/tools/dbmedit/. Call it to browse db files
    like this: http://localhost:8080/bin/dbmedit.cgi?file=tv_channels.dbm

    - Kirk Bauer updated Alsaplayer.pm (added forward, rewind functions, and
    get_path functions), Light_Item.pm (added manual function), Musica.pm
    (fixed set_bass, set_treble, and set_balance functions), RCSsTR40.pm
    (added set_heat_limits and set_cool_limits functions), mp3_alsaplayer.pl
    (added mp3_get_playlist_pos and mp3_get_curr_file functions and added
    the ability for usercode to set a function to be called whenever the
    alsaplayer is in use), and PlayList.pm (provides more flexibility in
    adding files to the playlist).

    - Clive Freedman created functions url_changed and url_last_modified
    functions. See mh/doc/mh.* for an example.

    - Added a mh.ini voice_text=swift and voice_text_swift=pgm_path options
    for the new Cepstral Linux TTS engine.

    - Kirk Bauer created code/common/mp3Rip_code.pl to rip MP3s from audio
    CDs through the Misterhouse web interface. Info available from the
    common code select menu (points to mh/docs/mp3Rip_system_setup.txt).
    Currently Linux only.

    - Kirk Bauer added a new state_final Generic_Item method, so we can
    query what state an object will be in after all queued state changes
    have been processed.

    - Kirk Bauer created new handy_net_utilites.pl functions html_decode,
    cookies_parse, and cookies_generate. He also updated bin/get_url to
    allow for -cookies, -post, and header_file options.

    - Kirk Bauer (busy boy!) created code/common/eBay.pl to monitor your
    eBay activity and report interesting events, such as somebody outbidding
    you, an item ending, an item that is going to end soon, and much more.

    Bug Fixes and Other Changes:

    - Dominique Benoliel updated code/common/weather_rrd_update.pl to add
    sea level barometric pressure (in the labels of the pressure graphs),
    change label "barometric pressure" by "Absolute barometric pressure" (to
    avoid confusion with the sea level pressure), add new mh parameter
    "$Weather{ratio_sea_baro}" to calculate the sea level barometric
    pressure (to avoid hard coded in the script, default 10 meters), and use
    "altitude" mh parameter to calculate the sea level barometric pressure
    graph.

    - Updated lib/Telephony_Interface.pm to recognize NetCallerID message
    waiting data.

    - David Norwood modified the sort order for mp3 songs, playlists, and
    artists so that the string "the " at the beginning is ignored.

    - Clive Freedman and I created web/misc/failed_request.shtml for missing
    pages, which can be overriden with a user aliased dir to change the
    message given on missing pages.

    - Added %Misc global array, to store misc goblal vars (like %Save, but
    not saved between mh restarts).

    - Kirk Bauer updated bin/get_mp3_data to fix a genre bug and to add
    support for some newer genres.

    - Added a mh.ini bin_dir option, to point to your private version of any
    file that normally gets executed from the bin/mh dir (e.g. get_weather).

    - Added app=admin to http_server.pl calls to speak (e.g. "Admin password
    accepted"), so we can use a speak_apps parm to override if and how to
    speak that speech. Also updated Voice_Text.pm to exit quietly with
    voice=none.

    - Mark Rogers updated common/mp3.pl to re-tie to the dbm database, so
    newly rebuilt mp3 data is picked up.

    - Chris Barrett found a typo in the protocol printout of USB_UIRT.pm.

    - Kirk Bauer re-wrote the read_record function to be more efficient and
    added a read_next_tail to File_Item.

    - Added &html_item to html_sever.pl, so we can add just specific objects
    to .shtml files. Example in docs/mh.*

    - Craig Schaeffer noticed that if tk_mlabel pointed to an object, it
    echoed only the state at startup. We took out that object option and
    changed the Tk mail label in common/internet_mail.pl to point to a
    variable instead.

    - Craig Schaeffer noticed that web RUN:last_displayed calls caused my to
    pause for a long time.

    - Allow for range of channels in get_tv_grid -keep and -skip options
    (e.g. -keep 9,10,100-200,300 ).

  Version 2.94 posted on 07/30/2004
    Version 2.94 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Axel Brown updated common/internet_im.pl to add support for ICQ.
    Enable with mh.ini net_icq_name and net_icq_password.

    - Raul Rodriguez updated common/mp3_slimserver.pl to optionaly and
    transparently direct mh/slimserver music to networked computers.

    Bug Fixes and Other Changes:

    - Pete Flaherty fixed a few minor javascript typos in some of the web
    pages.

    - Thomas Stoll noticed a 2.92 problem with TOGGLEing states and an case
    sensitive state problem.

  Version 2.93 posted on 07/18/2004
    Version 2.93 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Pete Flaherty updated the web mp3 interface, adding delete, jump, and
    playlist on/off toggle button on the remote popup player/playlist and
    updated mp3_xmms and mp3_winamp to be more interactive between the
    control and the playlist.

    - John Dillenburg wrote lib/Motion_Tracker.pm, experimenting with the
    occupancy monitoring stuff and deciding it was too complicated for his
    application. Motion_Tracker takes a motion sensor object as a parameter
    and sets up a timer everytime motion is detected. It ignores the 'off'
    messages from the sensors. This allows the timeouts to be set on the
    computer rather than on each sensor individually. The object state is
    restored through restarts, so the occupied state will eventually expire,
    even after restarts.

    Bug Fixes and Other Changes:

    - Timothy Spaulding found a 2.92 bug that caused set_by to get the wrong
    data.

    - David Norwood fixed a bug in stocks.pl that kept price drops from
    being announced.

    - Lowered the default MR26_multireceive_delay from 1500 to 400 (I ment
    to do that in 2.92, but Bill Young noticed that I didn't). Also added a
    W800_multireceive_delay to the X10_W800* modules, but left the default
    at 1500, since Bill mentioned that those module does not filter repeats
    like the MR26 does.

    - Added 'Speak deep thought with voice xyz' to common/deep_thought.pl,
    so we can read deep thoughts with different voices.

    - Fixed a 2.92 bug in display, where the tk window would not appear.

    - Fixed a 2.92 bug with Timer where active would return true after the
    timer expired.

    - Brent Gross added quotes to the email address that gets the response
    of email commands in common/internet_mail.pl, so that emails addresses
    with blanks work ok.

    - Robert Rozman noticed that Voice_Cmd 'Set {the,} light on' did not
    work with the string 'Set light on'.

    - John Dillenburg noticed that X10_Sensor (X10MS) was giving 'serial set
    called but no serial port found' messages.

  Version 2.92 posted on 07/05/2004
    Version 2.92 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Sean Walker sent in code/public/vocp_sean.pl for integrating with
    linux vocp voicemail ( http://vocp.sourceforge.net/ ).

    - Lincoln Foreman created code/public/x10_video_security2.pl as another
    example of interfacing with X10 cameras.

    - Kirk Bauer created lib/Tivo_Control.pm for displaying text on a Tivo.
    See header for details.

    - Norm Dressler created code/common/mr26_vdr.pl to send remote control
    commands to VDR (Video Disk Recorder) ( http://www.cadsoft.de/vdr/ )
    from an X10 RF remote, via a MR26 interface.

    - Created lib/Display_Alpha.pm and code/common/display_alpha.pl for
    sending text to an Alpha LED signs using a serial port. I picked up the
    Alpha 213C (a.k.a. BetaBrite, 2" x 24", 14 character) from the local
    Sam's Club for $150. Their web site only lists a bigger version, but
    info on BetaBrite I have can be seen here:
    http://www.betabrite.com/Pages/betabrite.htm . It displays in multiple
    colors, in either scrolling or fixed text. See Display_Alpha.pm header
    for details.

    - Created code/common/games_bingo.pl for playing the game of Bingo by
    speaking and displaying a randomized set of bingo numbers at a timed
    interval.

    - Added a xAP interface option to lib/IR_Item.pm. This allows us to send
    and receive IR data with the USB RedRat3 ($99 from
    http://www.redrat.co.uk/ ), using the new windows xAP RedRat Connector (
    http://www.xapframework.net/modules.php?name=Downloads&d_op=viewdownload
    &cid=45 ).

    - Created code/common/robot_robosapien.pl for using IR to control the
    RoboSapien Robot: http://www.robosapienonline.com (got mine for $100 at
    Best Buy). It doesn't do anything practical, but it is a fun toy. I've
    also sent the 70+ IR codes to the online Redrat3 database.

    - Larry Roudebush created a program that will sync a palm datebook with
    misterhouse calendar file. Available at ftp://24.210.57.79 with a user
    name and password of: mhusers/mhusers.

    Bug Fixes and Other Changes:

    - David Norwood sent in mh/code/public/ocelot_*.pl as examples of using
    Ocelot infrared, digital input, and digital output.

    - Dave Hall updated code/public/robot_er1.pl to fixed bugs, made few
    things easier/automatic, and added digital and analog input and an angle
    routine.

    - Joel Davidson updated lib/Omnistat.pm and code/public/omnistat.pl to
    work with an HAI RC-80 thermostat.

    - Lee Varga added mh.ini parms photo_no_title and photo_no_clock for
    turning off title and clock on the web photo page.

    - Fixed a bug when receiving xAP/xPL data with a blank value.

    - Added a set_now method to Generic_Item (available to most mh objects).
    Unlike set, which makes the state change on the next pass, set_now
    changes the state when called. Used in setting incoming states on xAP
    and xPL objects, so the various other data fields are in sync with the
    state field.

    - Updated lib/Timer.pm to have the active/inactive methods immediately
    reflect that a timer has been set, rather than waiting for the start of
    the next pass.

    - Jukka Br updated lib/site/hardware/iButton/Connection.pm to set some
    port timings to improve iButton reliablity. Since this broke things for
    some people, this is only enabled with parm ibutton_tweak=2.

    - Norm Dressler noticed the 'duplicate key' check in lib/X10_MR26.pm was
    set to high at 1.5 seconds. Added a mh.ini MR26_multireceive_delay,
    defaulting it to 400 (.4 seconds).

    - Fixed a windows bug when you have duplicate file names with different
    cases (e.g. xAP_weather -vs- xap_weather).

    - Added the xAP/xPL module as part of bin/mh, rather than user code. If
    you don't want the xAP/xPL ports open, use mh.ini parm xap_disable = 1 .

    - Added a device option to the display function, so we can send display
    data to specific displays. If used, a user definable display_devicename
    function will be called (e.g. display "device=alpha hi" will call
    &display_alpha).

    - Enabled display_app parm, like we had for speak_app, so we can control
    display parms in common code. For example, I can display bingo numbers
    to our nice big Alpha LED with this parm: display_apps = bingo =>
    device=alpha

    - Added mh/bin/mhc and mhc.bat, the scripts I use to created the
    compiled mhe binaries on linux and windows with the Par compiler.

  Version 2.91 posted on 06/06/2004
    Version 2.91 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Kirk Bauer created code/public/whole_house_audio_speech.pl and
    whole_house_audio_musica.pl for for distributing speech and music using
    multiple sources and multiple destinations. Lots of good documentation
    here: http://www.linux.kaybee.org:81/tabs/whole_house_audio/

    - Dominique Benoliel created web/bin/weather_graph_zoom.pl and added a
    ia5 Weather -> Weather Station -> Weather Zoom option for creating
    custom sized graphs for any date range.

    - Steven Lee created lib/Logger.pm. See the top of the file for
    examples.

    - Amauri Viguera and I created mh/web/bin/rss_logs.pl for creating RSS
    feeds from various mh logs. For example, here is my speech log feed:
    http://misterhouse.net:8080/bin/rss_logs.pl?speak . RSS feeds are a
    popular way for various 'news aggregators' to track multiple sources of
    info. To allow access from external readers, add rss_logs.pl to your
    data_dir/password_allow file. See the rss_logs.pl header for more info.

    - Updated lib/CID_Server.pm to enable sending of caller ID data to xAP
    and xPL clients. This will be enabled if you enable
    code/common/test_xap.pl and callerid.pl. Tested with the nifty new xAP
    desktop application which displays various bits of data on windows
    desktops, available via http://www.xapautomation.org .

    Bug Fixes and Other Changes:

    - Brian Ujvary updated lib/USB_UIRT.pm to close cleanly on mh
    exit/restart.

    - Chris Barrett noticed a problem with common/telnet.pl closing a client
    connection.

    - Brian McKissick updated bin/alpha_page to support Arch Wireless
    (one-way and two-way) pagers.

    - Kirk Bauer updated lib/AlsaPlayer.pm, PlayList.pm, and
    common/mp3_alsaplayer.pl. Added the ability to stop/restart alsaplayer
    process and set the volume better.

    - Sean Walker tweaked web/bin/photo_search.pl .

    - Doug Nakakihara and Larry Roudebush noticed a commented out line in
    common/callerid.pl caused rejected calls not to get hung up.

    - Kirk Bauer added a "Create" button to the USB-UIRT Learning web
    interface, which lets you select an exiting function, modify one or more
    parts of it, type in the new name, and then click "Create". David
    Norwood fixed a bug in USB_UIRT.pm that was corrupting two part UIRT
    codes imported from Girder.

    - Switched str2time from the HTTP version to the Date::Parse version, so
    we can parse more time/date strings more reliably.

    - Added offhook/onhook set options to lib/Telephony_Interface.pm and
    switched to these from direct serial port calls in
    code/common/callerid.pl.

    - Chris Barrett added File_Item exist and exist_now methods for
    detecting if files exist.

    - Scott Reston noticed a 2.88 bug that disabled X10_Item level from
    returning the proper light level.

    - Chris Barrett updated code/common/telnet.pl to add configurable
    "welcome" and "exit" banners, a built-in "whoami" command that returns
    either "admin", "family" or "guest", changed the the admin prompt to
    "mh#" and for the other 2 levels it is "mh>", and changed the "exit"
    command to now drop you back to your previous level (e.g. guest -> admin
    -> guest).

    - Updated perl par compiler from 0.80 to 0.83.

    - Updated lib/site/net/AOLIM.pm from 1.4 to the latest 1.6 version.

  Version 2.90 posted on 05/02/2004
    New Features:

    - Added slimserver_protocol=xAP option for common/display_slimserver.pl.
    This uses the xAP SlimServer Connector from: http://www.xapframework.net
    to display data to Slim devices. This program allows for big and
    brightness controls, and eventually will capture IR data (slimp3 -> xAP
    traffic -> mh), even for many non-slim IR remotes.

    - Jim Duda created common/camera_gphoto2.pl for downloading photos from
    digital cameras using ghoto2 (linux only)

    - Kirk Bauer created lib/VirtualAudio.pm which alows you to create
    virtual audio sources and route them to a physical multi-zone audio
    system. For example, different playlists can be routed to different
    rooms.

    - Kirk Bauer also created common/mp3_alsaplayer.pl, which adds support
    for Alsaplayer the same way it exists for XMMS/Winamp added some new
    functionality to lib/AlsaPlayer.pm.

    - Amauri Viguera created common/tv_btvwin32.pl for interfacing with
    SnapStream's "Beyond TV" PVR software.

    Bug Fixes and Other Changes:

    - Neil Wrightson noticed that the windows web server was looking for
    mh.exe rather than mhe.exe when forking big files.

    - Neil Wrightson also noticed that a code_dir path with multiple dirs
    would mess up some common code file member (menu.pl, trigger.pl,
    outlook.pl, and internet_irridium.pl).

    - Steve Switzer fixed a 2.89 typo in weather_aws.pl.

    - Chris Barrett fixed Holiday notices for different date_formats and
    fixed year based Holidays.

    - Chris Barrett also noticed a 2.89 bug in new_minute.

    - Chris Barrett added an auto-refresh to the rrd weather graphs.

    - Steven Lee updated Generic_Item property_changed to also trigger if
    the old or new value was undefined.

  Version 2.89 posted on 04/25/2004
    Version 2.89 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Dave Hall created code/public/robot_er1.pl for interacting with the
    Evolution Robotics ER1 robot: http://www.evolution.com/er1/

    - Created code/public/iButton_temps.pl as an alternative way of reading
    iButton temperatures if the built in mh code is not working reliably. It
    uses the digitemp binaries (windows or linux) from
    http://www.digitemp.com

    - Added 'Email daily comics' to common/comic_dailystrips.pl. Also added
    'Email xxx weather chart' commands to common/weather_rrd_update.pl.
    These both use html email, so the images are displayed without having to
    open them, just like in all those pesky spam emails. You can have these
    sent on a daily basis with something like this:

      run_voice_cmd 'Email daily comics' if time_cron '2 5 * * *';

    - Created web/bin/list_images.pl to list recent images from a directory
    of images (e.g webcam snapshots). Here is an example page:
    http://misterhouse.net:8080/ia5/security/index.html

    - Updated bin/mh.bat to use the newer, par compiled, mhe.exe. Dropped
    the older perl2exe compiled mh.exe from the misterhouse_win_###.zip
    package. Also updated the perl par compiler to version 0.80 on linux and
    windows. As a result, perl58.dll is no longer required on windows.

    - Steve Switzer created code/common/speech_clash.pl which will re-que a
    speak event if speech is currently in progress. This can help speech
    engines that do not have built in speech ques, so that speech is not
    lost or overlapped.

    Bug Fixes and Other Changes:

    - Steve Switzer fixed the tv configure script
    web/bin/set_parm_tv_provider.pl to work on unix boxes without bin/mh it
    the path var.

    - Craig Schaeffer fixed Lynx10PLC when used through an mh proxy.

    - Kirk Bauer updated lib/Musica.pm, PlayList.pm, AlsaPlayer.pm, and
    Weeder_Light.pm.

    - Added a Play_parms hook, for modifying play parms before play calls.

    - Craig Schaeffer updated aol im buddy logon messages to be less
    verbose.

    - Chris Barrett fixed a security issue with web/bin/browse.pl

    - Jim Duda updated Process_Item to add methods set_killsig and runtime
    to allow for setting of "kill" level and querying process runtime.

    - David Norwood updated common/internet_iridium.pl to work if
    deactivated/reactivated.

    - Craig Schaeffer enabled play nolog => 1.

    - Dennis Hennen added a Group remove method.

    - Lincoln Foreman noticed that new_second (and new_minute etc) did not
    work for some intervals like 35.

    - Jason Sharpee noticed a 2.88 bug where target was lost in respond
    commands.

    - Clive Freedman enabled the mh.ini mail account_timeout parm.

    - Chris Barrett added net_mail_send -priority option.

    - Added a no_speak parm to speak, so we can add speak_parm hooks that
    abort speaking.

  Version 2.88 posted on 03/21/2004
    Version 2.88 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Steven Lee and I updated Generic_Item to use Tie::Hash so we can
    detect changes to any object property. We now use this with a
    property_changed method in X10_Item that will call set_level to more
    accuratly set the level attribute whenever the object state is changed.

    - Created a large (30 meg) file of optional files (mainly sound files)
    here:
    http://misterhouse.sf.net/misterhouse_misc.zip>misterhouse_misc.zip . It
    currently has the 40 west(minster) and cuckoo chimes, about 60 fun .wav
    files, and about 65 halloween .wav files.

    - Robert Rozman sent code files common/mythtv_osd.pl and xosd.pl as
    examples of display data to Freevo or Mythtv GUIs using xosd.

    - Kirk Bauer created lib/Musica.pm to control the Musica whole-house
    audio system by Netstreams over the RS232 port. This system has provides
    6 zones and 4 sources with very nice keypads: http://www.netstreams.com

    - Kirk Bauer created lib/AlsaPlayer.pm which allows for the creation and
    control of alsaplayer processes, and Playlist.pm which manages lists of
    music files. Documentation is at the top of those modules.

    - Kirk Bauer created lib/Weeder_light.pm which allows you to monitors
    and controls a light through Weeder boards.

    - Pete Flaherty, with some help from David Norwood, updated the MP3
    Jukebox page to include a nifty new Song Info popup button.

    - Dominique Benoliel updated the common/weather_rrd_update.pl script
    with a bunch of updates, including a new mh.ini parm to allow for
    labeling of the various graphs. mh.ini parms are listed at the top of
    the code file. For best results, either delete your old
    data_dir/rrd/weather.rrd file or rebuild it with
    code/public/csv2rrd_weather.pl

    Bug Fixes and Other Changes:

    - Brian Ujvary made some minor updates to lib/USB_UIRT.pm and
    IR_Utils.pm .

    - Ross Towbin updated common/barcode_scan.pl to allow for case senstive
    data and computer checkdigits for UPE codes.

    - Nick Maddock fixed a bug in the time_idle method (was true only when
    the object was idle for the specified time).

    - Added a Speak_parms hook, for modifying speak parms before speak
    calls.

    - Scott Reston and I added a X10_Item preset2 option. This will add ON
    after any preset command, to de-select the module so it will not be
    effected by unrelated subsequent X10 commands.

    - Pete Flaherty updated weather_iB_OWW_client.pl to update wind chill
    based on average/peak and to fix find direction data.

    - Bill Young updated lib/X10_W800.pm to work better with noiser RF data.

    - Bill Young updated lib/RF_Item.pm to re-organize how devices are coded
    by breaking it into various lib/X10_RF*.pm modules.

    - Kirk Bauer added get_system_state to lib/RCSsTR40.pm and sent in
    mh/web/bin/hvac.pl as an example of a page to drive it.

    - Jeff Pagel noticed un-needed debug errata coming out of
    internet_mail.pl.

    - Pete Flaherty updated common/audreyspeak.pl to avoid doublespeak.

    - Pete Flaherty updated weather_iB_OWW_client.pl to align the variables
    with RRD graphing.

    - Fixed a bug with the default sound card gettting lost with the
    voice_text=MS engines.

    - Kirk Bauer allow Timer_Item repeat values of -1, to allow it to repeat
    forever.

    - Updated mh/web/display_map.pl to use map servers from aprsworld.net,
    since the vicinity.com maps seemed to be disabled now.

    - John McCaskey noticed that set_by was not set correctly in events that
    set the same item more than once in the same pass.

    - Chris Barrett add mh.ini parm season_starts, so non-US people can pick
    the correct local season start date.

    - Craig Schaeffer enabled a tv_lable mh.in parm in common/tv_grid.pl

    - Paul Estes added some more states to RCS_Item.pm

    - Chris Barrett noticed that a mh.ini entry of password_allow_clients =
    1.2.3.4 would allow clients of 1.2.3.41 through. We fixed the regular
    expresion test so it is now anchored, so if you had an entry like
    192.168.0. you will want to change it to 192.168.0..+

    - Fixed a bug in barometric pressure in common/weather_upload.pl, when
    $Weather{BaromSea_hg} was not available.

    - Steve Switzer sent in code/public/monitor_im_status.pl as an example
    of monitoring an im buddy status.

    - Lee ? sent in code/public/x10_battery_charger.pl as an example of how
    to cycle a battery charger with an X10 module.

    - Pete Flaherty reformated the web ia5/outside/outside/sunmoon.shtml

    - Bazyle Butcher sent in code/public/wintvcapture.pl as an example of
    using sendkeys to the WinTV program.

    - Kirk Bauer updated the occupancy tracking and automatic/predictive
    lighting modules to fix some bugs and some more timers.

    - David Norwood updated Process_Item to kill previous processes if
    restarted before the previous process was finished.

    - Joe Blecher fixed handy_net_utilites.pl to break up longer messages
    send to AIM clients. He also updated various list commands in
    common/mh_control.pl to use respond instead of display, so they work ok
    through im requests.

  Version 2.87 posted on 01/31/2004
    Version 2.87 was just uploaded to:

      http://misterhouse.sf.net/download.html

    New Features:

    - Dominique Benoliel created common/weather_rrd_update.pl to store and
    graph weather data via a RRD database. The mhe compiled versions of mh
    should have the RRDs.pm module enabled. Non-compiled users can install
    RRD with instructions at the top of weather_rrd_update.pl. You can view
    the new graphs via the ia5 -> Outside -> Weather Station page (here is
    mine: http://misterhouse.net:8080/ia5/outside/weather_graph.shtml )

    - Nick Maddock replaced mh/code/public/alarm_concept.* files with
    mh/code/public/concept_* for interfacing to the Concept 4000 alarm
    panel.

    - Kirk Bauer updated web/bin/floorplan.pl and made a bunch of changes to
    the occupancy/presence modules. Changes are documented in the comment
    section at the top of each of the .pm files.

    - Steven Lee updated lib/X10_Item.pm X10_Switchlinc to Reports the
    state, level, and state_level appropriately. Also, 0% to 100% are
    represented correctly, supports response from status request (2-way
    only), and sets state/level when switch is pressed (2-way only).

    - Bob Hughes and Joel Davidson sent in example code for snapping
    pictures using the linux v4lctl program, saved as public/webcam_bob.zip
    and webcam_joel.zip.

    - Steve Switzer updated the web/bin/phone_in.pl and added
    web/bin/callerid.pl to allow for web based editing of
    phone.caller_id.list.

    - Chris Barrett added support for a backup CM11. Point to it with the
    mh.ini cm11_bak_port.

    - Chris Barrett updated lib/RF_Item.pm and X10_RF.pm to support Digimax
    210 thermostat via a W800RF32. Unlike the other RF devices the Digimax
    has a 4 byte ID code. His .mht entry for the unit is: RF, A9EF, Digimax,
    Thermostat

    - David Norwood updated common/internet_earthquake*.pl to use Net::FTP
    instead of finger, which was recently disable due to a security filter
    on the USGS site. He also updated them to download images of where the
    latest quakes are and to use triggers for scheduling.

    - David Norwood updated common/stocks.pl to announce price changes that
    exceed the threshold specified with the stocks_thresholds mh.ini parm
    (defaults to 5%).

    - David Norwood updated the common/mp3* code so xmms now recognizes an
    mp3_player_hide ini parameter to hide the main window. This is useful if
    you are using the xmms coverviewer plug-in. He also updated the winamp
    mp3_play and mp3_queue routines so they will work remotely and and
    disabled the $Save{NowPlaying} variable because it was a resource hog.

    - Chris Witte refreshed the sourceforge cvs repository, so you can now
    get the full src distro with a cvs checkout.

    Bug Fixes and Other Changes:

    - Bill Young noticed a casesensitive problem in common/x10_rf_relay.pl

    - Larry Roudebush updated mh.ini parm caller_id_file to use
    $config_parms{data_dir} instead of $Pgm_Root/data

    - Larry Roudebush and I merged the code/common/reject_caller_list.pl and
    web/bin/rejectcall.pl files into web/bin/phone_list.pl and pointed to
    that script with a new 'Caller List' button to the ia5 phone menu.

    - Kirk Bauer sent in his linux mh start scripts, saved as
    mh/bin/misterhouse_kirk*.rc

    - Robert Mann found a 2.86 problem in lib/W800RF.pm

    - George Clark created a time_between function.

    - Kirk Bauer updated lib/RCSsTR40.pm to fix a setpoint changed bug and
    to track run-time for logging/analysis purposes.

    - Brian Ujvary updated lib/IR_Item.pm to support the usb_uirt interface.

    - Kirk Bauer suggested we unset set_with_timer events if the object is
    set before the timer is expired.

    - Pass the $source parm to Serial_data hooks.

    - Bob Hughes fixed Query_Barometer in X10_BX24.pm. Gaetan Lord updated
    it to detect security code, standardize debug messages, and include
    security information in the doc.

    - Pete Flaherty added wind chill calculations
    common/weather_iB_OWW_client.pl .

    - Updated the web server to honor mh.ini parm html_refresh_rate on the
    widget pages.

    - Chris Barrett updated Holiday anouncements to honor ddmm format.

    - Kirk Bauer noticed that a date only time_now string would get
    mis-interpreted and would fire every day.

    - Fixed a 2.84 bug where run_after_delay would not work with subroutine
    calls.

    - Jim Duda fixed a 2.86 problem with W800 proxy data (serial datatype
    parm was not being passed for proxies).

    - Scott Johnson updated lib/site/Hardware/iButton/Device.PM so
    read_temperature works for the 18B20 (1822) and added subs to read and
    write to the DS2408 (Device Type 29).

    - David Norwood updated common/weather_aws.pl to only update values if
    the downloaded web page has a timestamp and it's different from the
    previous one and added "miles per hour" the monitor_weather wind gust
    announcement. He also made minor changes to the UIRT, photo_index,
    http_server, and tk_photos code.

  Version 2.86 posted on 12/21/2003
    New Features:

    - Kirk Bauer created lib/RCSsTR40.pm for the RCS TR40 Theormostate:
    http://www.resconsys.com/products/stats/serial.htm

    - Kirk Bauer created lib/Light_Restriction_Item.pm and updated most of
    the other Base_Item objects to improve occupancy monitoring and allow
    for on-the-fly object reconnection.

    - Jason Sharpee created lib/Telephony_xAP.pm, a xAP Listener for
    Telephony Events. He also created bin/xAP-info.pl, a stand alone program
    to that interfaces to the Asterisk phone system (
    http://www.asterisk.org ) to send incoming and outgoing phone data as
    xAP data.

    - Lennart Lopin created code/public/games_chess.pl for a voice interface
    to chess.

    - Richard Koch created code/public/x10_priority.pl to create a
    x10_priority_set function method for allowing high priority X10 events
    to get prioritized to get sent first.

    - Walter Leemput created code/public/phonelogger.tar.gz to allow a linux
    box to monitor DTMF, callerid, and phone messages via a soundcard.

    - Richard Koch used the Win32 MemMap module to enable the web http
    server to serve large files better, without causing mh pauses on Windows
    (Unix did not have this problem). To enable, use -http_fork memmap.
    Instead of passing the large html file to the forked process via a file,
    it will pass it via a memory map.

    - Paul Estes updated lib/ncpuxa_mh.pm to support the SECU-16IR module
    for transmitting infrared to multiple zones. David Norwood added support
    for setting relays on multiple modules.

    - Larry Roudebush updated callerid.pl to honor a rejected callers list
    and added code/common/reject_caller_list.pl and web/bin/rejectcall.pl to
    manage that list.

    Bug Fixes and Other Changes:

    - Jason Sharpee updated Door_Item.pm, Occupancy_Monitor.pm, and
    Presence_Monitor.pm.

    - Jim Duda updated common/proxy_client_server.pl to be more robust when
    dealing with dropped clients.

    - Kirk Bauer updated lib/Voice_Text.pm to reconnect to the festival
    server if it got restarted and to strip out sable tags, since they are
    not supported with the server.

    - Robert Hughes reduced the number of earthquakes saved in
    common/earthquakes*.pl from 1000 to 15, to lower the size of the
    data_dir/save file.

    - David Norwood updated common/comic_dailystrips.pl to use triggers to
    control when it runs.

    - David Norwood added an internet radio feature to the MP3 web
    interface. Added a mp3_running routine to the winamp script so it will
    work with the mp3 web interface in mh/web/music.

    - David Norwood updated common/weather_aws.pl so weather_monitor.pl
    doesn't report gusts for hours after they have occured.

    - Jason Sharpee made some presence updates to Light_Item allow countdown
    timer to be "restart"ed in Timer_Item.

    - Timothy Spaulding noticed a 2.84 bug in processing proxy serial
    barcode data.

    - Robert Hughes and I enabed X10 BX24 proxy support by fixing a case
    sensitvity problem with proxy interface names.

    - Brian Rudy and Gregg Liming noticed a 2.84 problem where Serial_Item
    x10_rf_relay.pl data was not uppercased, so was not parsed.

    - Tom Valdes updated common/phone_logs.pl to process Audrey ACID
    callerid data by allowing for an optional 1- prefix.

    - Chris Barrett added a ping function to the CM11.pm module.

    - Sean Walker fixed the unix bin/house command.

    - Chris Witte updated the mht->xml conversion code to use XML::Twig.

    - Alan Simmonds created some smarter 'debounce' code for the X10 RF
    modules, to help reduce bad data due to noise. The X10_MR26, X10_W800,
    and X10_W800RF modules will now process data only if it is heard twice.

    - Paul Estes updated the ia5 phone interface to access Asterisk's
    vmail.cgi. See comments in the mh.ini phone_voicemail* parms for
    details.

    - Added a Run option to the Triggers menu (ia5 Events -> Alarms).

    - Updated $format1 in CID_Announce.pm to announce number, if it exists,
    but the number does not.

    - Create a net_socket_check function and called it from mp3_winamp.pl,
    so we can check first to see if a winamp httpq socket is open before we
    try to get data from it. mp3.pl was calling get_playlist every 10
    seconds, which would cause frequent pauses in mh if winamp was not
    running.

    - Updated the 'wind gust' monitor in common/weather_monitor.pl to be a
    little smarter.

    - Added a photo_filter2 parm, to allow small web photos to point to
    larger, original photos in a different directory.

    - Updated X10 status request to fill in set_by with 'status', instead of
    ''

    - Skip merging of X10 data if the source is fast RF x10 data, so we
    don't mix our X10 data streams.

    - Updated X10 RF source data so set_by is 'rf' instead of 'serial'.
    Enabled tie_filter to use this so we can filter out rf X10 data if
    needed on some items.

  Version 2.85 posted on 11/30/2003
    Version 2.85 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Chris Witte created lib/table_A2XML.pm mht -> xml translator and
    updated lib/read_table_xml_A.pl. By default this code is not enabled, so
    mh will still translate mht files -> mhp files as usual. If you use: mh
    -table_type xml, it will translate mht files -> xml files, then process
    xml -> mhp instead.

    - Paul Estes created code/common/mp3_slimserver.pl, to use with mp3.pl
    with devices from http://www.slimdevices.com. I renamed
    common/slimp3_display.pl to display_slimserver.pl and renamed the parms
    it use to be the same as those in mp3_slimserver.pl.

    - Lennart Lopin created code/common/internet_weather_metar.pl for
    getting international weather data from noaa.gov

    - Richard Koch created x10_priority.pl ...

    Bug Fixes and Other Changes:

    - Included Digest::HMAC_MD5 in the mh/lib/site, used in the new 2.84
    mail authentication code.

    - Sam Levine noticed the 2.84 windows mh.exe binary would not start.

    - Craig Schaeffer noticed a 2.84 bug where dead proxies would not come
    back to life unless mh was restarted.

    - Richard Koch noticed login passwords were being stored in browser
    history lists.

    - Robert Hughes created code/public/sports_score_bball.pl for getting
    basketball scores.

    - Brian Ujvary updated mh/lib/site_win58 with new modules to enable the
    new USB_UIRT windows support.

    - Michael Hughes noticed mh would not start if the new common/mp3.pl was
    enabled, but mp3_winamp.pl or mp3_xmms.pl was not.

    - Sean Walker updated various ia5 web pages to point use a common
    html_style link. Deleted the duplicate default.css files, changing the
    default background color from wheat to white.

    - Craig Schaeffer updated lib/Lynx10PLC.pm to add proxy support, single
    X10 commands, and improved extended code support.

    - Enabled the common/organizer.pl script by default, since it is needed
    by the calander web pages.

    - Steve Switzer updated bin/misterhouse.steve-fedora.rc, a startup
    script example for fedora Linux.

    - Kirk Bauer updated bin/mhl and bin/mh_proxy to handle arguments
    better.

  Version 2.84 posted on 11/23/2003
    Version 2.84 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Sean Walker is working on interfacing to the Sphinx2 VR engine on
    linux. Instructions are at http://sean.surfmy.net/projects/mh/index.html

    - Amauri Viguera added support for integrating mh with myHTPC (Home
    Theater PC menuing program for TVs). Details are here:
    http://www.viguera.net/other/projects/myhtpc/myhtpc.readme.html

    - Pete Flaherty and Ross Towbin added SMTP authentication for email
    checking. Set a new net_mail_*_password_encryp mh.ini option. Pete also
    added a new net_mail_*_ping option you can set to off if your mail
    server is not pingable.

    - David Norwood created time_random_offset to code a random time around
    a time_now formated time. For example, to fire a random time within 60
    minutes after 1:20 pm:

         speak "random test" if  time_random_offset '1:20 pm', 60;

    - Jim Duda created code/common/proxy_client_server.pl to provide a
    meshed networking interface between a set of misterhouse computers.

    - Kirk Bauer created lib/Fan_Control.pm for controling Hampton Bay RF
    ceiling fans. He has instructions here:
    http://www.linux.kaybee.org:81/tabs/fancontrol/

    - Created code/common/email_motion.pl to copy images from email sending,
    motion triggered netcams to a folder for remove web viewing. I now have
    my garage and driveway camera images logged to here:
    http://misterhouse.net:8080/web/motion/

    - Created code/common/slimp3_display.pl to display spoken text to a list
    of slimp3 players ( http://www.slimdevices.com )

    - Jason Sharpee created code/common/xAP_command.pl, a xAP server that
    will run requested commands and send respond results back.

    - Jason Sharpee created code/public/asterisk_jason* and Robert Mann
    created code/public/asterisk_robert*. These code files interfaces mh to
    the Asterisk phone system ( http://www.asterisk.org ). Jason code uses
    the xAP protocal to allow you to send commands to the mh via touch tone
    (DTMF) phone menus. Roberts uses a TCP connection to do CallerID, DTMF,
    and External Commands.

    - Dan Uribe and David Norwood added functionality to the Winamp and XMMS
    mp3 scripts including a new web interface in mh/web/music.

    - Sean Walker and I updated common/internet_logon.pl to use a new %Flags
    hash to control what commands to fire when getting internet data.

    - David Norwood added a new mechanism for scheduling tasks using
    triggers that works for both dialup and broadband internet users. He
    created internet_dialup.pl as a replacement for internet_logon.pl and
    updated stocks.pl as an example of how to create a trigger that is aware
    of an internet connection. If this works ok for everyone, we will update
    other scripts that grab data from the internet.

    Bug Fixes and Other Changes:

    - Jason Sharpee updated his new set of Base_Item objects as well as a
    small Timer.pm update.

    - Gregg Liming update the Celstia TTS option to allow for aliased voice
    names.

    - Updated dailystrips comic script from 1.0.25 to 1.0.28

    - Added a voice_text_card option, so you can pick the default sound card
    used. Also allowed for text card names (e.g. audigy or live) in addition
    to the numeric card name (e.g. card=2) in the
    voice_text_cards/voice_text_card parms and speak card= options
    (currently only for Windows).

    - Robert Mann made some formating changes to the web phone scripts.

    - David Norwood created code/examples/x10_unit_relay.pl as an example of
    how to relay an X10 signal

    - Nick Maddock noticed we forgot to implenent the Generic_Item.pm set_by
    method, as specified in the mh doc.

    - Craig Schaeffer fixed an obscure bug where mh would mis-trigger M1 and
    M2 codes when processing PRESET_DIM1/2 data.

    - Craig Schaeffer also noticed an X10 proxy bug where merged data would
    get process twice.

    - Updated bin/report_weblogs to parse the current mh http_server format.

    - Jason Sharpee fixed an 'Error in respond: respond=$object' error in
    sub respond in bin/mh.

    - Srdan Lasic noticed &speakify_numbers was only returning the suffix
    (e.g. rd instead of 3rd). He also noticed that we didn't honor
    date_formats when parsing mh.ini holidays parm.

    - Added a speak_mh_room parm, so you can turn off speech to the main mh
    box when using speech proxies. For example, if you use
    speak_mh_room=study, then speech would go to the mh soundcard only when
    speak rooms=all or rooms=study.

    - Jason Sharpee noticed we did not propogate set_by when using the
    set_with_timer method.

    - Kent Noonan and I enabled the set_casesensitve method for
    Serial_Items, so we could send out serial data without it getting
    lower-cased.

    - Kirk Bauer sent in code/examples/x10_flash_light.pl as an example of
    how to flash an X10 light.

    - Pete Flaherty added a ini parameter html_refresh=xx, so you can have
    web page created by web/bin/list_items.pl automatically refresh after xx
    seconds.

    - Paul Estes added support for the NCID Client/Server Network Caller ID
    Package ( http://ncid.sourceforge.net/ ) in code/public/callerid_ncid.pl

    - Added a &list_groups_by_object function, so we can find all groups an
    object is a member of. See code/examples/list_groups.pl for an example.

    - Added export LANG=C to bin/mhl, to fix a memory leak problem many
    RedHat 8 users were seeing.

    - Gregg Liming fixed a voice mapping bug for the Cepstral engine=theta
    in lib/Voice_Text.

    - Steve Switzer sent in bin/misterhouse.steve-fedora.rc, a startup
    script example for fedora Linux.

    - David Norwood took out the $SIG{CHLD} in lib/Voice_Text.pm, since it
    is handled in bin/mh.

    - Robert Hughes updated code/common/internet_weather.pl to detect calm
    winds.

    - Craig Schaeffer noticed a bug where mh could loop when parsing a
    specific X10 string.

    - Chris Barrett updated lib/handy_net_utilites.pl to enable these new
    mh.ini timeout parms: net_ftp_timeout, net_aim_timeout,
    net_mail_*_timeout, net_ping_timeout

    - Steve Switzer posted some magic javascript to refresh the Login icon
    (top frame) when entering the web password.

    - Allow for speak card= parm to specify a comma delimted list of cards,
    rather than only one card at a time, to speak to more than one card at
    the same time.

    - Fixed a 2.83 bug that would ignore the password_allow_file and
    disable_command files.

    - Allow for no_log = http_local to disable logging local http hits.

    - Timothy Spaulding added X10_TempLinc to lib/X10_Items.pm to support
    this X10 temperature sensing device: http://www.smarthome.com/1625.HTML

    - Robert Hughes and I updated http_server.pl to add <br> html breaks on
    new lines by default, for html returned data (e.g. the eartquake and
    news data displays better now in web browsers).

    - Robert Hughes and I enabled the no_load parm to also specified menu
    files.

    - Updated bin/get_tv_grid for a recent zap2it change that disabled the
    -provider_name option

    - Craig Schaeffer made some minor updates to RCS_Item.pm

    - George Clark updated Tk calls to be compatable with the latest Tk
    modules (adding a - prefix to option names).

    - David Norwood modified run_after_delay routine so you can run it
    multiple times without stomping on the same timer.

    - David Norwood added a new mechanism for specifying your own sound
    mixer for setting the volume level.

    - David Norwood added the ability to report the amount of rainfall in
    the past X minutes, hours, days, weeks, or months. He also added an
    option to the aws script to ignore rainfall, since he has his own
    raingauge.

    - David Norwood fixed a couple problems in the Ocelot code related to
    receiving X10, IR, and IO signals.

    - Brian G. Ujvary and David Norwood updated USB_UIRT to add support for
    the Windows DLL driver.

  Version 2.83 posted on 09/01/2003
    Version 2.83 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Thomas Vogl has started a MisterHouse Journal' at
    http://www.trvonthe.net/mh-journal/ where he cronicles his experiences
    of setting up MisterHouse on Linux Redhat.

    - David Norwood created code/common/mp3.pl, mp3_winamp.pl, and
    mp3_xmms.pl. He reorganized the winamp and xmms mp3 scripts to be easier
    to setup and maintain. There was a lot of duplication in the winamp and
    xmms code and some things like playlists were handled differently.

    - Sean Walker added an option to have proxies regsiter themselves with
    the main mh, to allow for an optional security, and for better starting
    and stopping of proxies.

    - Gregg Liming enabled support for a new TTS engine from Cepstral:
    http://www.cepstral.com . $30 per voice, for either Linux or Windows
    (only tested on Linux so far). Set mh.ini parm voice_text=theta and
    modify voice_text_theta to point to the theta binary.

    - David Lounsberry modified his vv_tts wrapper to wrap around either
    viavoice, festival, or the new Cepstral TTS engine. Use
    vv_tts_engine=festival or vv_tts_engine=theta.

    - Steve Switzer created lib/PAobj.pm and common/pa_control.pl to enable
    the rooms= speak and play parm to target specific rooms via a relay
    controled PA system. See comment at the end of pa_control.pl for example
    .mht entries.

    Bug Fixes and Other Changes:

    - Ross Towbin updated lib/X10_W800RF.pm to fix a case typo and increased
    a delay so a single press from a remote isn't processed multiple times.

    - Steve Haehnichen fixed lib/Lynx10PLC.pm to work correctly with
    Lynx10PLC_XMIT_PWR values of 94 -> 100.

    - Robert Mann added line 1/2/etc support to common/phone_logs.pl and
    web/bin/phone_in.pl

    - Wally Kissel noted the File_Item method index should have been
    get_index in doc/mh.pod

    - Brian McKissick fixed the web code browser on linux and noted a
    missing frameset tag in the new my_mh/index.html file.

    - Chris Witte updated mh so it no longer has to be re-started to
    activate a password change and he updated the 'password accepted'
    message.

    - Chris Witte and I updated the tie_event method to correctly enable
    get_set_by for objects set by tied events.

    - Jaco Botha updated common/internet_irridium.pl to work with
    date_format=ddmm, rather than the default of mmdd.

    - Steve Switzer added a link to results of web/bin/phone_search.pl

    - David Norwood added info and links on IR interfaces to the hardware
    section of docs/mh.pod.

    - Sean Walker and I updated enabled the File_Item set_watch method to
    set the respond target field and updated common/tv_info.pl to use
    respond instead of speak so we can better query tv show info from other
    locations.

    - Gregg Liming noticed that 2.82 could cause volume to muted on startup.

    - Richard Phillips updated code/public/mp3_control_xmms.pl to auto-start
    xmms if it isn't already running.

    - Craig Schaeffer fixed a cleanup problem in
    common/comic_dailystrips.pl.

    - Jon Boehm sent in common/speak_mac.pl, to enable speech on the Mac
    (support was there since 2.76, but I forgot to include this file).

    - Steve Switzer updated the setup menus with logon menus if accessed by
    non-admin users.

    - Scott Johnson updated lib/Stargate.pm to echo Stargate generated X10
    commands to MisterHouse.

    - Steve Switzer updated lib/Telephony_Interface.pm to allow 'call from
    number' instead of 'call from unknown' for NetCallID calls of known
    numbers, but unknown names.

    - Gregg Liming suggested we update lib/Telephony_Interface.pm to ignore
    callerid data that has neither name or number.

    - Steve Switzer added 'Get AWS weather data' to common/weather_aws.pl

    - Richard Phillips discovered a case where an mh restart would fail if a
    "Can't use string ("1") as a HASH ref" error.

    - David Norwood and Steve Switzer updated bin/get_tv_grid to create
    non-cachable 'TV today' pages.

    - Moved the 'proxy is dead' check into bin/mh.

    - Updated common/news_yahoo.pl to store its html page in the ia5 news
    directory.

  Version 2.82 posted on 07/06/2003
    Version 2.82 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Bazyle Butcher created a My MH button for the top of the default ia5
    web page which we use to point to a web page that can be easily
    customized. How To instructions are on the default My MH page. Bazyle
    also added a Twiki button to the 'About MrHouse' ia5 documentation page.

    - Jason Sharpee created a floorplan web script, available via
    http://localhost:8080/bin/floorplan.pl . To enable, add x,y data to your
    .mht items (or use the new set_fp_location method) to show where they
    are in each room group and add x,y,w,h data to new mht GROUP records to
    define how room groups relate to each other. See mh/code/test/test.mht
    for an example.

    - Jason Sharpee created Presence_Monitor, Occupancy_Monitor, Light_Item,
    Door_Item, Motion_Item, Camera_Item, Photocell_Item objects, all
    children of a new lib/Base_Item.pm object. Jason is still working on
    these objects, so we don't have any documentaion or examples yet.

    - Bill Young extracted common code from lib/X10_W800.pm and X10_MR26.pm
    into lib/X10_RF.pm and added support for security devices. Bill created
    RF_Item.pm for a general way to handle TV/VCR RF remotes and X10
    security devices. See RF_Item in mh/docs/mh* . At the same time, Ross
    Towbin created lib/X10_W800RF.pm, which is also for the W800 and
    provides similar function.

    - Denis Cheong enabled a DBI interface, so we can optionally use any DBI
    enabled database server (e.g. mysql) to store miscellaneous mh data. If
    you are not using a compiled mh, install DBI and DBD::mysql (or relevant
    module for your server). Enable with the new dbi_* mh.ini parms and test
    with http://localhost:8080/bin/dbi_table.pl .

    - Created code/common/xAP_news.pl to monitor data from James Traynor's
    new Windows xAP news.exe client, available from from http://mi4.biz .
    Run a seperate news client for each news source you want (e.g. news cnn,
    news reuters, etc) on any Windows computer on your network. You can use
    a xAP_news mh.ini parm to control if new news titles are printed,
    spoken, or displayed for each news source, like this:

       xAP_news = cnn => display, slashdot => speak&display, default => display&print

    - Created code/common/xAP_Weather.pl to monitor James Traynor's new
    Windows xAP weather.exe client, also available from from http://mi4.biz
    . Data will be stored in $Weather{station}{key} (e.g.
    $Weather{egll}{tempf}). To set the standard $Weather keys used in the
    web status line, set mh.ini parm weather_source=station_name (e.g.
    weather_source=egll). To find your station name, go to
    http://www.nws.noaa.gov/tg/siteloc.shtml, then use that when you start
    the program (e.g. weather.exe krst). If you don't specify a code it will
    default to London, Heathrow (EGLL).

    - Lincoln Foreman sent in mh/code/public/pha_k256.pl as an example of
    reading data from Phanderson's K256 kit which can monitor 256 DS1820
    temperature sensors, 8 bits digital IO, and 11 bits of analog IO.
    Available for $50 from http://www.phanderson.com/t64.html

    - Bill Young sent in code/public/weeder_doorbell.pl as an example of
    monitoring and controlling a doorbell with a weeder board.

    Bug Fixes and Other Changes:

    - James Derrick fixed deleting of temp festival sable files.

    - Tom Dunk updated common/audrey_control.pl to fix 'set audrey volume'
    and added various 'Push Audrey Button' commands.

    - James Derrick fixed 'repeat your last command' to not repeat 'I said'.

    - Robert Mann and Edward Brookhouse fixed bin/set_password if no
    .password file existed and updated the web 'Set Password' phrase to
    'Submit Password'

    - Edward Brookhouse added FAQ entries 'Password Managment' and
    'Customizing the TV guide'

    - Ingo Dean changed the default X10_Sensor battery expired warning to
    print_log, rather than speak. If you prefer speak, add this mh.ini parm:
    MS13_Battery_action=speak

    - Joel Berry was having zombie problems on FreeBSD, so we dropped the
    $SIG{CHLD} exclusion we had on FreeBSD in bin/mh.

    - Allowed for setting $mh_volume (in common/mh_sound.pl) to 0, to enable
    muting of all computer sound. It was honoring 1->100, but not 0.

    - Bazyle Butcher noticed that photo_time=0 caused instant refresh rather
    than disabling photo refreshes.

    - Denis Cheong used Tk::CursorControl to hide the cursor in
    common/tk_photo.pl. You can install that Tk module with "ppm install
    Tk-CursorControl" (windows) or "perl -MCPAN -e 'install
    Tk::CursorControl'" (unix).

    - Andrew Drummond spotted a 2.81 problem with browsers (like Audrey)
    that do not pass http port data with their requests.

    - David Norwood updated public/v4l_pvr.pl to add a dbm of recorded shows
    so we don't re-record them and made the record command configurable.

    - Robin Van-Oosten sent in code/public/rrd_graph_web.pl which he uses to
    graph iButtons data stored in RRD (Round Robin Database).

    - Enabled proxy support for the UIRT2 interface.

    - Correctly set the menu defaults for http://localhost:8090/sub?menu_wml
    , menu_vxml, and menu_html. Looks like these got broke a few releases
    ago with a update for the html menus /bin/menu.pl page. These sub?menu_*
    menus would work, but only if you specified a menu to start with (e.g.
    sub?menu_wml(main)). Also now enable the auto-generated mh menu if the
    specified or default menu was not found.

  Version 2.81 posted on 06/01/2003
    Version 2.81 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Jon Upham added iButton DS2405 io button to
    site/Hardware/iButton/Device.pm.

    - Jason Sharpee created lib/Occupancy_Monitor.pm. It counts the number
    of people in a house based on movement detected throughout a graph based
    network of motion sensors.

    - Clive Freedman created city based data/ini/mh.city_name.ini files and
    updated the web iniedit menu to allow for easy location based
    initialization of the mh.private.ini file. Only first time users with no
    private .ini files will see this (move your mh.private.ini or unset
    mh_parms if you want to try it). While we may re-structure this on the
    next release if we decide to break up the .ini file, the idea of city
    based .ini seed files seems like a good one. New or updated mh.city.ini
    files will be most welcomed.

    - Joe Blecher updated lib/Lynx10PLC.pm to add support for Unit Address,
    Extended Code 1, a number of API methods to allow users to access low
    level commands, updates from Craig Schaeffer to support PRESET_DIM[12]
    commands, fixed bug with DIM/BRIGHT command where level was parsed, and
    created common/Lynx10PLC.pl for reporting hourly X10 stats.

    - Created web/bin/button_toggle.pl and updated the ia5 modes menu and
    common/mh_control.pl to add these new objects to track various modes:
    $mode_mh (normal/mute/offline), $mode_security (armed/unarmed),
    $mode_occupied (home/work/vacation), and $mode_sleeping
    (nobody/parents/kids/all). Ron Klinkien created nice
    web/graphics/mode_*.gif buttons for the above object names and states.
    If you use other object names or states and have GD installed, buttons
    will be generated with the state name. The above listed states can be
    overridden with the set_states method, like this:

      $mode_sleeping -> set_states('nobody', 'parents', 'nick', 'zack');

    - Added bin/mh_run and bin/mh_run.bat, which we now call from
    common/get_tv_grid.pl. This will use the compiled mhe or mh.exe it it
    exists, so the script will now run ok on Linux (and Windows) even if you
    don't have perl installed.

    - Renamed the data and web/bin select_code* files to code_select* and
    code_unselect* files. Added mh.ini parms code_select and code_unselect
    so we can easily switch between sets of code files. By default, mh will
    now use code_select.txt which is just the core files from code/common.
    To test many of the common files (like mh used to do by default), run:

      mh -code_select code_select_test.txt

    - Autrijus Tang updated his PAR module so we can now use it to compile
    mh on windows, in addition to Linux. I suspect we will run into issues
    with it, so this release as 2 versions of .exe files in the windows .zip
    file. The standard mh.exe is like in prior releases, perl 5.0 compiled
    with perl2exe. The new mhe.exe uses perl 5.8, compiled with the PAR pp
    script, like we do on Linux.

    - Pete Flaherty posted his a new 03-2 MrAudrey image at
    http://vsa.cape.com/~pjf/MrAudrey.html . This version has a exciting new
    package installer where you can install Audrey applications that he has
    packaged up at his web site with the click of a button from a new
    Package Manager web page. For example, it took me about 30 seconds to
    install nifty new mpgnoph player that I can direct to a shoutcast music
    station using a web browser from any machine on our network.

    Bug Fixes and Other Changes:

    - James Derrick dropped an extra \n in time_date_stamp format=17

    - Fixed the monthly archiving of old print/speak/error logs
    (data_dir/logs/print.log.old). Without this fix, the files were growing
    pretty large (mine was > 100 MB!) and the mh startup could pause a while
    in the 'Archiving previous log files' step.

    - John McCaskey enabled the use of weeder cards on multiple ports
    (normally not needed as weeder cards can share a COM port) by allowing
    for a xyz_process_data=1 mh.ini serial port parm.

    - Updated lib/Serial_Item.pm with the option of a x10_interface mh.ini
    parm, so we can control the default X10 interface.

    - Larry Roudebush sent in code/public/weather_email_breaking.pl for
    anouncing important weather info from email alerts.

    - Jeff Pagel sent in code/public/garage_door_code.pl for monitoring and
    controlling garage doors.

    - Updated web/overlib.js to version 3.51 (it does the popup windows on
    some menus when you hover over commands).

    - Claes Johansson updated lib/X10_W800.pm to support X10RF UR51A remote
    codes.

    - Ron Klinkien updated code/common/monitor_router.pl to support Draytek
    Vigor routers. He also updated bin/monitor_weblog to work with the
    mhsend server when speaking web hits.

    - Richard Phillips updated lib/Weather_wx200.pm to honor the mh.ini
    default_temp=Celsius override.

    - James Armstrong noticed the new lib/X10_W800.pm module would sometimes
    get out of sync with incoming data.

    - Ryan Scott noticed that Voice_Text '[a,b,c]' strings returned a state
    of 1 instead of a,b,c.

    - Steve Switzer improved the web phone search results formating in
    web/bin/phone_search.pl

    - Thomas Stoll added a optonal Audrey_IPs_for_speaking mh.ini parm in
    code/common/audreyspeak.pl and limited the number of .wav files
    generated to 10. He also updated bin/report_weblog to the apache web log
    format he sees in Switzerland.

    - Scott Johnson updated lib/Startgate.pm (again!) to allows reading
    Digital Inputs 9-16 and to fix a problem with DTMF decoding of the
    number 0 through the intercom.

    - Dominique Benoliel updated code/common/weather_upload.pl (uploads
    weather to wunderground.com) to work better with the WMR968 weather
    station.

    - Craig Schaeffer fixed the hourly/daily summary in
    common/monitor_router.pl.

    - David Lounsberry fixed the stop Process_Item method (was killing all
    processes, not just the specified one).

    - Add 'cc' addresses to 'to' address in bin/get_email, so we can filter
    on cc addresses also.

    - Updated the ia5 weather page to use 2 weather_local mh.ini parms,
    which by default are based on the zip_code parm. Dropped the calls to
    the radar image gif and set_parm_weather_local.pl script, as
    wunderground changed their pages so the radar gif is no longer easy to
    get at, and these did not work for non-US users with no zip code.

    - Echo errors in web .pl files to the web browser.

  Version 2.80 posted on 04/20/2003
    Version 2.80 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Autrijus Tang created a new PAR.pm module which allows us to compile
    perl scripts and libraries into one executable binary. If you are
    running with a recent Linux which has a recent libc.so (ls -l
    /lib/libc.so* and look ver a version > 2.2.93, like on RH 8 or higher)
    you can now try the new compiled mhe file in misterhouse-2.80.linux.zip.
    This might be useful if you have troubles with the CPAN installs or if
    you have a older (or newer) version of perl that has some sort of
    problem (e.g. memory leak).

    - Created lib/X10_W800.pm to support the X10 RF -> serial W800
    interface. This is similar to the MR26, but also supports extended codes
    and has a better range. Comparison between the 2 can be found here:
    http://www.wgldesigns.com/comments.htm . Note: Extended codes are not
    yet supported (I didn't have any RF devices that generated them).

    - Created mh/code/common/x10_rf_relay.pl to relay selected X10 house
    codes received from either of the X10 MR26 or W800 RF (Radio Frequency)
    interfaces.

    - Dree Mistrut created Text::LevenshteinXS module, like
    Text-Levenshtein, but implemented in C rather than Perl, so it is much
    faster. If installed, it will be used in the &phrase_match function,
    available as 'Smart command search' on the ia5 search menu. This enables
    non-exact word matches, so for example you can type 'bed light on' and
    it will match 'turn on bedroom lights'. If this module is not installed,
    mh defaults to the previous simple/fast function that matches on exact
    words. On linux, use the CPAN to install (see install doc). On windows,
    it is installed in the mh libs for 5.6, but not 5.0 or 5.8 systems.

    - Created bin/send_email. Tom Vanderpool was having problems when mh
    called &net_mail_send to send email, so we created a stand alone command
    that can be called as a background process. See 'Send test e mail 11'
    for and example.

    - David Norwood and I updated bin/get_tv_grid to be compatable with a
    new tv listings format from zap2it.com.

    - Brian Rudy added support for the iButton DS2450 Quad A/D converter.
    Example in code/public/iButton_DS2450.pl.

    - Neil Wrightson updated the iButton read_switch method in
    lib/site/Hardware/iButton/Device.pm to allow either channel to be an
    input or output.

    - Jason Sharpee sent in code/publice/ivr.pl and ivr.menu as examples of
    his DTFM Interactive Voice Response setup using the Stargate phone
    interface. Updated supporting files are lib/Telephony_DTMF.pm,
    Telephony_Item.pm, Stargate.pm, and StargateJTelephone.pm.

    - Craig Schaeffer created lib/Telephony_Identifier.pm and
    code/common/phone_identifier.pl for talking to the 2+ line
    incoming/outgoing/DTFM Identifier phone line monitor from
    http://www.yes-tele.com/mlm.html

    - David Norwood created a preliminary interface for the USB-UIRT two way
    infrared transceiver. Installing drivers on Windows, Linux and BSD
    requires patches, so contact David for info. See USB_UIRT_learning.pl in
    the common code selector for configuration details. David also updated
    the UIRT2_learning web interface to allow generation of codes based on
    protocol, device and function number.

    - Ron Klinkien created a 'MisterHouse from Scratch' weblog site (a
    collection of links, resources, notes and commentary) here:
    http://mrhousefromscratch.tk .

    Bug Fixes and Other Changes:

    - Roger Bille updated Serial_Item.pm to allow for 'X...' strings in
    non-X10 items.

    - Added a -state option to bin/mhsend to get the state of an object.

    - Richard Phillips and Sean Walker posted docs/faq.html entry 3.4: How
    do get Linux to play more than one sound at the same time

    - Richard Phillips created code/public/mp3_control_x10.pl and
    code/public/mh_restart.pl

    - Peter Woodall noticed we did not have a xcmd_respond function, so
    bin/house commands were not working.

    - Piet Delaney added X10_Sensor motion and brightness options, in
    addition to the existing MS13 option which detects both. See
    mh/docs/mh.html X10_Sensor section for details and examples.

    - Jason Sharpee sent web/bin/video_streamer.pl as an example of how to
    display video from using the Linux streamer program.

    - Andrew McLaren noticed the mh lib/site/File files were pretty down
    level. The newer versions are not compatable with older perls, and it
    looks like all versions of perl have those installed by default, so I
    deleted the mh/lib/File modules. Not sure why we included them in the
    first place.

    - Enabled setupsup for 5.8 win98 users.

    - Added a mh.ini html_wav_format parm to control how the web server
    delivers TTS wav files. Options are bgsound (default for Audrey), link
    (default for Netscape and Mozilla, frame (doesn't seem to work very
    well), and embed (default for all others).

    - Updated Geo::Weather to version 1.2.3 (used by public/weather_com.pl
    to get data from weather.com).

    - Sean Walker updated web/bin/photos.pl to allow for a mh.ini
    photo_back_style parm, so you can specify style stuff like background
    color.

    - Updated bin/set_password to honor the mh.ini password_file parm.

    - Added mh.ini parm voice_cmd_response to control the default response
    to voice triggered commands. The default is 'Ok, %HEARD%', where %HEARD%
    will be replaced by the spoken phrase.

    - Floyd Moore fixed bin/get_tv_grid so -provider has precedence over
    -provider_name.

    - Changed the default mh_pause sound in common/event_sounds.pl from
    bird1.wav to none.

    - James Martin discovered that linux Red Hat 9.0 perl 5.8 has a wierd
    bug that causes mh not to parse code objects correctly. Really strange
    in the same perl version is in RH 8.0 which works, and recompiling perl
    5.8 on RH 9.0 also fixes the problem. We worked around this by changing
    a perl regex.

    - Jeff Pagel noticed a duplicate file problem when using the -only_load
    option, like we use with a mh proxy.

    - Roger Bille noticed the recent 2.78 substate and multistate code (set
    $test_set1 'on~2~random:on;repeat:on;play';) messed up with some he code
    that he had that had Socket_Item data with some ~:; characters. To avoid
    this, we added a Generic_Item states_overload method, which we set to
    'off' in Socket_Item, Serial_Item, and xAP_Items.pm.

    - Added an optional iridium_brightness mh.ini parm (defaults to 0) so
    you can allow for announcement of only brigher flares.

  Version 2.79 posted on 03/09/2003
    Version 2.79 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Ant Skelton patched lib/Voice_Text.pm to allow Linux users to use Wine
    to run the AT&T windows NaturalVoices binary. On my 1.2 GHz Celeron,
    time-to-speech is about 1 second, -vs- about .4 seconds for the native
    Linux binary. See bin/mh.ini for examples on these parms:
    voice_text=NaturalVoiceWine,
    voice_text_naturalvoice=windows_path_to_voices, wine_path=path_to_wine,
    and wine_path_temp=windows_path_to_temp_dir.

    - Chin Lee suggested we have mh default to 'catch up' mode when
    restarting, setting the start time equal to when mh last exited. To do
    this, set the mh.ini of parm time_startup=resume. You can also now test
    when mh is in either mh_pause or startup catchup mode by monitoring a
    new $Catchup_Mode object.

    - Nico ? wrote an interface to the Velleman k8000 board (
    http://www.velleman.be/Product.asp?lan=1&id=9383 ), available from his
    site at http://yow.be

    - Steve Switzer updated status_line.pl and the web/bin/clock2.js
    javascript clock to reflect mh time, not local browser time. He also got
    it to work for Netscape, so I changed mh.ini status_line3 default from
    clock to jclock2.

    - Steve Switzer suggested we enumerate the various -debug options, so I
    create a 'List debug options' command in common/mh_control.pl.

    - David Norwood created a smart &write_mh_opts function that can update
    .ini files without changing order or comments and called it with a nifty
    new web interface for updating the tv_provider parm.

    - David Norwood also updated common/photo_index.pl to add another web
    based mh.ini selector for picking which photo dir you want active for
    the photo slide show. Added this option, along with the tv_provider one
    above, to the web setup menu and to the help text you see in the common
    code selector.

    - Joe Blecher updated lib/Lynx10PLC.pm, which supports the Marrick
    Lynx10-PLC X10 interface to add logging to linux syslog, parms for
    transmit/receive gains, new $Debug support, and 2 way module support. He
    reports using it for over two years now without a single lockup!

    Bug Fixes and Other Changes:

    - Bob Hughes updated the unix bin/house script to use the mh.ini
    xcmd_file parm.

    - Bob Hughes noticed we were not passing the voice name from the eliza
    chatbox speech web page.

    - Jason Comander updated the X10 Status request code to work better with
    the Leviton DHC 2-way switches

    - James Derrick fixed a 2.78 problem with MR26 data not being relayed
    correctly due to the data being lower-cased.

    - Floyd Moore fixed a couple of proxy related problems in
    bin/get_tv_grid.

    - Robert Rozman sent code/public/winlirc_client.pl an an example of
    reading winlirc IR data ( http://winlirc.sourceforge.net/ ).

    - Dominique Benoliel prompted an update to the latest Date/Language.pm,
    adding French as well as a few other languages.

    - Steve Switzer fixed mh/lib/caddx.pm to be compatable with the 2.78
    update for case insensitivity and $Debug control.

    - David Satterfield fixed the viavoice -voice option when used with
    -to_file in bin/vv_tts.pl.

    - Walter Leemput and Harald Koch discovered and fixed a memory leak when
    using HTML::Treebuilder in code/public/weather.pl. Also updated the same
    fix in internet_iridium.pl, internet_starshine.pl, internet_top10.pl,
    news_onthisday.pl, and weather_upload.pl, by calling a new &html_to_text
    function with the same non-leaking html parsing code.

    - Bill Sobel fixed Startgate.pm to support house code M.

    - Tom Vanderpool noticed that common/weather_upload.pl had the wrong
    units for barometric pressure from Weather_wmr968.pm (hg -vs- mb).

    - Thomas Bleau noted that the speak function would filter out many
    foreign languange phrases due to characters not in the common ascii code
    range, so we out the 'Data is unspeakable' check.

    - Tom Vanderpool added callerid_type=motorola to
    Telelphony_Interface.pm, for use with Motorola Power 28.8 modems.

    - Brian Paulsen sent in his web based hvac code:
    mh/code/public/hvac_brian*.pl

    - Jason Sharpee added -left and -right speak options for the viavoice
    engine.

    - Sean Walker added proxyip to common/mhsend_server.pl and
    public/speak_proxy.pl, so speech can be directed to the box that send
    the mhsend request.

    - Jason Sharpee made some updates to lib/CID_Announce.pm and CID_Log.pm

    - Harald Koch updated bin/get_weather_ec (Canadian weather data) to work
    with with current data.

    - Peter Woodall noticed we sometimes got the previous, not next,
    full/new moon dates.

    - David Satterfield noticed that some tk and web triggered commands were
    getting bogus respond states set.

    - Harald Koch updated bin/weather_ca.pl for Canadian weather.

    - Clive Freedman made some caller ID updates for the UK.

    - Claes Johansson made a keypad fix in lib/LCD.pm for LCDProc users.

    - Mark Miller noticed we pointed to the wrong directory with the web ia5
    Iridium Flares button.

    - Created code/examples/x10_multievent_with_delay.pl as an example of
    how to send a series of X10 commands with delays between them (e.g. you
    want to sequence a series of X10 cameras ON).

  Version 2.78 posted on 02/07/2003
    Version 2.78 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Improved xAP support and added xPL support. A few of the original xAP
    ( http://www.xapautomation.org ) developers developed a lighter version
    of the protocol they called xPL (
    http://www.wintermute-ltd.com/picxap/xpl.htm ). The protocols are
    similar enough that I decided to support them both with the common code,
    so I renamed lib/xAP.pm to lib/xAP_Items.pm and added various xAP and
    xPL items and methods. Also added code so mh can be an xAP and/or xPL
    hub, so we can now read and write to both xAP and xPL clients and/or
    bridge between them if needed. Updated code/common/test_xap.pl to
    include new xPL examples, including calls to a windows TTS client and a
    Rio Audio Receiver client, both available from
    http://www.xaphal.com/xap.htm .

    - Bill Sobel made a bunch of changes to enable stacked and overloaded
    states. This is best explained with an example:

      set $test_set1 'on~2~random:on;repeat:on;play';

    This will set the object to on, then 2 seconds later, sequence through
    states of random:on, repeat:on, and play. The overloaded random and
    repeat states will trigger setstate_random/repeat methods if they exist
    in that object, setting them to on. For a complete example, see
    mh/code/examples/test_state_stacked.pl. His changes also make states
    case insensitive, unless you use the set_casesensitive method.

    - Bill Sobel and I created time_idle Generic_Item method. We also
    enabled this as a tie_time method time spec, like time_cron and
    time_now. See code/examples/test_idle.pl

    - Bill Sobel suggested we get smarter with -debug, so we made it case
    in-sensitive and allowed for stack debug parms like -debug serial;x10.
    To enable this, I switched most of the old debug checks like this:

      old: print "debug stuff" if $config_parms{debug} eq 'stuff';
      new: print "debug stuff" if $Debug{stuff};

    - Added support for different user logons. If you use -tk 1, you can use
    the 'set the admin/family/guest password' command. Or you can run from
    the command line like this:

      set_password -user family -password xyz1
      set_password -user admin  -password xyz2

    A separate record will be created for each user in the password_file (by
    default, data_dir/.password). By default, the mh setup web pages can
    only be controlled with the admin logon, but you can enable/disable
    other commands by adding authority=admin to the password_allow_file. You
    can also specify authority with the set_authority object method, or by
    adding it to your web/bin xyz.pl file # Authority=user comment. The ia5
    logout button now has different icons for admin, family, and guest.

    - Made menu.pl generic (it now reads all .menu files in your code dirs)
    and moved it to code/common. If you have a menyu.pl file in your own
    user code file, delete it before you enable the code/common one.

    - Andrew Drummond created mh/code/public/tivo_direct.* code for
    controling his Direct Tivo.

    Bug Fixes and Other Changes:

    - Timothy Spaulding added a MS13_Battery_Timer parm to set the
    X10_Sensor timeout value.

    - Added a web_status_line option to web/status_line.pl, to allow for
    more user specific data on the status line.

    - David Satterfield noticed a 2.76 bug where the web status line was not
    reflecting current email counts.

    - Amauri Viguera found a 2.76 bug in lib/audrey_cid.pm

    - Pete Flaherty updated the tk widgets in weather_iB_OWW_client.pl

    - Steve Switzer updated Voice_Text.pm to allow for volume=##%, where
    volume will be scaled to a percentage of the default mh volume.

    - Danal Estes noticed simple meta refresh works better than JavaScript
    refresh, in status_line.pl and photos.pl.

    - David Satterfield noticed we could buffer data in lib/X10_MR26.pm to
    avoid occasional 'Bad data' errata.

    - Sam Levine found a problem with X10_Sensor with ID=x9 (the light/dark
    id=xA was not created correctly).

    - Martin Dolphin allowed for negative temperatures in
    common/weather_aws.pl

    - Kent Noonan updated mh/lib/Ultimeter.pm (renamed from
    mh/lib/Ultimeter2000.pm) to allow for negative temperatures.

    - David Norwood updated bin/get_tv_grid to allow for a -get_provider
    parm: get_tv_grid -zip 55091 -get_provider

    - Craig Schaeffer updated bin/display_callers to better sort by date and
    # calls.

    - Douglas Parrish sent in bin/misterhouse_Gentoo.rc, a startup script
    example for Gentoo Linux.

    - Richard Morgan noticed the web Squid proxy did not like the http
    Content-Length data we inserted for html pages a few releases ago. We
    took that field out after reading the spec, which says it is only for
    binary data.

    - Paul Estes updated bin/set_clock for Solaris.

    - Change code/proxy/proxy_server.pl 'Proxy can not talk to MisterHouse'
    message from once a minute to once every 5 minutes.

    - Parse size from http User-Agent, when provided, for use in
    &http_agent_size (used in web/bin/photos.pl)/ Also added Opera and
    Zaurus to mh.ini parm html_browser_formats.

    - I copied a post from Bill Sobel into FAQ qusetion 2.16: How are states
    set for each pass though the user code loop?

    - Steve Switzer updated phone_search.pl file, so that phone_search.shtml
    is not needed.

  Version 2.77 posted on 01/17/2003
    Version 2.77 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - No new features. Hoping for a fairly stable and bug free release this
    time :)

    Bug Fixes and Other Changes:

    - Kevin Olalde found a 2.76 bug that would ignore user private parms for
    a few bin/get_* programs.

    - Fixed a 2.76 bug when displaying web label widgets: 'not a SCALAR
    reference at ../lib/http_server.pl line 2421'

    - David Norwood updated http_server.pl to allow for multi-line data from
    things like textarea form elements.

    - Bob Hughes updated the clock in status_line.pl to re-align better on
    browser resize.

    - Michael Ryan noticed we were missing the respond function for vr
    triggered events.

    - Wally Kissel noticed a problem with web SET data (from Eliza) with ?
    in the string.

    - David Norwood updated the UIRT2 files, fixing a few problems with
    learning and changed the display of codes to uppercase to be compatible
    with Girder.

    - Bill Sobel updated lib/Compool.pm (Timing changes to deal with network
    based serial ports) and lib/Stargate.pm (Thermostats where broken,
    signifigantly updated and now actuallywork).

    - Created a smart file_backup function, now used by web iniedit and item
    edit scripts.

    - Fixed the web iniedit script to drop file= entries, not to drop
    multi-line mh.ini data (e.g. like voice_names), and to re-read parms
    after iniedit changes.

    - Disabled closing of Tk windows, which would cause mh errors. Now you
    get a popup that advices to use the File->Exit option.

  Version 2.76 posted on 01/12/2003
    Version 2.76 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Pete Flaherty posted his updated 02-1 Audrey image at
    http://vsa.cape.com/~pjf/MrAudrey.html.

    - Bill Sobel is back :) Lots of updates from him this release:

     - AudiotronPlayer.pm fixes for latest firmware, support password if set in .ini file.
     - Compool.pm fixes for solar power.
     - DSC_Alarm: supports proxy config.
     - Varios small updates to http_server.pl.
     - read_table_a.pl: new x10 transmiter, yacclient and wakeonline stuff
     - stargate.pm: Fixes, digital relay updates, ir support (initial)
     - stargate485.pm: LCD keypad digit support
     - telephony_item: base work for dialed ability (we now log outgoing
       calls as well if the CID hardware detects DTMF and reports them)
     - xantech.pm: made some logging optional
     - internet_weather.pl  added nws_city .ini parm nws_city= paramter which overrides city if set
     - allow a return_state in set_with_timer

    - Bill Sobel created lib/WakeOnLan.pm, for waking up computers from
    susbend or hibernated states from mh via a lan connection. See
    code/public/wakeup_on_lan.pl for more info.

    - Bill Sobel created lib/CID_Server, so mh can share callerid data with
    other callerid clients, with initial support for the YAC client from
    http://www.sunflowerhead.com/software/yac. To enable, see
    common/callerid.pl for an example of adding a CID_Server_YAC object. To
    support this, we also created bin/send_ip_msg for sending generic
    messages with tcp.

    - Andrew Drummond sent in lib/Acid.pm, which I added to Bill's
    CID_Server, to broadcast callerid data to Audrey Acid clients, which is
    included in Pete's nifty Audrey image.

    - Another Bill Sobel idea was to allow for sets of states in one string.
    To start with we have allowed for ~ seperated sets of states and delays.
    For example, $object->set(s1~t1~s2~t2...sn~tn) would set states s1, s2,
    ... sn, with delays for t1, t2, ... tn. We may update this in the next
    release with other options that Bill posted earlier.

    - Bill Sobel and I added a get_parm_file function, so we can tell if a
    config_parm was overridden or not. This allowed us to fixed the ia5
    weather page to not display the 'click to set parm' button if the
    weather parm has already been overridden.

    - Jason Sharpee et all updated the new CID modules. We also updated
    code/common/callerid.pl announcement to $format1, which includes City
    and State if the call is from out of City and/or State. Also enabled
    RING for Telephone_Interface and added some different 'Test callerid #'
    tests.

    - Steve Switzer and I updated telnet.pl to use the new respond function.
    To allow for security between different sessions on the same box, we
    added new code that allows us to write to a Socket_Item by its socket
    handle.

    - Sean Walker and Jason Sharpee had the idea of allowing for an optional
    speak chime sound, to be played before non-interactive speech event to
    avoid the startled spouse effect, so we created
    mh/code/common/speak_chime.pl.

    - Brian Paulsen suggested we use Data::Dumper on the %Save data, like we
    do with the %Persistant data, so now we can store nested data in %Save (
    e.g. $Save{temp_setpoints} = { basement => 70, living_room => 40}; ) I
    also updated the save/restore code to allow for ~ characters in the
    state and state_log for objects.

    - Added set_timeout and timed_out methods for Process_Item. See
    code/examples/test_process.pl for an example.

    - Added a phrase_match function, which calls Dree Mistrut's updated
    PhraseDistance.pm module. This allows us to find commands that are the
    closest match to a given string. Dree was able to speed up his algorithm
    enough that we can now use it interactivly, at least on faster boxes.
    Not useful yet, but you can test it with the new ia5 search 'Smart
    command search' menu and/or if you type an invalid command from the
    updated common/telnet.pl server.

    Bug Fixes and Other Changes:

    - Change the test for 'unspeakable text' to still allow speech if < 10
    unspeakable characters.

    - Tom Kotowski updated code/public/news_drudge_report.pl

    - Joe Doss fixed a few problems in the new lib/Telephony_Interface.pm
    code.

    - Bill Sobel found a problem with looping caused by his code that tied
    items, groups, and X10 whole house codes. To fix this, we added
    X10_Transmitter object and a like X10_Item 'transmitter' type. . Like
    X10_Item, but it will not be set when incoming or outgoing house codes
    are set.

    - Steve Switzer noticed that set_by and respond target were not working
    in the new Text_Cmd object.

    - Chris Witte made set_by smarter when set by the web and user code. It
    will now return web [ip_address] or UserCode [filename].

    - Thomas Caligiuri noticed a 2.75 bug with some browsers not loading the
    full html file, due to a bug in the http length value.

    - Andrew Drummond made an update to allow for mh.ini specified
    serial/socket modules to be in user code.

    - Axel Brown noticed that the pronouncable_list_file was not being read
    in (a recent bug).

    - Jon Boehm noticed that hidden items still showed up on the
    list_buttons web pages.

    - Bill Sobel added code hook processing to the serial proxy data.

    - Andrew Drummond updated the RCSs code to allow for control of multiple
    thermostats and to allow for control of the RS485 models.

    - Paul Wong noticed a bad return code when running 'Set the clock via
    the internet' from XP when run from the tk or web menu, so we changed
    this to be a background process, which also avoids mh pauses.

    - David Norwood fixed a bug in the web iniedit function when updating
    parms with quotes.

    - Brian Rudy updated code/public/mp3_control_xmms.pl to remove the need
    for xmms-shell, and the site specific code.

    - Fixed a 2.75 respond related bug in internet_top10.pl and
    dvd_releases.pl. The web server would stop if those commands were run
    from something other than a web browser. Fixed them by calling a new
    &respond_wait function, which we can call to tell the web server to wait
    for respond data.

    - Use UNIVERSAL::isa function, rather than isa method, in http_server,
    to avoid mh abends.

    - Added more data to data/logs/monitor_memory_leak.log, like total
    average MB/hour leak rate.

    - Updated dailystrips comic script 1.0.25 (a few new comics added
    changes).

    - Updated LWP and LWP and HTTP libraries from the latest libwww to fix a
    problem some were having with dailystrips comic downloads.

    - Fixed a 2.75 bug that would allow data_log/logs/error.log to grow (if
    you had code errors) without prunning on restart. This would cause mh to
    load slowly on startup, if your error.log file got large.

    - Run 'Check the http server' every 10 minutes in mh_control.pl, to make
    sure the web server is working.

    - Removed un-needed targets from various web/bin scripts, so single
    window browsers like the Audrey work better.

    - Moved code/bruce/monitor_router.pl to code/common, after moving the
    Bruce specific code to bruce/monitor_router_bruce.pl. This code monitors
    router traffic via udp broadcasts from NetGear and LinkSys routers.

    - Allow objects for tk_label, like we do for the other tk_* widgets.

    - Fix common/tv_grid.pl to not create bad code when clicking on the VCR
    link if a $VCR object is not defined.

    - Fixed a web select_code bug that would not show the ini parm help text
    unless you had already run iniedit.pl

    - Joseph Gaston fixed a net_mail_send bug when account was specified,
    but not server.

    - Danal Estes updated the code he uses in his house in
    code/public/Danal.

    - Updated the xAP code to work with Patrick's latest hub.

  Version 2.75 posted on 12/23/2002
    Version 2.75 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Steve Switzer and I added a new respond function, which can be used to
    send the resulting text of a command or query to a specified target. By
    default, valid targets are display, email, im, log, speak, tk, and web.
    The default respond target it whatever set_by is, so for example, if a
    command is run from an im client, text sent to any respond called by
    that command will be sent only to that im client. More info and examples
    are in docs/mh.html. We also changed many of the speak calls in the
    code/common files to respond.

    - Jason Sharpee added mh/lib/CID_Lookup, CID_Announce, CID_Log, and
    Telephony_Item modules. I created Telephoney_Interface and
    code/common/callerid.pl to use these modules for callerID. These replace
    code/common/phone_modem.pl and phone_netcallerid.pl and
    lib/Caller_ID.pm, but I left them there for a while for backward
    compatability while we work out the bugs in the new code :)

    - Created a Text_Cmd object, so we can fire events based on commands
    that match a regular expression. For an example, see
    mh/code/examples/Text_Cmd_example1.pl and/or docs/mh.html.

    - Updated lib/xAP.pm to the new 1.2 protocol (info on xap is at
    http://www.xapautomation.org ). To try it, first start a hub program,
    then enable code/common/test_xap.pl. Not very tested yet, as there are
    not many applications yet. I have it working with an older version of
    xhub, but not with Patric's latest xhub-hub.

    - Chris Witte created mh/lib/RCSs.pm and mh/code/public/RCSs.pl for
    talking to the RS232/485 versions of the RCS thermostats.

    - Chris Witte and Rob Williams updated the cadx code with more
    documentation, bug fixes, and Windows (as well as linux) compatibility.

    - Steve Switzer improved the interface to the select_code and iniedit
    web menus.

    - Ron Klinkien updated the ia5 web interface to v2.3.

    - Richard Smith sent mh/code/public/ir_creative.pl as an example of
    reading IR data from Creative Credit Card Remotes.

    - David Norwood created code/common/dvd_releases.pl, and idea that James
    Armstrong had to list new DVD titles.

    - Steve Switzer and Tom Kotowski created
    code/common/phone_pcs_messaging.pl for emailing sprint and verison
    phones.

    - Created code/common/x10_item_commands.pl to create Voice_Cmd items for
    all X10_Items.

    - Moved the 'proxy is dead' test out of bin/mh and into
    code/public/speak_proxy.pl

    - Perl 5.8 is now available from ActiveState. This version, at least on
    Windows, seems to fix the memory leak problems that many of us saw with
    version 5.6. It now comes with standard with Tk. I updated the
    mh/doc/install.html instructions on how to install the modules for it.
    The only module not yet available is Setupsup, which allows for
    controling of other Windows applications.

    Bug Fixes and Other Changes:

    - Sean Walker fixed some calender -> calendar typos.

    - Axel Brown suggested we update Geo::Weather package, as weather.com
    has changed (used by public/weather_com.pl to get data from
    weather.com).

    - David Norwood fixed a 1.74 trigger_code.pl bug to prevent it from
    reloading code every 5 minutes under some conditions. He also fixed a
    bug that was causing full code reloads when triggers changed on some
    systems.

    - David Norwood noticed a problem with $Save keywords with ' in them.

    - Jeff Siddall code/public/random_time_offset.pl for adding random
    offset times to time_now tests. He also added convert_f2c and
    convert_f2k, like the k2f and k2c functions, but for converting to
    celsius and kelvin.

    - Enabled the mh.ini ipaddress_local in common/audreyspeak.pl, to
    override the default local address.

    - Alan Womack noticed an mh divide by 0 involving mh.ini sleep_count
    parm.

    - Joseph Gaston updated to the HomeVision mh/lib/HVweb_Item.pm module.
    He also updated the tv_grid pulldown to reflect how many days you
    download.

    - Steve Switzer added logon/logoff to common/internet_im.pl, so you can
    logon via a non-authorized ID. Steve also added a net_aim_port option,
    so you can change from the default of 1234 to 23 to get through
    firewalls.

    - Walter Poxon added BSD/OS to bin/configure.

    - Sean Walker updated the read_table_A.pl .mht reader to drop trailing
    blanks from Group names.

    - Tom Kotowski and Dave Crawford updated code/common/news_yahoo.pl

    - Pete Flaherty posted version of his mh compatable Audrey image at
    http://vsa.cape.com/~pjf/MrAudrey.html.

    - David Norwood updated tk_photos to work even if -tk 0, and made a few
    updates to the UIRT2 code to fix problems with learning and receiving.

    - Bob Hughes noticed that tie_filter did not filter when the data was
    incoming serial data.

    - Replaced the mh.ini sound_volume parm with mh_volume object in
    code/common/mh_volume.pl. This will set the default sound, which can
    still be overriden by the speak/play volume= parm. You can use the
    default volume widget from common/tk_widgets.pl to control it from the
    tk or web interface.

    - Switched from exit to POSIX::_exit for much faster mh exits.

    - Dropped 'noscroll' in the web photo search results.

    - Added mht_item_add/copy/delete functions to bin/mh, so we can write
    code that can manipulate mht entries. Also added help text to the web
    based item editor.

    - Hollis Morrow noticed that web added triggers actions with '
    characters would create code errors

  Version 2.74 posted on 12/01/2002
    Version 2.74 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Added a mh.ini speak_app parm and speak app=xyz option. This allows us
    to code generic common code, but still allows us to customize our speech
    parms. I updated most of the common code files to use one of the app
    keys listed in the default speak_app parm. For example,
    code/common/internet_email now uses speak app=email, which the mh.ini
    speak_app parm defaults to voice=male rooms=all.

    - Rewrote internet_im.pl to allow for better echoing of the mh logs. You
    can now start sending log data to any authorized im client by typing
    log: xyz, where xyz is a filter to pick logging data. Example filters
    are print, speak, play, speak|play, all, and stop (to stop). Also added
    a help command and a pgm option to net_im_send/connect/disconnect so we
    can use a common function for all im programs (e.g. msn, jabber, aol).

    - Re-wrote code/common/test_speak.pl and deleted test_voice.pl. One
    change was to use mh.ini specified voices, rather than a hard coded
    list. Most of the 'test speech' commands it creates will work with the
    NaturalVoices, on linux or Windows.

    - Added a 'Select User Code' option to the ia5 MrHouse Home Setup menu.
    Similar to the select common code we added a few months ago, this allows
    you to de-select any of your user code files.

    - David Norwood and I updated mh/code/common/trigger_code.pl and created
    a new interface, also under the ia5 MrHouse Home Setup button (or
    http://localhost:8080/bin/triggers.pl ). Trigger code is now stored in
    code_dir/trigger.mhp, rather than trigger.pl (mhp stands for MH
    Processed files). More documentation is under the trigger_set section of
    mh/docs/mh.html

    - Also created a similar web interface
    (http://localhost:8080/bin//items.pl ... 'Edit Items' on the ia5 page)
    for updating .mht files. Comments and position of the original .mht file
    are preserved, and backups are made, so it should be pretty safe :)

    - Rob Williams sent in mh/code/public/grafik.pl, his interface to the
    Lutron Grafik Eye system ( http://www.lutron.com/grafikeye/Default.htm
    ).

    - Pete Flaherty posted a mh compatable Audrey image at
    http://vsa.cape.com/~pjf/MrAudrey.html. He made some updates to
    http_server to recognize the Photon browser he has on that image.

    - Gaetan Lord created mh/web/bin/button2.pl, which allows us to create
    on-the-fly web buttons where we can pick both the text and an icon.
    Gaetan wanted to re-create Ron Klinkien's buttons with French text. He
    also extracted many icons from Ron's buttons into a new dir:
    mh/web/graphics/icons. Like button.pl, it requires the perl GD module.
    An example is: /bin/button2.pl?Recent_Incoming_Calls&phone.png

    - Gaetan Lord also created lib/FroggyRita.pm for reading
    temp,pressure,humidity from the sensor sold at
    http://www.froggyhome.com. Example is in code/public/froggyrita.pl.

    - David Norwood added a new infrared code generator to UIRT2_learning.pl
    which automatically create codes for many TVs, VCRs, DVDs, etc, using
    data in a new data/infrared directory. The generation routines are in a
    separate module, IR_Utils.pm, so it should be easy to add this feature
    to other transmitters such as the RedRat.

    Bug Fixes and Other Changes:

    - Steve Switzer added weather_wind_gust_threshold parm to
    weather_monitor.pl.

    - Scott Kennedy suggested we add an http_address parm, so we could tell
    the web server to use a specific ip address.

    - Neil Cherry fixed 'sending log data to Jabber' in
    common/internet_im.pl.

    - Ron Klinkien noticed common/monitor_server.pl was not working.

    - Andrew Drummond noticed active_now and inactive_now were not working
    for client Socket_Items.

    - Fredrik Olsson discovered that 3 character (-vs- 2) id names were not
    working in X10_Sensor items.

    - Dave Lounsberry updated public/vocp_func.pl and added a -colorfill
    option to bin/image_resize (default is still black)

    - Chris Witte suggested we stop buffering the speak, print, and error
    logs in data/log.

    - Cliff Carr noticed that mh's copy of Device/SerialPort.pm was down
    level. The latest version now also supports AIX.

    - Steve Switzer updated weather_monitor.pl to use the mh.ini a
    weather_wind_gust_threshold parm and weather_chance_of_rain.pl to
    announce only a few days worth of rain ... speaking 14 days worth of
    rain can get kind of long :)

    - Axel Brown fixed a 2.73 'socket_close sock port undefined for port
    http' message.

    - David Norwood updated the web server to allow %Included_HTML to handle
    multiple shtml style includes.

    - Moved weather_iB_OWW_client.pl from public to commen with an update
    from Pete Flaherty that allows something other than the localhost to
    connect to the iButton Weather station server.

    - Allow for # noloop end-of-record comment (in addtion to #
    noloop=start/stop block comments, so we can more easily force code out
    of the mh loop code.

    - Added more valid date/time checking, to avoid perl abends in calls to
    timelocal.

    - Updated the MSN IM server in lib/MSN.pm to messenger.hotmail.com.

    - Coded a personal event to post the test version of MisterHouse every
    night. The download page ( http://misterhouse.net/download.html ) now
    points to a current list of updates in the test code.

    - Replaced the windows only console pop-up menu with a simple print of
    key functions, when using either the enter or spacebar key.

    - Switched photo and status_bar refresh html from meta Refresh to
    javascript, in hopes it would be more reliable.

  Version 2.73 posted on 11/09/2002
    Version 2.73 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Jason Sharpee added mh/lib/Numbered_Menu.pm for navigating menus with
    numeric keypads like phones. It differers from Audible_Menu.pm, which
    uses just one key to select menu items as they are read, in that you can
    use numbered keys to jump to the desired item. You can try this out with
    your keyboard number pad by enabling the new
    code/common/keyboard_numbered_menu.pl code, which will use the default
    menu you parsed in your menu.pl code.

    - Tim Doyle created code/common/audrey_control.pl. If you download the
    audrey apps listed in that code, you can control both pen and mail
    lights, sleep mode, and the built in sounds.

    - David Norwood created mh/lib/UIRT2.pm for the UIRT2 send and receive
    IR interface ( http://www.fukushima.us/UIRT2/ ). He also created
    mh/code/common/UIRT2_learning.pl, a learning script that provides a web
    interface for learning infrared codes and importing pronto codes.

    - Improved the web select_code interface by adding an Index, Search
    option, and listing of relevant config_parms.

    Bug Fixes and Other Changes:

    - Jason Sharpee noticed were were not logging 0 and 1 states in
    Generic_Item state_log.

    - Steve Switzer made some speak tweaks to CallerID.pm

    - Brian Rudy fix a problem with the return code from the play function
    on perl 5.8 on linux.

    - David Lounsberry updated vv_tts to allow for pa control and a
    text_first option. See mh/code/public/pa_control_vv_tts.pl for an
    example. Sean Walker updated vv_tts.pl to ignore +-1 volume changes, to
    not respond to round off errors. We also added a no_log=xcmd option, to
    turn off errata when using xcmd a lot, like with the above change.

    - Kyle Kirkland added another sprinkler example to code/public.

    - Tim Doyle added a AOLim_Status so we can detect when buddies listed in
    the new net_aim_buddies parm log on and off. Tim also updated his
    common/aqualink.pl code.

    - Joseph Gaston created mh/code/public/internet_ip_update_hn.pl for use
    with DNS servers from hn.org. He also made some updates to the
    HomeVision mh/lib/HVweb_Item.pm module.

    - Brian Rudy updated weather_aws.pl (now in code/common) adding support
    for weather_monitor.pl, weather_log.pl, and the weather and wind web
    page status line parameters.

    - Robert Mecklenburg noticed the 'preset' X10_Item parm (to flag
    presetable modules) was not working, and that, for preset-able modules,
    the dim level was not stored after an OFF command.

    - Robert Mecklenburg also noticed that outgoing house commands (e.g. A1
    All Off) did not set the states of mh X10 objects on those housecodes.

    - Tim Doyle fixed removing of old msvoice commands on code reload.

    - Larry Roudebush noticed that wap (phone) menus did not work right on
    menus with states.

    - Jeff Pagel sent in mh/code/public/sensor_water.pl an an example for
    sensing water in the basement.

    - Neil Wrightson noticed the .mht read_table code did not process extra
    iButton arguments correctly.

    - David Lounsberry created mh/code/public/vocp_func.pl for monitoring
    linux vocp logs for callerid and voice mail.

    - David Norwood modified the spoken common/tv_info.pl code summary.

    - Richard Koch noticed his modem callerid didn't work over a mh proxy.
    To fix this, I made a small update to the proxy protcol, so if you
    upgrade your main mh, you will need to upgrade your proxy mh also.

    - Tim Doyle came up with a scheme to allow easy updates of the web local
    weather radar image, using your mh.ini zip code. This new option is at
    the bottom of the ia5 local weather page.

    - Changed alarmclock.txt speperator from / to |, so we can support dates
    in time_now formats.x

    - Moved the print, speak, and error logs from data_dir to data_dir/logs.
    Also changed the default mh.ini pid_file parm from mh/data to
    $config_parms{data_dir}, so multiple mh runs (e.g. mh and mh_proxy) can
    write their own pid file.

    - Moved these files to code/common: weather_pollen.pl

    - Created mh/code/examples/x10_sunrise.pl as an example of how to slowly
    turn on an X10 light using a timer.

    - Added a mh.ini web_refresh parm so we can control the web screen
    saver. Defaults to the previous photo script, but can be changed to
    clock or whatever.

    - Moved Bruce specific stuff out of mh/code/common/iButton.pl into
    mh/code/bruce/iButton_bruce.pl

    - Fixed a web server problem on unix where the browser would wait for
    host TTS speech to finish (forgot to close the http port on the child
    after forkint).

    - Added an organizer_email parm to allow email to the web organizer todo
    AssignedTo name. Also allowed the DueDate to be any valid time_now
    format.

    - Added X10_Sensor (mht type is X10MS) item method light and dark, to
    return the current light and dark state of MS13 motion sensors.

  Version 2.72 posted on 10/12/2002
    Version 2.72 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Enabled the new proxy option on most Serial items. I have tested it
    with these interfaces: cm11, cm17, iButton, weeder, mr26, wx200 weather,
    modem, netcallerid, and ham tnc. Also added notifications if either the
    proxy or main mh detect the other is not responding.

    - Tim Doyle and I re-organized 80+ .pl code files from the code/test,
    public, and bruce directories. into the mh/code/common code dir. The
    code/test directory now only has a few example .mht and .menu files
    left. You can select which of the common .pl code files you want to run,
    along with the code files in your private code_dir, with the new
    http://localhost:8080/bin/select_code.pl interface (the 'Select Code'
    button on the ia5 MrHouse Home menu). Current users default to just 11
    core MisterHouse code files pre-selected. New users will default to an
    additional set 40 code files, most of what used to be in the test dir.
    We can move other public code files to the common directory by moving
    any user-specific data into mh.ini parms.

    - Tim Doyle also created mh/code/modules/audreyspeak.pl to send all
    speech and played files to Audreys.

    - Tim Doyle and I transformed Doug Nakakihara's alarmclock_doug.pl code
    into mh/code/common/alarmclock.pl. Copy and modify the
    mh/data/alarmclock.txt file to create easy one line alarms with optional
    im and/or email function.

    - Axel Brown sent in mh/code/public/palm_calendar.* files for copying
    palm calendar entries to the mh organizer calendar. He also sent in
    public/organizer_axel.pl, which allows for variable ALARM times (not
    just 15 mins) and "no specified time" events. It also announces the
    owner of the event (currently hard coded for his family names).

    - David Norwood added mh/lib/UIR.pm. This module will report incoming
    infrared signals in the Misterhouse log output. You can use these signal
    codes to create triggers that can control your MP3 player, DVD software,
    etc.

    - Marc Mosthav created mh/lib/X10_RedRat.pm. He wrote this to allow mh
    to send X10 traffic via IR -> RF, so he didn't have to worry about phase
    coupling problems. The path is mh X10 -> X10_RedRat.pm -> RedRat.pm ->
    IR -> RF -> X10 receiver.

    - Added a send_x10_data code hook, so we can more easily add X10
    interfaces without modifying core mh code.

    - Updated organizer.pl to also announce web entered tasks, in addition
    to calander events.

    - Jon Boehm and I added 'speak_text=program osascript' option for Mac OS
    X users. Also added some Mac OS X install hints from Jon to
    docs/install.*

    Bug Fixes and Other Changes:

    - Jason Sharpee and Bill Sobel made a bunch of updates to
    lib/Startgate.pm

    - Axel Brown dropped newlines from text spoken in
    code/public/speak_proxy.pl

    - Steve Switzer updated proxy_server to not send data when not
    connected.

    - Steve Switzer noticed set_by was not set to web when changes were made
    to X10_Items via the web interface.

    - Brian Klier noticed that get_url corrupted image files on windows
    (needed binmode set).

    - Ryan Pomaski noticed that X10 9->16 unit bright/dim codes were not
    being decoded by the X10_MR26.pm code.

    - David Norwood fixed bin/get_tv_grid (changed GET to POST) so it worked
    better with http proxies.

    - Jon Boehm found a 2.71 bug that caused most item states not to be
    saved between restarts.

    - Larry Roudebush created mh/code/public/internet_ip_update_larry.pl for
    finding ip address from whatismyip.com and public/mirror_directory for
    mirroring 2 directories.

    - Added net_mail_delete, to delete mail on servers. Example in
    mh/code/examples/email_delete.pl

    - Changed bin/mh, mh.bat, mhl, mh_proxy.bat, and mh_proxy to better
    restart on accidental exit (tests on mh.startup rather than mh.started)

    - Dropped the 'redo' option in bin/get_tv_grid.pl. Data will always be
    re-parsed when called.

    - Broke internets_data.pl into mh/code/common/internet_top10.pl,
    internet_weather, and internet_time.

  Version 2.71 posted on 09/21/2002
    Version 2.71 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Richard Morgan's sent in mh/code/public/cbus_v2.0.zip, his set of code
    for talking to CBUS devices via the Australian Clipsal CGATE interface.

    - Ron Klinkien and Paul Wilkinson enabled the great sounding AT&T
    NaturalVoices TTS engine on Linux. ($150 from
    http://www.naturalvoices.com ) Use the voice_text_naturalvoice parm to
    point to where you have it installed and set voice_text=naturalvoice. As
    with the Windows version, you can use the speak voice=name option to
    pick a non-default voice.

    - Jason Sharpee and I added several new methods: Generic_Item
    get_idle_time and Group member_changed and member_changed_log. This
    allows us to use Group items to monitor sets of sensors for detecting
    occupancy states. This change means that Group states will change
    whenever a member's state changes, but these can be distinguised from
    full group state changes (member only state changes are prefixed with
    'member'). See an example of these new methods in Jason's occupancy
    algorithm in mh/code/public/monitor_occupancy_jason.pl.

    - Added the option to use additional mh instances as proxies to allow
    for remote ports (e.g. 'mh in the barn'), distributed lan-based speech,
    or buffering of slow serial data to avoid the 'mh pause' problem. See
    'Use distributed MisterHouse proxies' in mh/docs/mh.* (
    http://misterhouse.net/mh.html#use%20distributed%20misterhouse%20proxies
    )

    - Created mh/code/public/speak_proxy.pl as an example of how to allow
    for speech to distributed mh proxies using the speak rooms= parm.

    - Added speak voice=next and voice=all options. For each speak call,
    voice=next will cycle through to the next available voice, as listed in
    the mh.ini voice_names parm. voice=all is a goofy option, inspired by
    the fun songs at dictionaraoke.org, that will select a different voice
    for each word in a phrase. This only works with XML enabled TTS engines
    (MSV5 and linux naturalvoices), but just as well as it is not very
    intelligible :) For those with other engines, you can use
    mh/code/public/speak_voices.pl to do the same thing by synthesizing each
    word to seperate wav files, then use Audio::Wav to concatonate them into
    one wav file.

    - Added mh.ini parm sleep_count, so we can control how often mh sleeps
    per pass. Default is now 5 (was 2) and I lowered the default sleep_time
    parm from 50 to 10 (milliseconds). By sleeping more often for less time,
    total %cpu use is decreased, since active code does not don't swap out
    of cache as often.

    Bug Fixes and Other Changes:

    - Tom Christian sent in an update that allows for spaces in mh.ini web
    alias parms.

    - Steve Switzer noticed that get_set_by always returned 'serial' for
    Serial_Item. Also changed this to return an object name, rather than
    object, if set by a tied item.

    - Scott Johnston noticed a 2.70 problem with Festival server not being
    used. Also uniquified files when calling the one-the-fly festival.

    - Steve Switzer found a 2.67 bug where get_email_rule.pl would filter
    out most email announcements.

    - Dean Junk sent in mh/code/public/process_weather1.pl, his code for
    using weather forecasts to control his sprinkler systsm.

    - Craig Schaeffer sent in mh/code/public/hvac_craig.pl as an example of
    a function he uses in his HVAC setup to do a smart heat/cool setback
    cycle.

    - Brian Rudy sent in mh/code/public/monitor_occupancy_brian.pl as an
    example of how he monitors multiple motion sensors to determine activity
    in the house.

    - Clive Freedman created web/bin/code_search.pl to improve the web ia5
    search menu 'code search' output.

    - Steve Flick sent in mh/code/public/x10_power_reset.pl as an example of
    how to reset the X10 items in a group after a power reset.

    - David Norwood updated bin/get_tv_grid to correctly delete old data for
    shows starting after 11:30pm. If you have a big data_dir/tv_programs.dbm
    file, you may want to delete it then run 'redo tv grid data for the next
    2 weeks' to clean up the old dbm file and speed up tv searches. My
    search time went from 60 seconds to 10 seconds. We also changed the
    default -purge option from 14 days to 2 days. David fixed a problem with
    bin/get_tv_info with shows that ended at midnight and changed the
    default -increment option from 5 to 30 minutes, so searches are faster.

    - Brent DeShazer notice a 2.68 problem where viavoice would always speak
    'Mike' when using the default voice_names parm.

    - Max Lock enabled channel A/B selection for iButtom DS2406 switches.
    For example: $ib_relay1 = new iButton $id, undef, 'B'; set $relay1 ON;

    - Fixed a 2.70 problem (perl 5.0 windows users only) which misplaced 2
    Win32 modules.

    - Updated map graphics links generated in code/bruce/tracking_aprs.pl.
    Mapblast changed its urls, so I switched to call vicinity.com directly
    via a new script at mh/web/bin/display_map.pl

  Version 2.70 posted on 08/22/2002
    Version 2.70 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Chris Witte created mh/lib/caddx.pm and mh/code/public/caddx.* for
    monitoring the outputs from a CADDX nx8e alarm panel.

    - Ernie Oporto updated lib/site/Hardware/iButton/Device.pm to add the
    capability to read DS2438-based humidity sensors. Example in
    mh/code/public/iButton_ws_ernie.pl.

    - Ryan Scott suggested we create a web/bin/get_state.pl function for
    returning object states for use by other programs, like php. As another
    approach, Douglas Parrish's sent in mh/code/public/get_state.php as an
    example of how to get mh states from php using xml.

    - Added mh/bin/image_index, for creating simple photo index pages. Very
    simple and not really mh related, but it is small and might be handy for
    some. It is what I used for the mh related photos at:
    http://misterhouse.net:81/pictures

    - Paul Chamberlain suggested we create an undo function. I added a 'Undo
    the last action' to mh/code/common/mh_control.pl. Currently it only
    changes the last changed X10_Item, but could be updated to allow for
    non-X10 items.

    - Clint Dimick suggested we add a light/dark state option to X10_Sensor.
    This is enabled if you pass in MS13 (the model number of the popular X10
    Hawkeye motion sensor) to the end of your mht X10MS table entry (see
    X10_Sensor in doc/mh.pod for an example). State names are now
    motion/still and light/dark (if MS13 is specified).

    Bug Fixes and Other Changes:

    - Mark Miller noticed that mh.ini some records without blanks padded
    around the '=' were not parsed correctly.

    - Craig Schaeffer noticed code/public/internet_ip_update.pl had a bogus
    'inline' parm to a Process_Item call.

    - Larry Roudebush found a site hosting the lost linux IBM Viavoice files
    (install docs updated).

    - Shane Harrison and Nick Maddock noticed mh did not support mh objects
    in the Type->new syntax.

    - Wally Kissel found an updated version of Win32::DriveInfo.pm worked
    better on his Win2k box.

    - Max Kelly send in mh/code/public/internet_hebcal.pl for for
    downloading a shabbat calendar.

    - Andy Oldfield updated get_url useragent option to use agent and
    request, rather than simple_request, so that it will follow redirects
    better.

    - Axel Brown added passing of %parms to vv_tts called from play, to
    allow for volume control.

    - Jeffrey Bertoia discovered a case sensitive typo in the
    mh/lib/weather_wmr968

    - Brian Rudy updated mh/code/public/weather_aws.pl

    - Bill Sobel made 2 changes to tie_items. The first was to allow for
    cross-tied items, so you can set either item have have them reflect each
    others state. The other was to allow for multiple tied states to a
    controlling state.

    - Clive Freedman created mh/code/examples/test_socket2.pl to show how we
    can have different mh boxes communicated to each other's mhsend_server
    sockets.

    - Walter Leemput found a problem with system calls done while a
    Process_Item was active (mh would pause).

    - Richard Phillips added a mp3 xmms 'now playing' option to the web
    status bar script, web/bin/status.pl.

    - Neil Cherry noticed "'CHLD' isn't numeric" errors that we fixed with
    an update to the waitpid call in &sig_child_death.

    - David Norwood fixed get_tv_grid to not re-get data when "preserveRaw"
    is off. He also changed the url tvlistings as his provider id kept
    changing every week on tvlistings2.

    - Fixed the 1.69 web menu dim button.

    - Added an --outdir option to image_resize, so we can store our resized
    photos separately from our originals.

    - Added a no_response option to .menu files.

    - Added a 'R: href=url' .menu file response option, so you can point to
    other web pages when web browsing menus.

    - Added a time_catchup_skip parm, to allow for skipping mh pause catchup
    mode on hybernated laptops. Default is a large number. More info in
    mh.ini help text.

    - Added a 'list voice commands' command in code/commond/mh_control.pl.

    - Fixed 2 wap phone problems. Blanks in menu names (e.g. 'Astro Time')
    were causing compile errors on some phones/browsers and recent
    wav->browser support was causing errors errors from some commands. Most
    wap phones don't do wml with wav files very well :).

    - Added an empty file to mh/web/cache. Clive Freedman noticed his unzip
    programs was not creating this directory because it was empty.

    - Drop / suffix on http file requests that the goofy Audrey sometimes
    adds on pushed wav urls.

  Version 2.69 posted on 07/03/2002
    Version 2.69 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - David Norwood created mh/code/public/v4l_pvr.pl and v4l_radio.pl for
    Linux systems. The pvr code (Personal Video Recorder) can record shows
    picked from the TV listings or shows that match a list of keywords. It
    has a basic web interface for controlling all its functionality. The
    v4l_radio.pl code allows you to stream music from a video4linux
    compatible FM tuner card to shoutcast clients on your network. Install
    instructions are at the top of the files.

    - Nick Maddock created mh/lib/Concept.pm and
    mh/code/public/alarm_concept.* to support the Concept alarm system from
    http://www.innerrange.com

    - Jeff_Ferris sent in code to access online mci voicemail. Enable with
    the new mh.ini phone_voicemail_* parms, used by
    web/ia5/phone/voicemail.pl.

    - Andy Oldfield created mh/lib/read_table_xml.pl to support a Format=xml
    mht file. We also now include the XPath XML parser in the mh/lib/site
    path.

    - Made quite a few changes to the new menu web interface. Added optional
    javascript navigation keys to the web menu interface (only supported on
    recent NS and IE browsers). Allow common menu pages to be split between
    different .menu files. Added active, color coded buttons. See the help
    text for a description of state dependent colors. To enable an active
    button, your menu Action must start with 'set $object', so we can
    associate the correct object with that button. To support the above, I
    had to change the set_menu_default syntax from Menu1,Menu2,Menu3 to
    Menu1|Menu2|Menu3.

    - Enabled overriding of file(s) in html subdirectories. Simply create an
    alias for the root directory, then populate subdirs with just the files
    you want to override. For example:

      html_alias2_ia5    = /misterhouse/web/ia5

    Then create a /misterhouse/web/ia5/security directory with the file(s)
    you want to override for the ia5 security page.

    - Added mh/code/test/x10_reset.pl. This will reset all X10 devices to
    their previous states after a power fail was detected.

    - I figured out the magic incantation to allow web browsers to cache
    static files (e.g. image files). Some older browers (e.g. Audrey and CE
    3.0) were already doing this, but the newer browsers (IE 6 and Netscape
    6) were not. This makes things like the menu buttons and LED clock much
    more usable, and speeds up most web pages. For IE, I had to clear my
    disk cache before it would start caching correctly.

    - Registered misterhouse.com, currently pointing to the same server as
    misterhouse.net Don't worry, no commercial intent planned. The domain
    name simply came up for grabs and the fees are down to $10 a year now,
    so I had little reason not go grab it :)

    Bug Fixes and Other Changes:

    - Added to the faq question 'What do I need to use the iButtons' with
    info from some recent posts.

    - Added shtml directive svar. Unlike var=, the variable contents will be
    returned only if the web user is authorized.

    - Added mh.ini parm html_color_header, now used by the ia5 pages and
    web/bin/status_line.pl.

    - Added sunrise and sunset (in addition sun, which auto-picked
    sunrise/sunset) to web/bin/status_link.pl

    - Added mh/code/examples/timer_remarks.pl an an example of how to some
    character to your timer reminders :)

    - Added signoff functions for AOL, MSN, and Jabber and used these in
    code/test/internet_im.pl. If you loose a connection, simply run the
    connect command.

    - David Norwood fixed a bin/get_tv_grid problem with incorrect vcr
    programing times for shows that start or end around midnight.

    - Mark Miller suggested we a page view counter, so we created a simple
    one with web/bin/counter.pl. Set mh.ini parm web_href_counter to blank
    to turn off the new ia5 web page counter

    - David Norwood updated the web server to allow for shtml style includes
    in user coded %Included_HTML strings.

    - Joseph Gaston found that a mh.ini password_allow_clients with a blank
    in the value (e.g. 'a, b') would allow any client.

    - Wally Kissel added the logon prompt to the web 'Unauthorized mode'
    response.

    - Nick Maddock added time_date_stamp format 18, for creating log file
    names.

    - David Norwood added Process_Item set_errlog, like the existing
    set_output, but for STDERR, rather than STDOUT. Examples in
    mh/code/examples/test_process.pl

    - Fenghua Zong fixed the mh.ini web_href_weather_local parm, used in the
    ia5 weather page.

    - Jeff Burricelli noticed mh was not storing the brightness level of
    X10_Items between mh restarts.

    - Jeff Burricelli's girlfriend updated Serial_Item to understand 3
    character X10 device codes (e.g. A16 rather than AG). We had previously
    updated X10_Item to allow for this, but not Serial_Item X10 codes.

    - Jason Brunen discovered mh would choke on code files named with a -
    (e.g. test-event.pl).

    - Created Faq from a Scott Reston post: What is the format of
    MisterHouse X10 codes?

    - Shane Harrison noted that we were inadvertently adding \n\r to raw
    Socket_Item output.

    - On XP, set $Info{OS_name} to XP, instead of NT. Added an abortable
    shutdown/reboot for XP option in mh/code/common/mh_control.pl.

    - Fixed missing web button images on some browsers (e.g. Netscape 4.7).
    web/bin/button.pl to was not adding a mime header.

    - Fixed 'list all timers' (need a space after "voice=male" ...)

    - Fixed 'browser lights/appliances' from the ia5 lights page.

    - Added mh.ini parm http_pause_time to control the http_server time
    exceeded messages. Defaults to 2 seconds.

    - Replaced the ia5 MisterHouse logo. The old one was cute, with the
    butler tie, but I thought the H looked too much like an M, and
    MisterMouse just didn't seem right :) Any alternate logo suggestions are
    always welcome.

    - Modified web/bin/photos.pl background menu from a 3x3 grid to a 4x3
    grid, adding a menus button next to the main menu button. Also used a
    style sheet directive to avoid tile-ing when in background mode on
    larger browsers.

  Version 2.68 posted on 05/28/2002
    Version 2.68 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Bill Sobel added lib/AudiotronPlayer.pm, to support the Turtle Beach
    AudioTron. Bill also made updates to these modules: Stargate485.pm,
    Stargate.pm, weather_vw.pm, Xantech.pm, and Compool.pm.

    - Pete Flaherty's created code/public/weather_iB_OWW_client.pl to read
    data from the OWW 1-wire ibutton weather station daemon (
    http://www.simon.melhuish.net/projects/oww/ ).

    - Added voice, compression, and deep thought buttons to the web/speak
    and ia5/web/speak pages.

    - Added alt text tags to most of the web pages, including the ia5 pages,
    so image-less browsers can see.

    - Added last_response data to internet_im.pl, so it returns the results
    from commands. Also added mh.ini parm password_allow_im to specifiy what
    im users can type commands.

    - Re-wrote mh/web/bin/status_line.pl to make it programable. In now
    supports 2 types of javascript clocks and you can pick the order and
    contents of data it displays. See html_status_line in mh/bin/mh.ini for
    more info.

    - Added a javascript clock to the photos.pl page, currently enabled for
    Audrey only, since they have limited space on the status line for a
    clock.

    - Re-wrote the web interface to menus (mh/web/bin/menu.pl) and added a
    Menus link from the top of the ia5 web page. Also added a
    set_menu_default function so we can have different default starting
    menus, depending on the type and location (e.g. ip address) of the
    browser. See mh/code/test/menu.pl for an example.

    Bug Fixes and Other Changes:

    - Alan Womack noticed we would mis-evaluated external commands that
    started with 'set ...' We also improved security with this option.

    - Kevin Wambsganz noticed that $Pgm_Root was only being substituted once
    in a multi-path code_dir.

    - Scott Reston added mh/code/examples/x10_cycle_light1.pl for cycling
    through various light states

    - Kent Noonan found a 2.67 problem with #include code=&sub directives.

    - William Steiner fixed a problem with web organizer events with the '
    character.

    - Bob Hughes fixed a negative lat/long postition report problem in the
    ham radio aprs mh/code/bruce/tracking_aprs.pl. We also took out the
    Bruce specific stuff.

    - Steve Switzer suggested a few updates to internet_im.pl.

    - Timothy Spaulding added a mh.ini parm caller_id_reject_file, which
    puts numbers into $Caller_ID::reject_name_by_number

    - Brent Gross added mkdir to the net_ftp command.

    - Don Wilde fixed read_dir in lib/ibutton.pm to turn off the switch
    after checking wind direction.

    - Created mh/web/public for misc. files that go with various
    mh/code/public files.

    - Mickey Argo sent in mh/code/public/wintv_radio.pl and
    mh/web/public/wintv_radio.html.

    - Fixed the response to vxml (voice xml) commands (some responses were
    not returning vxml).

    - Enabled voice_names for ViaVoice and added an example in mh.ini.

    - Enable last_response data to return display and print_log data in
    telnet.pl. Also improved telnet password authorization.

    - Added MSNim_Status hook in internet_im.pl for detecting buddy status.

    - Fixed internet_data.pl top 10 list url and a parsing hang.

    - Fixed last_response called from menu code.

    - Changed mh.ini parm html_browser_sizes default for MSCE browsers (e.g.
    Aquapad and Compaq IA1) from 640 to 800 and updated web/bin/photos.pl
    web photo code to use &http_agent_size to dictate the size of the touch
    grids and help screen.

    - Return 'housecode' from set_by if an X10_Item is set on/off with with
    All on/off.

    - Updated the dailystrip comics code to version 1.0.24.

    - Added 'Send test e mail to the cell phone' to internet_mail.pl.
    Dropped mh/bin/sprint_pcs.

  Version 2.67 posted on 05/04/2002
    Version 2.67 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - The remote web wav files wave files are now created in the background.
    To support this, the Voice_Text::is_speaking function now works
    accurately for all the unix TTS engines (except festival, which still
    uses a timer). The generated wav files are now stored in mh/web/cache,
    and have $Second append to them, to allow simultaneous multiple web
    clients.

    - Added support for the AT&T Natural Voices TTS engine (
    http://www.naturalvoices.com ).

    - Added mh.ini parm voice_names, so we can correlate generic voice names
    to specific names. For example, here is my entry (more examples in
    mh.ini):

      voice_names = female=>Crystal, male=>Rich16, male1=>Rich16,
                    male2=>Mike, Rich=>Rich16, Mary=>Crystal, Sam=>Mike

    - Allow for a user speech subroutine to be called from the speak
    function, with mh.ini parm voice_text = &user_sub. See
    mh/code/public/speak_mbrola.pl for an example.

    - Replaced mh/code/test/speak_server.pl with the much cleaner
    eliza_server.pl. If you use the eliza web interface, you will need to
    replace this in your user code also and delete any speak_server parms
    you have in your .ini file.

    - Gaetan Lord created mh/lib/X10_BX24.pm to support the BX24 X10
    Transceiver, info at http://www.laser.com/dhouston

    - Andrew Drummond created mh/lib/dss_interface.pm and
    mh/code/public/dss_interface.pl to provide serial port control of most
    dss receivers.

    - Scott Reston suggested we create a new Generic_Item state_changed
    method. Like state_now, it will return the object's state only for one
    pass after the object is set, but unlike state_now, state_changed will
    return undef (false) if the item is set to the same state it is
    currently in.

    - Kevin Wambsganz suggested we allow multiple code paths, so the mh.ini
    code_dir parm can now be a comma delimited set of directories.

    - Also put in support for multiple mh.ini files by using a comma
    delimited list of files in your mh_parms env var.

    - Holly Sommer found an perl module for the MSN instant messanger. Also
    added a message callback to the AOL AIM code and modified the
    Jabber_Message callback to return data consistent with MSN and AIM.
    These changes allowed me to merge example code for all 3 of into
    mh/code/test/internet_im.pl, so I dropped internet_jabber.pl. This code
    now also supports turning on and off logging of all speak and print_log
    data to any of the im clients.

    - Paul Chamberlain set up a TWiki web-based collaboration site for
    user-supplied MisterHouse documentation here:
    http://tifster.tzo.com/wiki/bin/view/Misterhouse

    - Fred Frey created mh/bin/send_verison for sending messages to verison
    phones

    - Clive Freedman created mh/code/public/chart_xl.pl for generating html
    that calls Excel via activex to chart log data.

    - Robert Rozman created mh/code/public/pictures_files.pl that uses a dbm
    to index a photo database.

    Bug Fixes and Other Changes:

    - Scott Reston added code/examples/x10_set_group.pl

    - Chris Witte suggested we allow multiple args to print_log, as print
    does.

    - Kip Gebhardt noticed that password_protect=all was not protecting all
    web pages.

    - Bob Hughes noticed that older browsers had some broken links for some
    auto-generated GD icons with blanks in the text (e.g. 'X10 Items').

    - Mark Miller found a 2.66 bug in display that would display previous,
    not requested, text.

    - Alan Womack sent in a bunch of spelling/typo fixes for the mh docs.

    - Joseph Gaston noticed that .shtml #include file="code.pl?item1&item2"
    args were not parsed correctly.

    - Mike Bruno and Harald Koch created faq question 3.4: How do I get
    Mister House to start up automatically when my linux box boots

    - Kevin Wambsganz created mh/bin/misterhouse_SuSe.rc for system startup
    under SuSE.

    - Alex Hsia and Bob Hughes helped find and fix a 2.66 problem with INC
    in dailystrips use of LWP/UserAgent.

    - Kevin Wambsganz added mh.ini parm lib_dir, so you can add or override
    .pl library files.

    - o

    Ron Klinkien updated and created some more ia5 icons. - Riad Wahby
    updated the AOL AIM module to work with a recent AOL change.

    - Alan Womack suggested we add a web/tk option for typing in commands,
    like we can type with the external bin/house command. Added this under
    the ia5 search menu.

    - Allow for .mht table files with objects that have multiple states. See
    mh/code/test/test_x10.mht for an example.

    - Test for X10_Item, not 'light' or 'lite', in button.pl to determine if
    it is a bright/dimable item.

    - Added mh/bin/do_nothing and allow for a Process_Item start cmd
    override. This allows us to bypass a long running process without
    changing much code. For example: start $p_top10_list 'do_nothing';

    - Keep one month of data in the data_dir/speak-print_log.old files. Data
    gets moved to .old2 files at the first of the month.

    - Fixed a 2.66 problem with udp socket data being ignored.

    - Fixed an old (2.45?) Timer problem where the timer expire time was
    reset on reload or restart. Also enabled timers that expired during the
    reload/restart to be triggered on startup.

    - Added mh/web/bin/status_line_clock.pl, which includes a javascript
    clock. Looks ok on an Audrey, but is not centered on IE or Netscape.

  Version 2.66 posted on 03/31/2002
    Version 2.66 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Robert Rozman sent in the mh/web/organizer files, a set of calendar,
    contacts, and tasks cgi scripts from verysimple.com. Copy the default
    mh/data/organizer files to your own data dir and point to that dir with
    the new mh.ini organizer_dir parm. I updated the default mh.ini calendar
    href links used in ia5/calendar to use these scripts, rather than the
    yahoo pages. Since these are conventional cgi scripts, they require the
    ability to redirct STDOUT (same thing required with the recent windows
    http_fork support). This works on unix and NT/2K/XP boxes, but not on
    many (any?) win95/98 boxes.

    - Created mh/code/test/organizer.pl, which monitors that new organizer
    calendar, and creates mh events to speak when a calender event occurs.

    - Added mh.ini web_href_calendar_history parm, used in the ia5 calander
    page. The default points to the results of
    mh/code/public/news_onthisday.pl, which now works again.

    - Added a speak -compression option, currently only for the MS V5 TTS
    engine. This option picks the .wav format to use when using -to_file to
    save TTS to a file. Options are (example sizes are for a short 4 word
    phrase):

       high => GSM 6.10 11 kHz   mono ( 3k.  Not usable on an Audrey),
     normal => PCM  8 kHz  8 bit mono (16k.  New default)
        low => PCM 22 kHz 16 bit mono (88k.  Old default)

    Also updated speak_server.pl and http_server webmute=0 to use -high if
    request was from a remote browser.

    - Updated X10_Item so that the ##% states (e.g. 10% or 75%) can be used
    with normal (older, cheaper) modules. mh will now use what it thinks the
    current brightness level is to come up with a +-## bright/dim command.
    If the module was off, it will first be turned to full on, since the
    older modules can not be dimmed from an off state.

    - To support the above change, but still allow preset-able modules to
    use ##% preset levels, we added a 3rd parm to X10_Item (the 2nd parm is
    what X10 interface you want to use, if you don't want the default).
    Those of you with newer 2-way modules that support preset dims (e.g.
    LM14) will want to specify 'preset' or 'LM14'. Here is an example, in
    normal and mht form:

      $light1 = new X10_Item('O1', '', 'preset');
      X10I,  O2,  light2, All_Lights|Upstairs,   ,LM14

    - Added mh.ini html_status_line* parms, so you can point to a custom
    status line at the bottom of your ia5 and photos page. Default is
    web/bin/status_line_small/big.pl, depending if you are browsing from a
    small browser (e.g. Audrey or WinCE) or not. Bob Hughes fixed a bug to
    re-enabled the sunrise icon.

    - Brian Paulson added Generic_Item methods set_web_style and
    get_web_style, to allow us to pick the web style of dropdown, radio, or
    url for Voice_Cmd objects. An example is in
    mh/code/examples/test_web_styles.pl.

    - Richard Phillips added code/public/mp3_playlist_xmms.pl for linux, so
    that now *all* the playlist functions, mp3 database, etc available in
    the standard ia5 jukebox work 'just dinky keen fine'.

    - David Norwood and I created mh/code/public/tk_photos.pl, like the web
    photo slideshow, but displays locally and full screen. Use keys n,p,q
    for next, previous, and quit. If you have Image::Magick installed (or
    run mh.exe) and have a fast box, you can try setting mh.ini parm
    photo_resize=1 to have the images resized on-the-fly to full screen
    (causes mh pauses on slower boxes).

    - Added a 2nd, $second parameter to time_now and time_cron. Use this to
    specify which second to fire on. If not specified, the default is still
    $Second == 0 (i.e. minute boundaries). Set to '*' to fire on all passes
    for the matched minute(s). Note, we had recently added a more limited
    2nd parm to time_cron, so if you used this, change it from '1' to '*'.

    - Added the option to specify default speak options with mh.ini parms.
    For example, if you want to have a default volume of 40, use
    speak_volume=40. If you want to have all speech go to files, use
    speak_file=file_name.

    Bug Fixes and Other Changes:

    - Reverted the windows mh.exe back to perl 5.0 (it was 5.6 in the 2.65
    release). Except for the Jabber code, 5.0 still does everything that 5.6
    does, and there seems to be fewer memory problems for most.

    - Modify INC path to look for mh/lib before, not after, the locally
    installed libs. This avoids inconsistencies with older/newer modules
    installed locally. Also modify INC before we process mh -run commands,
    so you can use the local mh lib modules when calling various mh/bin
    scrips. Also added a lib/site_win* dirs so we can support Windows
    sendkey on both 5.0 and 5.6.

    - Added a mh.ini gd parm, to allow the GD web page icons to be turned
    off.

    - Brian Paulson added code to the ibutton modules to verify the chip is
    on the bus before trying to read it's temperature.

    - Harald Koch updated bin/get_weather_ec (Canadian weather data) with
    more reliable table parsing.

    - Gary Sanders found a problem with passing & data to web scripts, like
    iniedit.pl.

    - Kent Noonan fixed logos in get_tv_grid when using multiple providers.

    - Craig Schaeffer found a 2.65 get_tv_grid problem in searching for
    favorite tv shows, and Scott Johnston found an INC problem where it
    would not find LWP modules.

    - Kent Noonan updated lib/RedRat.pm to allow for saving and setting of
    states.

    - Bob Hughes sent in some fixes for the new web button code.

    - Scott Reston added a _stopped state to X10_Sensor. We also fixed it so
    the 2 character id option works.

    - Kevin Wambsganz and I added $ENV{HTTP_QUERY_STRING}, which reflects
    the current web page's arguments. This lets use use parent shtml page
    arguments in child includes.

    - Added -height, -width, and -geometry options to display. Used in
    internet_data.pl top 10 list display, along with a bigger font so we can
    read the tk display from across the room.

    - Added a 'Force reload code' option and call this from a 'Build mp3
    database', so new songs are shown without restarting mh.

    - Fixed timers.pl 'Cancel all timers'

    - Fixed a 2.65 bug that messed up mh client sockets on perl 5.0

    - Added a 'List status of all code files' commands so we can review if
    any code files are disabled.

    - Added 'Back' buttons to the upper left quadrant of the LED clock and
    photo pages.

    - Enabled the web ia5 WebMute and MSAgent speech settings page, using a
    new mh/web/bin/set_cookie.pl function.

    - Changed the default for mh.ini parm http_fork. If not specified, it
    now defaults to 1 (on) for unix and NT/2K/XP and 0 (off) for win
    95/98/me. Also, setting it to 0 will now disable if on unix also, for
    those having problems with forks there.

    - Fixed a memory leak problem when displaying .gif or .jpg images with
    tk.

  Version 2.65 posted on 03/01/2002
    Version 2.65 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Ron Klinkien updated the default ia5 web interface. Amongst other
    changes, he added more customized icons and he and I created nifty
    web/bin/*button*.pl routines for creating .jpg buttons on the fly if the
    perl GD module is installed (mh.exe has GD compiled in). These are
    cached in a new web/cache dir.

    - Upgraded the windows compiled mh.exe from perl 5.002 to 5.6. My
    perl2exe registration key did not migrate to the new version and I have
    not yet sprung another $50 for the upgrade, so you will see a message
    and small delay when you exit mh.exe. One obscure problem I noticed
    (with this new mh.exe only) is that file OPEN calls with a DATA
    filehandle cause an abend! DATA can be special in perl, so should be
    avoided. The only place I had this in my code was in the phone_logs.pl
    member (I renamed DATA to PLOG).

    - Upgraded windows Setupsup.pm to a 5.6 compatible version. This means
    that we can start using sendkeys to control other Windows programs
    again. If you are still on a pre5.6 perl and use this function, install
    the older version into your local perl dir (email me for details).
    Pre5.6 users will also now need to also install Win32::Api locally (see
    install docs), as it is no longer include in the mh/lib/site path.

    - Renamed get_changed_by to get_set_by and added these as valid return
    values: web, tk, telnet, vr, xcmd, serial. Also added it as an option to
    run_voice_cmd. Examples are in code/test/internet_jabber.pl and
    code/examples/test_set_by.pl

    - Allow for multiple clients to connect to a mh socket server. For
    example, you can now have multiple telnet clients (if you run
    telnet.pl). Also added an optional 3rd parm to the Socket_Item set
    method which can be 'all' (send to all connected clients), ip_address (a
    regular expresion of the ip address(s) you want to send to, or
    client_number (which client to send to, 0 .. #). See telnet.pl for an
    example.

    - Allow for multiple html_alias directories for the same web root, where
    the last one wins. So, for example, to override some of the icons in
    mh/web/graphics, use html_alias2_graphics=path_to_your_icons as a 2nd
    graphics dir parm.

    - Added mh/code/test/comic_dailystrips.pl to update a new web/comics
    dir. Modify the mh.ini comics parm with any from the over 300 comics
    listed in web/comics/dailystrips/strips.def. Like the tv data, you can
    change the mh.ini html_alias_comics parm to store the comics out of the
    mh distro path.

    - Gaetan Lord created mh/code/common/Xmms_* files for controlling the
    linux xmms mp3 player. He also updated his xmms jukebox at
    mh/web/music/xmms (was in mh/web/misc/mp3_control_xmms.pl)

    - Roger Bille sent in the files in mh/code/public/Roger. This code is
    targeting APRS, including generating this aprs hub status page:
    http://ahubswe.net/ahub.html

    - Stoll Thomas created mh/bin/get_tv_*_ge for retreiving and and
    searching german tv shows via http://www.tvspielfilm.de

    - Harald Koch created mh/code/public/weather_ec.pl and
    bin/get_weather_ec for parsing Canadian weather data from
    weatheroffice.ec.gc.ca into %Weather.

    - David Lounsberry sent in mh/code/public/weeder_david.pl,
    hvac_david.pl, and rrd.pl which show how he monitors 14 iButton buttons
    and the new Solid State Relay weeder board to control his HVAC system.

    - Kent Noonan created lib/RedRat.pm and code/public/redrat.pl and
    redrat_capture to control IR devices with the RedRat interface:
    http://www.dodgies.demon.co.uk/index.html

    Bug Fixes and Other Changes:

    - Joe Blecher updated mh/lib/LynxX10PLC.pm to autoconfigure on startup.

    - Yangmin Shen noticed is_speaking was broken for festival users.

    - Mickey Argo sent in mh/code/examples/volume_level_reset_httpq.pl as an
    example of how to reset mp3 volume levels using httpq

    - Harald Koch also fixed a problem with running a Process_Item on an
    internal function on unix.

    - Brian Paulson sent in mh/code/public/iButton_ws_brian.pl.

    - Brian Paulson also added a ibutton_line_length mh.ini parm. It
    defaults to LONG, which matches what the previous code did. If you have
    had problems here, try setting it to SHORT.

    - Tom Witmer made a bunch of updates to get_tv_grid, including getting
    it to work again after some changes on the clicktv end. His changes are
    outlined at http://www.angelfire.com/co4/mister_tom/tvmods.html

    - Tom Vanderpool and I created web/bin/tagline.pl, used by the main ia5
    page for a random remark.

    - Harald Koch updated mh/code/bruce/inernet_jabber.pl to add code hooks
    for processing jabber commands (jabber is an open source XML instant
    messaging program). He also fixed a mh exit problem if a jabber
    connection was lost.

    - Tom Vanderpool noticed a recent mh problem where it exited when
    speaking with voice_text=ms, but no ms engine installed.

    - Kevin Wambsganz noticed that the $New_Msecond flags were not
    syncronized with the $New_Second flag.

    - Kent Noonan found a bug where Voice_Cmd states of 0 were returned as
    1. For example, 1 was returned for both the 0 and 1 states here: $ir =
    new Voice_Cmd 'Press [0,1,2]');

    - Joseph Gaston updated the HomeVision module mh/lib/HVweb_Item.pm.

    - Harald Koch added FAQ question: Where is perl program code located?

    - David Norwood fixed the web ini editor commit option and the handling
    of ' and & characters.

    - Re-enabled sound_program=vv_tts

    - Updated web/ia5/speak page to not have a hard coded ip address by
    using $Http{Host_address}.

    - Added mh.ini proxy parm, used by get_url and get_tv_grid to enable use
    behind proxy firewalls.

    - Deleted some of the older web interfaces from mh/bin/web. If anyone
    wants them back, let me know.

    - Updated the default ia5 page to honor a new mh.ini photo_time_startup
    parm. Set this to a large number to disable the photo slideshow.

    - Added jump-to option to photos slideshow (click on photo number).

    - Also added a help screen to the photos slideshow when in background
    mode (like when called from an Audrey). Touch the center of the screen
    to activate.

    - Updated &get_ip_address, used to set $Info{IPAddress_local}, to work
    better on unix.

  Version 2.64 posted on 01/23/2002
    Version 2.64 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Minor release (no no features)

    Bug Fixes and Other Changes:

    - Alex Hsia found a 2.63 problem if you had vv_tts_program and no
    sound_program parm.

    - Added missing perlctl.dll missing from 2.63 win.zip

    - Backup up to an older mh/bin/viavoice_server binary, so the newer
    /lib/libc.so.6: version 'GLIBC_2.1.3' is not required.

    - Changed default &net_connect to pre 2.63 behaviour of returning 1 if
    net_connect_if is not specified.

    - Fixed a 2.63 bug in get_url url file (file data was not saved)

    - Fixed yet another 2.63 bug that caused normal MS TTS to lost after a
    speak to_file call.

    - Fixed the "Can't find '_hparser_xs_state' element in HTML::Parser"
    error.

    - Added an example copy of mh/data/pronouncable_words.list

    - Added mh.ini parm ipaddress_local which overrides
    $Info{IPAddress_local}, now used in speak address option.

  Version 2.63 posted on 01/19/2002
    Version 2.63 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Chris Witte created mh/lib/audrey_cid.pm and
    mh/code/public/audrey_cid.pl to create a UDP client to request callerid
    data from the Audrey acid UDP server.

    - David Lounsberry added support for mixer and voice selection to the
    viavoice TTS driver mh/bin/vv_tts.pl. These changes allow for setting
    the mixer for the play sound and the voice sound separately.

    - Gaetan Lord created mh/code/public/dialup_unix.pl for
    starting/stopping ppp dialup connections. He also and added mh.ini parm
    net_connect_if so unix users could test for ppp dialup connections with
    &net_connect_check.

    - Gaetan Lord also created mh/web/misc/mp3_xmms.* (unix only, requires
    Xmms::Remote to be installed).

    - Richard Phillips created mh/code/public/mp3_control_xmms.pl for
    controling the xmms MP3 player for Linux.

    - Joseph Gaston created mh/lib/HVweb_Item.pm to control a Homevision
    controller via the Homevision web server. Example usage is in
    mh/code/public/HVweb.pl.

    - Larry Roudebush created mh/code/public/internet_speed_check.pl for
    measuring ftp updload/download rates.

    - Paul Chamberlain clued me into HTTP '204 No Response', which enables
    web links that do not update a web page. If you code a html link a
    h_response of no_response, the page will not be changed when you click
    on the link for most browsers (does not work with Audrey). For example:
    <a href="RUN;no_response?read_the_house_tagline">test no_response</a>

    - Brian Paulsen added self-adapting delay code to the iButton Device.pm
    code to improve read_temperature reliability.

    - Kent Noonan started on mh/lib/Omnistat.pm and
    mh/code/public/omnistat.pl for controling HAI Omnistat Communicating
    thermostats (e.g. RC80). Kent switched houses before he had a chance to
    finish test this code.

    - Added Linksys router support to mh/code/bruce/monitor_router.pl.

    - Added web server support for normal cgi scripts, where html is
    returned via STDOUT. To enable, simply make sure that your .pl file you
    point to has perl on the first record (e.g. #!/usr/bin/perl).

    - Added mh/docs/install.* instructions on how to install the fast unix
    TTS flite engine. Copy it to mh/bin/flite, or point to it with mh.ini
    parm voice_text_flite. If on linux, you can pick up a copy (3 meg) here:
    http://misterhouse.net:81/public/flite.gz

    - Added speak engine= option. The default engine is still specified with
    the mh.ini voice_text parm, but you can use this new option to pick any
    other (unix) engines you have installed. For example: speak
    "engine=flite Hi", or speak engine => 'viavoice' text => 'Hi'. Some test
    code is in mh/code/bruce/test_voice.pl .

    - Added and/or fixed the speak to_file option for festival, viavoice,
    vv_tts, and flite.

    - Enabled voice, volume, and rate controls for Festival via SABLE xml
    flags. This is done with a direct call to festival, since I couldn't get
    it to work with festival_server. To enable, point to the festival binary
    with the new voice_text_festival mh.ini parm. Non-SABLE TTS calls will
    still be made to festival_server, if it is running, as it is a bit
    faster, especially on slower machines.

    - Added speak and play address option for pushing speech to remote
    browsers. For details on how to enable on an Audrey, see mh/docs/faq_ia*
    question: How to push speech to remote Audreys Example is in
    mh/code/bruce/audrey.pl

    Bug Fixes and Other Changes:

    - David Lounsberry sent in FAQ question 3.3: How do I add a multi-port
    serial card in linux?

    - Nick Maddock updated get_tv_info so it corretly searches into the next
    month (e.g. -dates +14 on 12/30 would stop on 1/1).

    - Jeff Pagel sent in mh/code/public/weeder_init.pl as an example of
    initializing the newer weeder DIO cards.

    - Robin Edwards found a 2.62 problem where web widgets were blank on
    startup, before a code reload. This also fixes a startup problem some
    were having with 2.62 due to the new trigger code.

    - Clay Jackson updated mh/code/public/weather_vw.pl with an example of
    logging weather data to APRSWXNET.

    - Fixed perl 5.6 infinite loop problem AOLIM.pm, called by &net_im_send
    which is used in code internet_im.pl.

    - Allow for unit=9,10,11..16, instead of 9,A,B,C..F in X10_Item and
    X10_Appliance.

    - Sped up adding words when running viavoice_server. If you see any 'no
    data' errors in the server errata, let me know and we will try to get a
    bit smarter on that interface.

    - Allow for multiple (comma or semicolin delimited) to receipents in
    &net_mail_send.

  Version 2.62 posted on 12/16/2001
    Version 2.62 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Improved the speed and reliability of the web server by recoding how
    browser socket data gets processed.

    - Added mh/code/common/trigger_code.pl. David Norwood came up with the
    idea of allowing for code that runs only a specified number of times,
    then self prunes itself. Rather than do this with objects, as David
    first suggested, I implemented this with a file to keep it simpler and
    the overhead less. Examples are in mh/code/bruce/tv_grid.pl and the web
    page /ia5 Event-clock -> alarms button (/misc/alarms. Triggers are
    stored in data_dir/triggers.current.

    - Added a bunch of mh.ini web_href_* parms, so we can point the default
    /ia5 web pages to references of our choice. I picked some default ones
    ... suggestions welcome.

    - Tom Vanderpool created mh/lib/Weather_wmr968.pm and
    mh/code/public/weather_monitor_wmr968.pl. This supports the new wireless
    stations ($330 from http://www.valcoelectronics.com/oregon/wmr968.htm or
    $400 Radio Shack Accuweather pn 63-1016), as well as the (we think) the
    wired wmr918. The older Weather_wx200.pm works with the wx200 and wx918
    (not wxr918) stations. See the header in Weather_wmr968.pm for more
    info.

    - Joe Blecher created mh/lib/Lynx10PLC.pm to support the Marrick X10
    Lynx10-PLC controller ( http://www.marrickltd.com/LynX105.htm ).

    - David Lounsberry updated get_tv_grid and get_tv_info to support
    multiple databases (e.g. tv and cable). Use the new -db parm to point to
    a new set of mh.ini parms. For example, copy the tv_* parms as sat_*,
    then run get_tv_grid twice, once with -db tv and once with -db sat.

    - Kent Noonan updated Ultimeter2000.pm and added Video_Inline.pm and
    mh/code/public/video_inline.pl to control his Inline video scan doubler.

    - Kent Noonan sent in mh/code/public/weather_pollen.pl for monitoring
    pollen counts from pollen.com.

    - Robert Rozman and I created mh/web/misc/mp3.html for a web based mp3
    jukebox, including playlist and search functions.

    - David Lounsberry suggested we add a countup option to Timer.pm. Here
    are the new timer methods: start,restart,stop,pause,resume,query. Added
    an example to mh/code/examples/test_timer.pl.

    - David Norwood added mh/code/public/weather_chance_of_rain.pl for
    announcing when rain or snow is forecasted.

    Bug Fixes and Other Changes:

    - Brad Reed tracked down a 2.61 (hard to find!) problem which caused mh
    to exit when sending email on his linux box.

    - Kevin Olalde fixed the mh.ini ibutton_tweak option.

    - Jeffrey Ferris updated mh/code/public/wintvpvr_grid.pl for controlling
    the Hauppage WinTV PVR.

    - Mickey Argo and David Norwood modified tv_info.pl to report on
    favorite shows 2 minutes before they start and tv_grid.pl to updated the
    default tv pages 10 minutes prior to the hour.

    - Brian Klier noticed the new get_tv_grid did not work with the compiled
    mh.exe (missing the cookie module).

    - Tim Doyle noticed that tk pull downs did not work with Voice_Cmd
    {a,b,c} enumeration strings.

    - RJ Riemensnider sent in the javascript code for mh/web/clock.

    - David Lounsberry added get/set,incr,reset_count methods to
    Generic_Item.

    - Kieran Ames added %Included_HTML to the web server, so you can add
    html to the auto-generated /list?xyz html by setting adding this to your
    user code: $Included_HTML{xyz} = "...your html...".

    - Kieran Ames sent a pointer to an example of using gnuplot to plot
    ibutton temps here: http://ames.myip.org:81/pages/my_iButtonVenture.htm

    - Craig Schaeffer found a 2.61 problem with the new email not being
    tallied in $Save{email_check}.

    - Chris Witte suggested we move set_with_timer from X10_Item to
    Generic_Item.

    - Added a status frame to the photos slide show /misc/photos.html. Also
    cross-linked it to the new /clock javascript clock.

    - Updated the web server to drop HTTP headers on .pl results when called
    from .shtml files.

    - Updated mh/bin/get_tv_grid to not store data on -skip or non -keep
    channels. Also fixed a table problem that caused Netscape not to display
    channels.

    - Updated mh/code/bruce/trivia.pl to store data in the user data_dir.

    - Changed net_mail_summary (used by get_email) age option to check
    against date received, rather than date sent.

    - Fixed the tk_widgets.pl pause button. Needed to point to
    &toggle_pause, not &pause.

    - Changed the default mh.ini parm to webmute=1, since many Unix users
    were not able to play wav files.

  Version 2.61 posted on 11/18/2001
    Version 2.61 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - Ron Klinkien and Doug Nakakihara created the ia5 and ia6 web
    interfaces. I changed the default to ia5, so if you want to use the
    older mh4 interface, set mh.ini html_file=mh4. ia5 still has a number of
    menus that need updating from Ron's specific setup, but it is an
    excellent start at overhalling mh's web interface. Over the next few
    release, I expect we will continue to refine ia5, as well as adding
    parts from the other web menus.

    - Added a speak -card # option, for users of voice_text MS V5 users. If
    you manage to get multiple sound cards installed, this allows you to
    pick which one gets used. To get 2 cards recognized by windows, you will
    probably have to install 2 different types of sound cards. I didn't have
    any luck with 2 SB Live cards, but a SB Live and a SB Audigy mostly work
    ok together, even though Creative does not advice it.

    - Rewrote Doug's pictureframe.pl script as mh/web/bin/photos.pl and
    photo_search.pl, controled with mh.ini photo_* parms. These allow for
    forward, pause, reverse, search, forground/background, and sync options.
    I included a few small example photos in mh/data/photos. To view, use
    http://localhost:8080/bin/photos.pl To point to your own photos, point
    to them with the mh.ini parm html_alias_photos, copy
    mh/code/test/photo_index.pl and run 'Reindex the photo album'.

    - Added mh/bin/image_resize, which uses the powerful ImageMagick module
    to resize photos. I use it to keep 640x480 versions or our 5000+ photo
    collection for use with the above photos.pl script on small screens like
    the Audrey or ePod. See the top of image_resize for instructions on
    installing the required Image::Magick module on either unix or windows.

    - Tim Doyle created mh/code/public/voice_client.pl and voice_server.pl
    as a way to allow mh to speak to other windows boxes. He uses it on his
    boxes at work (through a firewall), to listen to what his house is up
    to.

    - Jeff Ferris's created mh/code/public/wintvpvr_grid.pl for controlling
    a Hauppage WinTV PVR USB to record TV shows using the tv_grid web pages.

    - Tim Doyle added mh/code/public/internet_starshine.pl to announce when
    one of the visible passes of a StarShine satellite is about to occur.

    - Kent Noonan created mh/lib/Ultimeter2000.pm, to support the Peet Bros.
    weather station (http://www.peetbros.com) Example code is in
    mh/code/public/weather_monitor_ultimeter2000.pl. I think this is a work
    in progress (i.e. I'm not sure if it works yet).

    Bug Fixes and Other Changes:

    - Doug Nakakihara sent in mh/code/public/chimes_cuckoo_doug.pl, a cukoo
    clock that uses only one wav file.

    - William Harford found a few lowercased module names in mh/lib/site

    - David Norwood updated http_server.pl and
    mh/web/misc/pictureframe.shtml (and now photos.pl) to allow for photo
    filenames with blanks.

    - Jeff Ferris fixed a problem with authorizing .pl web files.

    - Craig Schaeffer discovered 2.60 broke multi-line mh.ini parms.

    - Tim Doyle and Tom Vanderpool added X10_Sensors support to .mht files
    as X10MS entries.

    - Paul Chamberlain and Mark Mabry sent in a few more unix examples on
    starting/stoping mh in mh/bin/misterhouse*.rc

    - Doug Nakakihara fixed get_tv_grid to allow for show titles with html
    markup.

    - David Norwood updated mh/bin/get_tv_grid to store local copies of logo
    images.

    - Scott Johnston fixed a bug with tar in mh/bin/backup_data when run on
    linux

    - Dan Wilga and I added -keep and -skip channel options to get_tv_grid,
    to choose which channels to keep and skip.

    - Tim Doyle updated mh/code/public/internet_earthquakes.pl to be a bit
    smarter, like earthquakes_cal.pl.

    - Tim Doyle also sent in an update to mh/code/public/aqualink.pl code
    for controling the Jandy AquaLink pool controller.

    - Added a -no_title option to get_tv_info and used in in the
    favorite_tv_shows searchs in tv_info.pl

    - Minor improvements in the iniedit help

    - Added a net_mail_account_server_port and
    net_mail_account_server_send_port options. Also changed ftp timeout from
    120 to 20.

    - Updated mh/bin/get_email to delete attachements from the email
    summaries.

    - Added a few more Audrey entries to IA FAQ: mh/docs/faq_ia.html

    - Created mh/code/examples/audrey.pl as an example of how to control the
    Audrey led and screen from mh.

    - Change the html alias parm format (old style still works):

      Old style:  html_alias_tv = /tv $config_parms{data_dir}/tv
      New style:  html_alias_tv =     $config_parms{data_dir}/tv

    - Allow for authorizing web .pl scripts with this script string: '#
    Authority: anyone'

    - Added a &referer web response function, to work around tha Audrey
    problem of not returning full referer urls. See the ia5
    lights/appliances page for an example.

  Version 2.60 posted on 10/20/2001
    Version 2.60 was just uploaded to:

      http://misterhouse.sf.net/download.html
      http://misterhouse.net:81/download.html

    New Features:

    - David Norwood added the option to edit private mh.ini parms with a web
    browser. Use http://localhost:8080/bin/iniedit.pl or the new Admin menu
    the default web page. This uses a slightly reformated mh/bin/mh.ini file
    with embeded help text and categories. Also added to support this is
    http POST requests, but for some reason this currently is slow under
    Netscape.

    - Added remote web browser wav file support. For TTS engines that
    support speak-to-wav files (currently MS TTS 5.1 and maybe Festival),
    the web server will send create and send a wav file for the requested
    text. To disable, check the new Mute checkbox at the top of the default
    webpage, or set mh.ini parm webmute=1.

    - Added mh.ini net_mail_scan_age parm. This is the age, in minutes, of
    email to report/scan. If blank (the default), get_email (called
    periodically by internet_mail.pl) reports on all mail on your server (as
    it used to). If your have your mail client set to 'leave mail on server'
    (useful if you want to use appliances like Audrey or remote web servers
    like HotMail to also read mail), you will probably want to set this to
    something like 15, to match how often inetnet_mail.pl checks for new
    mail.

    - Added a couple of slimed down web pages for Internet Appliances like
    ePod or Audrey. These are the current ones in mh/web (now outlined in
    mh/web/README.txt):

      ia1 is a slightly slimed down version of the default page.
      ia2 (was named epods).  Craigs page he uses for his epods.
      ia3 John Edmonds pages with nice big touchable icons
      ia4 Ron Wright's pages he wrote for his Audrey

    - Updated mh/bin/get_tv_info and code/test/tv_grid.pl to read zap2it.com
    pages, rather than the now dead clicktv.com. Many thanks to David
    Norwood and Harald Koch for coming up with the secret cookie recipe!
    Renamed mh.ini parms clicktv_* to tv_* and added tv_provider and
    zip_code parms. Also renamed web/tv/clicktv to web/tv/download.

    - Denis Cheong has started work on mh/lib/X10_JR21A.pm, to support the
    JR21A MouseRemote receiver with corresponding JR20A MouseRemote remote.

    - David Norwood added mh/code/public/chimes_cuckoo.pl and
    chimes_westminster.pl to enable poor man's cuckoo and grandfather
    clocks.

    - Ron Klinkien sent in mh/code/public/callerisdn.pl for getting callerid
    from an ISDN AVM Fritz!Card.

    - Denis Cheong created mh/code/public/sensors_lm.pl to get motherboard
    temperature data from the (linux only) lm sensors program.

    - Doug Nakakihara created mh/web/bin/pictureframe.pl and
    mh/web/misc/pictureframe.shtml for serving auto-refreshing pictures to a
    web browser. I updated it to use a mh.ini pictureframe_dir parm. Set
    that var, then use with http://localhost:8080/misc/pictureframe.shtml
    More info in pictureframe.pl. Also moved a few other misc files out of
    mh/web and into the mh/web/misc dir.

    - Added mh/doc/faq_ia.html (and .txt) with questions/answers about
    internet appliances like the Epod and Audrey. Additions welcome!

    - Added a State_change hook. This allows us to add events that trigger
    when any object changes state, so for example we can create state logs
    that other programs can use to monitor mh activity. An example is at the
    end of mh/code/bruce/test_code_hooks.pl

    - Added set_label. Like set_icon, this can be used to create more
    readable menus, although it is not used in any menus yet.

    Bug Fixes and Other Changes:

    - Evan Graham fixed a typo enabling the passive ftp option.

    - Douglas Parrish updated mh/lib/read_table_A.pl. to add iButton support
    to mht files.

    - Jeff Pagel discovered a startup problem with 2 or more iButton ports.
    See mh/code/bruce/iButton.pl for new details on how to use 2 or more
    iButton ports. The parm names were changed slightly to be consistant
    with other multiple-port devices, although the old parm names are
    grandfathered in.

    - Ingo Dean found mh 2.59 broke speak for viavoice and festival users.

    - Geoff Harrison and Joel Moore suggested an (untested) implementation
    of speak -to_file options for Festival.

    - Sam Levine found problems with the Tk pause button and trying to read
    from blank caller id parms.

    - Ken Schumack had unreadable symbol fonts used for tk menus, so we
    added a new mh.ini tk_font_menus parm, which he set to ansi.

    - Denis Cheong found a problem with time_now checks when using
    date_format=ddmmyy

    - David Norwood sent in FAQ question 1.20: How can I point MisterHouse
    to a custom web interface?

    - Fixed web Item refresh for browsers without full Referer urls, like
    Audrey.

    - Updated the web server to redirect directory links to add a trailing
    /, (e.g. http://epods -> http://epods/) so we can rely on relative
    links.

    - Added mh.ini -no_speak errors option to disabled speaking warnings of
    user code errors.

    - Fixed a problem with the X10_Sensor expired battery check.

    - Print a warning if password_file is missing.

  Version 2.59 posted on 09/23/2001
    Version 2.59 was just uploaded to:

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

    New Features:

    - Lowered %cpu used by improving cache hits by sleeping twice per loop,
    rather than once. My linux box showed a 30% reduction in cpu used with
    the same passes per second. My Win 2k box showed cpu used going from
    4->20% to 0->4% used (sleep time=10, Loops/sec 30, Pentium III 600 mhz).
    You may want to cut your sleep time in half (e.g. 100 -> 50) to keep the
    same loops/sec speed. Another benifit to this change is the speed
    benchmark table now shows less dependence on code position (abc members
    used to get run faster than xyz members, because the xyz members got
    swapped from cache more often). Also added OTHER and USER entries to the
    speed benchmark table, to measure time spent in and out of the user code
    loop.

    - Added support for the new Windows MS Voice SDK 5.1 TTS engine (but not
    the VR engine yet). This allows for control of volume, rate, pitch, and
    voice. For example:

      speak voice => 'Mike', volume => 50, rate => -5, text => 'Hi';
      speak voice => 'Mary', volume =>100, pitch => 5, text => 'Bye';

    To set the defaults, call speak without text (e.g. speak voice =>
    'Sam'). The new engines also supports embedded XML parms for other
    on-the-fly controls (e.g. pitch, silence, pronounce, emphasis). Another
    new speak option is to_file, so you can save the synthesized speech to a
    file, then play it. For examples, see mh/doc/ms_speech_xml_example.*,
    mh/docs/mh.*, and mh/code/bruce/test_speak.pl. A pointer to the 5.1
    download is in the MS SDK 5.1 instructions secion of mh/docs/install.*
    Note: 5.1 drops support for Win95.

    - Rob Walker suggested and David Norwood implemented an Emacs like date
    specification for day-of-week type holidays (e.g. Labor Day). David also
    populated the mh.ini holiday_dates parm with popular holidays.

    - Roger Bille sent in mh/code/public/sms1.pl as an example of how to
    interface to SMS with a GSM modem.

    Bug Fixes and Other Changes:

    - John Edmonds discovered that MS CE browsers (e.g. epods) were not
    picking up the alternate browser pages.

    - Robin Edwards discovered a problem with web commands from Netscape
    6.1.

    - Ron Klinkien updated mh/code/public/webcam_ron.shtml

    - Samuel Bagfors sent in mh/code/public/ImageWebSub.pl as an example of
    a web icon selecting function.

    - Walter Leemput found a memory leak in the reload code command (doubled
    memory after 4-5 reloads).

    - Harald Koch sent in an update so mh works with the latest Jabber (an
    open source instant messanger service). This requires perl 5.6+ as well
    as current modules from CPAN (the Activestate ppm ones are too old). See
    the header in mh/code/test/internet_jabber.pl with more info.

    - Donald Mason discovered that preset-dim X10 codes ##% were disabled in
    the 2.57 release.

    - Jeff Pagel discovered the iButton monitor didn't work with more than
    one ibutton port.

    - Added a serial_wx200_skip option to turn off specified weather sensors
    ... guess who had lost one in a lightning storm :{

    - The latest Windows perl builds from Activestate (6.28+) have fixed the
    leak memory problem, although initial virtual memory used is bigger by
    about 40%. Real memory used and passes-per-second are about the same.

    - Updated outlook_read to work with perl 5.6 (dates were being returned
    as Win32::OLE::Variant objects).

    - Updated HTML table extraction to work with perl 5.6.

    - Updated internet_data.pl to work with the latest Letterman top 10
    list.

  Version 2.57 posted on 08/12/2001
    Version 2.57 was just uploaded to:

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

    Note: A change this release requires all of us in the Western Hemisphere
    (e.g. Americas and Canada)to follow the common convention of using a
    negative time_zone and longitude mh.ini parms.

    New Features:

    - Added these new speak mode options for controling spoken text
    (currently only for the MS TTS engine): stop, pause, resume, rewind,
    fastforward, slow, normal, fast, ###. The speak rate option also
    supports slow, normal, fast, and ###. ### is words per minute. For
    example: speak rate => 200 Added mh/code/common/mh_sound.pl commands
    "Set speech to 'stop,pause,....'"

    - Walter Leemput created mh/code/public/irvs and irvs_server.pl (linux
    only). These allow for mh control via DTFM phone menus using the Irvs.pm
    module from CPAN and a voicemodem.

    - Ron Klinkien sent in mh/code/public/webcam_ron.pl and webcam_ron.html.
    These files create a simple webcam, using a command line frame grabber.

    - Jeff Crum sent in mh/code/public/copycode.pl for copying voice
    commands from one mh computer to another.

    Bug Fixes and Other Changes:

    - Jean-Marie Martin and Harald Koch noticed mh was not calculating sun
    rise/set times correctly those people in the Eastern Hemisphere. This
    fix requires all of us in the Western Hemisphere to use negative
    time_zone and longitude mh.ini parms.

    - Benny Miller updated mh/code/public/iButton_ws_client.pl

    - Ron Klinkien and David Norwood found a 2.55 bug with shtml files.

    - Ian Davidson discovered a bug with sending out non-X10 serial data
    with ##% strings.

    - David Norwood added an IR_Item code of addEnter, which adds an ENTER
    command after any numbers, so changing channels is faster on devices
    that wait for a timeout like the Ocelot.

    - David Norwood created a California specific
    mh/code/public/internet_earthquake_cal.pl

    - Clive Freedman fixed a bug in get_tv_info that messed up searches for
    shows that started before 6am.

    - Jeff Pagel found a problem with iButton monitor when using a 2nd
    iButton port. We also discovered a 2nd port did not work as documented.
    Updated the iButton.pl example to point to $config_parms{ibutton_port2}
    rather than 'ibutton_port2'.

    - Larry Roudebush found a problem when running -no_load tk_frames.pl to
    get tk windows without the main tk window (button widgets still tried to
    load).

    - Added format=4 to mh/lib/Caller_ID.pl to support the Call Waiting
    Caller ID NetCallerID box. See mh/code/bruce/phone_netcallerid.pl for an
    example. Another option is Timothy Spaulding's
    mh/code/public/NetCallerID.pl.

    - Disallow objects with the same group names in .mht files.

    - Add a duplicate object name check.

    - Fixed a bug with the distance reported by
    mh/code/bruce/tracking_aprs.pl (was way too small for long distances).
    Also added an option to track vehicles via aprs internet gateway data,
    so you can keep track of family when they are on a long road trip (wife
    just drove to Berkley and back).

    - Add a Daylight Savings Time check to internet_iridium.pl.

    - Added mh.ini parm http_fork. Windows users will want to set this to 1
    to enable the forking feature added in 2.55, which avoids mh pauses with
    slow remote web sites request data.

    - Added mh.ini ibutton_tweak parm. If you are having problems with
    ibuttons, set this to 1 to enable a small delay that Stoll Thomas and
    Kevin Olalde discovered they needed on their boxes.

    - Make a 2.52 change to the the &play function specific to OSx. On all
    other unix OSes, use a system call, rather than a fork call, to avoid
    problems with bad return codes causing the same wav file being played
    multiple times.

  Version 2.54 posted on 06/26/2001
    Version 2.54 was just uploaded to:

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

    New Features:

    - mh now forks to a background process when serving large (> 2k) web
    pages. This avoids pauses in mh when being accessed by slow web
    browsers. On windows, we play some magic to emulate a fork with a
    process that inherits the socket port, so this still works on the older
    pre 5.6 versions of perl. This change also fixes the bug that Damon
    Hopkins discovered with Netscape haning on browsing big (> 20k) mh web
    pages.

    - Started work on a mh proxy server, to deal with talking to slow serial
    port interfaces like the CM11 and CM17, but this is not quite ready for
    prime time.

    - Craig Schaeffer sent in mh/web/epods files. http_server.pl was updated
    to allow for local style sheets, so different web directories can have
    different looks. Updated mh/bin/mh.ini html_*1 parms to use these pages
    by default when accessed from Windows CE web browsers (e.g. epod web
    tablets).

    - If you want to simulate different browsers, you can now override the
    format used with a new mh.ini web_format parm. For example, mh
    -web_format 1 will use the CE epods pages. Or you can add a tk button to
    change back and forth with this:

      &tk_radiobutton('Web format',  \$config_parms{web_format}, ['default', 1, 2]);

    - Evan Graham wrote mh/code/public/winamp_control.pl, which allows for
    direct control of WinAmp through misterhouse without using any special
    plug-ins. This allows for a larger number of commands available, some of
    which will allow you to query the status of the playback.

    - Timothy Spaulding wrote mh/code/public/NetCallerID.pl to interface
    with the $30 NetCallerID box. In addition to normal CallerID, it
    supports Call Waiting CallerID (callerid while you are on the phone).

    Bug Fixes and Other Changes:

    - Cleber Schereder found a problem parsing mh.ini parms with an embeded
    # character.

    - Henry Laxen discovered a non-mh version of Astro::SunTime.pm caused
    problems (bad sunset time and no twilight calculation), so I moved
    mh/lib/site/Astro/SunTime.pm to mh/lib/SunTime_mh.pm

    - Clive Freedman added a 'request a file' option to internet_mail.pl, so
    you can send an email request to home and mh will send the requested
    file back. See 'Send test e mail 10' (in internet_mail.pl) for an
    example.

    - Kent Noonan added format=3 to mh/lib/Caller_Id.pm for use with ZyXEL
    u1496 modems.

    - Jean-Marie Martin discovered a 2.52 problem with web pulldown menus.

    - Brian Klier updated mh/code/public/Brian/tracking.pl with lots of
    fixes, including a fix from Roger Bille that fixed an inaccuracy in MicE
    longitude data.

    - Kieran Ames found a problem with user code files with blanks in the
    names.

    - Tom Vanderpool noticed only the first 8 characters of a password are
    used. This is a crypt limitation we can not easily work around, so I
    updated the docs to note this.

    - Roger Bille updated mh/bin/get_email to passed $body to
    get_email_rule.

    - Scott Tisdale created an UltraEdit template:
    mh/data/mh_template.ultraedit

    - Clive Freedman updated mh/code/public/weather.pl (parses
    wunderground.com data) to add non-US functionality, simple data
    variables which can be accessed from other scripts, and logging to a
    table.

    - Joel Moore escaped & in menu_code.pl for UP wap browsers and added a
    -no_log mhsend_server option.

    - Moved the web overlib popup window to below, not over, the command.

  Version 2.52 posted on 05/28/2001
    Version 2.52 was just uploaded to:

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

    New Features:

    - David Norwood created mh/lib/Audible_Menu.pm and
    mh/code/public/audible_menu.* This code can be used for walking through
    mh menus with just one or two switches (e.g. air sip switches for the
    disabled), using audible feedback to help pick menu items/states.

    - Brad Reed added mh.ini parm viavoice_voice to allow
    voice_text=viavoice or vv_tts users to select a default voice. We also
    now allow on-the-fly voice changes (viavoice only): e.g. speak
    "voice=male Yo, Adrian!".

    - Greg Satz sent in updates so mh speak and play on the Mac OS X.

    - Tim Doyle created mh/code/public/aqualink.pl for the Jandy AquaLink RS
    pool/spa controller.

    - Jeff Crum sent in mh/code/public/date_functions.pl with various date
    functions like finding the day of the first/last day of the month.

    - Added Process_Item set_output method, so we can store process results
    to a file. Modified internet_connect_check.pl to use this instead of the
    dorky ping_to_file command, and to also work on unix.

    - Added (currently windows only) mh/bin/find_files and find_programs.
    find_files finds files on shared networked Windows and samba
    directories. find_programs finds programs running on networked Windows
    computers. See mh/code/bruce/find_files.pl and monitor_programs.pl for
    an example.

    - Added mh/lib/xml_server.pl, so other xml based programs can get data
    from mh. Point an XML browser (e.g. IE) to:
    http://localhost:8080/sub?xml

    Bug Fixes and Other Changes:

    - Joey Smith discovered a problem with comments returned from web server
    include files.

    - David Norwood and Damon Hopkins came up with an addition to
    x10_ma26.pl to allow the MR26a to relay RF X10 commands to the
    powerline.

    - Wally Kissel noticed that display file.gif (or .jpg) was no longer
    worked. Turns out it was busted way back in 2.41!

    - Clive Freedman added an time_cron option to allow it to test on all
    passes, not just New_Minute passes.

    - Kieran Ames send in mh/code/public/phone_logs.pl.

    - Allow for strings with odd characters like & to be processed in html
    forms.

    - Updated mh/lib/Weather_wx200.pm to use an mh.ini altitude parm to
    calculate sea level barometric pressure. Also updated Weather_upload.pl
    to use $Weather{BaromSea}.

    - Allow unix Process_Item and run calls to programs in your PATH,
    without fully qualifying the path.

    - Added mh.ini sound_dir_common, so you can use sound_dir to point to
    your own wav files without having to copy the default mh/sounds files.

    - Moved the mh_temp files from code_dir to data_dir.

  Version 2.51 posted on 05/06/2001
    Version 2.51 was just uploaded to:

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

    New Features:

    - Added mh/lib/X10_MR26.pm and deleted mh/code/public/x10_mr26*. This
    $30 RF receiver will process X10 data from all house codes of any RF X10
    remote, including keys like Play/Stop/Rew/FF from many of the universal
    X10 remotes. To enable, use the 2 new mh.ini MR26* parms.

    - Added mh.ini parm x10_multireceive_delay so we can have mulitiple X10
    receivers, but only process the data once. This allows us to process
    immediate incoming RF X10 data from the MR26 without having to wait for
    the slower power line data. Defaults to 3 seconds.

    - Added menu P: records to allow for bypassing Passwords on specified
    menus/commands. See mh/code/bruce/test.menu and/or mh/docs/mh*. Also
    allow for menu level defaults in the menu code for R: and P: records.

    - David Norwood enabled volume control for linux users. To enable,
    install the new Audio::Mixer module with this: perl -MCPAN -eshell;
    install Audio::Mixer

    Bug Fixes and Other Changes:

    - Damon Hopkins discovered that Netscape would hang on browsing big (>
    20k) mh web pages. Unfortunatly, I have not figured out the fix for this
    problem yet.

    - Scott Johnston dropped () around channel name in get_tv_grid, so
    Fesitval would work ok.

    - Kieran Ames suggested adding the 'What did you say' command, to repeat
    the last spoken text.

    - Clive Freedman spotted a problem with email commands with trailing
    blanks.

    - Thomas Stoll sent in some updates for ibutton (added DS1921 and DS2438
    support), callerid (for international calls), and voice (so allow for
    arbitrary key=value options to be passed to the TTS engine).

    - Joel Moore suggested a new mh.ini clicktv_label=none parm for
    disabling tv web page vcr links, and added the perl version to the web
    About menu.

    - Paul Wilkinson sent mh/code/public/printer_control.pl as an example of
    how to turn a printer on/off based on a unix print spool file.

    - Evan Graham updated the MR26A code for use with the 4 button keycahin
    remotes (HC40TX).

    - Damon Hopkins added state to 'List X10 items'.

    - Added a -voice_text 'program xyz' option, so mh can use an arbitrary
    xyz TTS program. Greg Satz is working on a Max OS X TTS program.

    - Changed the iButton monitor function parms from $port to $family,$port
    for consistency. Those with 2+ iButton ports will need to update your
    code.

    - Fixed the run commands of the vxml/html menu code. Bypass
    authentication check on set_authority 'anyone' objects.

    - Fixed a bug that disabled some VOICE .mht table entries.

    - Fixed the previous menu in the vxml tellme menus.

    - Fixed a bug that gave no on/off links to groups in the initial web
    page.

    - Fixed the web page state of conditional weather items (e.g. $freezing
    = new Weather_Item 'TempOutdoor < 32');

    - Fixed get_url call in internet_iridium.pl on windows boxes (DOS needs
    " not ' quotes).

    - Added FAQ 6.8: What sort of hardware do you have in your house?

    - Added a sound event when mh pauses. Also added a
    data/logs/mh_pause.*.log file to track mh pauses.

  Version 2.49 posted on 04/15/2001
    Version 2.49 was just uploaded to:

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

    New Features:

    - Created a LCD object, so we can support multiple LCD keypads. See
    mh/docs/mh.* and/or mh/code/bruce/lcd.pl for an example. To use simulate
    an LCD keypad with your pc keyboard, use mh/code/test/lcd_keyboard.pl

    - Wap phone authorization is now enabled. If your phone supports
    standard password authorization, you will be prompted for a password
    (user name can be left blank), when you select a menu command to run. Or
    if your phone sends a unique x-up-subno field, you can specify that in a
    new mh.ini password_allow_phones parm (see mh/bin/mh.ini for more info).

    - Many minor changes to the web server to enable device dependent html.
    We can now have style sheets local to a web subdirectory and serve
    different style sheets to different browers. For example, web pages
    displayed on an epod can have different html stylesheets than the same
    page displayed from Netscape. Craig Schaeffer is working on an example
    set of epod web pages (not yet in this release).

    Examples, Bug Fixes, and Other Changes:

    - Ian Davidson found an 2.47 problem when running -debug serial

    - Tom Vanderpool spotted a change in the clicktv get_tv_grid url (drop
    the WSN string).

    - Craig Schaeffer sent in an update
    mh/code/public/internet_ip_update_craig.pl for updating dynamic ip
    addresses to a web page.

    - Craig Schaeffer found a duplicate states problem with the vxml menu
    code.

    - Robert Rozman found a problem with state data in the LCD menu_code.
    Numerous other bugs from the new menu_code were also fixed.

    - Scott Johnston ran into a 500 phrase limit in viavoice_server. We
    bumped the limit to 5000.

    - Wally Kissel added SendKeys functions SetWindowText GetWindowText
    (windows only).

    - Douglas Parrish added mh/code/public/callerid_doug* files for
    processing callerid data with ties to DB files and PHP web pages.

    - Ian Davidson updated mh/lib/LCD.pm with an example of how to talk to
    serial attached LCD keypads.

    - Mark Dahmke found a problem with blanks in the mh.ini
    password_allow_clients string.

    - Brandon verified that RCS_Item works with the TX15B thermostat.

    - Kent Noonan found a problem with the vxml tellme menu when using
    mh.ini parm http_server=localhost.

    - Stoll Thomas added a small delay to the iButton code to get it to work
    on his win 2k box.

    - David Norwood enabled relay with the CPU-XA/Ocelot. An example:
    $back_yard_sprinklers = new Serial_Item('OUTPUT11high', ON, "ncpuxa");

    - Fenghua Zong updated mh/code/public/x10_mr26.pl to pass key inputs
    like Play/Stop/Rew/FF to mh.

    - Clive Freedman updated get_tv_info and added a mh.ini parm
    tv_key_symbol to highlight search words in tv search results.

    - Mark Dahmke noticed that the main web page was not immediately
    displayed after logging in with password_protect=all. WAP phone menus
    with this parm were also fixed.

    - Fixed mh.bat so that it does not loop on normal mh exit on windows 98.

    - Updated weather_upload.pl not to use strftime, which was an hour off
    with with the change in daylight savings time.

    - Added a passive option to net_ftp.

    - Updated mh to it can be started from any directory, not just the
    mh/bin/mh dir.

  Version 2.47 posted on 03/24/2001
    Version 2.47 was just uploaded to:

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

    New Features:

    - Added template based menuing code. This allows us to create nested
    menus for use with web browsers, LCD displays, WAP phones, and vxml
    based phone voice portals. To enable, copy mh/code/test/menu.pl and
    test.menu. More information can be found here in mh/docs/mh* or here:
    http://misterhouse.net/mh.html#Customizing_the_Menu_interfaces . I have
    not yet implemented an authorization scheme for the vxml or wml menus,
    so you will want to limit the commands to harmless commands disable
    non-local access of those functions by modifying the Password_Allow
    records in menu.pl.

    - Added mh/bin/backup_data. This allows for periodic smart backups, with
    options for daily age based backups and/or less periodic full backups,
    with options to filter based on file/dir name or size. It defaults to
    using tar and gzip. It also has an option to use perl modules from CPAN,
    but they are slower and use more memory. Here is how I do daily and
    monthly cross backups between 2 different networked computers:

       http://misterhouse.net/mh/code/bruce/backup.pl

    - X10 bright/dim commands will now set the selected X10_Item objects to
    the correct bright/dim states (used to be only house code X10_Items were
    set). Also added a 'level' method to X10_Item, so you can query what mh
    thinks the current brightness level is after one or more bright/dims.

    Examples, Bug Fixes, and Other Changes:

    - David Norwood fixed a problem with internet_iridium.pl on unix boxes.

    - Wally Kissel sent in mh/code/public/x10_mr26_wally.pl, code that shows
    how to listen to the wireless MR26A remote.

    - Mark Holm's sent in mh/code/public/x10_video_security.pl, code for a
    video surveillance system using X10 XCAM cameras and motion sensors.

    - John Moore sent in another example unix .rc file for starting
    misterhouse (mh/bin/misterhouse_john.rc).

    - Brent Gross suggested we have a way to disable commands like 'reboot
    the computer', so we added mh.ini parm disabled_commands, which defaults
    to mh/data/disabled_commands.

    - Clive Freedman fixed a couple of bugs in get_tv_info.

    - David Norwood added mh/bin/get_finger and updated
    mh/code/public/internet_earthquakes.pl to use get_finger, rather than
    get_url.

    - Donald Hoffman sent in a patch to http_server.pl involving SET on a
    scalar.

    - Bill Sobel added time_greater_or_equal and time_less_or_equal, like
    time_grather_than and time_less_than.

    - Bill Sobel added a check to allow Windows NT/2k to use COM10+ ports
    without the dorky \\.\ prefix.

    - Riad Wahby updated the AOL AIM module with a timeout option (no more
    mh hangs when unable to logon).

    - Jean-Marie Martin added more states to the (Canadian?) X10_Ote item
    and X10O to read_table_A.pl.

    - Ingo Dean added a X10 Motion_Sensor object that will send a 'dead
    battery' message if it has not heard from the sensor after 24 hours.

    - Stuart Grimshaw and Mark Mabry fixed a 'RUN command not found'
    http_server bug that some browsers had.

    - Ian Davidson found an error in reading '0' from serial ports.

    - Tim Doyle added a VOICE option to format=A mht tables.

    - Bill Sobel sent in a bunch of changes: Compool now incudes new state
    checks. Stargate includes more support for stargate variables,
    thermostats (fully working), flags (in process), timers (in process),
    digital inputs (fully working), relay output (read status, not set yet),
    analog inputs (not done yet), and some Stargate485 fixes. Read_Table_A
    includes some of the new (and renamed) Stargate devices.

    - Modified the web server to process all current get request in one
    pass, for faster refresh of web pages with lots of icons/scripts,
    especially on slower computers.

    - Added a timer to mh/lib/Voice_Text.pm so the pa_control is_speaking
    test will work for all the TTS engines.

    - Updated mh/lib/CallerID.pm so it supports more than one local area
    code.

    - Updated so that mh will use its own updated HTML::FormatText, rather
    than one in your perl path, so that table extraction works ok on all
    installations (e.g. internet_data.pl top 10 list).

    - Added 'Enable/Disable all code files' in
    mh/code/common/disable_code.pl (for performance debug). Also added a
    $Disable flag for selecting internal mh functions for debug.

    - Fixed a bug in that would cause mh to slow down if net_domain_name was
    called many times. I discovered this after my mh slowed down from 60
    loops/second to 30 loops/second after about 4 days of high http service
    (about 400 clients / 4000 hits a day).

    - Re-ordered loopcode subs according to the optional Position directive.

  Version 2.45 posted on 02/24/2001
    Version 2.45 was just uploaded to:

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

    New Features:

    - mh.ini files can now reference other $config_parm variables. For
    example, the default alias for the http://localhost/tv is now
    $config_parms{data_dir}/tv, so it now points to whatever you have your
    mh.ini data_dir variable pointing to.

    - Added a run_after_delay function, so we can add delays in user code
    without causing mh to pause. This is code is from the examples in
    mh/code/examples/test_delay.pl:

      print_log "Starting delay test";
      run_after_delay 2, sub {
         print_log "Ending delay test";
      }

    - Tim Doyle send in mh/code/public/internet_earthquake.pl for monitoring
    earthquakes.

    - Created mh/code/bruce/internet_iridium.pl to announce when one of the
    now defunct Iridium satellites will create a 1-3 second flash at the
    coordinates specified in the mh.ini lat, long, and time_zone parms.
    These flashes can get up to a magnitude of -8 ... almost as bright as
    the moon!

    - Added mh/code/common/disable_code.pl. The 'disable code test ...'
    commands can be used to sequentially disable code files to debug memory
    and/or time related problems.

    Examples, Bug Fixes, and Other Changes:

    - Amaury Jacquot noticed a messed up mh.ini html_alias_tv parm that
    broke get_tv_grid saves. To ease upgrades, I moved the default tv dir
    from mh/web to mh/data and added instructions to the 'Coding your own
    events' section of mh/docs/install on how to create your own data dir
    that will remain untouched between mh upgrades.

    - Danal Estes noticed that the 2.43 change to mhl did not work for
    win98. We fixed this and renamed mhl.bat to replace mh.bat.

    - David Norwood updated bin/get_tv_grid for better pull down menus and
    code/tv_grid.pl to auto-refresh the default tv web page to the current
    hour.

    - David Norwood also fixed network socket reading code in ncpuxa.pm that
    was causing poor performance.

    - Evan Grahaet, David McLellan, and Doug Nakakihara sent in alarm clock
    examples (mh/code/public/alarmclock_*.pl)

    - Doug Nakakihara noticed that a set_index 0 on a File_Item didn't work.

    - Doug Mackie sent in an updated iButton_ws_client.pl (iButton Henriksen
    server client).

    - Evan Grahaet discovered that web Tk widgets dissapear when doing a web
    reload.

    - Brad Reed noticed that tabs were messing up mh.ini entries.

    - Bill Bass sent in points a nice set of links on X10 info (added to FAQ
    question 6.6 What is X10?).

    - David Norwood updated lib/ncpuxa_mh.pm to add support for additional
    X10 commands like status, preset_dim0, and preset_dim1.

    - Clive Freedman updated get_tv_info to not highlight keywords.

    - Fenghua Zong noticed a problem with get_weather not parsing conditions
    with blanks (e.g. LGT RAIN -> light rain). We fixed it by updating to
    the latest mh/lib/site/GEO/WeatherNOAA.pm from CPAN.

    -Bill Sobel updated Compool.pm to fix problems in noisy environments by
    detecting the ack or nak generated by the controller and resending
    packets if required. He also updated Stargate485.pm to add send support
    for the RCS485 thermostats.

    - Evan Graham send in mh/code/public/pa_control_evan.*, as an example of
    controling which rooms mh speaks/plays to using weeder DIO kit controled
    relays.

    - Fixed the new TOGGLE state for X10_Items.

    - Fixed uptime in the mh_control 'What is your uptime' command.

    - Fixed a couple of Timer_Item problems (set was not valid for a full
    pass and the time could get reset to a minute boundary).

    - An updated mh/lib/site/Geo/Weather.pm module for the new weather.com
    format.

    - Allow for non-numeric months in my_str2time (e.g. Jan or january).

    - Changed the mh.ini and sun_time calculations to allow for the more
    correct notation of negative numbers for time_zone and longitudes for
    those of us in the western hemisphere (e.g. North/South America). This
    is required for the new earthquake and iridium code to work correctly.

    - Added mh.ini term=readkey option (unix only). The default is now NOT
    to monitor keys, since that dis-allows a detached mh (e.g. mh &).

    - Split the mh.ini sound_pre parm into sound_pre_speak and
    sound_pre_play, so we can control delay and prefix sounds to wav and TTS
    sounds separately.

    - Added left justification to tk_label text, so multi-line labels look
    ok.

  Version 2.43 posted on 02/03/2001
    Version 2.43 was just uploaded to:

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

    New Features:

    - Switched to a new AOL AIM module from CPAN, so mh/test/internet_im.pl
    works better. Like internet_jabber.pl (which is currently not working),
    we can now send and receive messages.

    - Add a restart option to &exit_pgm and modified mhl.bat (unix mhl did
    not need any updates) so we can have mh restart itself with the new
    mh/code/common/mh_control 'Restart Mister House' command. This will only
    work if you start mh with mh/bin/mhl (l stands for loop).

    - Bill Sobel suggested adding new Generic_Item methods tie_time and
    tie_filter. tie_time will set the item if the specified time_cron or
    time_now string is true. tie_filter will disable control of the item if
    the specified filter returns true. Examples are in
    mh/code/examples/test_tie.pl. Here are 2 examples:

       $fountain -> tie_time('10PM', OFF);
       $fountain -> tie_filter('state $windy eq ON', ON);

    - Bill had 2 other ideas to help in event logging. All the tie_* methods
    now support an optional log message. We also can now specify a specific
    logfile using a log=logfile prefix to any print_log text. For example:

      print_log 'log=test1.log Logged in code_dir/test1.log';
      $fountain -> tie_time('0 17 * * * ', ON, 'log=fountain Fountain turned on';

    These will go into the data_dir directory. We also moved the default
    print, speak, and error logs from the code_dir to the data_dir
    directory.

    - Added a print_log "Running: xyz" when Voice_Cmd xyz is run

    - Clive Freedman sent in a FAQ of common Perl and mh coding errors in
    mh/doc/faq_damnblast.html (also linke in faq.html).

    Examples, Bug Fixes, and Minor Changes:

    - Kees Cook updated the Unix SerialPort module to work better with fast
    I/O, Solaris, AIX, and OpenBSD.

    - Mike Pearce found a bug in $Season.

    - Craig Schaeffer had a patch for iButton.pm read_dir and
    read_windspeed.

    - Roy Thompson updated X10_IrrigationController to support 16 modules.

    - Bill Sobel suggested adding the .5, .25, and .1 second flags
    $New_Msecond_500/250/100. He added these to a few of hist modules in
    mh/lib to improve mh efficiency.

    - Brad Reed fixed CM11.pm to correctly reset the internal CM11 clock to
    the right time. We also changed mh to set the CM11 clock and reset the
    buffer on mh startup.

    - Fenghua Zong found the periodic 'Saving object states' would start
    working only after an mh pause.

    - Scott Johnston discovered we inadvertantly changed the unix mh.ini
    sound_program default from play.

    - Scott Johnston also sent in a fix for a new clicktv.com url in
    get_tv_grid.

    - Timothy Spaulding suggested we have a -no_log speak option to avoid
    printing spoken text to the console if -tk 0.

    - Brian Paulsen made some more improvements to the iButton code.

    - Brad Reed, through painstaking testing, discovered the cause of the
    cause of his CM11 errors. It turns out the fork we were doing when
    voice_text=viavoice caused the child process to reset all the serial
    ports! We also merged in his voice_text=viavoice patch from his website.

    - Evan Grahaet noticed a problem when setting timers with the web
    interface. Now the timer will start only when the time field (not the
    text field) has changed.

    - Bill Sobel sent in these updates:

      Compool: fixed solar and air temp calculations (turns out
      they are calculated differently then pool and spa temps)

      Read_table_A: added support for stargate thermostat items

      Stargate485.pm: added support for stargate thermostats
      (RCS 485 thermostats, should be able to be used even
      without the stargate eventually).  Also fixed RTS bug
      that caused it to hog the serial line.

      Xantech.pm: string comparison fix (!= changed to ne)

      HomeBase.pm  Added a send_telephone function and a .ini
      setting to disable receiving x10 events from the homebase

    - Stuart Grimshaw removed mh/lib/SMS_Item.pm (for sending SMS messages
    to mobile phones in Europe) at the request of the http://www.smsboy.com
    guys.

    - Clive Freedman update get_tv_info to add hypertext links for setting
    VCR, highlighting the selected key-word, early morning searching,
    debugged searching for shows in progress, UK dates, and changed plural
    and upper-case recognition.

    - Tony Drumm noticed that he could not get his CM17 firecracker to work
    under linux until he did h2ph linux/posix_types.h. We added that to
    mh/bin/configure.

    - Chris Witte suggested we reuse and expose the X10_Item set_with_timer
    timer object.

    - Fixed a Time::HiRes error on restoring a timer on Unix.

    - Added a $Power_Supply object to mh/code/common/mh_control.pl.
    Currently only detects a power reset from a CM11.

    - Added File_Item get_index to replace a poorly named index method.

    - Updated the mh SNPP.pm module so snpp_pager would work.

    - Added a tk_startup_cmd option. Useful for debugging when you want to
    have the tk command list start with a specfic set of commands.

    - Added a display append option (e.g. appending messages to the AOL AIM
    chat window).

    - Added Generic_Item toggle state so we toggle devices ON/OFF like this:

         set $light TOGGLE   if new_second 10;
    or
         set $light 'toggle' if new_second 10;

    - mh.ini parm html_select_length (controls when drop down select forms
    are used) now also applies to the Items web menus.

    - Fixed a problem with unix computer uptime with uptimes > 40 days.

  Version 2.41 posted on 01/20/01
    Version 2.41 was just uploaded to:

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

    New Features:

    - Brian Paulsen re-wrote the iButton code for much improved reliability.
    He also added iButton::Weather (see example at the end of iButton.pl).

    - Brent DeShazer added mh/bin/snpp_page, for doing snpp paging via the
    internet.

    - Added net_domain_name_start and net_domain_name_done, so that we can
    lookup domain names in the background without the danger of mh pausing.
    See mh/docs/mh.* or mh/code/examples/test_dns.pl and
    mh/bruce/monitor_router.pl for examples.

    - Re-wrote mh/code/common/benchmarks.pl. 'Run speed benchmark' will now
    create a tk window with with the average amount of time used (in
    milliseconds) for each code member. If not using tk, the results are
    also logged to data_dir. On Unix, this option will not work too well
    unless you have Time::HiRes installed. Unlike the previous benchmark
    code, this should allow for a quick and pretty painless way to find slow
    running code members. For example, this record in computer_data.pl
    caused an unneeded slowdown:

      $disk_drives = join(',', Win32::DriveInfo::DrivesInUse()) if $OS_win;

    Without a 'and $Reload' added, it made that call on every pass, and the
    DriveInof function is pretty slow.

    - Added a window_name option for the display function, so we can re-use
    a tk window (e.g. above benchmark code).

    - John Snow came up with the idea of using a CM11 to detect power
    outage. Here is an example:

      if ($ControlX10::CM11::POWER_RESET) {
          display time => 0, text => "Detected a CM11 power reset";
          $ControlX10::CM11::POWER_RESET = 0;
      }

    Examples, Bug Fixes, and Minor Changes:

    - Anders Baardsgaard sent in a bsd patch to avoid shelling out to find
    $Time_Boot_time on FreeBSD.

    - Ron Klinkien fixed set_clock so it works on FreeBSD.

    - Roger Bille sent in code to support a new mh.ini default_temp=Celsius
    parm. Currently this is only used by mh/lib/iButton.pm

    - Ray Dzek created a 'how to get started with iButton guide' at
    http://www.solarbugs.com/home/ibutton.htm (added a link to faq and mh
    docs).

    - Fenghua Zong discovered that we goofed up with a 2.39 update to
    vv_tts.pl (should not have changed ViaVoiceTTS to TTSClass).

    - Fenghua Zong also sent in an update to Voice_Cmd.pm that tunes some
    delays so ViaVoice will work better on some faster computers. Someday we
    will need to update the viavoice_server code with better handshaking so
    it is less dependent on hardcoded delays.

    - Tony Drumm created mh/code/public/wxserver_client.pl and
    wxserver_server.pl. The client code populates the mh %weather array with
    data from a wxserver. Tony also has a program on his web site that will
    serve weather data data from a Peet Brother's weather station (e.g.
    Ultimeter 2000).

    - Jean-Marie Martin found a problem with processing .MHT (rather than
    .mht) files.

    - Clive Freedman fixed $Time_of_Day so it is night rather than afternoon
    prior to 5 am.

    - Brian Paulsen modified mh/code/public/rrd_graph to make it a bit
    easier to add/remove rooms.

    - Ian Davidson sent in a fix so sensors.pl will work with the newer
    analog weeder boards.

    - Brent DeShazer fixed Timer.pm to handler subroutine actions.

    - Craig Schaeffer added a time_add function: $Save{setback_off} =
    time_add "$Save{wakeup_time} - 1:20";

    - Allow for read_table_xxx.pl and user_modules to be in the user_code
    directory.

    - Fixed the SwitchLinc set method.

    - Fixed 2.39 bugs which caused the web parm password_allow_clients to be
    ignored and a web command search to fail.

    - Added a 'password set/not set' voice message in the web server, for
    notification of web password attempts.

    - Updated the rpm file to not require the viavoice libraries and to not
    require perl in /usr/bin/perl

  Version 2.39 posted on 12/21/00
    Version 2.39 was just uploaded to:

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

    New Features:

    - Danal Estes updated the DCS* alarm system code to be object/state
    aware.

    - Stuart Grimshaw added mh/lib/SMS_Item.pm, for sending SMS messages to
    mobile phones.

    - David Norwood added mh/lib/Weather_wx200d.pm. This talks to the Unix
    wx200d daemon: https://sourceforge.net/projects/wx200d

    - David Norwood also added mh/code/public/weather_upload.pl. This
    uploads your weather station data to the wunderground personal weather
    project.

    - Clive Freedman sent in changes to get_tv_info: revised to include
    processing of key-lists in files, case-sensitive searches for words
    starting with upper-case, searches for whole words only, plus plurals,
    option for 5 minute search increments, shows in progress, .html output.
    He has an example of his use in mh/code/public/tv_info_clive.pl.

    - Added mh/bruce/news_email_breaking.pl to announce breaking email
    stories from a news email subscription. Be the first on your block to
    know the aliens have landed :) This subscription sends out about 0->3
    items a day: http://www.cnn.com/EMAIL . Anyone know of other news
    services that send just the really big news??

    - Modified internet_mail.pl to not delete the get_email.scan file until
    one full pass after it was created, so other code can monitor incoming
    mail, like the above news_email_breaking.pl

    - Added the new_second, new_minute, and new_hour functions. These
    functions are like the $New_Second/Minute/Hour variables, except they
    can return true only on the nth second/minute/hour. So instead of this:

      if ($New_Minute and !($Minute % 10))) { }

    we can say

      if (new_minute 10) { }

    - Added a few example mh/sounds/sound_nature/*.wav files. These make for
    fun, less obtrusive but still distinguishable event sounds. Our house
    now sounds like a bird sanctuary :) Found this great site for sound
    searches: http://www.findsounds.com

    - Added mh function add_sound and mh/test/event_sounds.pl. This allows
    us to create and review event sounds. For example:

      add_sound movement1 => 'sound_nature/bird1.wav', volume => 20;
      play 'movement1' if state_now $movement_sensor;

    Try 'list event sounds' to review the sound assigments.

    - Enabled keyboard monitoring in Unix (was only windows). Requires
    Term::ReadKey which I think is usually installed by default. Made
    $Keyboard available in user code (echos characters typed on the
    keyboard, and F1 -> F12). Moved the F1->F5 processing (e.g. F1 code
    reload) to mh/code/common/mh_control.pl

    - Moved/split mh/mh.print.log to code_dir/mh_temp.speak/print.log. Read
    the previous logs at startup, so up to max_log_entries previous log
    entries are displayed. If you have your own tk_frames.pl, add the 'seed'
    records from mh/code/common/tk_frames.pl.

    Examples, Bug Fixes, and Minor Changes:

    - Brent DeShazer fixed the new voice_cmd_prefix for ViaVoice.

    - Bill Sobel added 'double/triple on/off' states for X10_Item.

    - Bill Sobel found a Weather_Item.pm bug with undefined states.

    - Dan Ratzlaff found 2 typos and added the dim states in X10_Switchlinc.
    He also added X10SL to read_table_A.pl.

    - David Lounsberry updated vv_tts.pl from ViaVoiceTTS to TTSClass. He
    also sent in a fix for processing web forms with Mozilla.

    - Craig Schaeffer sent in mh/code/examples/weeder_io.pl as an example of
    using the current weeder kits.

    - Added mh/lib/example_interface.pm as an example of how to write a code
    for a new interface.

    - Added mh/bruce/school_closing.pl for those of you in snowy climates
    that have local web pages with school closing status.

    - Added an example mh.private.ini with some common parms.

    - Added a check for no_log, in mh/code/common/mh_control.pl
    &serial_match_log. If you are getting X10 errata in your print_log file
    that you don't want (e.g. lots of movement sensor data), rather than
    turning X10 errata off, you can turn it off for specific units with
    this:

      $movement_sensor->{no_log} = 1;

    - Allow for Format= table format specs as a comment. Also fixed a
    problem with loosing Groups after a code reload.

    - Allow for pod comments in user code. Instead of putting # in front of
    a bunch of lines (e.g. commented out section or example documentation),
    you can use =begin =cut to mark the start/stop of a comment section. See
    mh/bruce/tellme_menu.pl for an example.

    - Use a timer, rather than a sleep, when &play is waiting to play a
    sound, so mh does not pause when playing back-to-back sound files.

    - Fixed a 2.36 bug with expired timers in timers.pl

    - Move set_authority calls out of the loop code.

    - Minor changes to tellme_menu code, including detecting and using local
    host namename and port when debuging with a local browser. I have not
    gotten a PIN login and cookies to work there yet :(

    - If get_email_rule returns a string with 'no store', get_email will not
    store it in html data/email index.

    - Added mh/docs/authors.html. This list is auto-parsed from
    mh/docs/updates.pod. That filter may have skipped a few names here or
    there, so if your name is missing and you want to be famous, let me know
    and I'll update that code.

    - Kieran Ames continues to update the mh users map. We are up to 68
    locations. We also added a table to list the cities/countries.

  Version 2.36 posted on 12/03/00
    Version 2.36 was just uploaded to:

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

    New Features:

    - Added Voice XML (vxml) functions and created
    mh/code/bruce/tellme_menu.pl. This code enables remote VR control via
    1-800-555-8355 from http://tellme.com . For my house, speak
    'Extentions', then dial 46630 (Home0). Instructions on how to setup your
    own extention is at the top of tellmen_menu.pl.

    - Changed web search results to use a Category Command type table
    (rather than a simple list) and added Tk widgets to the search. Added
    web option /list?authority=anyone (now used in open access list on the
    default web page).

    - Added an index to the data/email files. Clive Freedman sent in misc.
    get_email patchs, including one to add data/email/summary.html with
    mailbox size data for all accounts.

    - Added mh/code/public/iButton_ws_client.pl. This gets weather data from
    the Henriksen Weather Station tcp server for the iButton one-wire
    weather station.

    - Added mh/code/public/weather_com.pl to get weather data from
    weather.com. Unlike the noaa data used by get_weather, weather.com
    supports non-US cities.

    - Added mh/lib/Weather_Item, derived from Bill Sobel's earlier
    Weather.pm module. See mh/docs/mh.html for more info.

    - Kieran Ames built a map with the responses from his "Where in the
    world are MisterHouse users" query: http://misterhouse.net/usage.html .
    If you missed out on the survey, you can send in your location
    (anonymously if you want) via a form on that web page.

    Examples, Bug Fixes, and Minor Changes:

    - Timothy Spaulding found a 2.34 problem with RCS thermostat states.

    - David Norwood found a problem running web commands with embeded +
    characters.

    - Ernie Oporto found a problem with get_tv_grid data of shows that cross
    grid boundaries.

    - Sanjay Seth suggested adding the Windows setupsup methods
    WaitForAnyWindow, SetFocus, and EnumChildWindows. See docs/mh.* for more
    info.

    - Brent DeShazer added Subject to net_jabber_send and found that
    net_jabber_server and _resource were not being used.

    - Brent also found a problem running more than one mhsend command.

    - Fixed sluggish tk windows with running in accelerated time test mode
    (e.g. -time_stop "11:59 pm"). Als fixed -time_start (was ignored).

    - Re-enabled -w 1 (was supposed to be the same as -diagnostics 1, but
    was being ignored).

    - Allow for mh.ini abc_module=abc.pm parms. See mh/lib/Weather_wx200.pm
    for an example.

    - Added 'update location' option on aprs tracking web pages.

    - Added /mh/code/examples/play_midi_windows.pl as an example of playing
    midi files.

    - Allow web requested display data to be displayed to a local tk window,
    only if the display $time parameter is specified.

    - Added mh.ini net_mail_scan_size (defaults to 2000). This is the number
    of records that &net_mail_summary uses (called by mh/bin/get_email).

    - Allowed a 'round to the nearest $digits' mode to the round function
    (see mh.pod for example).

    - Added mh.ini voice_cmd_prefix option. This will be added to all voice
    commands.

    - Avoid errors wint Win32::Sound::Volume with older win32 Perls

  Version 2.34 posted on 11/12/00
    Version 2.34 was just uploaded to:

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

    New Features:

    - David Lounsberry sent in mh/bin/ical_load and mh/code/public/ical.pl.
    This code allows unix users to create mh events based on ical calander
    program entries, like mh/bruce/outlook.pl and mh/bin/outlook_read does
    on Windows.

    - David also sent in an example of how to log and plot data to/from a
    Round Robin Database (rrd), using rrdtool, which is available on both
    unix and Windows. David has plots from is iButton temperature logs at
    http://dittos.yi.org/automation/plots/temps.html . See
    mh/code/public/README.txt rrd* entries for more info.

    - Kieran Ames came up with the idea of a programable timer. To enable,
    delete the old timers_*.pl members and copy in the new
    mh/code/test/timers.pl member. This will enable tk and web menu fields
    that you can enter timer time and text into.

    - Douglas Nakakihara suggested a get_email enhancement that allows for
    browsing mh monitored email from a web browser. One weeks worth of email
    is stored (by day, as html files) for each account in a new data/email
    dir. In addition an html.latest member shows just the email that has not
    been received yet. Added a 'Email Received' link to the default we menu.

    - Added a mh.ini password_protect_dir parm, so that specified web
    directories can only be viewed by browsers logged in with the correct
    password. By default the /data and /email directories are protected.

    - David Norwood sent in an update to support long X10 strings that
    include bright/dim data (e.g. XA1A-100A+40).

    - Bill Sobel added X10_Switchlinc as a child class of X10_Item. We also
    added support for recognizing long incoming X10 strings, like XK1KJKJKJ
    Switchlinc 3 push strings by allowing for > 2 passes in X10 string
    merging.

    - A number of changes to web server to support various browsers (e.g.
    object and vars without $, list:last_response?category). A mh/web/wap
    directory has some wap phone examples.

    - Allow for multiple iButton adaptors on multiple COM ports. If $port is
    not specified on the methods/functions calls (e.g. new, monitor), it
    will default to the port used on the first iButton::connect call.

    - Added a bunch of file attachement mime options to &net_mail_send. See
    internet_mail.pl and/or mh/docs/mh.html for examples.

    Examples, Bug Fixes, and Minor Changes:

    - David Lounsberry sent in an iButton Device.pm update to loop on CRC
    errors. Craig Schaeffer sent in a Connection.pm timing adjustment.

    - Wally Kissel discovered File_Item read_random was not random on
    Windows.

    - Clive Freedman sent in a patch to bypass sendkeys_find_window for perl
    5.6+

    - Brian Rigsby sent in mh/code/public/news_yahoo.pl.

    - Ray Dzek sent in some Caller_ID.pm updates for is number-only callerid
    modem.

    - Benny Miller discovered mh.exe did not run get_tv_grid due to a
    Win32::CopyFile problem.

    - Timothy Spaulding discovered a problem upper case ON/OFF not working
    in X10 Voice_Cmd strings.

    - Dropped $module from new X10_Item (not needed anymore). So, for
    example, you no longer need to specify a LM14 module when defining an
    X10_Item.

    - Added mh.ini no_log=save_state option, to turn off the 'Saving object
    states' message.

    - Added mh.ini get_url parm, to choose between simple or useragent LPW
    modules. Changed the default from useragent to simple, since more people
    were having problems with useragent.

    - Added a Testimonials section to the misterhouse.net web page.

    - Added 'list barcoded inventory' command to barcode_inventory.pl

    - Allow for local module.pm files in the user code_dir directory.

    - Allow for Group_Item X10_Item sets with ncpuxa and HomeBase (like
    CM11).

    - Change Web pull downs to default to the first item, rather than blank

    - The web SET and SET_VAR directives now do the same thing (can be used
    for mh variables or objects).

    - A minor change to get_tv_grid (tv table format got messed up by a
    javascript).

    - Added a 'top' option to file_cat, for concatenating a file to the top
    (rather than bottom) of another file.

    - Added a $Dark flag (true before and after twighlight)

    - Changed sort in get_tv_info from date/channel/time to
    date/time/channel

    - Set $Info{OS_name} to Win98 (rather than Win95) on Win98 systems.

    - Fixed the mh/code/common/mh_control.pl 'reboot the computer' option.

    - Updated install.html/install.txt (based off of a new install.pod
    file).

  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.

    - Danal 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 Danal 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.

    - thegreen [thegreen@mediaone.net] mail_send...

    - 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 Schaeffer 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 Olande'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 Lounsberry'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 Kotowski'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 Oporto 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 Schaeffer'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 Kotowski'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 Archer 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 Schaeffer 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:

    - David 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 David Lounsberry'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 Lounsberry'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 Lounsberry It uses
    a linux program called bip to send pages.

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

    - William Steiner 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 Schaeffer 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 Oporto

    - 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 Birthisel 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 Birthisel 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 Schaeffer

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

    - Some SerialPort and CM17/CM11 updates. Bill Birthisel 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
    Klier 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 Birthisel 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 Klier'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 Schaeffer 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 Schaeffer 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
    Schaeffer 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 Klier 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:

    - With some help from David DellaNave, we now have mh working on linux!
    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

