Giter VIP home page Giter VIP logo

node-red-contrib-knx-ultimate's Introduction

Logo


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

Sample Node

You can use it immediately!

payload=true // Turn light on
payload={red:255, green:200, blue:30} // Put some colors in our life

DESCRIPTION

  • KNX-ULTIMATE node here, allow you to control your KNX installation via Node-Red. You can control all your KNX devices as well as create a Virtual Device in Node-Red, to link external non KNX devices, and make it compatible with your KNX installation. I'ts very SIMPLE TO USE thus very customizable.
  • SCENE CONTROLLER node here, The scene controller node can act as a real scene controller, with recall and save of the current scene.
  • WATCHDOG node here, allows notification (Email, Twitter, Telegram, Alexa, Siri, Sonos -with sonospollytts node- and so on) of KNX Bus connection errors, automatic or manual switchover to a backup KNX/IP router if the primary fails and allows you to programmatically change the config-node directly from a msg flow.
  • LOGGER node here, creates an XML diagnostic file, compatible with ETS. You can open it with ETS for diagnostic pourposes.

Donate via PayPal and subscribe to my channel. Only news about my nodes, no spam, no ads.
Buy a Sticker! Buy a die-cut sticker "powered by KNX-Ultimate" for your products

CHANGELOG

INTERNATIONALIZATION


I'm internationalizing the node (Deutsch, Italiano, English) with the foundamental help of @svenflender, so please be patient if some parts are still only in english. Internationalization is working with node-red version 1.0.3 and above. Versions below, does have issues in the i18n module, so knx-ultimate falls back to english. Please upgrade node-red.

TROUBLESHOOT, WIKI, FAQ, BEST PRACTICES AND SAMPLES

Sample code for use with

Supported Datapoints:

List of supported Datapoints 1.002 (DPT_Bool)
1.003 (DPT_Enable)
1.004 (DPT_Ramp)
1.005 (DPT_Alarm)
1.006 (DPT_BinaryValue)
1.007 (DPT_Step)
1.008 (DPT_UpDown)
1.009 (DPT_OpenClose)
1.010 (DPT_Start)
1.011 (DPT_State)
1.012 (DPT_Invert)
1.013 (DPT_DimSendStyle)
1.014 (DPT_InputSource)
1.015 (DPT_Reset)
1.016 (DPT_Ack)
1.017 (DPT_Trigger)
1.018 (DPT_Occupancy)
1.019 (DPT_WindowDoor)
1.021 (DPT_LogicalFunction)
1.022 (DPT_Scene_AB)
1.023 (DPT_ShutterBlinds_Mode)
1.100 (DPT_Heat/Cool)
2.001 (DPT_Switch_Control)
2.002 (DPT_Bool_Control)
2.003 (DPT_Emable_Control)
2.004 (DPT_Ramp_Control)
2.005 (DPT_Alarm_Control)
2.006 (DPT_BinaryValue_Control)
2.007 (DPT_Step_Control)
2.008 (DPT_Direction1_Control)
2.009 (DPT_Direction2_Control)
3.007 (DPT_Control_Dimming [payload:{decr_incr:1 (1 to increase or 0 to decrease), data: 5}])
3.008 (DPT_Control_Blinds)
4.001 (DPT_Char_ASCII)
4.002 (DPT_Char_8859_1)
5.001 (DPT_Scaling)
5.003 (DPT_Angle)
5.004 (DPT_Percent_U8)
5.005 (DPT_DecimalFactor)
5.006 (DPT_Tariff)
5.010 (DPT_Counter_Pulses)
5.100 (DPT_Fan_Stage)
6.001 (DPT_Switch)
6.010 (DPT_Bool)
7.001 (DPT_Value_2_Ucount)
7.002 (DPT_TimePeriodMsec)
7.003 (DPT_TimePeriod10Msec)
7.004 (DPT_TimePeriod100Msec)
7.005 (DPT_TimePeriodSec)
7.006 (DPT_TimePeriodMin)
7.007 (DPT_TimePeriodHrs)
7.010 (DPT_PropDataType)
7.011 (DPT_Length_mm)
7.012 (DPT_UEICurrentmA)
7.013 (DPT_Brightness)
7.600 (DPT_Absolute_Colour_Temperature)
8.001 (DPT_Value_2_Count)
8.002 (DPT_DeltaTimeMsec)
8.003 (DPT_DeltaTime10Msec)
8.004 (DPT_DeltaTime100Msec)
8.005 (DPT_DeltaTimeSec)
8.006 (DPT_DeltaTimeMin)
8.007 (DPT_DeltaTimeHrs)
8.010 (DPT_Percent_V16)
8.011 (DPT_RotationAngle)
9.001 (DPT_Value_Temp)
9.002 (DPT_Value_Tempd)
9.003 (DPT_Value_Tempa)
9.004 (DPT_Value_Lux)
9.005 (DPT_Value_Wsp)
9.006 (DPT_Value_Pres)
9.007 (DPT_Value_Humidity)
9.008 (DPT_Value_AirQuality)
9.010 (DPT_Value_Time1)
9.011 (DPT_Value_Time2)
9.020 (DPT_Value_Volt)
9.021 (DPT_Value_Curr)
9.022 (DPT_PowerDensity)
9.023 (DPT_KelvinPerPercent)
9.024 (DPT_Power)
9.025 (DPT_Value_Volume_Flow)
9.026 (DPT_Rain_Amount)
9.027 (DPT_Value_Temp_F)
9.028 (DPT_Value_Wsp_kmh)
10.001 (DPT_TimeOfDay)
11.001 (DPT_Date)
12.001 (DPT_Value_4_Ucount)
12.1201 (DPT_Value_Volume_m3)
13.001 (DPT_Value_4_Count)
13.002 (DPT_Value_Activation_Energy)
13.010 (DPT_ActiveEnergy)
13.011 (DPT_ApparantEnergy)
13.012 (DPT_ReactiveEnergy)
13.013 (DPT_ActiveEnergy_kWh)
13.014 (DPT_ApparantEnergy_kVAh)
13.015 (DPT_ReactiveEnergy_kVARh)
13.100 (DPT_LongDeltaTimeSec)
14.007 (DPT_Value_AngleDeg°)
14.019 (DPT_Value_Electric_Current)
14.027 (DPT_Value_Electric_Potential)
14.028 (DPT_Value_Electric_PotentialDifference)
14.031 (DPT_Value_Energ)
14.032 (DPT_Value_Force)
14.033 (DPT_Value_Frequency)
14.036 (DPT_Value_Heat_FlowRate)
14.037 (DPT_Value_Heat_Quantity)
14.038 (DPT_Value_Impedance)
14.039 (DPT_Value_Length)
14.051 (DPT_Value_Mass)
14.056 (DPT_Value_Power)
14.065 (DPT_Value_Speed)
14.066 (DPT_Value_Stress)
14.067 (DPT_Value_Surface_Tension)
14.068 (DPT_Value_Common_Temperature)
14.069 (DPT_Value_Absolute_Temperature)
14.070 (DPT_Value_TemperatureDifference)
14.078 (DPT_Value_Weight)
14.079 (DPT_Value_Work)
15.000 (DPT_Access_Data)
16.000 (DPT_String_ASCII)
16.001 (DPT_String_8859_1)
17.001 (DPT_SceneNumber)
18.001 (DPT_SceneControl [payload:{'save_recall':0 (0 to recall or 1 to save), 'scenenumber':2}])
19.001 (DPT_DateTime)
20.102 (HVAC_Mode)
232.600 (RGB [payload:{red:255, green:200, blue:30}])
238.003 (DPT_Angle)
238.004 (DPT_Percent_U8)
238.005 (DPT_DecimalFactor)
238.006 (DPT_Tariff)
238.010 (DPT_Value_1_Ucount)
238.102 (HVAC_Mode)
251.600 (RGBW [payload:{red:255, green:200, blue:30, white:50, mR:1, mG:1, mB:1, mW:1}])
999.001 (DPT_10Bytes_HEX [payload: '123400000000000000' or '$12 $34 $00 $00 $00 $00 $00 $00 $00'])

Highlights

If you're here, you probably already have tried other knx nodes from npm. I hope you enjoy this one, because i've put big effort to do what i really needed, a copy/paste friendly node, with many functions and the possibility to use the ETS csv exported Group Addresses.

Stand alone or with ETS exported file

You can set you own group address, datapoint and device name, or you can import the ETS Group Address list and have datapoint and device name auto populated while typing in the group address.

Filling helpers

If you import your ETS CSV or ESF file, just begin typing the group address or the device name in the Group Address textbox and a list of possible matches will appear. Just select an item in the list it and have datapoint and device name auto populated. You can then accept the auto populated fields or change it.

Automatic encoding/deconding of KNX datagrams

Just pass a normal payload to the node (true, false, a string or any nymber) and just receive a normal payload (true, false, a string or any nymber) to use in your flow.

Double Personality

The node can act as a single device (for example having Group Address 0/0/1), or can be used as universal node, catching all messages coming from KNX Bus (in this case the node will output a comprehensive msg to the flow, containing group address, device name, automatic decoded payload and other useful infos). The node can act as universal KNX sender as well (you can pass a message to the node, containing the destination group address, the datapont type and the payload).

Emulate real KNX device

You can use the node to emulate a phisically non existent KNX device. The node will behave exactly as a normal KNX Device and will also respond to read requests coming from the KNX bus, by sending the current payload value to the KNX bus.

Customizable status display

You can select what to see in the status (the row below the node). For example, you can select to see the current payload value and the last time changed, or the device name as well.

Self protection

The Node protects you, from youself. Node Protections

Built in RBE input/output filter

You can select to activate or deactivate it. If active, the node reacts only if payload from KNX Bus or from input msg is changed.

Automatic KNX interface type

Full support for IP Interfaces as well for IP Routers. It's recommended the use of IP Routers because of simple setup and stability in a large environment.

WORKING WITH THE ETS CSV FILE OR WITH ESF FILE

Instead of create a knx-ultimate node for each Group Address to control, you can import your ETS csv or esf group addresses file.
Thanks to that, the knx-ultimate node where you selected Universal mode (listen to all Group Addresses), becomes an universal input/output node, aware of all Datapoints, Group Addresses and Device's name (ex: Living Room Lamp). Just send the payload to the knx-ultimate node, and it'll encode it with the right datapoint and send it to the bus. Likewise, when the knx-ultimate node receives a telegram from the bus, it outputs a right decoded payload using the datapoint specified in the ETS file.

Sample ETS csv file to paste into the ETS field of your config node.

Copy/Paste this into your configuration node.

"Group name"	"Address"	"Central"	"Unfiltered"	"Description"	"DatapointType"	"Security"
"Attuatori luci"	"0/-/-"	""	""	"Attuatori luci"	""	"Auto"
"Luci primo piano"	"0/0/-"	""	""	"Luci primo piano"	""	"Auto"
"Camera da letto luce"	"0/0/1"	""	""	"Camera da letto luce"	"DPST-1-8"	"Auto"
"Loggia camera da letto"	"0/0/2"	""	""	"Loggia camera da letto"	"DPST-1-1"	"Auto"
"Camera armadi luce"	"0/0/3"	""	""	"Camera armadi luce"	"DPST-1-1"	"Auto"
"Bagno grande luce"	"0/0/4"	""	""	"Bagno grande luce"	"DPST-1-1"	"Auto"
"Loggia bagno grande"	"0/0/5"	""	""	"Loggia bagno grande"	"DPST-1-1"	"Auto"
"Bagno grande specchio (switch)"	"0/0/6"	""	""	"Bagno grande specchio switch"	"DPST-1-1"	"Auto"
"Lavanderia luce"	"0/0/7"	""	""	"Lavanderia luce"	"DPST-1-1"	"Auto"
"Lavanderia specchio (switch)"	"0/0/8"	""	""	"Lavanderia specchio switch"	"DPST-1-1"	"Auto"
"Studio luce"	"0/0/9"	""	""	"Studio luce"	"DPST-1-1"	"Auto"
"Soggiorno luce (switch)"	"0/0/10"	""	""	"Soggiorno luce switch"	"DPST-1-1"	"Auto"
"Soggiorno aplique (switch)"	"0/0/11"	""	""	"Soggiorno aplique switch"	"DPST-1-1"	"Auto"
"Loggia soggiorno cucina"	"0/0/12"	""	""	"Loggia soggiorno-cucina"	"DPST-1-1"	"Auto"
"Cucina luce"	"0/0/13"	""	""	"Cucina luce"	"DPT-1"	"Auto"
"Cucina luce pensili"	"0/0/14"	""	""	"Cucina luce pensili"	"DPT-1"	"Auto"
"Corridoio luce"	"0/0/15"	""	""	"Corridoio luce"	"DPST-1-1"	"Auto"
"Scala LED"	"0/0/16"	""	""	"Scala LED"	"DPST-1-1"	"Auto"
"Soggiorno aplique brighness value"	"0/0/17"	""	""	""	"DPST-5-1"	"Auto"
"Bagno grande specchio (dim)"	"0/0/18"	""	""	"Bagno grande specchio dim"	"DPST-3-7"	"Auto"
"Soggiorno luce brighness value"	"0/0/19"	""	""	""	"DPST-5-1"	"Auto"
"Lavanderia specchio (dim)"	"0/0/20"	""	""	"Lavanderia specchio dim"	"DPST-3-7"	"Auto"
"Scala LED cambiacolori RGB"	"0/0/21"	""	""	""	"DPST-1-1"	"Auto"
"Bagno grande specchio brightness value"	"0/0/22"	""	""	""	"DPST-5-1"	"Auto"
"Soggiorno luce (dim)"	"0/0/23"	""	""	"Soggiorno luce dim"	"DPST-3-7"	"Auto"
Sample ETS esf file to paste into the ETS field of your config node.

Copy/Paste this into your configuration node.

My beautiful home
Attuatori luci.Luci primo piano.0/0/1	Luce camera da letto	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/2	Luce loggia camera da letto	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/3	Luce camera armadi	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/4	Luce bagno grande	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/5	Luce loggia bagno grande	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/6	Luce specchio bagno grande (switch)	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/7	Luce lavanderia	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/8	Luce specchio lavanderia (switch)	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/9	Luce studio	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/10	Plafoniera soggiorno (switch)	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/11	Applique soggiorno (switch)	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/12	Luce loggia soggiorno cucina	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/13	Luce cucina	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/14	Pensili cucina	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/15	Luce corridoio	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/16	LED scala	EIS 1 'Switching' (1 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/18	Luce specchio bagno grande(dim)	EIS 2 'Dimming - control' (4 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/20	Luce specchio lavanderia (dim)	EIS 2 'Dimming - control' (4 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/23	Plafoniera soggiorno (dim)	EIS 2 'Dimming - control' (4 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/24	Applique soggiorno (dim)	EIS 2 'Dimming - control' (4 Bit)	Low	
Attuatori luci.Luci primo piano.0/0/17	Applique soggiorno brighness value	Uncertain (1 Byte)	Low	
Attuatori luci.Luci primo piano.0/0/19	Plafoniera soggiorno brighness value	Uncertain (1 Byte)	Low	
Attuatori luci.Luci primo piano.0/0/21	LED cambiacolori RGB scala	EIS 1 'Switching' (1 Bit)	Low	

You can work with a mix of knx-ultimate nodes, some with Universal mode (listen to all Group Addresses) checked and some not. You are absolutely free! See this youtube video,


Turn on/off a Lamp

return {payload:true}
return {payload:false}

Increase the light/open blind

// The parameter "data" indicates the relative amount of the dimming commmand (how much to dim).
// The parameter "data" can be any integer value from 0 to 7
// The parameter decr_incr:1 increases the light
// The parameter decr_incr:0 decreases the light
msg.payload={decr_incr: 1, data: 5};
return msg;

Set RGB color

// Each color in a range between 0 and 255
msg.payload={red:255, green:200, blue:30};
return msg;

MORE Samples and documentation....

Logo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.