Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

knxultimate

Package Overview
Dependencies
Maintainers
0
Versions
82
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

knxultimate

KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.

  • 3.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
239
decreased by-43.9%
Maintainers
0
Weekly downloads
 
Created
Source

Logo

CI NPM version NPM downloads per month NPM downloads total MIT License JavaScript Style Guide Youtube

Control your KNX intallation via Node.js!

This is the official engine of Node-Red's node node-red-contrib-knx-ultimate

Many of you asked for a node.js release of that engine, so i decided to create this package.

If you enjoy my work developing this package, do today a kind thing for someone too. This will be the reward for my work.


Logo

CHANGELOG

  • Changelog
TechnologySupported
KNX Tunnelling
KNX Routing
KNX Secure Tunnelling
KNX Secure Routing

CONNECTION SETUP

These are the properties to be passed to the connection as a JSON object {} (see the knxUltimateClientProperties variable in the exsamples)

PropertyDescription
ipAddr (string)The IP of your KNX router/interface (for Routers, use "224.0.23.12")
hostProtocol (string)"Multicast" if you're connecting to a KNX Router. "TunnelUDP" for KNX Interfaces, or "TunnelTCP" for secure KNX Interfaces (KNX Secure is not yet implemented)
ipPort (string)The port, default is "3671"
physAddr (string)The physical address to be identified in the KNX bus
suppress_ack_ldatareq (bool)Avoid sending/receive the ACK telegram. Leave false. If you encounter issues with old interface, set it to true
loglevel (string)The log level 'disable', 'error', 'warn', 'info', 'debug'
isSecureKNXEnabled (bool)True: Enables the secure connection. Leave false until KNX-Secure has been released.
jKNXSecureKeyring (string)Optional. ETS Keyring JSON file content. Leave blank until KNX-Secure has been released.
localIPAddress (string)Optional. The local IP address to be used to connect to the KNX/IP Bus. Leave blank, will be automatically filled by KNXUltimate
interface (string)Optional. Specifies the local eth interface to be used to connect to the KNX Bus.
KNXQueueSendIntervalMillisecondsOptional. The KNX standard has a maximum transmit rate to the BUS, of about 1 telegram each 25ms (to stay safe). In case you've a lot of traffic on the BUS, you can increase this value, expressed in milliseconds. Be careful, because if you set it too high, the KNX engine could send a telegram with flag 'repeat', because the ACK from the device is coming too late.

SUPPORTED DATAPOINTS

For each Datapoint, there is a sample on how to format the payload (telegram) to be passed.

For example, pass a true for datapoint "1.001", or { red: 125, green: 0, blue: 0 } for datapoint "232.600".

It support a massive number of Datapoints. Please run the examples/showDatapoints.ts file to view all datapoints in the output console.

Be aware, that the descriptions you'll see, are taken from Node-Red KNX-Ultimate node, so there is more code than you need here. Please take only the msg.payload part in consideration.

You should see something like this in the console window (the msg.payload is what you need to pass as payload):

METHODS/PROPERTIES OF KNXULTIMATE

MethodDescription
.Connect()Connects to the KNX Gateway
.Disconnect()Gracefully disconnects from the KNX Gateway
.write (GA, payload, datapoint)Sends a WRITE telegram to the BUS. GA is the group address (for example "0/0/1"), payload is the value you want to send (for example true), datapoint is a string representing the datapoint (for example "5.001")
.writeRaw (GA, payload, datapoint)Sends a WRITE telegram to the BUS. GA is the group address (for example "0/0/1"), payload is the buffer you want to send, datapoint is a string representing the datapoint (for example "5.001")
.respond (GA, payload, datapoint)Sends a RESPONSE telegram to the BUS. GA is the group address (for example "0/0/1"), payload is the value you want to send (for example true), datapoint is a string representing the datapoint (for example "5.001")
.read (GA)Sends a READ telegram to the BUS. GA is the group address (for example "0/0/1").
PropertyDescription
.isConnected()Returns true if you the client is connected to the KNX Gateway Router/Interface, false if not connected.
.clearToSendtrue if you can send a telegram, false if the client is still waiting for the last telegram's ACK or whenever the client cannot temporary send the telegram. In tunneling mode, you could also refer to the event KNXClientEvents.ackReceived, that is fired everytime a telegram has been succesfully acknowledge or not acknowledge. See the sample.js file.
.channelIDThe actual Channel ID. Only defined after a successfull connection

EVENTS

List of events raised by KNXultimate, in proper order. For the signatures, please see the examples folder.

EventDescription
connectingKNXUltimate is connecting to the KNX/IP Gateway. Please wait for the connected event to start sending KNX telegrams.
connectedKNXUltimate has successfully connected with the KNX/IP Gateway.
indicationKNXUltimate has received a KNX telegram, that's avaiable in te the datagram variable. Please see the examples.
ackReceivedAck telegram from KNX/IP Gateway has been received. This confirms that the telegram sent by KNXUltimate has reached the KNX/IP Gateway successfully.
disconnectedThe KNX connection has been disconnected.
closeThe main KNXUltimate socket has been closed.
errorKNXUltimate has raised an error. The error description is provided as well.

DECONDING THE TELEGRAMS FROM BUS

Decoding is very simple.

Just require the dptlib and use it to decode the RAW telegram

import { dptlib } from "knxultimate";
let dpt = dptlib.resolve("1.001");
let jsValue = dptlib.fromBuffer(RAW VALUE (SEE SAMPLES), dpt); // THIS IS THE DECODED VALUE

EXAMPLES

You can find all examples in the examples folder:

  • sample - A full featured example that shows how to connect to the KNX bus and send/receive telegrams. WARNING this sends data to your KNX BUS!
  • showDatapoints - List all supported Datapoints in the output console, as well as the help code on how the payload's value is constructed, for each datapoint type. This writes nothing to the KNX BUS, you can run it safely.
  • simpleSample - A simple example that shows how to connect to the KNX bus and send a telegram. WARNING this sends data to your KNX BUS!
  • discovery - A simple example that shows how to discover KNX devices on the network.
  • test-toggle - An interactive example that shows how to toggle a switch on/off. WARNING this sends data to your KNX BUS!

HOW TO COLLABORATE

If you want to help us in this project, you're wellcome!

Please refer to the development page.


SUGGESTION

Why not to try Node-Red https://nodered.org and the awesome KNX-Ultimate node https://flows.nodered.org/node/node-red-contrib-knx-ultimate ?




Logo

Keywords

FAQs

Package last updated on 08 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc