Announcement
Collapse
No announcement yet.
[VB.NET] my.Alert 0.2
Collapse
X
-
Posted 0.4, which introduces variables (e.g, automatically track UPS packages using a certain device string as the source for the tracking #), more actions and I also included more example profiles.
-
Profiles Updated
I posted the profile examples directly in this thread, and added a few more examples. If you have any interest in displaying/processing web based data with your Homeseer software, you really should give this a try!
Leave a comment:
-
-
Discussion Thread
Version History
12/17/2012: Added NFL Profile.
12/14/2012: Updated MSN.com Breaking News profile.
12/13/2012: Added UPS tracking profile.
12/12/2012: Added USPS & Space Weather profiles.
12/11/2012: Added CNN Breaking News profile.
Profile examples
Looking for more examples to add, so if you have any suggestions, please post them in the discussion thread, and I will add them here, thanks!
Environmental
Temperature
Simple example showing how to retrieve a single value from weather.com, in this case the temperature. Enter your ZIP code on the site, then copy the url to the URL value.
HTML Code:[weather] URL=http://www.b.weather.com/weather/right-now/New+York+NY+10001 RegExSearch=<span class="wx-value" itemprop="temperature-fahrenheit">(?<temp>[^<]*) RegExReplace=temp
Grabs the current forecast for your zipcode (the first line). Uses weather.gov to retrieve information. Go to the website, enter your zipcode, and grab the URL from the results page to use your local data. I personally use this profile to store the forecast in a device string, which then gets included in the 'good morning' routine.
HTML Code:[forecast] URL=http://forecast.weather.gov/MapClick.php?lat=40.75368539999999&lon=-73.9991637&site=all&smap=1&searchresult=New%20York%2C%20NY%2010001%2C%20USA RegExSearch=<li class="row-odd"><span class="label">.*?</span>(.*)</li> RegExReplace=1 DeviceString=Y11
Retrieve the lake temperature from the USGS website.
HTML Code:[laketemp] URL=http://waterdata.usgs.gov/ia/nwis/uv?06604200 RegExSearch=degrees Celsius[\s\S]*instantaneous value:\s(?<temp>[0-9]{1,3}\.[0-9])\s RegExReplace=temp
Monitor the USGS website for new major earthquakes. Extremely useful if you have family in earthquake prone areas.
HTML Code:[earthquake] URL=http://earthquake.usgs.gov/earthquakes/feed/csv/1.0/hour RegExSearch=Region\s\S.*?,.*?,\?,".*?",.*?"(?<location>.*?)" RegExReplace=location
Retrieves space weather information from NOAA's space weather site. Note that this profile uses the HTML option, so you can display the NOAA table directly in your homeseer web interface.
HTML Code:[spaceweather] URL=http://www.swpc.noaa.gov/SWN/index.html RegExSearch=(?<spaceweather><table width="360"[^>]*>[\S|\s]*</table>) RegExReplace= HTML=True
CNN Breaking News
This profile will trigger when CNN.com posts breaking news on their website. A tribute to the original CNN Breaking News script I wrote many years ago
HTML Code:[cnnbreakingnews] URL=http://www.cnn.com/.element/ssi/www/breaking_news/3.0/banner.html RegExSearch="content":\s*"(?<cnnbreakingnews>.*)", RegExReplace=cnnbreakingnews
Latest CNN headlines, HTML enabled, so you can display them via Homeseer Web.
HTML Code:[cnn] URL=http://www.cnn.com RegExSearch=<div class="cnn_mtt1content">\s\S.*(?<cnnheadlines><ul class="cnn_bulletbin">.*)</ul> RegExReplace=cnnheadlines HTML=True
This profile will trigger whenever MSN.com posts breaking news.
HTML Code:[msnbreakingnews] URL=http://www.msn.com/ RegExSearch=<div id="breaking".*BREAKING NEWS:.*?<p>(?<news>.*?)</p> RegExReplace=news
eBay
Searches for the price listed on an eBay auction. Simply change the URL to the auction you wish to watch. NOT tested with Buy it now and other types of auctions.
HTML Code:[eBay] URL=http://www.ebay.com/itm/SAGETV-HD200-MEDIA-STREAMER-/281032935879 RegExSearch=<span id="w1-15-_bidPrice" itemprop="price">(.*?)</span> RegExReplace=
Simple example showing how to monitor a stock value. Go to Google Finance, enter your symbol and grab the URL (or change the stock symbol manually in the sample URL).
HTML Code:[AAPL] URL=http://www.google.com/finance?q=NASDAQ:AAPL RegExSearch=<span id="ref_22144_l">(?<number>[0-9]+\.[0-9]{2})</span> RegExReplace=number
Just another silly example showing how you can monitor specific data. In this case, when the price changes, an action would trigger.
HTML Code:[SwiftKey] URL=https://play.google.com/store/apps/details?id=com.touchtype.swiftkey RegExSearch=<span class="buy-button-price">(?<price>\$[0-9]+(\.[0-9]{2})?)\s RegExReplace=price
IP Address
Grab your IP address from whatismyip.com. *Works with most sites, including http://cocoontech.com/services/ip.php. *Useful in combination with the Email notification.
HTML Code:[IP] URL=http://www.whatismyip.com/ RegExSearch=(?<ip>(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)) RegExReplace=ip DeviceString=Y10
Grab the most recent tweet from a twitter feed. *All you have to do is replace the URL value.
HTML Code:[twitter] URL=https://twitter.com/NASAVoyager RegExSearch=<p class="js-tweet-text">(?<tweet>[\S\s][^<\/p].*) RegExReplace=tweet
Retrieve latest tracking status from USPS.com. All you have to change is the tracking # in the URL
HTML Code:[usps] URL=https://tools.usps.com/go/TrackConfirmAction_input?origTrackNum=420130769102923868001021363615 RegExSearch=input type="hidden" id="LabelSummaryDetails[0-9]*" value="(?<status>.*)" RegExReplace=status
Retrieve latest tracking status from UPS.com. All you have to change is the tracking # in the URL
HTML Code:[ups] URL=http://wwwapps.ups.com/WebTracking/track?trackNums=1Z4F37F10336150844&track.x=Track RegExSearch=Last Location[\s\S]*?<dd>(?<status>[^<]*) RegExReplace=status
Retrieve latest NFL scores from Yahoo.com. All you have to change is the team name in the URL
HTML Code:[NFL] URL=http://sports.yahoo.com/nfl/teams/buf RegExSearch=<div class="team-matchup">[\S\s]*?</div> RegExReplace=
Last edited by electron; December 17, 2012, 01:28 PM.
Leave a comment:
-
[VB.NET] my.Alert 0.2
Discussion Thread
Quick Note: While this post looks long and scary, this script is extremely easy to use. It's only this large because I included as much documentation as possible, so don't let the length of this post scare you away!
About
my.Alert is a small, easy to use, but powerful script which allows you to respond to changes on a website.
It relies on regular expressions in order to narrow down the scope, which also means that there will be many uses for this script. Don't let this scare you away, see below for simple examples.
In fact, it can also be used to do some basic screen scraping, all without having to know .NET programming or having to write a single line of code. You could store all this data in a device string, so you could incorporate that data into your touchscreen layouts.
You can play sound files, trigger events, control devices and send e-mail notifications, all based on simple or complex changes. The script accounts for the dynamic nature of HTML, but if you aren't familiar with regular expressions, then check the resource links below, or ask for help in the discussion thread, and we'll help you build the right 'formula' (this is the fun part, so don't hesitate to ask for help at all!).
Some example scenarios- Check school/event cancellations.
- Watch your favorite stock prices.
- Track price changes on your favorite eCommerce site.
- Monitor hot deal forums for certain items.
- Monitor CNN/MSN breaking news.
- Watch eBay auctions, Etsy sales, etc.
- Monitor changes to websites.
- Check spaceweather.
- Monitor prices of your favorite Android application.
- Remote control your house via a secret keyword posted on a public forum/site.
- Watch for changes to your UPS/FedEx tracking info.
- Notify you when a large earthquake has happened in an area your family or friends live in.
As you can tell, there is so much you can do, all without having to know a single thing about .NET programming.
Download
You can download the latest version here. Please do not post this script anywhere else, Doing so will make it impossible to track/support bugs/changes.
Installation instructions- Download the script (myAlert.vb.txt), and copy it to the Scripts directory. RENAME the script to myAlert.vb (remove the .TXT extension).
- Create a file in the Homeseer\Config directory named 'my.Alert.ini' (see below for more info about this file).
- Copy & Paste one of the example profiles below into the my.Alert.ini file.
- Create an event, and go to the Action tab.
- Use the 'Add Action' dropdown menu to select 'Run Script'
- In the Action List, go to the 'Existing Script' field, and select myAlert.vb from the list.
- Switch to 'Advanced View' (towards the right of the screen, red button) and use the following 'Optional Parameters':
("monitor","LOGLEVEL@PROFILE_NAME") - Update & Save the event.
- You need to create a profile now, instructions can be found below.
Script parameters
Right now, there are only 2 script parameters. The LOGLEVEL, and the profile name. The LOGLEVEL parameter may contain one of the following values:- 0 = None
- 1 = Errors
- 2 = Info
- 3 = Verbose (Use with caution, this level will generate large amounts of data!)
Profile parameters
The my.Alert.ini configuration looks like a typical INI file, and may contain many profiles. Each profile has multiple parameters:- URL: This is a required parameter. This should be the COMPLETE URL, including port number, etc. You can also use variables in this field, e.g.: {{String
10}} inserts D10's device string, while {{Value
10}} inserts D10's device value. This opens up many possibilities such as being able to specify a UPS tracking # via the web/touch interface, and the script will automatically pick it up and report changes. Currently only String and Value are valid variables.
- RegExSearch: This is a required parameter. Specify the search pattern in the .NET RegEx format.
- RegExReplace: Useful in some scenarios where you need grab the back referenced data.
- Event: The name of the event to trigger.
- Email: E-mail address to notify if there is a match.
- DeviceString: Specify device code (e.g., Y11), and the device string will be updated.
- DeviceToggle: Specify device code (e.g., Y11), and the device will be toggled.
- DeviceOn: Specify device code (e.g., Y11), and the device will be turned on.
- DeviceOff: Specify device code (e.g., Y11), and the device will be turned off.
- Run: Execute command/batch file.
- Speak: Make an announcement.
- Media: Specify full path to the file you want to play (WAV, MP3, ...) when a change has occurred.
- HTML: Set to 'True' (without quotes) if you want to preserve the HTML code. Set to 'False' by default.
Regular Expressions Resources
my.Alert Events
my.Alert Event Configuration Example
Version History
version 0.4 (12132012): added support for {{:}} variables, added Run, Speak, DeviceOn, DeviceOff and DeviceToggle commands. Improved error trapping and minor bug fixes.
version 0.3 (12102012): added HTML option, use when you want to grab & display HTML code (set to False by default).
version 0.2 (12032012): added support for event control and implemented minor fixes.
version 0.1 (11212012): created my.Alert.
Discussion ThreadLast edited by electron; December 14, 2012, 03:55 PM.Tags: None
Leave a comment: