Nymea 1.5 release notes

1.5, here we go!

What a release! It took its time, but it’s packed!


A lot of effort has been going into wallbox and energy metering integrations. With new support for Mennekes wallboxes and tons of improvements in existing plugins: Fronius, go-e, SMA, MecMeter, Phoenix (Wallbe & Scapo), Schrack, all got several fixes and optimizations improving the nymea:energy experience.
On the UI side, the energy charts are now scrollable and allow to go examine energy production and consumption values from previous days, months or even years, or zoom in on minute resolution.


Moving on to ZigBee: The most important fix was for an issue with the deConz backend which would prevent larger networks to be entirely stable. In order to track down the issue, we’ve added visual ZigBee network map which allows inspecting routes between nodes in your ZigBee network and helps optimizing it (by adding routing devices in between weak links).

While being on the roll with ZigBee, we’ve also added support for configuring ZigBee bindings directly on the devices. This means, it’s now possible to connect devices on a ZigBee level which would allow controlling them without going through the nymea system. This results in improved response times as well as it keeps on working even if nymea is currently unreachable (e.g. because of an update or maintenance shutdown).

But that’s not even all, nymea 1.5 also adds support for ZigBee device firmware updates. For now this includes most Philips Hue, IKEA Tradfri and Aqara/Lumi devices, more to come. Big thanks to the folks at GitHub - Koenkk/zigbee-OTA: A collection of Zigbee OTA files for collecting and maintaining a database of firmware update images. If you are aware of more device firmware update files provided by manufacturers, please contribute them to that repository.


nymea’s network setup part received a couple of updates: It’s now possible to configure the wired network of nymea systems too, by selecting between automatic (DHCP client), manual IP setup and even shared connectivity. This means, that it’s now possible to connect other devices to a nymea Raspberry Pi (or any other nymea host with wired networking) via an ethernet cable and share the internet connection of the wireless network. This is useful if you have devices like wallboxes which only have wired neworking and you’d like to connect them directly to nymea, effectively making them available on WiFi. Apart from that, connecting to hidden WiFis is now supported too.


This release also adds support for a couple of air quality and hazardous substances sensing related devices, like the IKEA Starkvind air purifier, the Shelly gas and smoke and improves some things in the Develco/Frient aif quality sensors, so there were enough reasons to also rework the sensors UI and align the air quality index sensigs views. This means that any air quality index related states of those devices has been removed and instead the app is now responsible for translating raw sensor values into an air quality index scale which is appropriate for the users location. For instance in the EU this will now use the CAQI (Common Air Quality Index) scale, while in the US the values will be represented according to the EPA AQI. The road is also paved for australian, canadian, chinese, indian etc air quality scales, which aren’t implemented yet at this point though.


The ScriptEngine received a new feature to allow accessing a whole Thing, and even multiple Things, as opposed to only individual states/actions/events. For example:

Thing {
    thingId: <thingId>
    onEventTriggered: console.log("Event triggered for thing:", exampleThing.name, eventName, JSON.stringify(params));
    onStateValueChanged: console.log("State changed for thing:", exampleThing.name, stateName, value);
exampleThing.setStateValue("power", true);
exampleThing.executeAction("notify", {"title": "Hello", "body": "World"});

This allows to access a thing name, which may be useful when sending out push notifications, and allows acting on various states at once, withouth defining multiple ThingState items.
It’s also possible to listen for new things appearing, or filter all the things for a particular type:

Things {
    filterInterface: "light"

    onThingAdded: console.log("A lighting thing has been added to the system:", getThing(thingId).name)
    onThingRemoved: console.log("A lighting thing has been removed from the system:", thingId)

There are even more interesting changes, but they won’t make up for pretty screenshots any more, so I’ll stop here and if you’re still not stuffed with changes, make sure to check out the complete changelog below.

Enjoy the release!

  • nymea (1.5.0)

    • Fix a potential info->aborted() call after the plugin called info-
    • Expose Zigbee neighbor tables to jsonrpc
    • Align gassensor interface wording
    • Fix PyStdOutHandler class name in python engine
    • Add API to interact with ZigBee bindings
    • Add Thing and Things types to script engine
    • Network device discovery: create reply for each discovery request
    • Fix editing user scopes
    • Network device discovery: fix potential crash on unregister non
    • Provide mock plugin with the test library, not with the tests.
    • Remove extern plugin info from testlib header
    • Improve warning information in thing manager
    • Add API to configure the wired network
    • Rework air quliaty interfaces
    • Allow to override default paths using new env variable
    • Update mac address database
  • nymea-app (1.5.0)

    • Fix Z-Wave security mode display
    • Fix Z-Wave device info data
    • Add support for connecting to hidden wifi networks during bt wifi setup
    • Fix setup status warning not always updating in ThingsView
    • Make energy charts scrollable
    • Add a zigbee network topology map
    • Use Reachability API on iOS to determine network connectivity
    • Add support for configuring ZigBee bindings
    • Add support for Android themed icons
    • Fix params for actions in the generic log page
    • Add code completion for new script things
    • Update gas interface
    • Send last queued command in an actionqueue on destruction
    • Show serial port name when adding a zwave network
    • Add support for wired network configuration
    • Fix style of media browser header
    • Rework Air quality sensor views
  • nymea-plugins (1.5.0)

    • Shelly: Allow choosing between unicast and multicast CoIoT
    • TP-Link: Disable caching for some states where it’s not needed
    • Bump oauthlib from 3.2.0 to 3.2.1 in /daikinairco
    • MecMeter: Reduce some load by uncaching and rounding some states
    • Clean up network device discovery replies due to mechanism update
    • go-e: Drop flooding useless debug print
    • shelly: improve shelly readme notes and fix typo in integrations
    • AQI: Update to new interface specification
    • Shelly: Add support for flood, smoke and gas sensors
    • bimmerconnected: Update python requirements
    • SMA: Disable caching for frequently changing states
    • go-e: Uncache some states
    • go-e: Fix charging state
  • nymea-plugins-zigbee (1.5.0)

    • Enable attribute reporting for lights
    • Implement OTA mechanism
    • Rename ZigbeeRemotes to ZigbeeJung and migrate to common plugin code
    • Tradfri: Add support for STARKVIND
    • Develco: Update to common code, latest interfaces and remove
    • Lumi: Update to common code, add some fixes and enable OTA
  • nymea-plugins-zwave (1.5.0)

    • Fix battery level states
  • nymea-plugins-genericthings (1.5.0)

    • Sensors: Update gas sensor to changes in interface
    • Sensors: Update co sensor to latest interface
    • Add missing “Replaces” tag to packages
  • nymea-plugins-modbus (1.5.0)

    • New plugin: Mennekes HCC3 and ECU wallboxes
    • Add host address to error debug prints
    • Schrack: Only complete the setup if reading a register actually
    • PhoenixConnect: Improve plugin stability
    • Clean up network device discovery replies due to mechanism update
    • Add a parameter to write registers to the cli
  • nymea-zigbee (1.5.0)

    • Fetch LQI neighbor and routing tables from the network
    • Add API to interact with bindings
    • Complete the OTA cluster implementation
    • Implement timeout settings for occupancy sensing cluster
    • Deconz: Fixes for command queuing
    • Add Fan Control cluster implementation
    • Update all debug operators and make use of state saver
    • Silence a warning about unhandled callbacks
    • Register the OTA server cluster on the TI backend
    • Fix parsing of floating point data types
  • libnymea-networkmanager (1.5.0)

    • Add support for connecting to hidden wifis
    • Enforce CCMP when starting an access point
    • Add support for configuring the wired network
  • nymea-update-plugin-packagekit (1.5.0)

    • Fix upgrading when a package needs to be removed to complete the
    • Hide dbgsym packages
    • Add Ubuntu 22.10 kinetic
  • nymea-zwave-plugin-openzwave (1.5.0)

    • Fix reading the security device flag
  • nymea-experience-plugin-energy (1.5.0)

    • Keep 15min, 1h and 3h sample logs for a longer time
    • Create SQL indices on energy log DB for improved resampling
    • Update energy-plugin path environment variable behaviour