TODO - Work that need to be done and work that is in progress

Thoughts & ideas for the future

Release 13.1.2

  • stretch #warning “_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE” [-Wcpp] # warning “_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE”
  • MIT licensed tcp/ip client handling with TSL
  • write discoveries to db
  • Instructions to get web sample content installed.
  • sync remote variable “ini”, “read”, “write” Stockvariables write.
  • deb install of daemon, helperlib and vscp works
  • Admin interface: restore default settings.
  • Check DM actions

!!!! I M P O R T A N T !!!!

  • All docs to markdown (see docs).
  • websocket tables
  • vscphelper SSL (TCP/IP) connection.
  • Remove mongoose dependency in vscpremotetcpif to get rid of GPLv2 infection on users code used to connect to the VSCP daemon.
  • challenge method tcp/ip interface
  • %event.type.str and %event.class.str in DM escapes must be rewritten to use the database
  • A C++ binding/wrapper library for the Duktape JavaScript interpreter.
  • Delete user must check client list for used users.
  • Replace all “#ifdef WIN32” with “#if defined(_WIN32)”
  • VSCP UX manual
  • web-send event
  • web system test
  • Remove wxBase64 code. Remotevariable/dm Marked with TODO
  • Check VSCP base64 decoding routine (length)


  • VSCP.WEB_TCP_NODELAY undefined
  • ALL variable values stored in BASE64. ALL variable values transferred as BASE64 values.


  • class1.control lock/unlock events?
  • class1.information locked/unlocked events?


  • Discovery demo.
  • Admin interface.
  • Generic bootloader sample

Admin interface

  • Variable should be possible to be moved to database from xml.
  • Variable should be possible to be duplicated.
  • Columns for mask in DM edit should move way left.
  • Change log record count function to use the standard one.
  • Help to each item in DM/variable (popup)
  • Server restart.
  • DM/Variable edit cancel button.
  • add user add/edit/delete/list
  • Add variable(s) from string format.
  • Add variable(s) from XML.
  • Add variable(s) from JSON.
  • Add variable(s) from uploaded object.
  • Add user(s) from string format.
  • Add user(s) from XML.
  • Add user(s) from JSON.
  • Add user(s) from uploaded object.
  • Add DM row(s) from string format.
  • Add DM row(s) from XML.
  • Add DM row(s) from JSON.
  • Add DM row(s) from uploaded object.
  • Add table(s) from string format.
  • Add table(s) from XML.
  • Add table(s) from JSON.
  • Add table(s) from uploaded object.
  • Add script(s) from string format.
  • Add script(s) from XML.
  • Add script(s) from JSON.
  • Add script(s) from uploaded object.
  • Bootloader to admin interface
  • View logfile enteries
  • configuration database item edit

Travis CI

  • Start to use Travis CI




  • Extra security for tcp/ip. Add variable key that is listed after user command. (sid has been added, need logic)
  • Sensible defaults should be used for empty tags in dm.xml and other reads.I have added some of the default in the read for the dm but have not tested.
  • Dinesh problem.
  • class/type should be possible to select from drop down boxes in web i/f
  • tcp/ip measurement command.
  • Received Level I measurement events should be possible to automatically convert to CLASS2 float/string versions. Either both versions or just the converted version is sent further on the wire.
  • discovery variable. Last date/time for new discovery
  • Driver translation: TEST
  • Is it possible to have a configuration that prevent Level I drivers from sending there events to other Level I drivers. Can this be driver specific? Translation prevent the first case.
  • Drivers should be possible to load/unload from repository on the fly.
  • Variable hooks in websocket interface. 1.) Create hook. 2.) Get value automatically when it has been changed (or info that variable has been deleted).
  • New stock variables: wxGetBatteryState(), wxGetPowerType (), wxGetDisplayName ()
  • Log database should clear off old entries (-1 == never, 1 = older than one day, 2 = older than two days etc)

vscpd DM

  • Add timing to send events from file.
  • DM moving avarage.
  • Add escapes for event datetime, date and time.
  • Add test for actions and escapes.
  • New escape: %sql:db-name:sql-expression Loads result.
  • dl/dll interface “name-of-dll;free param's” dl/dll loaded on startup.
  • Loadable Duktape script that can be set for all Duktape scripts.
  • Allow for use of tokens in action code.
  • “Send events from file” Change XML format to template format.
  • Action scripts should be possible to install/uninstall remotely a la Google play


  • tcp/ip tables
  • rest tables
  • discovery web i/f

dbname:tablename must be system unique
Can labels be in variables?
Is unit needed?

Size of table If a size is set he table will have max. this number of records. Every time a new record is inserted the oldest record will be removed to full fill this size constraint.

  • Databases created if they don't exists when vscpd starts.
  • Tables created if they don't exist when vscpd starts.
  • Escape to fetch data from table %sql:unique-name:sql-expression (to slow???) Return value/comma separated list)
  • Action to write data to table. Action parameter: unique-name;sql-expression.
  • SQL support in JavaScript and LUA. Result in JSON.
<table bmemory="true|false"



  title="diagram title"
  labelx="diagram x-name"
  labely="diagram y-name"
  note="diagram note"

  sql-create="SQL expression to create table"
  sql-insert="SQL expression to insert value into table"
  sql-delete="SQL expression to delete table"

  description="Description of database"

The insert value string shall have a %f representing the value and a %s representing the date/time and in that order. The rest of the string is just a standard INSERT sql expression.

Fora static table: after an insert one or several sql-deletes will be carried out until the count is below or equal to size.

max(date1,date2) min(date1,date2) avarage(date1,date2) median(date1,date2)


  • WiringPi driver -
  • Level III driver examples
  • Add syslog logging to all drivers
  • Validate lircdriver and create real life sample
  • Vector driver on windows should be updated.
  • IXXAT driver on windows should be updated.
  • Lua/Javascript/Python drivers. Is it possible? See ideas
  • Load/Unload/Start/stop
  • Drivers should be loadable a'la Google play
  • The driver capabilities xml info should be added to all drivers and also used in VSCP Works and future daemon remote driver installer.
  • SMS driver linux/windows
  • On windows ixxat driver need to be updated to latest ixxat library version
  • On windows vector driver need to be updated to latest vector library version
  • Variable samples should be available for all drivers
  • email driver.
  • Validate that mqtt driver handles datettime in send and receive


  • Make it possible to register listners for specific events. Check similar functionality here
  • sqlite3 support.
  • Connect (web_connect_client)
  • ConnectSecure (web_connect_client_secure)
  • Close (web_close_connection)
  • Read (web_get_response)
  • Write (web_write)
  • Event receive interface with callback.
  • Socket interface. With callbacks. (web Lua)
  • Make javascript exports available in web code.
  • Variables containing JavaScript should be possible to check for validity. Websocket interface / tcp/ip interface. “just parse”
  • SQL support.
  • Add to TCP/IP interface
  • Ionic (Angular, Phonegap/Cardova) vs. React native
  • Evaluate onsen ui

LUA Script

  • Add to DM
  • Make VSCP callbacks available
  • Add to manual
  • Connect (web_connect_client)
  • ConnectSecure (web_connect_client_secure)
  • Close (web_close_connection)
  • Read (web_get_response)
  • Write (web_write)
  • Add to TCP/IP interface
  • Add xmlexpat lib
  • lua_vscp_readVariable is not finished.
  • And isValueBase64Encoded

vscp works

  • cscp config read register value on selected row always write value in hex, should look at selected base.
  • Unable to get channel ID. in TX thread when opening session.
  • using CANAL, on closing the window i receive a “vscpworks.exe has stopped working”. Everything works fine however.
  • Add event recorder that record events with timing.
  • Detect when server goes down when a session is open.
  • CLASS2.LEVEL1_PROTOCOL does not fill the type combo for tx defines in the session window.
  • Better error handling. (time out, connection errors)
  • Saving loading filters.
  • When configuration is loaded over remote server the grid is not expanded.
  • VSCP bootloader algorithm.
  • Discover interface should be finished.
  • Variable interface.
  • MDF interface
  • Wizard interface.
  • DM: Mask for class shown as 0xff, should be 0x1ff
  • DM: Filter build dialog does not appear to work.
  • Session window: Class/types are out of order.
  • Config window: Change “node data” ⇒ “device data”
  • Make it possible to search registers (clear text search)
  • When loading registers, registers that have the same value as the loaded value should not be marked as altered.
  • Update context sensitive help info
  • Check about and help paths
  • Session window; Guid is FF:FF:FF:FF FF:FF:FF:FE B8:27:EB:0A 00:02:00:01 Change to standard format.
  • Confirm delete has no checkbox in the settings dialog.
  • Event save/load format should be the same as for the daemon (TEMPLATE)
  • Add shortcuts in all window for VSCP Works (Configure fixed).
  • Value lists are available in the specification but not in VSCP works for abstractions and for register views.
  • zone/subzone in session tx dialog
  • Wizard functionality should be added in VSCP Works configure window
  • Move abstraction write read code from CanalSuperwrapper to the dll/tcp wrappers for consistency with register code.
  • “bit” is in the specification for abstractions but not available in VSCP Works.
  • Add Later another view will be added that makes it possible to see how many events of a certain class/type pair that has been received (message count).
  • Save elected event in session window.
  • Click on row during update gives segfault. Debug: vscpd :ASSERT - file: /usr/include/wx-3.0/wx/arrstr.h line:178 func: Item cond: nIndex < m_nCount msg: wxArrayString: index out of bounds Segmentation fault (core dumped)
  • Detect connection timeout (session/configuration/scan etc
  • Add checkbox to scan that add node info directly


  • Bootloader needs some slack when used with slow interfaces over tcp/ip. Fails from time to time otherwise.
  • When bootloader wizard loads data from a device it should give information about what device it is and what firmware version that is currently loader.
  • Problem can occur if a module change processor over time. Different firmware. Also different firmware may be loaded to the wrong device. At least the VSCP algorithm should handle this.
  • Wizard should have option that backup register space before bootloading.

helper libs

  • Why no vscphlp_copyeventex ???
  • Change name of vscphlp_clearDaemonEventQueue to vscphlp_clearEventQueue DUPLICATE!
  • Add vscp_readFilterMaskFromString to lib, test and docs.
  • vscp_XML_Escape is broken. Need to be fixed (commented out now).
  • Add vscp_convertXMLToEvent and vscp_convertXMLToEventEx to lib, test and docs
  • Add vscp_setEventDateTime and vscp_setEventExDateTime to lib, test and docs
  • Add vscp_convertJSONToEvent and vscp_convertJSONToEventEx to lib, test and docs
  • Add vscp_setVscpEventExDataFromString to lib, test and docs
  • Add vscp_writeFilterMaskToJSON and vscp_ReadFilterMaskToJSON to lib, test and docs
  • Add vscp_writeFilterMaskToJSON and vscp_ReadFilterMaskToJSON to lib, test and docs
  • vscp_setVscpDataFromString have changed name to vscp_setVscpEventExDataFromString
  • Add information to the info string (vscpremotetcpif.h).
  • vscp_getVSCPMeasurementAsDouble to test
  • vscp_vscp_getVSCPMeasurementAsString to test
  • vscphlp_writeFilterToString / vscphlp_writeMaskToString to test
  • vscphlp_getMeasurementUnit / vscphlp_isMeasurement to test
  • Register operations should be added.
  • Add Base64Encode/Base64Decode that can handle escaped unicode. (or is this supported in wxWidets?)
  • writeMeasurementValue should be removed (???) or at least be changed to support the db.
  • Complete rewrite of variable functionality.
  • Windows def file should have all exported functions. Check that they all are included.
  • XML and JSON filter read/write (Lua script)
  • Add vscp_copyVSCPEventEx


  • SWIG (leta upp den borttagna koden eller göra allt från början?)
  • Python
  • Java
  • Python - Stalled work (???) by Salvo Musumeci here here
  • C# - Bas Bongenaar - work in progress
  • Perl
  • LUA
  • PHP
  • node.js - websocket i/f
  • node.js - tcp/ip i/f (helper.dll)
  • node.js - rest i/f
  • node.js - multicast i/f
  • OpenHAB
  • OpenRemote


  • Admin interface
  • Client interface
  • plotly.js


  • All class/type should be moved to database. vscp data table should be filled with data
  • PHP maintenance interface for “vscpdata” main database.
  • PHP user interface for “vscpdata” main database.
  • Export to vscp_class.h vscp_type.h
  • Export to JSON/XML


  • actions to left pane for vscp daemon docs
  • vscpd: “TCP/IP Link interface protocol” anchor id's
  • rest “Create variable” not fully documented.
  • rest “measurement” not fully documented.
  • rest “table” not fully documented.
  • websocket command table should have links to description.
  • All class/types in SUMMARY.MD
  • Type=15 (0x0F) - Start block data transfer. Fix table
  • Links to tcp/ip commands does not work (vscpd)
  • Move to markdown (gitbook?
  • MkDocs ????
  • Action codes should be added to all descriptions in the specification. A table should be available or is it already?
  • Javascript lib should be documented.
  • vscp works should be documented.
  • Update error list for websocket errors (last)
  • Add commands to left side for websockets
  • Add commands to left side for tcp/ip interfaces
  • Add sections to left side for variables.
  • config items in vscpd docs to left side.
  • Add DM howto's to
  • Pencil2d animations



  • Check that conditional execute work.
  • Send SMS (web service).
  • Send Email.
  • Weather forecast fetcher.


  • /vscp/var/[variable-name] pages
  • *.vscp substitution pages.


  • Add trigger functionality
  • measurement command should be completed.
  • Rewrite error handling.
  • subscribe to variable value/changes.




  • Output from tcp/ip interface (events)
  • Output from websocket interface (events)
  • Output from REST interface (events)
  • Output from VSCP MQTT interface (events)


  • Filter (General events)
  • Filter (Event translate to real value measurement {“value”:27.9, “unit”:0, “index”:2, “guid”:“FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF” })


Hardware demos

MQTT Driver

  • in: Subscribed path → Event (argument substitution)
  • in: Subscribed path → Variable (argument substitution)
  • out: Changed variable → publish on path
  • out: event (filter) → published on path
  • in/out: /vscp/xml → stream from daemon (XML format)
  • in/out: /vscp/json → steam from daemon (JSON format)
  • in/out: /vscp/xml/'interface' → stream to/from daemon but specific interface given as GUID (XML format)
  • in/out: /vscp/json/'interface' → stream to/from daemon but specific interface given as GUID (JSON format)
  • out: /vscp/measurement[/interface] → Easy way to send measurements. Just send numbers. Interface is optional.
  • /interface/origin/class/type/ → event
  • /vscp - send and receive line events
  • /vscp/json - send and receive JSON events
  • /vscp/xml - send and receive XML events.
  • /xxxxxx - custom channels a'la driver.

TCP/IP client interface

  • Execute JavaScript
  • File handling
  • Data in send commands etc should be able to hold strings and possibly floats.
send 96,10,6,2,,,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:0A:00:02:00:05,0x49,0x35,0x39,0x2e,0x30,0x31,0x31,0x32
send 96,10,6,2,,,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:0A:00:02:00:05,0x49,"39.0112"

and (????)

send 96,10,6,2,,,FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:0A:00:02:00:05,0x49,39.0112

JavaScript & LUA methods

  • Send event - (fixed for Javascript)
  • Receive event - (fixed for Javascript)
  • Check events in queue - (fixed for Javascript)
  • Read variable - (fixed for Javascript)
  • Write variable - (fixed for Javascript)
  • Create variable - (fixed for Javascript)
  • Delete variable - (fixed for Javascript)


  • uvscpd (pi, Carmbola etc)

Test cases

  • tcp/ip interface
  • webscocket interface
  • REST interface
  • MQTT interface
  • coap interface
  • Multicast interface
  • Discovery
  • Local bootloading
  • Remote bootloading

Root folder structure


  • Main configuration file. vscpd.xml


  • — Databases and xml files in the root. —
  • > actions - Preferred place for action scripts on disc
  • certs - Server certificates
  • > drivers - VSCP Level I and Level II drivers.
  • tables - Preferred place for user tables
  • > web - Web root.

Folders marked with “>” can be manipulated by remote file utilities.

General todos

  • Sunfig animation of system.
  • Interface Kodi
  • Google calender example is needed
  • A IFTTT interface sample is needed
  • ComeVisu Interface
  • OpenHAB
  • Openremote Interface
  • SMHI/YR weather script
  • openzwave driver linux/windows
  • sms driver linux/windows
  • email driver linux/windows
  • ThingSpeak action example
  • Twitter example is not complete
  • Nimbits action example
  • UPnP Support


  • Generic bootloader
  • Sample NXP/Kinetics
  • Sample STM32


bintray -



Home Assistant

  • Interface the thing



  • MDF, picture, firmware points to wrong location (Accra)
  • Replace http with https in mdf
  • No firmware link on info page.

Adafruit IO

todo/start.txt · Last modified: 2018/09/17 14:31 by admin
[unknown button type]
Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki