trunzoc / winkathome Goto Github PK
View Code? Open in Web Editor NEWC# Web Application to control your Wink Hub and Devices via the Wink/Quirky API
License: GNU General Public License v2.0
C# Web Application to control your Wink Hub and Devices via the Wink/Quirky API
License: GNU General Public License v2.0
Probably a long way off, but for the average folk downloading unzipping and replacing files regularly is a pain. ;-)
Binary switches also show dimming sliders. Probably better to remove them.
Not sure if you wanted to do a temporary fix for the thermostats. Here is the JSON from my Nest.
{
"thermostat_id": "23421",
"name": "Home Dining Room Thermostat",
"locale": "en_us",
"units": {
"temperature": "f"
},
"created_at": 1419086572,
"hidden_at": null,
"capabilities": {},
"subscription": {
"pubnub": {
"subscribe_key": "sub-c-f7bf7f7e-0542-11e3-a5e8-02ee2ddab7fe",
"channel": "cd58d71aba1963512fade1e386d7bc534d3f8bb7|thermostat-23421|user-145398"
}
},
"user_ids": [
"145398"
],
"triggers": [],
"desired_state": {},
"manufacturer_device_model": "nest",
"manufacturer_device_id": "Wyc73fGVax7Ya-R4ovP-SExx11Qobba_",
"device_manufacturer": "nest",
"model_name": "Learning Thermostat",
"upc_id": "168",
"hub_id": null,
"local_id": null,
"radio_type": null,
"linked_service_id": "50847",
"last_reading": {
"connection": true,
"connection_updated_at": 1431049157.7519262,
"powered": false,
"powered_updated_at": 1431049157.7519777,
"min_set_point": 20.0,
"min_set_point_updated_at": 1431049157.7519991,
"max_set_point": 23.888888888888889,
"max_set_point_updated_at": 1431049157.7520068,
"mode": "heat_only",
"mode_updated_at": 1430946942.8452034,
"users_away": false,
"users_away_updated_at": 1431049157.7520278,
"fan_timer_active": false,
"fan_timer_active_updated_at": 1431049157.751992,
"temperature": 23.0,
"temperature_updated_at": 1431049157.751946,
"external_temperature": null,
"external_temperature_updated_at": null,
"deadband": 1.5,
"deadband_updated_at": 1431049157.7519538,
"min_min_set_point": null,
"min_min_set_point_updated_at": null,
"max_min_set_point": null,
"max_min_set_point_updated_at": null,
"min_max_set_point": null,
"min_max_set_point_updated_at": null,
"max_max_set_point": null,
"max_max_set_point_updated_at": null,
"modes_allowed": [
"auto",
"heat_only",
"cool_only"
],
"modes_allowed_updated_at": 1431049157.7520137,
"units": "f",
"units_updated_at": 1431049157.7519379,
"eco_target": true,
"eco_target_updated_at": 1431049157.7519617,
"manufacturer_structure_id": "SCtOxJ3-MWw0glF8ScNOgmUXXPVl8Q1mdYJaib0MYcl_ZP6uUaCVeQ",
"manufacturer_structure_id_updated_at": 1431049157.7519703,
"has_fan": true,
"has_fan_updated_at": 1431049157.7519846,
"fan_duration": 0,
"fan_duration_updated_at": 1431049157.7520208,
"last_error": null,
"last_error_updated_at": 1421787062.2703428,
"desired_powered_updated_at": 1431005484.4858487,
"desired_min_set_point_updated_at": 1431005484.4858694,
"desired_max_set_point_updated_at": 1431005484.485878,
"desired_mode_updated_at": 1431005484.4858854,
"desired_users_away_updated_at": 1431005484.485894,
"desired_fan_timer_active_updated_at": 1431005484.4859018,
"connection_changed_at": 1430794098.20695,
"powered_changed_at": 1430950518.7269628,
"min_set_point_changed_at": 1430950518.7269847,
"max_set_point_changed_at": 1430757474.2571824,
"mode_changed_at": 1430824468.6797764,
"temperature_changed_at": 1431049157.751946,
"eco_target_changed_at": 1430950520.1249938,
"desired_powered_changed_at": 1431005484.4858487,
"desired_min_set_point_changed_at": 1431005484.4858694,
"desired_max_set_point_changed_at": 1431005484.485878,
"desired_mode_changed_at": 1431005484.4858854,
"desired_users_away_changed_at": 1431005484.485894,
"desired_fan_timer_active_changed_at": 1431005484.4859018
},
"lat_lng": [
null,
null
],
"location": "",
"smart_schedule_enabled": false
}
Binary Switch on Wink Relay which is configured to control a Shortcut should probably not show up in controllable device.
My relay has 1 switch wired to an actual Light load. The second switch is not wired to anything and setup to fire a Shortcut.
In Wink@Home the switch setup to control a shortcut shows up as "Switch" and can be clicked. This seems duplicative and contrary to the functionality in the main Wink app.
The switch if not configured to a wired load should be hidden.
Here is the output from the switch configured to a shortcut:
{
"binary_switch_id": "30320",
"name": "Switch",
"locale": "en_us",
"units": {},
"created_at": 1422813943,
"hidden_at": null,
"capabilities": {},
"subscription": {
"pubnub": {
"subscribe_key": "sub-c-f7bf7f7e-0542-11e3-a5e8-02ee2ddab7fe",
"channel": "8afe2bdfa540e4459b510bff44db636388afea88|binary_switch-30320|user-186645"
}
},
"user_ids": [
"186645"
],
"triggers": [],
"desired_state": {
"powered": false,
"powering_mode": "none"
},
"manufacturer_device_model": null,
"manufacturer_device_id": null,
"device_manufacturer": null,
"model_name": null,
"upc_id": null,
"gang_id": "2997",
"hub_id": "98045",
"local_id": "2",
"radio_type": "project_one",
"last_reading": {
"connection": true,
"connection_updated_at": 1429016828.833034,
"powered": false,
"powered_updated_at": 1429016828.8330438,
"powering_mode": "none",
"powering_mode_updated_at": 1422824216.9928842,
"consumption": null,
"consumption_updated_at": null,
"cost": null,
"cost_updated_at": null,
"budget_percentage": null,
"budget_percentage_updated_at": null,
"budget_velocity": null,
"budget_velocity_updated_at": null,
"summation_delivered": null,
"summation_delivered_updated_at": null,
"sum_delivered_multiplier": null,
"sum_delivered_multiplier_updated_at": null,
"sum_delivered_divisor": null,
"sum_delivered_divisor_updated_at": null,
"sum_delivered_formatting": null,
"sum_delivered_formatting_updated_at": null,
"sum_unit_of_measure": null,
"sum_unit_of_measure_updated_at": null,
"desired_powered": false,
"desired_powered_updated_at": 1422824138.418901,
"desired_powering_mode": "none",
"desired_powering_mode_updated_at": 1422824216.9928727
},
"current_budget": null,
"lat_lng": [
0.0,
0.0
],
"location": "",
"order": 0
}
-Add "Setting Type" and change settings page to use proper controls for each type.
(Not essential anymore as settings are mostly removed at this point)
-Help Menu & User Guide
-Fix group updates after I'm allowed to create group subs.
-Querystring device control for bookmarks to specific devices.
(Scrapping this. There is no secure way to maintain authentication)
-Hue icons ( I really need a bridge. grrr)
-Fix Spotter Alert status always on
-Add way to reorder panes without editing each item separately.
-Create Temp and Humidity placeholder in Sensor pane.
-Add robot pane options t title bar. Show Enabled/Disabled/Both, Show Alert Only
-Change page to Tabs with number of tripped sensors/robots, or powered devices/groups visible on the Tab
-Change all popups to be JS/AJAX instead of c# postback.
-Change order of device queue msg so that device updates first, then display state info instead of whole json string.
-Register Subs async
-Add settings saved message
-store pubnub text message in a session variable as a log.
-Change PubNub Connect message to include object name
-Add pause to pubnub display panel
-PubNub duplicate enrollment error messages
In upgrading some of my controllable devices disappeared... upon restart the only one left was my lock. The all still show up when viewing the group (lights) but not under the controllable devices tab.
On Monitor page display actual state of sensors like motion detected or tripper is in opened state etc. instead of showing icons.
Is there a way to make this so more than one Wink user can sign to wink at home I.e kids / mom/ dad? not all at the same time but I would love to use this for a command center.
With all the upgrades/improvements going on, it's difficult to know which version we are on unless we remember. Would be nice to have something in the Settings page that we can track back to GitHub to make sure we're on the correct/newest build.
(another way to think of it, to verify the upgrade has been successful, unzipping over the WinkAtHome folder...)
Any time I run a shortcut, the app crashes with the following error. The action works prior to the crash (ie the lights turn on / off / etc) The app pool needs to be reset to get it back up and running. The shortcuts are just turning Link lights on / off / adjusting brightness - not interfacing with any other devices. The devices are able to be controlled individually without issue.
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[FormatException: Input string was not in a correct format.]
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +11397397
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +120
System.Convert.ToInt32(String value) +49
WinkAtHome.Controls.Devices.dlDevices_ItemDataBound(Object sender, DataListItemEventArgs e) +1347
System.Web.UI.WebControls.DataList.OnItemDataBound(DataListItemEventArgs e) +115
System.Web.UI.WebControls.DataList.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +151
System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +644
System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +64
System.Web.UI.WebControls.BaseDataList.DataBind() +80
WinkAtHome.Controls.Devices.BindData() +286
WinkAtHome.Controls.Devices.Page_Load(Object sender, EventArgs e) +481
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +85
System.Web.UI.Control.OnLoad(EventArgs e) +79
System.Web.UI.Control.LoadRecursive() +130
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Control.LoadRecursive() +200
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2841
It would be great if the Sensor State could be shown. I currently use the Window / Door sensors http://www.wink.com/products/quirkyge-tripper-windowithdoor-sensor/
to monitor my office and server room doors. It would be great to be able to see if they are open / closed right from the site.
The update button is not actionable. Stuck in a loop of update now, but can't click anything but cancel.
{
"sprinkler_id": "1483",
"name": "Sprinkler",
"locale": "en_us",
"units": {},
"created_at": 1429295028,
"hidden_at": null,
"capabilities": {},
"subscription": {
"pubnub": {
"subscribe_key": "sub-c-f7bf7f7e-0542-11e3-a5e8-02ee2ddab7fe",
"channel": "ecbd8151da8524635b2dfd777c4f55f33a042285|sprinkler-1483|user-186645"
}
},
"user_ids": [
"186645"
],
"desired_state": {
"master_valve": false,
"rain_sensor": false,
"schedule_enabled": false,
"run_zone_indices": [],
"run_zone_durations": []
},
"manufacturer_device_model": "rachio_iro",
"manufacturer_device_id": "b26d4e70-f4df-481a-9149-c9bac4c3a09e",
"device_manufacturer": "rachio",
"model_name": "Iro",
"upc_id": "152",
"linked_service_id": "100792",
"last_reading": {
"connection": true,
"connection_updated_at": 1429477160.725,
"master_valve": false,
"master_valve_updated_at": 1429477160.725,
"rain_sensor": false,
"rain_sensor_updated_at": 1429477160.725,
"schedule_enabled": false,
"schedule_enabled_updated_at": 1429477160.725,
"run_zone_indices": [],
"run_zone_indices_updated_at": 1429361044.5683227,
"run_zone_durations": [],
"run_zone_durations_updated_at": 1429361044.5683227,
"desired_master_valve": false,
"desired_master_valve_updated_at": 1429361044.6298194,
"desired_rain_sensor": false,
"desired_rain_sensor_updated_at": 1429361042.534966,
"desired_schedule_enabled": false,
"desired_schedule_enabled_updated_at": 1429361044.6298397,
"desired_run_zone_indices": [],
"desired_run_zone_indices_updated_at": 1429361042.5349822,
"desired_run_zone_durations": [],
"desired_run_zone_durations_updated_at": 1429361042.5349896
},
"lat_lng": [
41.38983,
-81.42602
],
"location": "",
"zones": [
{
"name": "Top Driveway",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6298468,
"shade": "none",
"shade_updated_at": 1429361044.6298535,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6298602,
"soil": "top_soil",
"soil_updated_at": 1429361044.6298668,
"slope": "flat",
"slope_updated_at": 1429361044.629873,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6298814
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 0,
"zone_id": "12501",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Driveway Bottom",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6298881,
"shade": "none",
"shade_updated_at": 1429361044.6298945,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6299007,
"soil": "top_soil",
"soil_updated_at": 1429361044.6299071,
"slope": "flat",
"slope_updated_at": 1429361044.6299136,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6299202
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 1,
"zone_id": "12502",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Tree Lawn",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6299269,
"shade": "none",
"shade_updated_at": 1429361044.6299338,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6299408,
"soil": "top_soil",
"soil_updated_at": 1429361044.6299474,
"slope": "flat",
"slope_updated_at": 1429361044.6299543,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.629961
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 2,
"zone_id": "12503",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Back Right",
"desired_state": {
"enabled": false,
"enabled_updated_at": 1429361044.6299675,
"shade": "none",
"shade_updated_at": 1429361044.6299734,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6299799,
"soil": "top_soil",
"soil_updated_at": 1429361044.6299863,
"slope": "flat",
"slope_updated_at": 1429361044.6299949,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6300077
},
"last_reading": {
"enabled": false,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 3,
"zone_id": "12504",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Mailbox",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6300216,
"shade": "none",
"shade_updated_at": 1429361044.6300349,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6300464,
"soil": "top_soil",
"soil_updated_at": 1429361044.630054,
"slope": "flat",
"slope_updated_at": 1429361044.6300609,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6300678
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 4,
"zone_id": "12505",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Back Center",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6300743,
"shade": "none",
"shade_updated_at": 1429361044.6300812,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6300881,
"soil": "top_soil",
"soil_updated_at": 1429361044.6300948,
"slope": "flat",
"slope_updated_at": 1429361044.6301012,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6301079
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 5,
"zone_id": "12506",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Back Left",
"desired_state": {
"enabled": true,
"enabled_updated_at": 1429361044.6301141,
"shade": "none",
"shade_updated_at": 1429361044.6301203,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6301262,
"soil": "top_soil",
"soil_updated_at": 1429361044.6301327,
"slope": "flat",
"slope_updated_at": 1429361044.6301389,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6301456
},
"last_reading": {
"enabled": true,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 6,
"zone_id": "12507",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
},
{
"name": "Zone 8",
"desired_state": {
"enabled": false,
"enabled_updated_at": 1429361044.630152,
"shade": "none",
"shade_updated_at": 1429361044.6301584,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429361044.6301646,
"soil": "top_soil",
"soil_updated_at": 1429361044.6301739,
"slope": "flat",
"slope_updated_at": 1429361044.6301811,
"vegetation": "grass",
"vegetation_updated_at": 1429361044.6301878
},
"last_reading": {
"enabled": false,
"enabled_updated_at": 1429477160.725,
"shade": "none",
"shade_updated_at": 1429477160.725,
"nozzle": "fixed_spray_head",
"nozzle_updated_at": 1429477160.725,
"soil": "top_soil",
"soil_updated_at": 1429477160.725,
"slope": "flat",
"slope_updated_at": 1429477160.725,
"vegetation": "grass",
"vegetation_updated_at": 1429477160.725,
"powered": false,
"powered_updated_at": 1429361044.5683227
},
"zone_index": 7,
"zone_id": "12508",
"parent_object_type": "sprinkler",
"parent_object_id": "1483"
}
]
}
-Sensor_Pods in menu -> Devices -> By Type -> Sensor_Pods don't show icons.
-Ecolink motion sensor Icons
-Robots need to align left
-Check robot trigger time for Alert icon.
-Make sure Next Trigger only shows on schedules, not robots on the info screen
-All devices have a slider
-Timestamps are off
-Motions sensor and spotters ot showing tripped
The thermostat currently shows up as a house icon in the controllable devices. Clicking the icon appears to turn off the furnace and clicking again turns the furnace back on and puts it in auto mode. The interface doesn't indicate what the state is or what happens if it is clicked. Attached capture of the interface and the result from the activity log
Suggesting the addition of an inventory of paired devices accessible from any "hub" device (Wink Hub, Link Hub, Wink Relay). The inventory could simply display a list of device name and type - grouped by type, ordered by name. I'm thinking clicking on the device could display this information - similar to clicking on the Wink Hub in the app where it shows how many of each device. It would pop up an info box that provides the inventory information.
hi. let's say i wanted to run this myself on a hosting service that supports windows: here are the two obvious questions:
thanks!
/mtr
if you add margin: 0px to the Body you can save some real estate on the page.
1 ) On device info screen - button is now Save and Close. If I don't choose to use device ordering and leave it blank - I can't close out of the info screen unless I enter a value.
2 ) On info for robots, shortcuts and groups - the button just is labeled as close. Clicking on it does nothing. I don't get the warning that I need to have a value in the position box. If I put a value in the position box and click the close button - still does nothing. If I put a value in the position box and hit enter - the box closes.
3 ) Ascend Garage Door - For some reason it has a battery property which is null. App interprets this as battery 0%. There isn't a battery in Ascend so - If Model = Ascend --- ignore battery property.
"battery": null,
"battery_updated_at": null,
4 ) Ascend Garage Door - Consider adding a red ! when door is open - similar to trippers
Drag and Drop would be a nice to have enhancement to arrange your devices. Alphabetical is fine but sometimes it is easy to group like devices that are not named similarly and that do not live in groups.
If drag and drop is too much effort for little reward, some sort ordering by assigning numeric value to a device would also work.
I'm going with a 5 minute timer.
I will make it configurable so that the user can change it
this is more of a request, than an issue with the code (more of an issue with the Hub)
You can monitor the status of the Wink Hub my connecting locally to
WinkHubIP:80. We could have a timer such that if over 5 (or another number of your choosing) 1 minute polls, you dont get a response from the Hub, reboot the device.
if the Hub it down, it would be helpful to reboot the device using a non ZWave/Zigbee device like WeMo
WeMo Api http://search.cpan.org/~ericblue/WebService-Belkin-WeMo-1.0/
thanks
-Manufacturer specific icons when possible (I will not be including thermostats in this)
-replace the Leviton receptacle icon with an actual icon of a receptacle.
-Display "update availalbe" if any device has a pending update
-SSH option (SSL Implemented on public site. Local users will be responsible for getting their own cert)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.