Skip to content
Snippets Groups Projects
Commit fb37470c authored by Strasser, Andreas's avatar Strasser, Andreas
Browse files

implemented nbiot driver

parent ea5f3e49
Branches
No related tags found
No related merge requests found
import string
class NBIoTDriverState
static var RESET = 1
static var INIT_COAP = 2
static var INIT_MQTT = 3
static var READY = 4
static var COAP_SET_OPTIONS = 5
static var COAP_SEND = 6
static var COAP_RECEIVE = 7
end
class NBIoTDriver
var ser
var state
var send_queue
var send_request
var ok_awaiting
var payload_awaiting
var retries
def init(rx, tx)
self.state = NBIoTDriverState.RESET
self.send_queue = []
self.send_request = nil
self.ok_awaiting = false
self.retries = 0
self.ser = serial(rx, tx, 115200, serial.SERIAL_8N1)
end
def check_ok()
if self.ok_awaiting
var msg = self.ser.read().asstring()
print(msg)
if string.find(msg,'OK') >= 0
self.ok_awaiting = false
return true
else
if self.retries > 0
self.retries -= self.retries
end
return false
end
else
return false
end
end
def check_ok_or_send(cmd)
if self.check_ok()
return true
else
print('send ' + cmd)
self.ser.write(bytes().fromstring(cmd))
self.ok_awaiting = true
return false
end
end
def check_ready()
var msg = self.ser.read().asstring()
print(msg)
return string.find(msg,'RDY') >= 0
end
def reset()
self.ser.write(bytes().fromstring('AT+QRST=1\r\n'))
print('write AT+QRST')
end
def every_second()
if self.state == NBIoTDriverState.RESET
if !self.check_ready()
self.reset()
else
self.state = NBIoTDriverState.INIT_COAP
end
elif self.state == NBIoTDriverState.INIT_COAP
if self.check_ok_or_send('AT+QCOAPCREATE=1,0\r\n')
self.state = NBIoTDriverState.COAP_SET_OPTIONS
end
elif self.state == NBIoTDriverState.COAP_SET_OPTIONS
if self.check_ok_or_send('AT+QCOAPOPTION=1,11,\"test\"\r\n')
self.state = NBIoTDriverState.COAP_SEND
end
elif self.state == NBIoTDriverState.COAP_SEND
if self.check_ok_or_send('AT+QCOAPSEND=1,0,\"37.120.174.40\",5683,0\r\n')
self.state = NBIoTDriverState.COAP_RECEIVE
end
elif self.state == NBIoTDriverState.COAP_RECEIVE
var msg = self.ser.read().asstring()
print(msg)
else
print('duuude')
end
end
end
var nbiot = module('nbiot')
nbiot.init = def (m)
class nbiot
var _driver
def init()
print('init')
self._driver = NBIoTDriver(19, 23)
tasmota.add_driver(self._driver)
end
end
return nbiot()
end
return nbiot
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment