|
26 | 26 | import logging |
27 | 27 | import binascii |
28 | 28 | import wyzesense |
29 | | - |
| 29 | +from datetime import datetime |
30 | 30 |
|
31 | 31 | def on_event(ws, e): |
32 | | - s = f"[{e.Timestamp.strftime('%Y-%m-%d %H:%M:%S')}][{e.MAC}]" |
33 | | - if e.Type == 'state': |
34 | | - (s_type, s_state, s_battery, s_signal) = e.Data |
35 | | - s += f"StateEvent: sensor_type={s_type}, state={s_state}, " \ |
36 | | - f"battery={s_battery}, signal={s_signal}" |
37 | | - else: |
38 | | - s += f"RawEvent: type={e.Type}, data={e.Data}" |
| 32 | + s = f"[{datetime.fromtimestamp(e.timestamp).strftime('%Y-%m-%d %H:%M:%S')}][{e.mac}]: {e}" |
39 | 33 | print(s) |
40 | 34 |
|
41 | | - |
42 | 35 | def main(args): |
43 | 36 | if args['--debug']: |
44 | 37 | loglevel = logging.DEBUG - (1 if args['--verbose'] else 0) |
@@ -109,13 +102,34 @@ def Fix(unused_args): |
109 | 102 | print("Bad sensors removed") |
110 | 103 | logging.debug("Bad sensors removed") |
111 | 104 |
|
| 105 | + def Chime(args): |
| 106 | + if len(args) < 4: |
| 107 | + print("Need 4 parameters") |
| 108 | + return |
| 109 | + |
| 110 | + mac, ring, repeat, volume = args |
| 111 | + ws.PlayChime(mac, int(ring), int(repeat), int(volume)) |
| 112 | + |
| 113 | + def Raw(args): |
| 114 | + if len(args) <= 0: |
| 115 | + print("Missing argument!") |
| 116 | + return |
| 117 | + |
| 118 | + data = args[0] |
| 119 | + data = bytes([int(x, 16) for x in data.strip().split(',')]) |
| 120 | + str_data = ','.join([f"{x:02X}" for x in data]) |
| 121 | + print(f"Sending raw bytes: {str_data}") |
| 122 | + ws.SendRaw(data) |
| 123 | + |
112 | 124 | def HandleCmd(): |
113 | 125 | cmd_handlers = { |
114 | | - 'L': ('L - List paired sensors', List), |
115 | | - 'P': ('P - Pair new sensors', Pair), |
116 | | - 'U': ('U <mac> - Unpair sensor', Unpair), |
117 | | - 'F': ('F - Fix invalid sensors', Fix), |
118 | | - 'X': ('X - Exit tool', None), |
| 126 | + 'L': ('L - [L]ist paired sensors', List), |
| 127 | + 'P': ('P - [P]air new sensors', Pair), |
| 128 | + 'U': ('U - [U]npair sensor, args: <mac>', Unpair), |
| 129 | + 'F': ('F - [F]ix invalid sensors', Fix), |
| 130 | + 'C': ('C - Play [C]hime, args: <mac> <ring> <repeat> <volume>', Chime), |
| 131 | + 'R': ('R - Sending [R]aw packet, args: <hex bytes, separated by comma', Raw), |
| 132 | + 'X': ('X - E[X]it tool', None), |
119 | 133 | } |
120 | 134 |
|
121 | 135 | for v in list(cmd_handlers.values()): |
|
0 commit comments