Merge pull request #22 from Roslund/additional_node_info
Collect is_unmessagable, and public_key.
This commit is contained in:
commit
5984b8b243
3 changed files with 30 additions and 15 deletions
|
|
@ -0,0 +1,3 @@
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE `nodes` ADD COLUMN `is_unmessagable` BOOLEAN NULL,
|
||||||
|
ADD COLUMN `public_key` VARCHAR(191) NULL;
|
||||||
|
|
@ -21,6 +21,8 @@ model Node {
|
||||||
hardware_model Int
|
hardware_model Int
|
||||||
role Int
|
role Int
|
||||||
is_licensed Boolean?
|
is_licensed Boolean?
|
||||||
|
public_key String?
|
||||||
|
is_unmessagable Boolean?
|
||||||
|
|
||||||
firmware_version String?
|
firmware_version String?
|
||||||
region Int?
|
region Int?
|
||||||
|
|
|
||||||
38
src/mqtt.js
38
src/mqtt.js
|
|
@ -917,7 +917,6 @@ client.on("message", async (topic, message) => {
|
||||||
else if(portnum === 4) {
|
else if(portnum === 4) {
|
||||||
|
|
||||||
const user = User.decode(envelope.packet.decoded.payload);
|
const user = User.decode(envelope.packet.decoded.payload);
|
||||||
let isOkToMqtt = null
|
|
||||||
|
|
||||||
if(logKnownPacketTypes) {
|
if(logKnownPacketTypes) {
|
||||||
console.log("NODEINFO_APP", {
|
console.log("NODEINFO_APP", {
|
||||||
|
|
@ -926,7 +925,9 @@ client.on("message", async (topic, message) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if bitfield is available, then check if ok-to-mqtt
|
// check if bitfield is available, then set ok-to-mqtt
|
||||||
|
// else leave undefined to let Prisma ignore it.
|
||||||
|
let isOkToMqtt
|
||||||
if(bitfield != null){
|
if(bitfield != null){
|
||||||
isOkToMqtt = Boolean(bitfield & BITFIELD_OK_TO_MQTT_MASK);
|
isOkToMqtt = Boolean(bitfield & BITFIELD_OK_TO_MQTT_MASK);
|
||||||
}
|
}
|
||||||
|
|
@ -944,14 +945,16 @@ client.on("message", async (topic, message) => {
|
||||||
hardware_model: user.hwModel,
|
hardware_model: user.hwModel,
|
||||||
is_licensed: user.isLicensed === true,
|
is_licensed: user.isLicensed === true,
|
||||||
role: user.role,
|
role: user.role,
|
||||||
// Since packages beeing forwarded by older firmwars dropps the bitfield
|
is_unmessagable: user.isUnmessagable,
|
||||||
// We only want to set form nodes that have the bitfield set.
|
ok_to_mqtt: isOkToMqtt,
|
||||||
// That way we can get a more correct reading firmware status in the mesh.
|
|
||||||
// This works since we had the old code:
|
firmware_version: '<2.5.0',
|
||||||
// firmware_version: (bitfield != null) ? '2.5.0 or newer' : '2.4.3 or older',
|
...(user.publicKey != '' && {
|
||||||
...(bitfield != null && {
|
firmware_version: '>2.5.0',
|
||||||
firmware_version: '2.5.0 or newer',
|
public_key: user.publicKey?.toString("base64"),
|
||||||
ok_to_mqtt: isOkToMqtt,
|
}),
|
||||||
|
...(user.isUnmessagable != null && {
|
||||||
|
firmware_version: '>2.6.8',
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
update: {
|
update: {
|
||||||
|
|
@ -960,9 +963,16 @@ client.on("message", async (topic, message) => {
|
||||||
hardware_model: user.hwModel,
|
hardware_model: user.hwModel,
|
||||||
is_licensed: user.isLicensed === true,
|
is_licensed: user.isLicensed === true,
|
||||||
role: user.role,
|
role: user.role,
|
||||||
...(bitfield != null && {
|
is_unmessagable: user.isUnmessagable,
|
||||||
firmware_version: '2.5.0 or newer',
|
ok_to_mqtt: isOkToMqtt,
|
||||||
ok_to_mqtt: isOkToMqtt,
|
|
||||||
|
firmware_version: '<2.5.0',
|
||||||
|
...(user.publicKey != '' && {
|
||||||
|
firmware_version: '>2.5.0',
|
||||||
|
public_key: user.publicKey?.toString("base64"),
|
||||||
|
}),
|
||||||
|
...(user.isUnmessagable != null && {
|
||||||
|
firmware_version: '>2.6.8',
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -1429,6 +1439,6 @@ client.on("message", async (topic, message) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
// ignore errors
|
console.log("error", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue