Skip to content

Commit a0770ad

Browse files
committedJan 8, 2023
Fix Luxure server issue
Add clearer status text during searching Add timeout to server SSDP response
1 parent 5e65058 commit a0770ad

File tree

4 files changed

+21
-11
lines changed

4 files changed

+21
-11
lines changed
 

‎src/edgeDriver/src/commands.lua

+7
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ function command_handler.refresh(driver, callingDevice, skipScan, firstAuth)
9090

9191
--Handle blank auth info
9292
if myQController.preferences.email == '' or myQController.preferences.password == '' then
93+
log.info('No credentials yet. Waiting.')
9394
local defaultAuthStatus = 'Awaiting credentials'
9495
local currentStatus = myQController:get_latest_state('main', "towertalent27877.myqstatus", "statusText", "unknown")
9596
if currentStatus ~= defaultAuthStatus then
@@ -327,6 +328,12 @@ function command_handler.refresh(driver, callingDevice, skipScan, firstAuth)
327328
end
328329

329330
function doBroadcast(driver, device, myQController)
331+
local defaultLookingStatus = 'Searching for bridge server'
332+
local currentStatus = myQController:get_latest_state('main', "towertalent27877.myqstatus", "statusText", "unknown")
333+
if currentStatus ~= defaultLookingStatus then
334+
myQController:emit_event(myqStatusCap.statusText(defaultLookingStatus))
335+
end
336+
330337
if driver.server.ip == nil then
331338
log.info('Refresh: waiting for driver http startup')
332339
return

‎src/edgeDriver/src/init.lua

+9-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ local log = require('log')
44
local socket = require('socket')
55
local config = require('config')
66
local httpUtil = require('httpUtil')
7-
local cosock = require('cosock').socket
7+
local cosock = require('cosock')
88
local commands = require('commands')
99
local lux = require('luxure')
1010
local json = require('dkjson')
@@ -157,13 +157,16 @@ local driver =
157157
local hub_server = {}
158158

159159
function hub_server.start(driver)
160-
local server = lux.Server.new_with(cosock.tcp(), {env='debug'})
160+
local server = lux.Server.new_with(cosock.socket.tcp(), { env = 'debug' })
161161

162-
-- Register server
163-
driver:register_channel_handler(server.sock, function ()
164-
server:tick()
165-
end)
162+
server:listen()
163+
log.trace('Server listening on ' ..server.ip ..':' ..server.port)
166164

165+
cosock.spawn(function()
166+
while true do
167+
server:tick(log.error)
168+
end
169+
end, "server run loop")
167170

168171
--Handles incoming ping from MyQ server when responding to ssdp broadcast
169172
server:post('/ping', function (req, res)
@@ -182,8 +185,6 @@ function hub_server.start(driver)
182185
assert (myQController:try_update_metadata({model = 'http://' ..myqServerUrl}), 'failed to update device.')
183186
end)
184187

185-
server:listen()
186-
log.trace('Server listening on ' ..server.ip ..':' ..server.port)
187188
driver.server = server
188189
end
189190

‎src/server/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "myqnode",
33
"author": "Brian Beaird",
44
"repository": "https://github.com/brbeaird/SmartThings-MyQ-Edge.git",
5-
"version": "1.0.0",
5+
"version": "1.0.1",
66
"description": "Node agent for MyQ and SmartThings Edge",
77
"main": "server.js",
88
"scripts": {

‎src/server/server.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,13 @@ function startSsdp() {
134134
}
135135
let hubAddress = `http://${headers.SERVER_IP}:${headers.SERVER_PORT}/ping`
136136
log(`Detected SSDP broadcast. Posting details back to server at ${hubAddress}`)
137-
await axios.post(hubAddress,
137+
let response = await axios.post(hubAddress,
138138
{
139139
myqServerPort: port,
140140
deviceId: headers.DEVICE_ID
141-
})
141+
},
142+
{timeout: 5000})
143+
log(`Got status ${response.status} from hub.`);
142144
} catch (error) {
143145
let msg = error.message;
144146
if (error.response){

0 commit comments

Comments
 (0)