Hi,
I am developing an application where we send some sensor data to the cloud. I have a prototype that kind of works, but I want to ask the forum what can be done better and optimized to make it more efficient.
I have the problem that the application keeps restarting from the beginning, even though I don't want it to. Currently I am using k_work_delayable which calls a simple state machine to do the work. I want the state machine to be called peridiocally to read the data, send it, and connect it to the cloud. Is this the best way to do it?
The delay can be changed from 5s to 30 min. Is there any way to go into power save mode and enable the RTC to wake up periodically with an interrupt. I know how to do in STM32 but I have little to no experience with Nordic controllers.
Should I connect and disconnect my MQTT client. Is that energy efficient? Or should I just leave it connected all the time? I am using the nrf9160 board.
I have a problem that sometimes LTE takes longer to connect to the tower or fails to connect for a period of time. Is there any way this can be improved?
If there are any others ideas and suggestions that can help I am all ears.
OS: Windows
SDK: 2.3.0
IDE: Visual Studio Code
Hardware: nRF9160 Development Kid
LTE Link Monitor:
2023-03-07T08:19:52.601Z DEBUG Application data folder: C:\Users\melya\AppData\Roaming\nrfconnect\pc-nrfconnect-linkmonitor
2023-03-07T08:19:52.665Z DEBUG App pc-nrfconnect-linkmonitor v2.0.3 local
2023-03-07T08:19:52.665Z DEBUG App path: C:\Users\melya\.nrfconnect-apps\node_modules\pc-nrfconnect-linkmonitor
2023-03-07T08:19:52.665Z DEBUG nRFConnect 4.0.0, required by the app is (>=4.0.0)
2023-03-07T08:19:52.665Z DEBUG nRFConnect path: C:\Users\melya\AppData\Local\Programs\nrfconnect\resources\app.asar
2023-03-07T08:19:52.665Z DEBUG HomeDir: C:\Users\melya
2023-03-07T08:19:52.665Z DEBUG TmpDir: C:\Users\melya\AppData\Local\Temp
2023-03-07T08:19:53.059Z INFO Using nrf-device-lib-js version: 0.5.0
2023-03-07T08:19:53.059Z INFO Using nrf-device-lib version: 0.13.11
2023-03-07T08:19:53.059Z INFO Using nrfjprog DLL version: 10.18.2
2023-03-07T08:19:53.059Z INFO Using JLink version: JLink_V7.80c
2023-03-07T08:19:53.380Z INFO Installed JLink version does not match the provided version (V7.66a)
2023-03-07T08:20:05.556Z INFO Modem port is opened
2023-03-07T08:20:05.562Z DEBUG modem >> AT+CFUN?
2023-03-07T08:20:05.584Z DEBUG modem << +CFUN: 1
2023-03-07T08:20:05.586Z DEBUG modem << OK
2023-03-07T08:20:05.598Z DEBUG modem >> AT+CGSN=1
2023-03-07T08:20:05.606Z DEBUG modem << +CGSN: "352656106443289"
2023-03-07T08:20:05.608Z DEBUG modem << OK
2023-03-07T08:20:05.610Z DEBUG modem >> AT+CGMI
2023-03-07T08:20:05.615Z DEBUG modem << Nordic Semiconductor ASA
2023-03-07T08:20:05.617Z DEBUG modem << OK
2023-03-07T08:20:05.619Z DEBUG modem >> AT+CGMM
2023-03-07T08:20:05.623Z DEBUG modem << nRF9160-SICA
2023-03-07T08:20:05.629Z DEBUG modem << OK
2023-03-07T08:20:05.631Z DEBUG modem >> AT+CGMR
2023-03-07T08:20:05.636Z DEBUG modem << mfw_nrf9160_1.3.3
2023-03-07T08:20:05.638Z DEBUG modem << OK
2023-03-07T08:20:05.640Z INFO Nordic Semiconductor ASA nRF9160-SICA [mfw_nrf9160_1.3.3] SerNr: 352656106443289
2023-03-07T08:20:05.640Z DEBUG modem >> AT+CEMODE?
2023-03-07T08:20:05.647Z DEBUG modem << +CEMODE: 2
2023-03-07T08:20:05.649Z DEBUG modem << OK
2023-03-07T08:20:05.655Z DEBUG modem >> AT%XCBAND=?
2023-03-07T08:20:05.663Z DEBUG modem << %XCBAND: (1,2,3,4,5,8,12,13,18,19,20,25,26,28,66)
2023-03-07T08:20:05.669Z DEBUG modem << OK
2023-03-07T08:20:05.675Z DEBUG modem >> AT+CMEE?
2023-03-07T08:20:05.679Z DEBUG modem << +CMEE: 0
2023-03-07T08:20:05.680Z DEBUG modem << OK
2023-03-07T08:20:05.682Z DEBUG modem >> AT+CMEE=1
2023-03-07T08:20:05.688Z DEBUG modem << OK
2023-03-07T08:20:05.690Z DEBUG modem >> AT+CNEC?
2023-03-07T08:20:05.694Z DEBUG modem << +CNEC: 0
2023-03-07T08:20:05.695Z DEBUG modem << OK
2023-03-07T08:20:05.697Z DEBUG modem >> AT+CNEC=24
2023-03-07T08:20:05.700Z DEBUG modem << OK
2023-03-07T08:20:05.702Z DEBUG modem >> AT+CGEREP?
2023-03-07T08:20:05.708Z DEBUG modem << +CGEREP: 0,0
2023-03-07T08:20:05.710Z DEBUG modem << OK
2023-03-07T08:20:05.711Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:20:05.715Z DEBUG modem << OK
2023-03-07T08:20:05.716Z DEBUG modem >> AT+CGACT?
2023-03-07T08:20:05.719Z DEBUG modem << OK
2023-03-07T08:20:05.721Z DEBUG modem >> AT+CGEREP=1
2023-03-07T08:20:05.728Z DEBUG modem << OK
2023-03-07T08:20:05.729Z DEBUG modem >> AT+CIND=1,1,1
2023-03-07T08:20:05.733Z DEBUG modem << OK
2023-03-07T08:20:05.735Z DEBUG modem >> AT+CEREG=5
2023-03-07T08:20:05.739Z DEBUG modem << OK
2023-03-07T08:20:05.740Z DEBUG modem >> AT+CEREG?
2023-03-07T08:20:05.744Z DEBUG modem << +CEREG: 5,4
2023-03-07T08:20:05.749Z DEBUG modem << OK
2023-03-07T08:20:05.755Z DEBUG modem >> AT%CESQ=1
2023-03-07T08:20:05.758Z DEBUG modem << OK
2023-03-07T08:20:05.760Z DEBUG modem >> AT+CESQ
2023-03-07T08:20:05.781Z DEBUG modem << +CESQ: 99,99,255,255,255,255
2023-03-07T08:20:05.783Z DEBUG modem << OK
2023-03-07T08:20:05.791Z DEBUG modem >> AT%XSIM=1
2023-03-07T08:20:05.795Z DEBUG modem << OK
2023-03-07T08:20:05.797Z DEBUG modem >> AT%XSIM?
2023-03-07T08:20:05.801Z DEBUG modem << %XSIM: 0
2023-03-07T08:20:05.809Z DEBUG modem <<
2023-03-07T08:20:05.810Z DEBUG modem << OK
2023-03-07T08:20:06.349Z DEBUG modem << %XSIM: 1
2023-03-07T08:20:06.355Z DEBUG modem >> AT+CPIN?
2023-03-07T08:20:06.359Z DEBUG modem << +CPIN: READY
2023-03-07T08:20:06.362Z DEBUG modem <<
2023-03-07T08:20:06.363Z DEBUG modem << OK
2023-03-07T08:20:06.373Z DEBUG modem >> AT+CPINR="SIM PIN"
2023-03-07T08:20:06.388Z DEBUG modem << +CPINR: "SIM PIN",3
2023-03-07T08:20:06.390Z DEBUG modem << OK
2023-03-07T08:20:06.395Z DEBUG modem >> AT+CIMI
2023-03-07T08:20:06.399Z DEBUG modem << 204080813632197
2023-03-07T08:20:06.400Z DEBUG modem <<
2023-03-07T08:20:06.401Z DEBUG modem << OK
2023-03-07T08:20:06.402Z INFO IMSIdentity: 204080813632197
2023-03-07T08:20:06.409Z DEBUG modem << *** Booting Zephyr OS build v3.2.99-ncs2 ***
2023-03-07T08:20:06.422Z DEBUG modem << [00:00:00.690,124] [0m<inf> aero_sense: Start------------------------------------------------------------------------------------------------------![0m
2023-03-07T08:20:06.459Z DEBUG modem << [00:00:00.690,%CESQ: 46,2,12,1
2023-03-07T08:20:06.460Z DEBUG modem << +CEREG: 2,"012F","01173705",7
2023-03-07T08:20:06.465Z DEBUG modem << 155] [0m<inf> aero_sense: Device 0x30ad4 name is bme680@76
2023-03-07T08:20:06.466Z DEBUG modem << [0m
2023-03-07T08:20:06.467Z DEBUG modem << [00:00:01.713,836] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:20:06.468Z DEBUG modem << [0m
2023-03-07T08:20:06.509Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:06.515Z DEBUG modem << %CESQ: 50,2,17,2
2023-03-07T08:20:07.515Z DEBUG modem << [00:00:01.794,586] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:07.517Z DEBUG modem << [0m
2023-03-07T08:20:08.757Z DEBUG modem << +CGEV: ME PDN ACT 0,0
2023-03-07T08:20:08.761Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:20:08.762Z DEBUG modem << +CNEC_ESM: 50,0
2023-03-07T08:20:08.764Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:20:08.770Z DEBUG modem << +CIND: "service",1
2023-03-07T08:20:08.772Z DEBUG modem << +CIND: "roam",1
2023-03-07T08:20:08.773Z DEBUG modem << %XTIME: "40","32307080027040","00"
2023-03-07T08:20:08.777Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.67.97",0,0
2023-03-07T08:20:08.778Z DEBUG modem <<
2023-03-07T08:20:08.779Z DEBUG modem << OK
2023-03-07T08:20:08.784Z DEBUG modem >> AT+CGACT?
2023-03-07T08:20:08.791Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:20:08.793Z DEBUG modem << OK
2023-03-07T08:20:09.772Z DEBUG modem << [00:00:04.049,407] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:20:09.774Z DEBUG modem << [0m
2023-03-07T08:20:09.780Z DEBUG modem << [00:00:04.050,872] [0m<inf> aero_sense: PSM parameter update: TAU: 6840, Active time: 60
2023-03-07T08:20:09.782Z DEBUG modem << [0m
2023-03-07T08:20:09.792Z DEBUG modem << [00:00:04.274,780] [0m<inf> aero_sense: IPv4 Address found 54.93.49.77[0m
2023-03-07T08:20:09.794Z DEBUG modem << [00:00:04.274,780] [0m<inf> aero_sense: TLS enabled[0m
2023-03-07T08:20:14.504Z DEBUG modem << [00:00:08.781,799] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:20:14.514Z DEBUG modem << [00:00:09.783,416] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:20:14.515Z DEBUG modem << "batv":0,
2023-03-07T08:20:14.517Z DEBUG modem << "rsrp":0,
2023-03-07T08:20:14.518Z DEBUG modem << "temp":22,
2023-03-07T08:20:14.519Z DEBUG modem << "press":95,
2023-03-07T08:20:14.520Z DEBUG modem << "hum":28,
2023-03-07T08:20:14.521Z DEBUG modem << "gas":7296
2023-03-07T08:20:14.522Z DEBUG modem << }[0m
2023-03-07T08:20:14.524Z DEBUG modem << [00:00:09.783,447] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:20:18.350Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:18.504Z DEBUG modem << %CESQ: 43,2,7,1
2023-03-07T08:20:18.516Z DEBUG modem << +CEREG: 5,"012F","010E0906",7,,,"00011110","11100000"
2023-03-07T08:20:18.522Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:20:18.534Z DEBUG modem << OK
2023-03-07T08:20:18.536Z DEBUG modem >> AT+COPS?
2023-03-07T08:20:18.543Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:20:18.545Z DEBUG modem << OK
2023-03-07T08:20:18.549Z DEBUG modem >> AT%XCBAND
2023-03-07T08:20:18.559Z DEBUG modem << %XCBAND: 20
2023-03-07T08:20:18.561Z DEBUG modem << OK
2023-03-07T08:20:18.565Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:20:18.575Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.67.97",0,0
2023-03-07T08:20:18.577Z DEBUG modem <<
2023-03-07T08:20:18.578Z DEBUG modem << OK
2023-03-07T08:20:18.582Z DEBUG modem >> AT+CGACT?
2023-03-07T08:20:18.594Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:20:18.596Z DEBUG modem <<
2023-03-07T08:20:18.597Z DEBUG modem << OK
2023-03-07T08:20:19.355Z DEBUG modem << [00:00:13.635,589] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:19.365Z DEBUG modem << [0m
2023-03-07T08:20:19.376Z DEBUG modem << [00:00:13.794,219] [0m<inf> aero_sense: LTE cell changed: Cell ID: 17697030, Tracking area: 303
2023-03-07T08:20:19.377Z DEBUG modem << [0m
2023-03-07T08:20:20.068Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:20.505Z DEBUG modem << [00:00:14.784,515] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:20:20.516Z DEBUG modem << [00:00:14.794,586] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:20:20.518Z DEBUG modem << [00:00:15.353,729] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:20.519Z DEBUG modem << [0m
2023-03-07T08:20:20.872Z DEBUG modem << %CESQ: 42,2,2,0
2023-03-07T08:20:28.812Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:28.824Z DEBUG modem << %CESQ: 49,2,14,2
2023-03-07T08:20:28.844Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:20:28.849Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:28.850Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:20:28.859Z DEBUG modem << OK
2023-03-07T08:20:28.861Z DEBUG modem >> AT+COPS?
2023-03-07T08:20:28.866Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:20:28.868Z DEBUG modem << OK
2023-03-07T08:20:28.872Z DEBUG modem >> AT%XCBAND
2023-03-07T08:20:28.882Z DEBUG modem << %XCBAND: 20
2023-03-07T08:20:28.883Z DEBUG modem << OK
2023-03-07T08:20:28.887Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:20:28.898Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.67.97",0,0
2023-03-07T08:20:28.900Z DEBUG modem << OK
2023-03-07T08:20:28.904Z DEBUG modem >> AT+CGACT?
2023-03-07T08:20:28.908Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:20:28.909Z DEBUG modem << OK
2023-03-07T08:20:29.818Z DEBUG modem << [00:00:24.096,252] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:20:29.832Z DEBUG modem << [00:00:24.097,320] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:29.833Z DEBUG modem << [0m
2023-03-07T08:20:29.835Z DEBUG modem << [00:00:24.104,003] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:20:29.836Z DEBUG modem << [0m
2023-03-07T08:20:29.838Z DEBUG modem << [00:00:24.105,804] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:29.839Z DEBUG modem << [0m
2023-03-07T08:20:29.843Z DEBUG modem << [00:00:25.097,778] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:20:29.844Z DEBUG modem << "batv":0,
2023-03-07T08:20:29.845Z DEBUG modem << "rsrp":0,
2023-03-07T08:20:29.846Z DEBUG modem << "temp":22,
2023-03-07T08:20:29.847Z DEBUG modem << "press":95,
2023-03-07T08:20:29.849Z DEBUG modem << "hum":28,
2023-03-07T08:20:29.861Z DEBUG modem << "gas":9390
2023-03-07T08:20:29.863Z DEBUG modem << }[0m
2023-03-07T08:20:29.864Z DEBUG modem << [00:00:25.097,808] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:20:34.177Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:34.917Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:35.182Z DEBUG modem << [00:00:29.462,646] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:35.183Z DEBUG modem << [0m
2023-03-07T08:20:35.188Z DEBUG modem << [00:00:30.107,177] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:20:35.203Z DEBUG modem << [00:00:30.117,248] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:20:35.205Z DEBUG modem << [00:00:30.203,430] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:35.206Z DEBUG modem << [0m
2023-03-07T08:20:38.657Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:39.662Z DEBUG modem << [00:00:33.942,779] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:39.677Z DEBUG modem << [0m
2023-03-07T08:20:43.511Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:44.517Z DEBUG modem << [00:00:38.795,654] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:20:44.531Z DEBUG modem << [00:00:38.796,752] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:44.532Z DEBUG modem << [0m
2023-03-07T08:20:44.533Z DEBUG modem << [00:00:39.797,271] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:20:44.534Z DEBUG modem << "batv":0,
2023-03-07T08:20:44.535Z DEBUG modem << "rsrp":0,
2023-03-07T08:20:44.548Z DEBUG modem << "temp":22,
2023-03-07T08:20:44.550Z DEBUG modem << "press":95,
2023-03-07T08:20:44.553Z DEBUG modem << "hum":27,
2023-03-07T08:20:44.554Z DEBUG modem << "gas":10513
2023-03-07T08:20:44.555Z DEBUG modem << }[0m
2023-03-07T08:20:44.573Z DEBUG modem << [00:00:39.797,302] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:20:48.674Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:48.774Z DEBUG modem << %CESQ: 43,2,4,0
2023-03-07T08:20:48.792Z DEBUG modem << +CEREG: 5,"012F","010E0906",7,,,"00011110","11100000"
2023-03-07T08:20:48.808Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:20:48.810Z DEBUG modem << %CESQ: 45,2,14,2
2023-03-07T08:20:48.826Z DEBUG modem << OK
2023-03-07T08:20:48.828Z DEBUG modem >> AT+COPS?
2023-03-07T08:20:48.833Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:20:48.834Z DEBUG modem <<
2023-03-07T08:20:48.835Z DEBUG modem << OK
2023-03-07T08:20:48.852Z DEBUG modem >> AT%XCBAND
2023-03-07T08:20:48.877Z DEBUG modem << %XCBAND: 20
2023-03-07T08:20:48.878Z DEBUG modem << OK
2023-03-07T08:20:48.882Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:20:48.908Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.67.97",0,0
2023-03-07T08:20:48.909Z DEBUG modem << OK
2023-03-07T08:20:48.914Z DEBUG modem >> AT+CGACT?
2023-03-07T08:20:48.928Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:20:48.930Z DEBUG modem << OK
2023-03-07T08:20:49.679Z DEBUG modem << [00:00:43.959,991] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:49.701Z DEBUG modem << [0m
2023-03-07T08:20:49.703Z DEBUG modem << [00:00:44.065,612] [0m<inf> aero_sense: LTE cell changed: Cell ID: 17697030, Tracking area: 303
2023-03-07T08:20:49.705Z DEBUG modem << [0m
2023-03-07T08:20:49.705Z DEBUG modem << [00:00:44.798,339] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:20:49.706Z DEBUG modem << [00:00:44.808,441] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:20:50.053Z DEBUG modem << %CESQ: 43,2,5,0
2023-03-07T08:20:50.073Z DEBUG modem << +CSCON: 1
2023-03-07T08:20:51.059Z DEBUG modem << [00:00:45.340,209] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:20:51.076Z DEBUG modem << [0m
2023-03-07T08:20:54.296Z DEBUG modem << +CSCON: 0
2023-03-07T08:20:55.301Z DEBUG modem << [00:00:49.583,648] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:20:55.318Z DEBUG modem << [0m
2023-03-07T08:21:04.610Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:07.387Z DEBUG modem << [*** Booting Zephyr OS build v3.2.99-ncs2 ***
2023-03-07T08:21:07.404Z DEBUG modem << [00:00:00.505,157] [0m<inf> aero_sense: Start------------------------------------------------------------------------------------------------------![0m
2023-03-07T08:21:07.408Z DEBUG modem << [00:00:00.505,218] [0m<inf> aero_sense: Device 0x30ad4 name is bme680@76
2023-03-07T08:21:07.409Z DEBUG modem << [0m
2023-03-07T08:21:07.465Z DEBUG modem << +CEREG: 2,"012F","01173705",7
2023-03-07T08:21:07.508Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:08.474Z DEBUG modem << [00:00:01.587,127] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:21:08.476Z DEBUG modem << [0m
2023-03-07T08:21:08.495Z DEBUG modem << [00:00:01.629,333] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:08.497Z DEBUG modem << [0m
2023-03-07T08:21:08.896Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:09.901Z DEBUG modem << [00:00:03.017,791] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:09.903Z DEBUG modem << [0m
2023-03-07T08:21:18.987Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:19.992Z DEBUG modem << [00:00:13.108,673] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:19.994Z DEBUG modem << [0m
2023-03-07T08:21:21.250Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:21:21.255Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:21:21.257Z DEBUG modem << %XTIME: "40","32307080120240","00"
2023-03-07T08:21:21.259Z DEBUG modem << OK
2023-03-07T08:21:21.260Z DEBUG modem >> AT+COPS?
2023-03-07T08:21:21.278Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:21:21.280Z DEBUG modem << OK
2023-03-07T08:21:21.284Z DEBUG modem >> AT%XCBAND
2023-03-07T08:21:21.300Z DEBUG modem << %XCBAND: 20
2023-03-07T08:21:21.301Z DEBUG modem << OK
2023-03-07T08:21:21.305Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:21:21.321Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.68.59",0,0
2023-03-07T08:21:21.323Z DEBUG modem << OK
2023-03-07T08:21:21.341Z DEBUG modem >> AT+CGACT?
2023-03-07T08:21:21.358Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:21:21.360Z DEBUG modem << OK
2023-03-07T08:21:22.258Z DEBUG modem << [00:00:15.371,917] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:21:22.276Z DEBUG modem << [0m
2023-03-07T08:21:22.279Z DEBUG modem << [00:00:15.373,413] [0m<inf> aero_sense: PSM parameter update: TAU: 5040, Active time: 60
2023-03-07T08:21:22.281Z DEBUG modem << [0m
2023-03-07T08:21:22.282Z DEBUG modem << [00:00:15.586,212] [0m<inf> aero_sense: IPv4 Address found 3.70.88.181[0m
2023-03-07T08:21:22.283Z DEBUG modem << [00:00:15.586,242] [0m<inf> aero_sense: TLS enabled[0m
2023-03-07T08:21:27.021Z DEBUG modem << [00:00:20.134,887] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:21:27.041Z DEBUG modem << [00:00:21.136,535] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:21:27.043Z DEBUG modem << "batv":0,
2023-03-07T08:21:27.044Z DEBUG modem << "rsrp":0,
2023-03-07T08:21:27.045Z DEBUG modem << "temp":22,
2023-03-07T08:21:27.046Z DEBUG modem << "press":95,
2023-03-07T08:21:27.046Z DEBUG modem << "hum":27,
2023-03-07T08:21:27.047Z DEBUG modem << "gas":14185
2023-03-07T08:21:27.048Z DEBUG modem << }[0m
2023-03-07T08:21:27.065Z DEBUG modem << [00:00:21.136,566] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:21:31.136Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:32.129Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:32.150Z DEBUG modem << [00:00:25.258,270] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:32.152Z DEBUG modem << [0m
2023-03-07T08:21:32.153Z DEBUG modem << [00:00:26.137,634] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:21:32.157Z DEBUG modem << [00:00:26.147,705] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:21:32.162Z DEBUG modem << [00:00:26.251,068] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:32.164Z DEBUG modem << [0m
2023-03-07T08:21:35.937Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:36.942Z DEBUG modem << [00:00:30.059,387] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:36.961Z DEBUG modem << [0m
2023-03-07T08:21:40.793Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:41.800Z DEBUG modem << [00:00:34.914,306] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:21:41.820Z DEBUG modem << [00:00:34.915,374] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:41.821Z DEBUG modem << [0m
2023-03-07T08:21:41.822Z DEBUG modem << [00:00:35.915,893] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:21:41.823Z DEBUG modem << "batv":0,
2023-03-07T08:21:41.824Z DEBUG modem << "rsrp":0,
2023-03-07T08:21:41.825Z DEBUG modem << "temp":22,
2023-03-07T08:21:41.826Z DEBUG modem << "press":95,
2023-03-07T08:21:41.827Z DEBUG modem << "hum":27,
2023-03-07T08:21:41.828Z DEBUG modem << "gas":14876
2023-03-07T08:21:41.829Z DEBUG modem << }[0m
2023-03-07T08:21:41.849Z DEBUG modem << [00:00:35.915,924] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:21:46.905Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:47.037Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:47.800Z DEBUG modem << [00:00:40.916,839] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:21:47.822Z DEBUG modem << [00:00:40.926,910] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:21:47.823Z DEBUG modem << [00:00:41.026,794] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:47.825Z DEBUG modem << [0m
2023-03-07T08:21:47.826Z DEBUG modem << [00:00:41.159,515] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:47.827Z DEBUG modem << [0m
2023-03-07T08:21:51.644Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:52.359Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:52.380Z DEBUG modem << +CEREG: 2,"012F","01173705",7
2023-03-07T08:21:52.649Z DEBUG modem << [00:00:45.766,296] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:52.651Z DEBUG modem << [0m
2023-03-07T08:21:52.671Z DEBUG modem << [00:00:46.479,827] [0m<inf> aero_sense: Error in mqtt_connect: -116[0m
2023-03-07T08:21:52.673Z DEBUG modem << [00:00:46.480,865] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:52.674Z DEBUG modem << [0m
2023-03-07T08:21:53.625Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:53.747Z DEBUG modem << +CSCON: 1
2023-03-07T08:21:54.364Z DEBUG modem << [00:00:47.481,353] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:21:54.366Z DEBUG modem << "batv":0,
2023-03-07T08:21:54.367Z DEBUG modem << "rsrp":0,
2023-03-07T08:21:54.369Z DEBUG modem << "temp":22,
2023-03-07T08:21:54.370Z DEBUG modem << "press":95,
2023-03-07T08:21:54.371Z DEBUG modem << "hum":27,
2023-03-07T08:21:54.391Z DEBUG modem << "gas":15767
2023-03-07T08:21:54.393Z DEBUG modem << }[0m
2023-03-07T08:21:54.414Z DEBUG modem << [00:00:47.481,384] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:21:54.416Z DEBUG modem << [00:00:47.747,833] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:54.417Z DEBUG modem << [0m
2023-03-07T08:21:54.418Z DEBUG modem << [00:00:47.869,689] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:21:54.419Z DEBUG modem << [0m
2023-03-07T08:21:55.562Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:21:55.568Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:21:55.570Z DEBUG modem << %XTIME: "40","32307080124540","00"
2023-03-07T08:21:55.571Z DEBUG modem << OK
2023-03-07T08:21:55.591Z DEBUG modem >> AT+COPS?
2023-03-07T08:21:55.611Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:21:55.614Z DEBUG modem << OK
2023-03-07T08:21:55.637Z DEBUG modem >> AT%XCBAND
2023-03-07T08:21:55.657Z DEBUG modem << %XCBAND: 20
2023-03-07T08:21:55.659Z DEBUG modem << OK
2023-03-07T08:21:55.663Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:21:55.671Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.68.162",0,0
2023-03-07T08:21:55.672Z DEBUG modem <<
2023-03-07T08:21:55.673Z DEBUG modem << OK
2023-03-07T08:21:55.696Z DEBUG modem >> AT+CGACT?
2023-03-07T08:21:55.731Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:21:55.733Z DEBUG modem << OK
2023-03-07T08:21:56.570Z DEBUG modem << [00:00:49.684,692] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:21:56.592Z DEBUG modem << [0m
2023-03-07T08:21:59.217Z DEBUG modem << +CSCON: 0
2023-03-07T08:21:59.365Z DEBUG modem << [00:00:52.481,506] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:21:59.388Z DEBUG modem << [00:00:52.481,567] [1;31m<err> aero_sense: Could not disconnect MQTT client: -128[0m
2023-03-07T08:21:59.390Z DEBUG modem << [00:00:53.339,111] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:21:59.391Z DEBUG modem << [0m
2023-03-07T08:22:12.318Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:15.096Z DEBUG modem << [*** Booting Zephyr OS build v3.2.99-ncs2 ***
2023-03-07T08:22:15.119Z DEBUG modem << [00:00:00.505,310] [0m<inf> aero_sense: Start------------------------------------------------------------------------------------------------------![0m
2023-03-07T08:22:15.120Z DEBUG modem << [00:00:00.505,371] [0m<inf> aero_sense: Device 0x30ad4 name is bme680@76
2023-03-07T08:22:15.121Z DEBUG modem << [0m
2023-03-07T08:22:15.160Z DEBUG modem << +CEREG: 2,"012F","01173705",7
2023-03-07T08:22:15.199Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:16.154Z DEBUG modem << [00:00:01.559,661] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:22:16.156Z DEBUG modem << [0m
2023-03-07T08:22:16.188Z DEBUG modem << [00:00:01.611,022] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:22:16.190Z DEBUG modem << [0m
2023-03-07T08:22:16.576Z DEBUG modem << +CSCON: 0
2023-03-07T08:22:17.581Z DEBUG modem << [00:00:02.989,471] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:22:17.583Z DEBUG modem << [0m
2023-03-07T08:22:26.668Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:27.673Z DEBUG modem << [00:00:13.081,329] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:22:27.675Z DEBUG modem << [0m
2023-03-07T08:22:28.838Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:22:28.865Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:22:28.887Z DEBUG modem << %XTIME: "40","32307080228240","00"
2023-03-07T08:22:28.888Z DEBUG modem << OK
2023-03-07T08:22:28.890Z DEBUG modem >> AT+COPS?
2023-03-07T08:22:28.895Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:22:28.897Z DEBUG modem <<
2023-03-07T08:22:28.898Z DEBUG modem << OK
2023-03-07T08:22:28.902Z DEBUG modem >> AT%XCBAND
2023-03-07T08:22:28.923Z DEBUG modem << %XCBAND: 20
2023-03-07T08:22:28.925Z DEBUG modem <<
2023-03-07T08:22:28.926Z DEBUG modem << OK
2023-03-07T08:22:28.930Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:22:28.938Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.69.5",0,0
2023-03-07T08:22:28.939Z DEBUG modem << OK
2023-03-07T08:22:28.943Z DEBUG modem >> AT+CGACT?
2023-03-07T08:22:28.965Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:22:28.967Z DEBUG modem << OK
2023-03-07T08:22:29.846Z DEBUG modem << [00:00:15.252,655] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:22:29.869Z DEBUG modem << [0m
2023-03-07T08:22:29.871Z DEBUG modem << [00:00:15.254,119] [0m<inf> aero_sense: PSM parameter update: TAU: 4680, Active time: 60
2023-03-07T08:22:29.872Z DEBUG modem << [0m
2023-03-07T08:22:29.873Z DEBUG modem << [00:00:15.435,424] [0m<inf> aero_sense: IPv4 Address found 3.122.139.38[0m
2023-03-07T08:22:29.874Z DEBUG modem << [00:00:15.435,455] [0m<inf> aero_sense: TLS enabled[0m
2023-03-07T08:22:34.748Z DEBUG modem << [00:00:20.154,571] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:22:34.775Z DEBUG modem << [00:00:21.156,219] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:22:34.776Z DEBUG modem << "batv":0,
2023-03-07T08:22:34.777Z DEBUG modem << "rsrp":0,
2023-03-07T08:22:34.778Z DEBUG modem << "temp":22,
2023-03-07T08:22:34.779Z DEBUG modem << "press":95,
2023-03-07T08:22:34.780Z DEBUG modem << "hum":27,
2023-03-07T08:22:34.781Z DEBUG modem << "gas":18705
2023-03-07T08:22:34.782Z DEBUG modem << }[0m
2023-03-07T08:22:34.783Z DEBUG modem << [00:00:21.156,250] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:22:38.496Z DEBUG modem << +CSCON: 0
2023-03-07T08:22:39.501Z DEBUG modem << [00:00:24.910,949] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:22:39.533Z DEBUG modem << [0m
2023-03-07T08:22:39.857Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:40.757Z DEBUG modem << [00:00:26.165,679] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:22:40.782Z DEBUG modem << [00:00:26.175,750] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:22:40.784Z DEBUG modem << [00:00:26.271,759] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:22:40.785Z DEBUG modem << [0m
2023-03-07T08:22:43.682Z DEBUG modem << +CSCON: 0
2023-03-07T08:22:44.686Z DEBUG modem << [00:00:30.096,069] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:22:44.712Z DEBUG modem << [0m
2023-03-07T08:22:48.522Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:49.528Z DEBUG modem << [00:00:34.934,936] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:22:49.554Z DEBUG modem << [00:00:34.936,035] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:22:49.556Z DEBUG modem << [0m
2023-03-07T08:22:49.557Z DEBUG modem << [00:00:35.936,523] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:22:49.558Z DEBUG modem << "batv":0,
2023-03-07T08:22:49.558Z DEBUG modem << "rsrp":0,
2023-03-07T08:22:49.559Z DEBUG modem << "temp":22,
2023-03-07T08:22:49.560Z DEBUG modem << "press":95,
2023-03-07T08:22:49.561Z DEBUG modem << "hum":27,
2023-03-07T08:22:49.562Z DEBUG modem << "gas":18875
2023-03-07T08:22:49.563Z DEBUG modem << }[0m
2023-03-07T08:22:49.564Z DEBUG modem << [00:00:35.936,553] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:22:53.289Z DEBUG modem << +CSCON: 0
2023-03-07T08:22:54.294Z DEBUG modem << [00:00:39.703,369] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:22:54.321Z DEBUG modem << [0m
2023-03-07T08:22:54.628Z DEBUG modem << +CSCON: 1
2023-03-07T08:22:55.537Z DEBUG modem << [00:00:40.945,892] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:22:55.566Z DEBUG modem << [00:00:40.947,540] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:22:55.568Z DEBUG modem << [00:00:41.042,175] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:22:55.569Z DEBUG modem << [0m
2023-03-07T08:22:58.402Z DEBUG modem << +CSCON: 0
2023-03-07T08:22:59.406Z DEBUG modem << [00:00:44.815,399] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:22:59.432Z DEBUG modem << [0m
2023-03-07T08:23:03.256Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:04.263Z DEBUG modem << [00:00:49.669,708] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:23:04.290Z DEBUG modem << [00:00:49.670,776] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:04.292Z DEBUG modem << [0m
2023-03-07T08:23:04.293Z DEBUG modem << [00:00:50.671,325] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:23:04.295Z DEBUG modem << "batv":0,
2023-03-07T08:23:04.296Z DEBUG modem << "rsrp":0,
2023-03-07T08:23:04.297Z DEBUG modem << "temp":22,
2023-03-07T08:23:04.298Z DEBUG modem << "press":95,
2023-03-07T08:23:04.299Z DEBUG modem << "hum":27,
2023-03-07T08:23:04.301Z DEBUG modem << "gas":19242
2023-03-07T08:23:04.302Z DEBUG modem << }[0m
2023-03-07T08:23:04.303Z DEBUG modem << [00:00:50.671,356] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:23:08.162Z DEBUG modem << +CSCON: 0
2023-03-07T08:23:09.166Z DEBUG modem << [00:00:54.575,805] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:23:09.194Z DEBUG modem << [0m
2023-03-07T08:23:09.318Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:10.272Z DEBUG modem << [00:00:55.680,725] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:23:10.312Z DEBUG modem << [00:00:55.682,464] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:23:10.314Z DEBUG modem << [00:00:55.732,635] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:10.315Z DEBUG modem << [0m
2023-03-07T08:23:13.065Z DEBUG modem << +CSCON: 0
2023-03-07T08:23:14.069Z DEBUG modem << [00:00:59.479,187] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:23:14.097Z DEBUG modem << [0m
2023-03-07T08:23:17.979Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:20.756Z DEBUG modem << [*** Booting Zephyr OS build v3.2.99-ncs2 ***
2023-03-07T08:23:20.786Z DEBUG modem << [00:00:00.505,218] [0m<inf> aero_sense: Start------------------------------------------------------------------------------------------------------![0m
2023-03-07T08:23:20.788Z DEBUG modem << [00:00:00.505,279] [0m<inf> aero_sense: Device 0x30ad4 name is bme680@76
2023-03-07T08:23:20.789Z DEBUG modem << [0m
2023-03-07T08:23:20.826Z DEBUG modem << +CEREG: 2,"012F","01173705",7
2023-03-07T08:23:20.868Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:21.835Z DEBUG modem << [00:00:01.579,345] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:23:21.863Z DEBUG modem << [0m
2023-03-07T08:23:21.865Z DEBUG modem << [00:00:01.620,544] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:21.866Z DEBUG modem << [0m
2023-03-07T08:23:22.260Z DEBUG modem << +CSCON: 0
2023-03-07T08:23:23.265Z DEBUG modem << [00:00:03.013,000] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:23:23.267Z DEBUG modem << [0m
2023-03-07T08:23:32.371Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:33.376Z DEBUG modem << [00:00:13.123,870] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:33.378Z DEBUG modem << [0m
2023-03-07T08:23:34.680Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:23:34.687Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:23:34.692Z DEBUG modem << %XTIME: "40","32307080323340","00"
2023-03-07T08:23:34.693Z DEBUG modem << OK
2023-03-07T08:23:34.695Z DEBUG modem >> AT+COPS?
2023-03-07T08:23:34.725Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:23:34.728Z DEBUG modem << OK
2023-03-07T08:23:34.732Z DEBUG modem >> AT%XCBAND
2023-03-07T08:23:34.736Z DEBUG modem << %XCBAND: 20
2023-03-07T08:23:34.738Z DEBUG modem <<
2023-03-07T08:23:34.739Z DEBUG modem << OK
2023-03-07T08:23:34.771Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:23:34.804Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.69.211",0,0
2023-03-07T08:23:34.806Z DEBUG modem << OK
2023-03-07T08:23:34.811Z DEBUG modem >> AT+CGACT?
2023-03-07T08:23:34.815Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:23:34.817Z DEBUG modem <<
2023-03-07T08:23:34.818Z DEBUG modem << OK
2023-03-07T08:23:35.688Z DEBUG modem << [00:00:15.432,952] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:23:35.717Z DEBUG modem << [0m
2023-03-07T08:23:35.720Z DEBUG modem << [00:00:15.434,631] [0m<inf> aero_sense: PSM parameter update: TAU: 5040, Active time: 60
2023-03-07T08:23:35.721Z DEBUG modem << [0m
2023-03-07T08:23:35.722Z DEBUG modem << [00:00:15.618,103] [0m<inf> aero_sense: IPv4 Address found 3.125.224.210[0m
2023-03-07T08:23:35.723Z DEBUG modem << [00:00:15.618,133] [0m<inf> aero_sense: TLS enabled[0m
2023-03-07T08:23:40.288Z DEBUG modem << [00:00:20.033,142] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:23:40.321Z DEBUG modem << [00:00:21.034,820] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:23:40.322Z DEBUG modem << "batv":0,
2023-03-07T08:23:40.323Z DEBUG modem << "rsrp":0,
2023-03-07T08:23:40.324Z DEBUG modem << "temp":22,
2023-03-07T08:23:40.325Z DEBUG modem << "press":95,
2023-03-07T08:23:40.326Z DEBUG modem << "hum":27,
2023-03-07T08:23:40.327Z DEBUG modem << "gas":22418
2023-03-07T08:23:40.328Z DEBUG modem << }[0m
2023-03-07T08:23:40.329Z DEBUG modem << [00:00:21.034,881] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:23:44.658Z DEBUG modem << +CSCON: 0
2023-03-07T08:23:45.388Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:45.662Z DEBUG modem << [00:00:25.410,491] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:23:45.693Z DEBUG modem << [0m
2023-03-07T08:23:45.695Z DEBUG modem << [00:00:26.035,919] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:23:45.696Z DEBUG modem << [00:00:26.045,959] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:23:45.697Z DEBUG modem << [00:00:26.141,296] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:45.698Z DEBUG modem << [0m
2023-03-07T08:23:49.281Z DEBUG modem << +CSCON: 0
2023-03-07T08:23:50.286Z DEBUG modem << [00:00:30.034,637] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:23:50.317Z DEBUG modem << [0m
2023-03-07T08:23:54.081Z DEBUG modem << +CSCON: 1
2023-03-07T08:23:55.086Z DEBUG modem << [00:00:34.832,550] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:23:55.117Z DEBUG modem << [00:00:34.833,618] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:23:55.119Z DEBUG modem << [0m
2023-03-07T08:23:55.120Z DEBUG modem << [00:00:35.834,136] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:23:55.121Z DEBUG modem << "batv":0,
2023-03-07T08:23:55.122Z DEBUG modem << "rsrp":0,
2023-03-07T08:23:55.123Z DEBUG modem << "temp":22,
2023-03-07T08:23:55.124Z DEBUG modem << "press":95,
2023-03-07T08:23:55.125Z DEBUG modem << "hum":27,
2023-03-07T08:23:55.126Z DEBUG modem << "gas":21829
2023-03-07T08:23:55.128Z DEBUG modem << }[0m
2023-03-07T08:23:55.129Z DEBUG modem << [00:00:35.834,167] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:23:59.457Z DEBUG modem << +CSCON: 0
2023-03-07T08:24:00.188Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:00.462Z DEBUG modem << [00:00:40.210,937] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:24:00.494Z DEBUG modem << [0m
2023-03-07T08:24:00.496Z DEBUG modem << [00:00:40.843,566] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:24:00.497Z DEBUG modem << [00:00:40.853,607] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:24:00.498Z DEBUG modem << [00:00:40.941,711] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:00.499Z DEBUG modem << [0m
2023-03-07T08:24:04.010Z DEBUG modem << +CSCON: 0
2023-03-07T08:24:05.015Z DEBUG modem << [00:00:44.764,038] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:24:05.054Z DEBUG modem << [0m
2023-03-07T08:24:09.051Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:10.057Z DEBUG modem << [00:00:49.803,985] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:24:10.089Z DEBUG modem << [00:00:49.805,053] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:10.091Z DEBUG modem << [0m
2023-03-07T08:24:10.092Z DEBUG modem << [00:00:50.805,572] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:24:10.093Z DEBUG modem << "batv":0,
2023-03-07T08:24:10.094Z DEBUG modem << "rsrp":0,
2023-03-07T08:24:10.095Z DEBUG modem << "temp":22,
2023-03-07T08:24:10.096Z DEBUG modem << "press":95,
2023-03-07T08:24:10.097Z DEBUG modem << "hum":27,
2023-03-07T08:24:10.098Z DEBUG modem << "gas":21783
2023-03-07T08:24:10.099Z DEBUG modem << }[0m
2023-03-07T08:24:10.100Z DEBUG modem << [00:00:50.805,603] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:24:14.483Z DEBUG modem << +CSCON: 0
2023-03-07T08:24:15.158Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:15.488Z DEBUG modem << [00:00:55.237,365] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:24:15.521Z DEBUG modem << [0m
2023-03-07T08:24:15.523Z DEBUG modem << [00:00:55.806,640] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:24:15.524Z DEBUG modem << [00:00:55.816,680] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:24:15.525Z DEBUG modem << [00:00:55.912,170] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:15.526Z DEBUG modem << [0m
2023-03-07T08:24:26.573Z DEBUG modem << [*** Booting Zephyr OS build v3.2.99-ncs2 ***
2023-03-07T08:24:26.608Z DEBUG modem << [00:00:00.505,187] [0m<inf> aero_sense: Start------------------------------------------------------------------------------------------------------![0m
2023-03-07T08:24:26.610Z DEBUG modem << [00:00:00.505,249] [0m<inf> aero_sense: Device 0x30ad4 name is bme680@76
2023-03-07T08:24:26.611Z DEBUG modem << [0m
2023-03-07T08:24:26.668Z DEBUG modem << +CEREG: 2,"012F","010E0906",7
2023-03-07T08:24:27.172Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:27.677Z DEBUG modem << [00:00:01.604,187] [0m<inf> aero_sense: LTE cell changed: Cell ID: 17697030, Tracking area: 303
2023-03-07T08:24:27.679Z DEBUG modem << [0m
2023-03-07T08:24:27.683Z DEBUG modem << [00:00:02.108,245] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:27.684Z DEBUG modem << [0m
2023-03-07T08:24:30.356Z DEBUG modem << +CEREG: 5,"012F","010E0906",7,,,"00011110","11100000"
2023-03-07T08:24:30.362Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:24:30.366Z DEBUG modem << OK
2023-03-07T08:24:30.368Z DEBUG modem >> AT+COPS?
2023-03-07T08:24:30.372Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:24:30.374Z DEBUG modem <<
2023-03-07T08:24:30.375Z DEBUG modem << OK
2023-03-07T08:24:30.410Z DEBUG modem >> AT%XCBAND
2023-03-07T08:24:30.443Z DEBUG modem << %XTIME: "40","32307080429240","00"
2023-03-07T08:24:30.444Z DEBUG modem << %XCBAND: 20
2023-03-07T08:24:30.446Z DEBUG modem << OK
2023-03-07T08:24:30.450Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:24:30.492Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.70.125",0,0
2023-03-07T08:24:30.495Z DEBUG modem << OK
2023-03-07T08:24:30.533Z DEBUG modem >> AT+CGACT?
2023-03-07T08:24:30.582Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:24:30.584Z DEBUG modem << OK
2023-03-07T08:24:31.365Z DEBUG modem << [00:00:05.292,388] [0m<inf> aero_sense: Network registration status: Connected - roaming
2023-03-07T08:24:31.398Z DEBUG modem << [0m
2023-03-07T08:24:31.400Z DEBUG modem << [00:00:05.293,792] [0m<inf> aero_sense: PSM parameter update: TAU: 5760, Active time: 60
2023-03-07T08:24:31.402Z DEBUG modem << [0m
2023-03-07T08:24:32.606Z DEBUG modem << [00:00:06.534,423] [0m<inf> aero_sense: IPv4 Address found 3.125.224.210[0m
2023-03-07T08:24:32.641Z DEBUG modem << [00:00:06.534,484] [0m<inf> aero_sense: TLS enabled[0m
2023-03-07T08:24:44.786Z DEBUG modem << [00:00:18.714,630] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:24:44.824Z DEBUG modem << [00:00:19.716,308] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:24:44.825Z DEBUG modem << "batv":0,
2023-03-07T08:24:44.827Z DEBUG modem << "rsrp":0,
2023-03-07T08:24:44.827Z DEBUG modem << "temp":22,
2023-03-07T08:24:44.828Z DEBUG modem << "press":95,
2023-03-07T08:24:44.829Z DEBUG modem << "hum":27,
2023-03-07T08:24:44.830Z DEBUG modem << "gas":24618
2023-03-07T08:24:44.831Z DEBUG modem << }[0m
2023-03-07T08:24:44.832Z DEBUG modem << [00:00:19.716,369] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:24:50.146Z DEBUG modem << +CSCON: 0
2023-03-07T08:24:50.266Z DEBUG modem << +CEREG: 5,"012F","01173705",7,,,"00011110","11100000"
2023-03-07T08:24:50.303Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:24:50.336Z DEBUG modem << OK
2023-03-07T08:24:50.339Z DEBUG modem >> AT+COPS?
2023-03-07T08:24:50.378Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:50.421Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:24:50.423Z DEBUG modem << OK
2023-03-07T08:24:50.431Z DEBUG modem >> AT%XCBAND
2023-03-07T08:24:50.436Z DEBUG modem << %XCBAND: 20
2023-03-07T08:24:50.438Z DEBUG modem << OK
2023-03-07T08:24:50.441Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:24:50.474Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.70.125",0,0
2023-03-07T08:24:50.476Z DEBUG modem << OK
2023-03-07T08:24:50.480Z DEBUG modem >> AT+CGACT?
2023-03-07T08:24:50.514Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:24:50.516Z DEBUG modem << OK
2023-03-07T08:24:50.795Z DEBUG modem << [00:00:24.725,769] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:24:50.829Z DEBUG modem << [00:00:24.727,447] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:24:50.831Z DEBUG modem << [00:00:25.081,909] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:24:50.832Z DEBUG modem << [0m
2023-03-07T08:24:50.833Z DEBUG modem << [00:00:25.202,178] [0m<inf> aero_sense: LTE cell changed: Cell ID: 18298629, Tracking area: 303
2023-03-07T08:24:50.834Z DEBUG modem << [0m
2023-03-07T08:24:50.835Z DEBUG modem << [00:00:25.254,241] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:50.836Z DEBUG modem << [0m
2023-03-07T08:24:54.163Z DEBUG modem << +CSCON: 0
2023-03-07T08:24:55.167Z DEBUG modem << [00:00:29.098,571] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:24:55.203Z DEBUG modem << [0m
2023-03-07T08:24:58.681Z DEBUG modem << +CSCON: 1
2023-03-07T08:24:59.687Z DEBUG modem << [00:00:33.616,455] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:24:59.725Z DEBUG modem << [00:00:33.617,523] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:24:59.727Z DEBUG modem << [0m
2023-03-07T08:24:59.728Z DEBUG modem << [00:00:34.618,041] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:24:59.729Z DEBUG modem << "batv":0,
2023-03-07T08:24:59.730Z DEBUG modem << "rsrp":0,
2023-03-07T08:24:59.731Z DEBUG modem << "temp":22,
2023-03-07T08:24:59.732Z DEBUG modem << "press":95,
2023-03-07T08:24:59.733Z DEBUG modem << "hum":27,
2023-03-07T08:24:59.734Z DEBUG modem << "gas":26117
2023-03-07T08:24:59.735Z DEBUG modem << }[0m
2023-03-07T08:24:59.736Z DEBUG modem << [00:00:34.618,072] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:25:04.169Z DEBUG modem << +CSCON: 0
2023-03-07T08:25:04.788Z DEBUG modem << +CSCON: 1
2023-03-07T08:25:05.174Z DEBUG modem << [00:00:39.105,895] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:25:05.212Z DEBUG modem << [0m
2023-03-07T08:25:05.214Z DEBUG modem << [00:00:39.619,079] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:25:05.215Z DEBUG modem << [00:00:39.629,119] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:25:05.216Z DEBUG modem << [00:00:39.724,670] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:25:05.217Z DEBUG modem << [0m
2023-03-07T08:25:08.649Z DEBUG modem << +CSCON: 0
2023-03-07T08:25:09.654Z DEBUG modem << [00:00:43.586,029] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:25:09.692Z DEBUG modem << [0m
2023-03-07T08:25:13.276Z DEBUG modem << +CSCON: 1
2023-03-07T08:25:14.282Z DEBUG modem << [00:00:48.211,883] [0m<inf> aero_sense: MQTT client connected[0m
2023-03-07T08:25:14.323Z DEBUG modem << [00:00:48.212,951] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:25:14.325Z DEBUG modem << [0m
2023-03-07T08:25:14.326Z DEBUG modem << [00:00:49.213,470] [0m<inf> aero_sense: Publishing: {
2023-03-07T08:25:14.327Z DEBUG modem << "batv":0,
2023-03-07T08:25:14.328Z DEBUG modem << "rsrp":0,
2023-03-07T08:25:14.329Z DEBUG modem << "temp":22,
2023-03-07T08:25:14.330Z DEBUG modem << "press":95,
2023-03-07T08:25:14.331Z DEBUG modem << "hum":27,
2023-03-07T08:25:14.332Z DEBUG modem << "gas":23376
2023-03-07T08:25:14.333Z DEBUG modem << }[0m
2023-03-07T08:25:14.334Z DEBUG modem << [00:00:49.213,500] [0m<inf> aero_sense: to topic: companyA/ProjectA/1/data len: 24[0m
2023-03-07T08:25:18.081Z DEBUG modem << +CSCON: 0
2023-03-07T08:25:19.086Z DEBUG modem << [00:00:53.018,280] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:25:19.125Z DEBUG modem << [0m
2023-03-07T08:25:19.378Z DEBUG modem << +CSCON: 1
2023-03-07T08:25:20.283Z DEBUG modem << [00:00:54.214,599] [0m<inf> aero_sense: Disconnecting MQTT![0m
2023-03-07T08:25:20.322Z DEBUG modem << [00:00:54.224,670] [0m<inf> aero_sense: MQTT client disconnected: 0[0m
2023-03-07T08:25:20.324Z DEBUG modem << [00:00:54.315,093] [0m<inf> aero_sense: RRC mode: Connected
2023-03-07T08:25:20.325Z DEBUG modem << [0m
2023-03-07T08:25:23.129Z DEBUG modem << +CSCON: 0
2023-03-07T08:25:23.258Z DEBUG modem << +CEREG: 5,"012F","010E0906",7,,,"00011110","11100000"
2023-03-07T08:25:23.300Z DEBUG modem >> AT+COPS=3,2
2023-03-07T08:25:23.339Z DEBUG modem << OK
2023-03-07T08:25:23.342Z DEBUG modem >> AT+COPS?
2023-03-07T08:25:23.347Z DEBUG modem << +COPS: 0,2,"22801",7
2023-03-07T08:25:23.390Z DEBUG modem <<
2023-03-07T08:25:23.392Z DEBUG modem << OK
2023-03-07T08:25:23.435Z DEBUG modem >> AT%XCBAND
2023-03-07T08:25:23.473Z DEBUG modem << %XCBAND: 20
2023-03-07T08:25:23.475Z DEBUG modem << OK
2023-03-07T08:25:23.480Z DEBUG modem >> AT+CGDCONT?
2023-03-07T08:25:23.524Z DEBUG modem << +CGDCONT: 0,"IP","ibasis.iot","10.160.70.125",0,0
2023-03-07T08:25:23.526Z DEBUG modem << OK
2023-03-07T08:25:23.531Z DEBUG modem >> AT+CGACT?
2023-03-07T08:25:23.586Z DEBUG modem << +CGACT: 0,1
2023-03-07T08:25:23.589Z DEBUG modem << OK
2023-03-07T08:25:24.134Z DEBUG modem << [00:00:58.066,314] [0m<inf> aero_sense: RRC mode: Idle
2023-03-07T08:25:24.175Z DEBUG modem << [0m
2023-03-07T08:25:24.177Z DEBUG modem << [00:00:58.195,587] [0m<inf> aero_sense: LTE cell changed: Cell ID: 17697030, Tracking area: 303
2023-03-07T08:25:24.178Z DEBUG modem << [0m
main.c
/*
* Copyright (c) 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
#include <zephyr/kernel.h>
#include <stdio.h>
#include <stdlib.h>
#include <zephyr/net/socket.h>
#include <zephyr/net/mqtt.h>
#include <zephyr/logging/log.h>
// locally defined functions that use the nrf library
#include "json_lib/json_lib.h"
#include "bme680_lib/bme680_lib.h"
#include "modem_lib/modem.h"
#include "mqtt_lib/mqtt_connection.h"
#include "common/common_struct.h"
LOG_MODULE_REGISTER(aero_sense, LOG_LEVEL_INF);
// data and medata
static aero_sens_metadata_t data;
// The mqtt client struct
static struct mqtt_client client;
// File descriptor
static struct pollfd fds;
// global error varaible
static int r;
#define SLEEP_TIME_MS 100
// thread definitions
static struct k_work_delayable sensor_update;
static void sensor_update_fn(struct k_work *work);
// state machine functions
static inline void wake_up_action(void);
static inline int do_conn(void);
// state machine
static void sensor_update_fn(struct k_work *work)
{
switch (data.curr_state)
{
case sleeping:
wake_up_action();
r = do_conn();
if(r){
// Connections successful!
data.curr_state = sending_data;
}
else{
// Connections not successful!
data.curr_state = connecting;
}
// defined next delay to get called
data.delay.ticks = 1;
break;
case connecting:
r = do_conn();
if(r){
data.curr_state = sending_data;
}
break;
case sending_data:
data.delay.ticks = 5;
char* message = json_create(&data);
r = data_publish(&client, MQTT_QOS_1_AT_LEAST_ONCE,
(uint8_t*)message, strlen(message));
data.curr_state = disconnecting;
break;
case disconnecting:
json_release_mem();
LOG_INF("Disconnecting MQTT!");
r = mqtt_disconnect(&client);
if (r) {
LOG_ERR("Could not disconnect MQTT client: %d", r);
}
data.mqtt_connected = false;
data.delay.ticks = 5;
data.curr_state = sleeping;
break;
default:
break;
}
k_work_schedule(&sensor_update, K_SECONDS(data.delay.ticks));
}
void main(void)
{
LOG_INF("Start------------------------------------------------------------------------------------------------------!");
// initialize the sensor
bme680_init();
// init the modem
modem_init();
// init the json
cJSON_Init();
r = client_init(&client);
k_work_init_delayable(&sensor_update,sensor_update_fn);
data.delay.ticks = 1;
data.bat_voltage = 0;
data.rsrp = 0;
data.mqtt_connected = false;
k_work_schedule(&sensor_update, K_SECONDS(data.delay.ticks));
}
static int do_conn(void){
if(!data.mqtt_connected){
r = mqtt_connect(&client);
if (r) {
LOG_INF("Error in mqtt_connect: %d", r);
return -1;
}
r = fds_init(&client,&fds);
if (r) {
LOG_ERR("Error in fds_init: %d", r);
return -1;
}
data.mqtt_connected = true;
}
r = poll(&fds, 1, mqtt_keepalive_time_left(&client));
if (r < 0) {
LOG_ERR("Error in poll(): %d", r);
return -1;
}
r = mqtt_live(&client);
if ((r != 0) && (r != -EAGAIN)) {
LOG_ERR("Error in mqtt_live: %d", r);
return -1;
}
if ((fds.revents & POLLIN) == POLLIN) {
// When notified, the application should call the mqtt_input
// function to process the response received.
// Note, that mqtt_input is a non-blocking function,
// therefore the application should use socket poll to wait for the response
r = mqtt_input(&client);
if (r != 0) {
LOG_ERR("Error in mqtt_input: %d", r);
return -1;
}
}
if ((fds.revents & POLLERR) == POLLERR) {
LOG_ERR("POLLERR");
return -1;
}
if ((fds.revents & POLLNVAL) == POLLNVAL) {
LOG_ERR("POLLNVAL");
return -1;
}
return 1;
}
static inline void wake_up_action(void){
// get sensor data
get_sensor_data(&data);
//get other data TODO
}
modem library:
#include "modem.h"
#include <stdio.h>
#include <stdlib.h>
#include <zephyr/kernel.h>
#include <modem/lte_lc.h>
#include <modem/modem_info.h>
#include <nrf_modem_at.h>
#include <zephyr/logging/log.h>
//#include <modem/at_cmd.h>
static K_SEM_DEFINE(lte_connected, 0, 1);
static int err;
LOG_MODULE_DECLARE(aero_sense);
#define IMEI_LEN 15
#define CGSN_RESPONSE_LENGTH (IMEI_LEN + 6 + 1) /* Add 6 for \r\nOK\r\n and 1 for \0 */
#define CLIENT_ID_LEN sizeof("nrf-") + IMEI_LEN
static void lte_handler(const struct lte_lc_evt *const evt)
{
switch (evt->type) {
case LTE_LC_EVT_NW_REG_STATUS:
if ((evt->nw_reg_status != LTE_LC_NW_REG_REGISTERED_HOME) &&
(evt->nw_reg_status != LTE_LC_NW_REG_REGISTERED_ROAMING)) {
break;
}
LOG_INF("Network registration status: %s\n",
evt->nw_reg_status == LTE_LC_NW_REG_REGISTERED_HOME ?
"Connected - home network" : "Connected - roaming");
//lte_connected=true;
k_sem_give(<e_connected);
break;
case LTE_LC_EVT_PSM_UPDATE:
LOG_INF("PSM parameter update: TAU: %d, Active time: %d\n",
evt->psm_cfg.tau, evt->psm_cfg.active_time);
break;
case LTE_LC_EVT_EDRX_UPDATE: {
char log_buf[60];
ssize_t len;
len = snprintf(log_buf, sizeof(log_buf),
"eDRX parameter update: eDRX: %f, PTW: %f",
evt->edrx_cfg.edrx, evt->edrx_cfg.ptw);
if (len > 0) {
printk("%s\n", log_buf);
}
break;
}
case LTE_LC_EVT_RRC_UPDATE:
LOG_INF("RRC mode: %s\n", evt->rrc_mode == LTE_LC_RRC_MODE_CONNECTED ? "Connected" : "Idle");
break;
case LTE_LC_EVT_CELL_UPDATE:
LOG_INF("LTE cell changed: Cell ID: %d, Tracking area: %d\n",
evt->cell.id, evt->cell.tac);
break;
default:
break;
}
}
int modem_init()
{
err = lte_lc_init_and_connect_async(lte_handler);
if (err) {
LOG_ERR("Modem could not be configured, error: %d\n", err);
return -1;
}
/*
err = modem_info_init();
if (err) {
LOG_ERR("Failed initializing modem info module, error: %d\n",
err);
}
*/
k_sem_take(<e_connected, K_FOREVER);
//while(!lte_connected){};
return 0;
}
void get_modem_data(aero_sens_metadata_t* data){
err = modem_info_short_get(MODEM_INFO_BATTERY, (uint16_t *)(&(data->bat_voltage)));
if (err != sizeof(data->bat_voltage)) {
LOG_ERR("modem_info_short_get, error: %d\n", err);
return;
}
//LOG_INF("bat_voltage: %d\n", data->bat_voltage);
err = modem_info_short_get(MODEM_INFO_RSRP, (uint16_t *)(&(data->rsrp)));
data->rsrp -= 140;
if (err != sizeof(data->rsrp)) {
LOG_ERR("modem_info_short_get, error: %d\n", err);
return;
}
//LOG_INF("rsrp: %d\n", data->rsrp);
/*
char imei_buf[CGSN_RESPONSE_LENGTH + 1];
err = nrf_modem_at_cmd(imei_buf, sizeof(imei_buf), "AT+CGSN");
if (err) {
printk("Failed to obtain IMEI, error: %d", err);
return;
}
imei_buf[IMEI_LEN] = '\0';
*/
}
mqtt.c
#include <stdio.h>
#include <string.h>
#include <zephyr/logging/log.h>
#include <zephyr/kernel.h>
#include <zephyr/net/socket.h>
#include <zephyr/random/rand32.h>
#include <zephyr/net/mqtt.h>
//#include <dk_buttons_and_leds.h>
#include "mqtt_connection.h"
#include <nrf_modem_at.h>
/* Buffers for MQTT client. */
static uint8_t rx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];
static uint8_t tx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];
static uint8_t payload_buf[CONFIG_MQTT_PAYLOAD_BUFFER_SIZE];
/* MQTT Broker details. */
static struct sockaddr_storage broker;
LOG_MODULE_DECLARE(aero_sense);
/**@brief Function to get the payload of recived data.
*/
static int get_received_payload(struct mqtt_client *c, size_t length)
{
int ret;
int err = 0;
/* Return an error if the payload is larger than the payload buffer.
* Note: To allow new messages, we have to read the payload before returning.
*/
if (length > sizeof(payload_buf)) {
err = -EMSGSIZE;
}
/* Truncate payload until it fits in the payload buffer. */
while (length > sizeof(payload_buf)) {
ret = mqtt_read_publish_payload_blocking(
c, payload_buf, (length - sizeof(payload_buf)));
if (ret == 0) {
return -EIO;
} else if (ret < 0) {
return ret;
}
length -= ret;
}
ret = mqtt_readall_publish_payload(c, payload_buf, length);
if (ret) {
return ret;
}
return err;
}
/**@brief Function to subscribe to the configured topic
*/
static int subscribe(struct mqtt_client *const c)
{
struct mqtt_topic subscribe_topic = {
.topic = {
.utf8 = CONFIG_MQTT_SUB_TOPIC,
.size = strlen(CONFIG_MQTT_SUB_TOPIC)
},
.qos = MQTT_QOS_1_AT_LEAST_ONCE
};
const struct mqtt_subscription_list subscription_list = {
.list = &subscribe_topic,
.list_count = 1,
.message_id = 1234
};
LOG_INF("Subscribing to: %s len %u", CONFIG_MQTT_SUB_TOPIC,
(unsigned int)strlen(CONFIG_MQTT_SUB_TOPIC));
return mqtt_subscribe(c, &subscription_list);
}
/**@brief Function to print strings without null-termination
*/
static void data_print(uint8_t *prefix, uint8_t *data, size_t len)
{
char buf[len + 1];
memcpy(buf, data, len);
buf[len] = 0;
LOG_INF("%s%s", (char *)prefix, (char *)buf);
}
/**@brief Function to publish data on the configured topic
*/
int data_publish(struct mqtt_client *c, enum mqtt_qos qos,
uint8_t *data, size_t len)
{
struct mqtt_publish_param param;
param.message.topic.qos = qos;
param.message.topic.topic.utf8 = CONFIG_MQTT_PUB_TOPIC;
param.message.topic.topic.size = strlen(CONFIG_MQTT_PUB_TOPIC);
param.message.payload.data = data;
param.message.payload.len = len;
param.message_id = 12;
param.dup_flag = 0;
param.retain_flag = 0;
data_print("Publishing: ", data, len);
LOG_INF("to topic: %s len: %u",
CONFIG_MQTT_PUB_TOPIC,
(unsigned int)strlen(CONFIG_MQTT_PUB_TOPIC));
return mqtt_publish(c, ¶m);
}
/**@brief MQTT client event handler
*/
void mqtt_evt_handler(struct mqtt_client *const c,
const struct mqtt_evt *evt)
{
int err;
switch (evt->type) {
case MQTT_EVT_CONNACK:
if (evt->result != 0) {
LOG_ERR("MQTT connect failed: %d", evt->result);
break;
}
LOG_INF("MQTT client connected");
//subscribe(c);
break;
case MQTT_EVT_DISCONNECT:
LOG_INF("MQTT client disconnected: %d", evt->result);
break;
case MQTT_EVT_PUBLISH:
{
const struct mqtt_publish_param *p = &evt->param.publish;
//Print the length of the recived message
LOG_INF("MQTT PUBLISH result=%d len=%d",
evt->result, p->message.payload.len);
//json_release_mem();
//Extract the data of the recived message
err = get_received_payload(c, p->message.payload.len);
//Send acknowledgment to the broker on receiving QoS1 publish message
if (p->message.topic.qos == MQTT_QOS_1_AT_LEAST_ONCE) {
const struct mqtt_puback_param ack = {
.message_id = p->message_id
};
/* Send acknowledgment. */
mqtt_publish_qos1_ack(c, &ack);
}
//On successful extraction of data
if (err >= 0) {
data_print("Received: ", payload_buf, p->message.payload.len);
// On failed extraction of data - Payload buffer is smaller than the recived data . Increase
} else if (err == -EMSGSIZE) {
LOG_ERR("Received payload (%d bytes) is larger than the payload buffer "
"size (%d bytes).",
p->message.payload.len, sizeof(payload_buf));
//On failed extraction of data - Failed to extract data, disconnect
} else {
LOG_ERR("get_received_payload failed: %d", err);
LOG_INF("Disconnecting MQTT client...");
err = mqtt_disconnect(c);
if (err) {
LOG_ERR("Could not disconnect: %d", err);
}
}
} break;
case MQTT_EVT_PUBACK:
if (evt->result != 0) {
LOG_ERR("MQTT PUBACK error: %d", evt->result);
break;
}
LOG_INF("PUBACK packet id: %u", evt->param.puback.message_id);
break;
case MQTT_EVT_SUBACK:
if (evt->result != 0) {
LOG_ERR("MQTT SUBACK error: %d", evt->result);
break;
}
LOG_INF("SUBACK packet id: %u", evt->param.suback.message_id);
break;
case MQTT_EVT_PINGRESP:
if (evt->result != 0) {
LOG_ERR("MQTT PINGRESP error: %d", evt->result);
}
break;
default:
LOG_INF("Unhandled MQTT event type: %d", evt->type);
break;
}
}
/**@brief Resolves the configured hostname and
* initializes the MQTT broker structure
*/
static int broker_init(void)
{
int err;
struct addrinfo *result;
struct addrinfo *addr;
struct addrinfo hints = {
.ai_family = AF_INET,
.ai_socktype = SOCK_STREAM
};
err = getaddrinfo(CONFIG_MQTT_BROKER_HOSTNAME, NULL, &hints, &result);
if (err) {
LOG_ERR("getaddrinfo failed: %d", err);
return -ECHILD;
}
addr = result;
/* Look for address of the broker. */
while (addr != NULL) {
/* IPv4 Address. */
if (addr->ai_addrlen == sizeof(struct sockaddr_in)) {
struct sockaddr_in *broker4 =
((struct sockaddr_in *)&broker);
char ipv4_addr[NET_IPV4_ADDR_LEN];
broker4->sin_addr.s_addr =
((struct sockaddr_in *)addr->ai_addr)
->sin_addr.s_addr;
broker4->sin_family = AF_INET;
broker4->sin_port = htons(CONFIG_MQTT_BROKER_PORT);
inet_ntop(AF_INET, &broker4->sin_addr.s_addr,
ipv4_addr, sizeof(ipv4_addr));
LOG_INF("IPv4 Address found %s", (char *)(ipv4_addr));
break;
} else {
LOG_ERR("ai_addrlen = %u should be %u or %u",
(unsigned int)addr->ai_addrlen,
(unsigned int)sizeof(struct sockaddr_in),
(unsigned int)sizeof(struct sockaddr_in6));
}
addr = addr->ai_next;
}
/* Free the address. */
freeaddrinfo(result);
return err;
}
/* Function to get the client id */
static const uint8_t* client_id_get(void)
{
static uint8_t client_id[CLIENT_ID_LEN];
/*
if (strlen(CONFIG_MQTT_CLIENT_ID) > 0) {
LOG_INF(client_id, sizeof(client_id), "%s",
CONFIG_MQTT_CLIENT_ID);
goto exit;
}
char imei_buf[CGSN_RESPONSE_LENGTH + 1];
int err;
err = nrf_modem_at_cmd(imei_buf, sizeof(imei_buf), "AT+CGSN");
if (err) {
LOG_ERR("Failed to obtain IMEI, error: %d", err);
goto exit;
}
imei_buf[IMEI_LEN] = '\0';
LOG_INF(client_id, sizeof(client_id), "nrf-%.*s", IMEI_LEN, imei_buf);
exit:
LOG_DBG("client_id = %s", (char *)(client_id));
*/
return client_id;
}
/**@brief Initialize the MQTT client structure
*/
int client_init(struct mqtt_client *client)
{
int err;
/* Initializes the client instance. */
mqtt_client_init(client);
/* Resolves the configured hostname and initializes the MQTT broker structure */
err = broker_init();
if (err) {
LOG_ERR("Failed to initialize broker connection");
return err;
}
/* MQTT client configuration */
client->broker = &broker;
client->evt_cb = mqtt_evt_handler;
client->client_id.utf8 = "iot-sense";//client_id_get();
client->client_id.size = 10;//strlen(client->client_id.utf8);
client->password = NULL;
client->user_name = NULL;
client->protocol_version = MQTT_VERSION_3_1_1;
/* MQTT buffers configuration */
client->rx_buf = rx_buffer;
client->rx_buf_size = sizeof(rx_buffer);
client->tx_buf = tx_buffer;
client->tx_buf_size = sizeof(tx_buffer);
/* STEP 5 - Modify the client client_init() function to use Secure TCP transport instead of non-secure TCP transport. */
//get a pointer to the TLS configration
struct mqtt_sec_config *tls_cfg = &(client->transport).tls.config;
static sec_tag_t sec_tag_list[] = { CONFIG_MQTT_TLS_SEC_TAG };
LOG_INF("TLS enabled");
client->transport.type = MQTT_TRANSPORT_SECURE;
tls_cfg->peer_verify = CONFIG_MQTT_TLS_PEER_VERIFY;
tls_cfg->cipher_list = NULL;
tls_cfg->cipher_count = 0;
tls_cfg->sec_tag_count = ARRAY_SIZE(sec_tag_list);
tls_cfg->sec_tag_list = sec_tag_list;
tls_cfg->hostname = CONFIG_MQTT_BROKER_HOSTNAME;
tls_cfg->session_cache = IS_ENABLED(CONFIG_MQTT_TLS_SESSION_CACHING) ?
TLS_SESSION_CACHE_ENABLED :
TLS_SESSION_CACHE_DISABLED;
return err;
}
/**@brief Initialize the file descriptor structure used by poll.
*/
int fds_init(struct mqtt_client *c, struct pollfd *fds)
{
if (c->transport.type == MQTT_TRANSPORT_NON_SECURE) {
fds->fd = c->transport.tcp.sock;
} else {
/* STEP 6 - Update the file descriptor for the socket to use TLS socket instead of a plain TCP socket.*/
fds->fd = c->transport.tls.sock;
}
fds->events = POLLIN;
return 0;
}
Thanks for the help!