Skip to content

Commit

Permalink
feat: support base64 deflated JSON string map from Valetudo 2021.01.0b0
Browse files Browse the repository at this point in the history
  • Loading branch information
alexkn committed Jan 10, 2021
1 parent 80faa28 commit fa4b198
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
15 changes: 14 additions & 1 deletion nodes/valetudo-map-png.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,22 @@ module.exports = function(RED) {
if(now.getTime() - defer > lastMapDraw) {
lastMapDraw = now.getTime();
var MapData = msg.payload;

if(isBase64(MapData)) {
MapData = Buffer.from(MapData, "base64");
}

if(typeof MapData === "string") {
MapData = JSON.parse(MapData);
}else if(Buffer.isBuffer(MapData)) {
}

if(Buffer.isBuffer(MapData)) {
try {
// Valetudo
MapData = await Inflate(MapData);
MapData = JSON.parse(MapData);
} catch (error) {
// Valetudo RE
MapData = await Gunzip(MapData);
MapData = RRMapParser.PARSE(MapData);
}
Expand All @@ -84,6 +93,10 @@ module.exports = function(RED) {
}
}

function isBase64(data) {
return typeof data === "string" && Buffer.from(data, "base64").toString("base64") === data;
}

function DRAW_MAP_PNG(MapData, settings) {
return new Promise((resolve,reject) => {
Tools.DRAW_MAP_PNG(
Expand Down
19 changes: 19 additions & 0 deletions test/valetudo-map-png_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,25 @@ describe("valetudo-map-png Node", function () {

msg.payload.should.deepEqual(expectedPng);
});

it("should draw base64 deflated JSON string from Valetudo 2021.01.0b0 with Firmware 2008 correctly", async function() {
let flow = [
{ id: "n1", type: "valetudo-map-png", wires:[["n2"]], drawPath: true, drawCharger: true, drawRobot: true, scale: 4 },
{ id: "n2", type: "helper" }
];
await helper.load(mapPngNode, flow);
let n1 = helper.getNode("n1");
let n2 = helper.getNode("n2");
let data = await fs.readFile("./test/data/FW2008_0.6.0_with_segments.json", { encoding: "utf-8" });
let base64DeflatedData = zlib.deflateSync(data).toString("base64");
let expectedPng = await fs.readFile("./test/data/FW2008_0.6.0_with_segments.png");

let promise = helper.createTestPromise(n1, n2);
n1.receive({ payload: base64DeflatedData });
let msg = await promise;

msg.payload.should.deepEqual(expectedPng);
});
});

describe("Valetudo RE", async function() {
Expand Down

0 comments on commit fa4b198

Please sign in to comment.