Skip to content

Commit 88cfa3c

Browse files
committed
feat(floorsense/desks_websocket): improve debugging and desk info
1 parent 6a56bdf commit 88cfa3c

2 files changed

Lines changed: 26 additions & 12 deletions

File tree

drivers/floorsense/desks_websocket.cr

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
3939
@controllers : Hash(Int32, ControllerInfo) = {} of Int32 => ControllerInfo
4040

4141
# Locker key => controller id
42-
@lockers : Hash(String, LockerInfo) = {} of String => LockerInfo
42+
getter locker_controllers : Hash(String, LockerInfo) = {} of String => LockerInfo
4343

4444
# Desk key => controller id
45-
@desks : Hash(String, DeskInfo) = {} of String => DeskInfo
45+
getter desk_controllers : Hash(String, DeskInfo) = {} of String => DeskInfo
4646

4747
def on_load
4848
transport.tokenizer = Tokenizer.new("\r\n")
@@ -61,6 +61,10 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
6161
transport.http_uri_override = nil
6262
end
6363

64+
transport.before_request do |request|
65+
logger.debug { "requesting: #{request.method} #{request.path}?#{request.query}\n#{request.body}" }
66+
end
67+
6468
schedule.clear
6569
schedule.every(1.hour) { sync_locker_list }
6670
schedule.in(5.seconds) { sync_locker_list }
@@ -168,6 +172,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
168172
end
169173

170174
protected def check_success(response) : Bool
175+
logger.debug { "responed with #{response.status_code}\n#{response.body}" }
171176
return true if response.success?
172177
expire_token! if response.status_code == 401
173178
raise "unexpected response #{response.status_code}\n#{response.body}"
@@ -224,8 +229,8 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
224229
logger.warn(exception: error) { "obtaining desk list for controller #{controller.name} - #{controller_id}, possibly offline" }
225230
end
226231
end
227-
@desks = desks
228-
@lockers = lockers
232+
@desk_controllers = desks
233+
@locker_controllers = lockers
229234
end
230235

231236
def controller_list(locker : Bool? = nil, desks : Bool? = nil)
@@ -288,7 +293,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
288293
end
289294

290295
def all_lockers
291-
return @lockers.values unless @lockers.empty?
296+
return @locker_controllers.values unless @locker_controllers.empty?
292297
sync_locker_list.values
293298
end
294299

@@ -298,13 +303,13 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
298303
end
299304

300305
def locker(locker_key : String)
301-
lock = @lockers[locker_key]
306+
lock = @locker_controllers[locker_key]
302307
response = get("/restapi/locker-status?cid=#{lock.controller_id}&bid=#{lock.bus_id}&lid=#{lock.locker_id}", headers: default_headers)
303308
parse response, LockerInfo
304309
end
305310

306311
def locker_info(locker_key : String)
307-
@lockers[locker_key]
312+
@locker_controllers[locker_key]
308313
end
309314

310315
enum LedState
@@ -324,7 +329,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
324329
usb_charging : String? = nil,
325330
detect : Bool? = nil
326331
)
327-
lock = @lockers[locker_key]
332+
lock = @locker_controllers[locker_key]
328333

329334
response = post("/restapi/locker-control", headers: {
330335
"Accept" => "application/json",
@@ -363,7 +368,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
363368
restype : String = "adhoc", # also supports fixed
364369
controller_id : String | Int32 | Int64 | Nil = nil,
365370
)
366-
controller_id ||= @lockers[locker_key].controller_id
371+
controller_id ||= @locker_controllers[locker_key].controller_id
367372

368373
response = post("/restapi/res-create", headers: {
369374
"Accept" => "application/json",
@@ -427,7 +432,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
427432
user_id : String? = nil,
428433
pin : String? = nil
429434
)
430-
lock = @lockers[locker_key]
435+
lock = @locker_controllers[locker_key]
431436

432437
response = post("/restapi/locker-unlock", headers: {
433438
"Accept" => "application/json",
@@ -752,6 +757,13 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
752757
parse response, Array(DeskInfo)
753758
end
754759

760+
def desk_info(desk_key : String)
761+
controller_id = @desk_controllers[desk_key].controller_id
762+
response = get("/restapi/desk-status?cid=#{controller_id}&key=#{desk_key}", headers: default_headers)
763+
desk_info = parse response, DeskInfo
764+
desk_info
765+
end
766+
755767
enum LedColour
756768
Red
757769
Green
@@ -785,7 +797,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
785797
reboot : Bool = false,
786798
clean : Bool = false
787799
)
788-
controller_id = @desks[desk_key].controller_id
800+
controller_id = @desk_controllers[desk_key].controller_id
789801

790802
response = post("/restapi/desk-control", headers: {
791803
"Accept" => "application/json",
@@ -816,7 +828,7 @@ class Floorsense::DesksWebsocket < PlaceOS::Driver
816828
end
817829

818830
def get_desk_height(desk_key : String) : Int32?
819-
nil
831+
desk_info(desk_key).deskheight
820832
end
821833

822834
def set_desk_power(desk_key : String, desk_power : Bool?)

drivers/floorsense/models.cr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,12 @@ module Floorsense
174174

175175
class DeskInfo
176176
include JSON::Serializable
177+
include JSON::Serializable::Unmapped
177178

178179
property eui64 : String
179180
property key : String?
180181
property planid : Int32?
182+
property deskheight : Int32?
181183

182184
@[JSON::Field(key: "type")]
183185
property desk_type : String?

0 commit comments

Comments
 (0)