mqtt-devices-parser 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Changelog.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.12
4
+ Adds periodically call to check and update devices
5
+
3
6
  ## 1.0.11
4
7
  index: MQTT
5
8
  - makes mqtt client global,
package/index.js CHANGED
@@ -14,6 +14,7 @@ $.db_device = require('./src/db/device');
14
14
  $.db_model = require('./src/db/model');
15
15
  $.db_firmware = require('./src/db/firmware');
16
16
  $.db_sensor = require('./src/db/sensor');
17
+ $.db_fota = require('./src/db/fota');
17
18
  $.mqtt_client = null;
18
19
 
19
20
  const packageJson = require(__dirname+'/package.json');
@@ -63,6 +64,7 @@ var self = module.exports = {
63
64
  })
64
65
 
65
66
  let counter_help = 0;
67
+ let project = {}
66
68
  files.forEach( async(name,counter) => {
67
69
  if($.config.projects[name]){
68
70
  project[name] = {};
@@ -82,7 +84,7 @@ var self = module.exports = {
82
84
 
83
85
  },
84
86
 
85
- deploy: async(_config,projectsPath)=>{
87
+ deploy: async(_config,projectsPath, projects)=>{
86
88
 
87
89
  if(_config != null)
88
90
  $.config = _config;
@@ -104,6 +106,15 @@ var self = module.exports = {
104
106
  await $.models.insertUser("client","client_pwd",3);
105
107
  // adds client with credentials admin@admin
106
108
  await $.models.insertClient("admin","admin",user_id); // dashboard login
109
+
110
+ for(name of projects){
111
+ project = $.config[name];
112
+ if (project) {
113
+ // Make a copy if you don't want to modify the original config object
114
+ const projectData = { ...project, name: name };
115
+ await $.models.insertProject(projectData);
116
+ }
117
+ }
107
118
  }
108
119
 
109
120
  // project tables
@@ -154,9 +165,19 @@ function mqtt_connect(){
154
165
  $.mqtt_client.subscribe(project+"/#")
155
166
  })
156
167
 
168
+ // Update 'dev' devices at each 5 min
157
169
  checkFota = setInterval(async ()=>{
158
- await $.device.checkFota();
159
- },60*1000);
170
+ await $.device.checkFota("dev");
171
+ await $.device.triggerFota("dev");
172
+ },5*60*1000);
173
+
174
+ // Update 'prod' devices at each hour
175
+ checkFota = setInterval(async ()=>{
176
+ await $.device.checkFota("prod");
177
+ await $.device.triggerFota("prod");
178
+ },60*60*1000);
179
+
180
+ // Devices not set as dev or prod must be triggered manually
160
181
 
161
182
  });
162
183
 
@@ -35,11 +35,7 @@ module.exports = (sequelize,DataTypes)=>{
35
35
  type: DataTypes.STRING,
36
36
  allowNull: true
37
37
  },
38
- release: {
39
- type: DataTypes.STRING,
40
- allowNull: true
41
- },
42
- fota_tries: {
38
+ accept_release: {
43
39
  type: DataTypes.STRING,
44
40
  allowNull: true
45
41
  },
@@ -10,10 +10,6 @@ module.exports = (sequelize,DataTypes)=>{
10
10
  allowNull: true,
11
11
  unique: true
12
12
  },
13
- fw_version: { // deprecated
14
- type: DataTypes.STRING,
15
- allowNull: true
16
- },
17
13
  version: {
18
14
  type: DataTypes.STRING,
19
15
  allowNull: true
@@ -22,15 +18,11 @@ module.exports = (sequelize,DataTypes)=>{
22
18
  type: DataTypes.STRING,
23
19
  allowNull: true
24
20
  },
25
- fw_release: { // deprecated
26
- type: DataTypes.STRING,
27
- allowNull: true
28
- },
29
- release: {
21
+ build_release: {
30
22
  type: DataTypes.STRING,
31
23
  allowNull: true
32
24
  },
33
- model_id: { // deprecated
25
+ model_id: {
34
26
  type: DataTypes.INTEGER,
35
27
  references: {
36
28
  model: 'models',
@@ -0,0 +1,32 @@
1
+ module.exports = (sequelize,DataTypes)=>{
2
+ return sequelize.define("fota", {
3
+ device_id: {
4
+ type: DataTypes.INTEGER,
5
+ unique: true,
6
+ },
7
+ target_version: {
8
+ type: DataTypes.STRING,
9
+ },
10
+ target_app_version: {
11
+ type: DataTypes.STRING,
12
+ },
13
+ target_release: {
14
+ type: DataTypes.STRING,
15
+ },
16
+ firmware_id: {
17
+ type: DataTypes.INTEGER,
18
+ },
19
+ nAttempts: {
20
+ type: DataTypes.INTEGER,
21
+ default: 0
22
+ },
23
+ fUpdate: {
24
+ type: DataTypes.BOOLEAN,
25
+ default: 0
26
+ },
27
+ },
28
+ {
29
+ tableName: 'fota',
30
+ freezeTableName: true
31
+ })
32
+ }
@@ -0,0 +1,41 @@
1
+ module.exports = (sequelize,DataTypes)=>{
2
+ return sequelize.define("logs_fota", {
3
+ device_id: {
4
+ type: DataTypes.INTEGER,
5
+ },
6
+ model_id: {
7
+ type: DataTypes.STRING,
8
+ },
9
+ local_version: {
10
+ type: DataTypes.STRING,
11
+ },
12
+ local_app_version: {
13
+ type: DataTypes.STRING,
14
+ },
15
+ target_version: {
16
+ type: DataTypes.STRING,
17
+ },
18
+ target_app_version: {
19
+ type: DataTypes.STRING,
20
+ },
21
+ target_file: {
22
+ type: DataTypes.STRING,
23
+ },
24
+ error: {
25
+ type: DataTypes.STRING,
26
+ allowNull: true
27
+ },
28
+ success: {
29
+ type: DataTypes.BOOLEAN,
30
+ default: 0
31
+ },
32
+ nAttempt: {
33
+ type: DataTypes.INTEGER,
34
+ default: 0
35
+ },
36
+ },
37
+ {
38
+ tableName: 'logs_fota',
39
+ freezeTableName: true
40
+ })
41
+ }
@@ -1,5 +1,5 @@
1
1
  module.exports = (sequelize,DataTypes)=>{
2
- return sequelize.define("sensor_logs", {
2
+ return sequelize.define("logs_sensor", {
3
3
  device_id: {
4
4
  type: DataTypes.INTEGER,
5
5
  unique: false,
@@ -34,7 +34,7 @@ module.exports = (sequelize,DataTypes)=>{
34
34
 
35
35
  },
36
36
  {
37
- tableName: 'sensor_logs',
37
+ tableName: 'logs_sensor',
38
38
  freezeTableName: true
39
39
  })
40
40
  }
@@ -0,0 +1,23 @@
1
+
2
+ module.exports = (sequelize,DataTypes)=>{
3
+ return sequelize.define("modelPermissions", {
4
+ client_id: {
5
+ type: DataTypes.INTEGER,
6
+ references: {
7
+ model: 'clients',
8
+ key: 'id'
9
+ }
10
+ },
11
+ model_id: {
12
+ type: DataTypes.INTEGER,
13
+ references: {
14
+ model: 'models',
15
+ key: 'id'
16
+ }
17
+ }
18
+ },
19
+ {
20
+ tableName: 'modelPermissions',
21
+ freezeTableName: true
22
+ })
23
+ }