@@ -39,6 +39,9 @@ $(function() {
3939 self . graph_end_date = ko . observable ( moment ( ) . format ( 'YYYY-MM-DDTHH:mm' ) ) ;
4040 self . processing_api_request = ko . observable ( false ) ;
4141
42+ self . discovering = ko . observable ( false ) ;
43+ self . discovered_devices = ko . observableDictionary ( ) ;
44+
4245 self . filteredSmartplugs = ko . computed ( function ( ) {
4346 return ko . utils . arrayFilter ( self . dictSmartplugs . items ( ) , function ( item ) {
4447 return "err_code" in item . value ( ) . emeter . get_realtime ;
@@ -258,7 +261,8 @@ $(function() {
258261 'gcodeCmdOff' : ko . observable ( false ) ,
259262 'gcodeRunCmdOn' : ko . observable ( '' ) ,
260263 'gcodeRunCmdOff' : ko . observable ( '' ) ,
261- 'connect_on_connect' : ko . observable ( false )
264+ 'connect_on_connect' : ko . observable ( false ) ,
265+ 'receives_led_commands' : ko . observable ( false )
262266 } ) ;
263267 self . settings . settings . plugins . tplinksmartplug . arrSmartplugs . push ( self . selectedPlug ( ) ) ;
264268 $ ( "#TPLinkPlugEditor" ) . modal ( "show" ) ;
@@ -268,6 +272,62 @@ $(function() {
268272 self . settings . settings . plugins . tplinksmartplug . arrSmartplugs . remove ( row ) ;
269273 }
270274
275+ self . add_discovered_device = function ( ip , alias ) {
276+ self . selectedPlug ( { 'ip' :ko . observable ( ip ) ,
277+ 'label' :ko . observable ( alias ) ,
278+ 'icon' :ko . observable ( 'icon-bolt' ) ,
279+ 'displayWarning' :ko . observable ( true ) ,
280+ 'warnPrinting' :ko . observable ( false ) ,
281+ 'gcodeEnabled' :ko . observable ( false ) ,
282+ 'gcodeOnDelay' :ko . observable ( 0 ) ,
283+ 'gcodeOffDelay' :ko . observable ( 0 ) ,
284+ 'autoConnect' :ko . observable ( true ) ,
285+ 'autoConnectDelay' :ko . observable ( 10.0 ) ,
286+ 'autoDisconnect' :ko . observable ( true ) ,
287+ 'autoDisconnectDelay' :ko . observable ( 0 ) ,
288+ 'sysCmdOn' :ko . observable ( false ) ,
289+ 'sysRunCmdOn' :ko . observable ( '' ) ,
290+ 'sysCmdOnDelay' :ko . observable ( 0 ) ,
291+ 'sysCmdOff' :ko . observable ( false ) ,
292+ 'sysRunCmdOff' :ko . observable ( '' ) ,
293+ 'sysCmdOffDelay' :ko . observable ( 0 ) ,
294+ 'currentState' :ko . observable ( 'unknown' ) ,
295+ 'btnColor' :ko . observable ( '#808080' ) ,
296+ 'emeter' :{ get_realtime :{ } } ,
297+ 'thermal_runaway' :ko . observable ( false ) ,
298+ 'event_on_error' :ko . observable ( false ) ,
299+ 'event_on_disconnect' :ko . observable ( false ) ,
300+ 'event_on_shutdown' : ko . observable ( false ) ,
301+ 'automaticShutdownEnabled' :ko . observable ( false ) ,
302+ 'event_on_upload' :ko . observable ( false ) ,
303+ 'event_on_startup' :ko . observable ( false ) ,
304+ 'gcodeCmdOn' : ko . observable ( false ) ,
305+ 'gcodeCmdOff' : ko . observable ( false ) ,
306+ 'gcodeRunCmdOn' : ko . observable ( '' ) ,
307+ 'gcodeRunCmdOff' : ko . observable ( '' ) ,
308+ 'connect_on_connect' : ko . observable ( false ) ,
309+ 'receives_led_commands' : ko . observable ( false )
310+ } ) ;
311+ self . settings . settings . plugins . tplinksmartplug . arrSmartplugs . push ( self . selectedPlug ( ) ) ;
312+ $ ( "#tplink_device_discovery" ) . modal ( "hide" ) ;
313+ $ ( "#TPLinkPlugEditor" ) . modal ( "show" ) ;
314+ }
315+
316+ self . discover_devices = function ( ) {
317+ self . discovering ( true ) ;
318+ self . discovered_devices . removeAll ( ) ;
319+ $ ( "#tplink_device_discovery" ) . modal ( "show" ) ;
320+ OctoPrint . simpleApiCommand ( "tplinksmartplug" , "discoverDevices" , { "username" : self . settings . settings . plugins . tplinksmartplug . username ( ) , "password" : self . settings . settings . plugins . tplinksmartplug . password ( ) } ) . done ( function ( data ) {
321+ self . discovering ( false ) ;
322+ self . discovered_devices . pushAll ( ko . toJS ( data . discovered_devices ) ) ;
323+ console . log ( self . discovered_devices ) ;
324+ } ) . fail ( function ( jqXHR , textStatus , errorThrown ) {
325+ self . discovering ( false ) ;
326+ console . error ( "Failed to discover devices:" , textStatus , errorThrown , jqXHR ) ;
327+ alert ( "Failed to discover devices, please consult developer tools for more details." ) ;
328+ } ) ;
329+ }
330+
271331 self . onDataUpdaterPluginMessage = function ( plugin , data ) {
272332 if ( plugin != "tplinksmartplug" ) {
273333 return ;
0 commit comments