knx-iot / knx-iot-stack Goto Github PK
View Code? Open in Web Editor NEWKNX-IOT open source stack
License: Apache License 2.0
KNX-IOT open source stack
License: Apache License 2.0
Currently the library binds to all network interfaces. For ETS, it would be useful to bind to only a specific interface.
Please investigate the options for such an extension.
This is especially useful if also #303 is implemented.
Suggestion: On the ETS API level, this could be another parameter to the ets_start method (meaning would probably depend on OS)
Add CMake to IoTivity
check if this is working on Windows
check if this is working on Linux
build against openthread (Cascoda-SDK)
add code formatting work flow
add work flow to check code formatting
not costed in project
~Days: 3
(pre work)
on KNX-IOT repo
(e.g. copy of IoTivity when that is done)
~Days: 1
The valid payload data seems to be smaller than the value of this parameter.
Shall we rely on the payload being null-terminated instead?
not costed in project
~Days: 0
~Days: 5
At the very least, offer a way to set the folder where the persisted date is stored.
If #303 is implemented, this must be per-instance.
not costed in project
~Days: 0
~Days: 0
Device side implementation only!
add code for KNX data
implementation on windows port (bonjour or windows)
see: https://github.com/openconnectivityfoundation/python-zeroconf
implementation on linux port (ahavi)
~Days: 5
miscellaneous tasks:
~Days: 15
13 to 18 March 2022
new dates not yet known
not costed in project
~Days: 0
Python test code
https://github.com/WAvdBeek/CoAPthon3
C code
add functions to set accept header (linkformat)
add functions to set accept header (cbor)
functions to parse linkformat
functions to show cbor as json
~~functions to replace json key as integer ~~
not needed
~~paging of the # entries (not yet needed, blockwise is working) ~~
not needed
well-known/core usage as client
GET with accept header
POST with accept header & content
PUT with accept header & content
DELETE with accept header & content
~Days: 9
~Days: 2
setup:
client on pc --> Pi BR --> PI-KNX device
miscellaneous tasks:
coding wrap up tasks:
wellknown/core paging of the # entries (not yet needed, block wise is working)
add adding function to listen on group addresses to porting layer
multicast groups
add all resources to: oc_core_get_resource_by_uri(const char *uri, size_t device) (not used yet)
check size of url (limited at 30 chars)
check whether to send an s-mode message regarding flags by looking at cflags in the group object table
check if table entries (group object table) contains urls that belong to the device
check whether a s-mode message received needs to be processed by looking at cflags in the group object table
cflags behaviour in group object table
/p
clean up tasks:
Working with:
@tiniuclx
@WAvdBeek
~Days: 15
see:
https://iotivity.github.io/iotivity-lite-doxygen/
~Days: 1
work in github repo:
https://github.com/KNX-IOT/knx-iot.github.io
~Days: 4
Code integration with security
rework tasks due to spec changes (spec completion end march)
~Days: 9
example app for testing - simple client
testing if the stack can sent out CoAP requests
example app for testing - simple server
testing if the stack can receive CoAP requests
LSAB - device that can be turned on via datapoint 417.61
KNX-IOT demo application
LSSB - device that can transmit on via datapoint 421.61
KNX-IOT demo application
code running on raspberry PI, with chili module as thread REED module
setup with PC running client --> Pi BR --> PI-KNX device
~Days: 10
Currently the library binds to all network interfaces. For ETS, it would be useful to bind to only a specific interface.
Please investigate the options for such an extension.
This
routing of multicast addresses throught the publisher table
the publisher table is used for unicast AND multicast (e.g. not clear from the spec)
Note all infra structure is there but not used.
For ETS use, it would be nice if multiple independent instances of the KNX IoT Stack can be used (also in parallel)
Please investigate the options for such an extension.
Suggestion: On the ETS API level, ets_start could return a handle or pointer which is the passed to all other API methods (and the callbacks).
Generic client (python) that can:
python code available :
https://github.com/WAvdBeek/CoAPthon3
~Days: 10
~Days: 10
implement mandatory resources
security resources:
#7
optional resources:
#62
wellknown/knx
action (a)
dev
fp (function points)
software update (swu)
messaging
~Days: 17
Currently the examples contain serial numbers like "000005". The KNX serial number is however a 12-digit (uppercase) hexadecimal string. The samples should have the first digits set to "00FA" (the namespace reserved for KNX association).
(Storing the serial number internally not as string, but as 48 bit integer might be more effective)
(Add Spake2+)
(add client code: python, based on dll)
auth
wellknown/knx (security related)
~Days: 10
It appears that the Json payload return by the gateway callback triggered when observing SMode is not valid Json due to a missing comma between the “sia” and “s” key value pairs.
Example of a Json payload printed by the python SMode sniffer script:
{ "sia": 3 "s":{ "st": "w" , "ga":2, "value": true } }
Would it be possible to change this?
(likely by changing oc_s_mode_notification_to_json in oc_knx.c)
py_install_resourceCB:
py_issue_requests_s_mode:
py_exit:
add support for query without value
e.g. ?blah instead of ?blah=value
infrastructure - CBOR encoding/decoding
infrastructure - core link format
infrastructure - interfaces
implement mandated data points (resources)
as skeleton only
new type of registration with return content-format
functionality to list which resources will be listed
adding new functions to return the correct data type
add filtering to make sure that the callback is only called for the correct type.
~Days: 9
This should be py_initiate_spake (additional "i")
optional resources
23 march 2023: subscriptions removed
~Days: 0
elliptic curve implementation for spake2
spake2 handshake
usage of coap vs coaps & oscore security
usage of interfaces, e.g. access control
X509 certificates (e.g. different usage & configuration than OCF)
~Days: 10
“A KNX IoT device SHALL support the concatenation of “ep=urn:knx:sn.*” and “if=urn:knx:if.pm” query parameters.”
various tasks for ETS implementation
removal of OCF code
integrate all changes into code base
improve module testing, with new functionality
integrate module test into CI
resource behaviour
things to keep:
~Days: 10
Note: Doxygen repo is there, but repo is not public, hence no documentation is visible
Note: repo for documentation is available and populated with content in markdown, however repo is not yet public
~Days: 4
demo for L&B
order materials for demo
border router config
device config
network setup
configurable (e.g. download config)
Note: might be reopened, e.g. adding more functionality
not costed
~Days: 0
not costed in project
~Days: 0
add security resources.
Note, this part implements
all mandatory resources
parses content
frames content
no storage of payload (e.g. restart device wipes memory)
SPAKE2+
well-known/knx/idevid
.well-known/knx/ldevid
/auth/at
/auth/at/kid
enable oscore
/f/oscore
/p/oscore/
a/sen (optional, push for LDevID enrollment)
Correctness & verification dependent on availability of ETS
~Days: 17
all code
reuse work flows
~Days: 1
not costed in project
~Days: 0
change types to uint64_t for
iid
fid
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.