UNPKG

node-vscp

Version:
329 lines (266 loc) 10.2 kB
const vscp_class = require('node-vscp-class'); const vscp_type = require('node-vscp-type'); const vscp = require("./vscp.js"); const {priority:ttt} = require("./vscp.js"); var ev = new vscp.Event(); console.log("Module version: " + vscp.version.major + "."+ vscp.version.minor + "." + vscp.version.release); console.log(vscp.getPriority(0x88)); console.log(vscp.isHardCoded(0x88)); // Define event by setting from string e = new vscp.Event(); if (true === (e instanceof vscp.Event)) { console.log("YES! e is an instance of Event."); } e.setFromString('3,10,6,4,2020-02-11T17:00:02Z,4074759495,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:01,0x48,0x35,0x31,0x2E,0x39,0x32'); console.log(e); // Define event with members e2 = new vscp.Event(); e2.vscpClass = 10; e2.vscpType = 6; e2.vscpData = [1,2,3,4,5]; console.log(e2); // Define event with string in constructor // obid, date, timestamp and GUID can be non-value e3 = new vscp.Event({text:'0,20,3,,,,-,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0,0,1,35'}); console.log(e3); // Define event with object in constructor and data in array e4 = new vscp.Event({ vscpHead: 0, vscpClass: 10, vscpType: 6, vscpData: [15,14,13,12,11,10,9,8,7,6,5,4,3,2,0,0,1,35] }); console.log(e4); console.log("\ne5"); console.log("----------------------------------------------"); // Define event with object in constructor and data defined // as string. // Also with symbolic class/type // Unit=1 Celsius // Sensor = 1 // Format: Normalized integer // Value = -2.92 C e5 = new vscp.Event({ vscpHead: vscp.priority.PRIORITY_6 << 5, vscpClass: vscp_class.VSCP_CLASS1_MEASUREMENT, vscpType: vscp_type.VSCP_TYPE_MEASUREMENT_TEMPERATURE, vscpGuid: "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:01", vscpsizeData: 4, vscpData: [0x89,0x82,0xFE,0xDC] }); console.log(e5); console.log("Event on string form: ", e5.getAsString()); console.log("Type of:" + typeof e5.vscpDateTime); console.log("\nisIPV6Addr"); console.log("IP v6 address :", (e5.isIPV6Addr() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); e5.setIPV6Addr(); console.log("IP v6 address :", (e5.isIPV6Addr() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); console.log("\nisDumbNode"); console.log("Dumb node :", (e5.isDumbNode() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); e5.setDumbNode(); console.log("Dumb node :", (e5.isDumbNode() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); console.log("\nisHardCodedAddr"); console.log("Hardcoded address :", (e5.isHardCodedAddr() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); e5.setHardCodedAddr(); console.log("Hardcoded address :", (e5.isHardCodedAddr() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); console.log("\nisDoNotCalcCRC"); console.log("Calculate CRC :", (e5.isDoNotCalcCRC() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); e5.setDoNotCalcCRC(); console.log("Calculate CRC :", (e5.isDoNotCalcCRC() ? "yes" : "no" ), " - vscpHead", e5.vscpHead ); console.log("\nPriority"); console.log("--------"); console.log("Priority is", e5.getPriority() ); e5.setPriority(vscp.priority.PRIORITY_NORMAL); console.log("Priority is", e5.getPriority() ); console.log("\nGUID Type"); console.log("--------"); e5.vscpHead = 0; console.log("GUID type is", e5.getGuidType() ); e5.setGuidType(vscp.guidtype.GUIDTYPE_IPV6); console.log("GUID type is", e5.getGuidType() ); console.log("\nreadValue"); console.log("---------"); console.log("readValue(\"77\")",vscp.readValue("77")); console.log("readValue(\"0x77\")",vscp.readValue("0x77")); console.log("readValue(\"0b1010\")",vscp.readValue("0b1010")); console.log("readValue(\"0o77\")",vscp.readValue("0o77")); console.log("readValue(\"0y77\")",vscp.readValue("0y77")); console.log("\nCANAL conversion functionality"); console.log("------------------------------"); console.log("vscpHead = " + vscp.getVscpHeadFromCANALid(470418944 + 9)); console.log("vscpClass = " + vscp.getVscpClassFromCANALid(470418944 + 9)); console.log("vscpType = " + vscp.getVscpTypeFromCANALid(470418944 + 9)); console.log("Nickname = " + vscp.getNicknameFromCANALid(470418944 + 9) ) console.log("priority=7, vscpClass=10, vscpType=6 canid=" + vscp.getCANALid(7,10,6) ); try { console.log("priority=7, vscpClass=10, vscpType=600 canid=" + vscp.getCANALid(7,10,600) ); console.log("* * * Should give error..."); } catch(err) { console.log("Test catch - OK : Catches invalid parameter error: (vscpType value is to big)", err.message ); } console.log("\nTesting Event conversions\n\n",e5); console.log(vscp.convertEventToCanMsg(e5) ); // From require of just priority constants // and where the name is changed from 'priority' // to 'ttt' console.log(ttt.PRIORITY_HIGH); console.log(ttt.PRIORITY_LOW); var h1 = 0; console.log("Is standard GUID?", (h1 === vscp.guidtype.GUIDTYPE_STANDARD ) ? "yes" : "no"); // what_can_you_do is fetched from server to // know what capabilities it have var what_can_you_do = 0x000f; console.log( "Does server accept more than one connection? ", (what_can_you_do & vscp.hostCapability.TWO_CONNECTIONS) ? "yes" : no ); // Gettime console.log(vscp.getTime()); // guidStr var guid = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; console.log(vscp.guidToStr(guid)); var strguid1 = "00:01:02:02:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f"; console.log(vscp.strToGuid(strguid1)); var strguid2 = "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"; console.log("Check GUID str 1 - "+vscp.isGuidZero(strguid1)); console.log("Check GUID str 2 - "+vscp.isGuidZero(strguid2)); var guid1 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; var guid2 = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]; console.log("Check GUID array 1 - "+vscp.isGuidZero(guid1)); console.log("Check GUID array 2 - "+vscp.isGuidZero(guid2)); console.log("Nodeid - ",vscp.getNodeId(strguid1),vscp.getNickName(strguid1)); // setNodeId / setNickName console.log(vscp.setNodeId(strguid1,255)); console.log(vscp.setNickName(strguid1,115)); console.log(vscp.b64EncodeUnicode("This is a test string")); console.log(vscp.b64DecodeUnicode("Q2FycGUgRGllbQo=")); console.log("Is this an Ipv6 node: " + vscp.isGuidIpv6(0xff00) ); console.log("Is this an dumb node: " + vscp.isDumbNode(0xff00) ); console.log("Priority: " + vscp.getPriority(0xffff) ); console.log("GUID type: " + vscp.getGuidType(0x1f00) ); console.log("Rolling index: " + vscp.getRollingIndex(0x1234) ); // Value = -2.92 C // vscpData: [0x89,0x82,0xFE,0xDC] console.log("Fixed precision is " + vscp.toFixed(1.234, 1)); console.log("Integer value is " + vscp.varInteger2Float([0xFE,0xDC])); console.log("Data coding is " + vscp.getDataCoding(0x89) ); var d = [0x89,0x82,0xFE,0xDC]; console.log("Measurement type", (d[0] & vscp.measurementDataCodingMask.MASK_DATACODING_TYPE) >> 5 ); console.log("Measurement unit", (d[0] & vscp.measurementDataCodingMask.MASK_DATACODING_UNIT) >> 3 ); console.log("Measurement sensor index", d[0] & vscp.measurementDataCodingMask.MASK_DATACODING_INDEX ); console.log("Is this a normalized integer", (d[0] & vscp.measurementDataCodingMask.MASK_DATACODING_TYPE) === vscp.measurementDataCoding.DATACODING_NORMALIZED ); console.log("Datacoding: ",vscp.getDataCoding(d[0])); console.log("Unit: ", vscp.getUnit(d[0])); console.log("Sensor index: ", vscp.getSensorIndex(d[0])); console.log("Measurement data [0x89,0x82,0xFE,0xDC]is ", vscp.decodeMeasurementClass10(d)); console.log(e5.toString()); // -------------------------------------------------------------- // convertCanMsgToEvent // -------------------------------------------------------------- console.log(vscp.getCANALid(7,10,6)+42); console.log(vscp.getNicknameFromCANALid(vscp.getCANALid(7,10,6)+42)); console.log(" --- convertCanMsgToEvent 1"); console.log( vscp.convertCanMsgToEvent({ id: vscp.getCANALid(7,10,6)+42, ext: true, rtr: false, dlc: 4, data: "1,2,3,4" } )); console.log(" --- convertCanMsgToEvent 2"); console.log( vscp.convertCanMsgToEvent({ id: vscp.getCANALid(7,10,6)+42, ext: true, rtr: false, dlc: 4, data: [1,2,3,4] } )); console.log(" --- convertCanMsgToEvent 3"); console.log( vscp.convertCanMsgToEvent({ id: vscp.getCANALid(7,10,6)+42, ext: true, rtr: false, dlc: 4, data: new Buffer.from([1,22,3,44]) } )); console.log(" --- convertCanMsgToEvent 4"); console.log( vscp.convertCanMsgToEvent({ id: vscp.getCANALid(7,10,6)+42, ext: true, rtr: false, } )); // This one should give error console.log(" --- convertCanMsgToEvent 5"); console.log( vscp.convertCanMsgToEvent({ id: vscp.getCANALid(7,10,6)+42, ext: true, rtr: false, dlc: 4, } )); // convertEventToCanMsg console.log(" --- convertEventToCanMsg 1"); console.log(vscp.convertEventToCanMsg(e5)); console.log(" --- convertEventToCanMsg 2"); console.log(vscp.convertEventToCanMsg( { "vscpHead": 80, "vscpClass": 10, "vscpType": 6, "vscpData": [ 11, 22, 33, 44, 55 ], "vscpTimeStamp": 3456 } )); var e6 = new vscp.Event(); e6.setFromString('3,10,6,4,2000-02-11T17:00:02Z,4074759495,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:01,0x08,0x35,0x31,0x2E,0x39,0x32'); console.log(e6); e6.setFromString("0,20,3,,2001-11-02T18:00:01,,-,0x88,1,35"); console.log(e6); console.log(vscp.convertEventToCanMsg(e6)); var e7 = new vscp.Event({ "vscpHead": 80, "vscpClass": 10, "vscpType": 6, "vscpData": "100,200,99", "vscpTimeStamp": 3456 }); console.log(vscp.convertEventToCanMsg(e7)); var e7 = new vscp.Event({ "vscpHead": 80, "vscpClass": 10, "vscpType": 6, "vscpGuid": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:2a", "vscpObid": 0, "vscpData": [ 11, 22, 33, 44, 55 ], "vscpTimeStamp": 34565634, "vscpDateTime": "2020-02-24T11:10:59.807Z" }); console.log(e7.toJSONObj()); e8 = new vscp.Event({ text : '3,10,6,4,2020-02-11T17:00:02Z,4074759495,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:01,0x48,0x35,0x31,0x2E,0x39,0x32' }); console.log(e8, "---", e8.getAsString(),"---",e8.toString());