Zigbee device request

Would be awesome, if the IKEA Starkvind air purifier could be supported in the future by Nymea. Anything I can do, in order to help?

Hey.

Yes, please connect it to nymea. Enable the ZigBeeNetwork logs. When you then restart nymea, detailed information about every device will be printed. Please paste that here.

Here is the output. I hope that is the correct format.

Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:  --->  ZigbeeNode(0x8419, B4:E3:F9:FF:FE:2A:F1:63, IKEA of Sweden (0x117c), STARKVIND Air purifier, Router, RxOn:true)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:   Manufacturer: "IKEA of Sweden"
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:   Model: "STARKVIND Air purifier"
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:   Version: "1.0.033"
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:    NodeDescriptor(ZigbeeDeviceProfile::NodeTypeRouter)
Sep 24 18:41:55 nymea nymead[2944]:     Complex descriptor available: false
Sep 24 18:41:55 nymea nymead[2944]:     User descriptor available: false
Sep 24 18:41:55 nymea nymead[2944]:     ZigbeeDeviceProfile::FrequencyBand2400Mhz
Sep 24 18:41:55 nymea nymead[2944]:     MacCapabilities("0x8e")
Sep 24 18:41:55 nymea nymead[2944]:     Alternate PAN Coordinator: false
Sep 24 18:41:55 nymea nymead[2944]:     ZigbeeDeviceProfile::DeviceTypeFullFunction
Sep 24 18:41:55 nymea nymead[2944]:     Power source main power: true
Sep 24 18:41:55 nymea nymead[2944]:     Receiver on when idle: true
Sep 24 18:41:55 nymea nymead[2944]:     Security capability: false
Sep 24 18:41:55 nymea nymead[2944]:     Allocate address: true
Sep 24 18:41:55 nymea nymead[2944]:     Manufacturer code: "0x117c"(4476)
Sep 24 18:41:55 nymea nymead[2944]:     Maximum buffer size: 82
Sep 24 18:41:55 nymea nymead[2944]:     Maximum RX size: 82
Sep 24 18:41:55 nymea nymead[2944]:     Maximum TX size: 82
Sep 24 18:41:55 nymea nymead[2944]:     ServerMask("0x2c00")
Sep 24 18:41:55 nymea nymead[2944]:     Primary trust center: false
Sep 24 18:41:55 nymea nymead[2944]:     Backup trust center: false
Sep 24 18:41:55 nymea nymead[2944]:     Primary binding cache: false
Sep 24 18:41:55 nymea nymead[2944]:     Backup binding cache: false
Sep 24 18:41:55 nymea nymead[2944]:     Primary discovery cache: false
Sep 24 18:41:55 nymea nymead[2944]:     Backup discovery cache: false
Sep 24 18:41:55 nymea nymead[2944]:     Network manager: false
Sep 24 18:41:55 nymea nymead[2944]:     DescriptorCapabilities("0x00")
Sep 24 18:41:55 nymea nymead[2944]:     Extended active endpoint list available: false
Sep 24 18:41:55 nymea nymead[2944]:     Extended simple descriptor list available: false
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:    PowerDescriptor("0x10")
Sep 24 18:41:55 nymea nymead[2944]:     Power mode: ZigbeeDeviceProfile::PowerModeAlwaysOn
Sep 24 18:41:55 nymea nymead[2944]:     Available power sources: (ZigbeeDeviceProfile::PowerSourcePermanentMainSupply)
Sep 24 18:41:55 nymea nymead[2944]:     Power source: ZigbeeDeviceProfile::PowerSourcePermanentMainSupply
Sep 24 18:41:55 nymea nymead[2944]:     Power level: ZigbeeDeviceProfile::PowerLevelFull
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:   Endpoints:  2
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:     -  ZigbeeNodeEndpoint(0x01, Zigbee::ZigbeeProfileHomeAutomation, Zigbee::HomeAutomationDeviceCombinedInterface)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       Input clusters:
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0xfc7d, Unknown, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0000, Basic, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:         -  ZigbeeClusterAttribute(0x0005, ZigbeeDataType(Character string, STARKVIND Air purifier) )
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:         -  ZigbeeClusterAttribute(0x0004, ZigbeeDataType(Character string, IKEA of Sweden) )
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:         -  ZigbeeClusterAttribute(0x4000, ZigbeeDataType(Character string, 1.0.033) )
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0202, FanControl, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0003, Identify, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0005, Scenes, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0xfc57, Unknown, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0004, Groups, Server)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       Output clusters:
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0019, OtaUpgrade, Client)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x042a, Unknown, Client)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0400, IlluminanceMeasurement, Client)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:     -  ZigbeeNodeEndpoint(0xf2, Zigbee::ZigbeeProfileGreenPower, Zigbee::GreenPowerDeviceProxyMinimum)
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       Input clusters:
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       Output clusters:
Sep 24 18:41:55 nymea nymead[2944]:  D | ZigbeeNetwork:       -  ZigbeeCluster(0x0021, GreenPower, Client)

Can you please test this with the latest experimental build. Should be in there in a couple of hours.

I updated to the latest experimental. The air purifier joins the network, but still as unknown device.
As I tried this multiple times, enabling „Join network“ sets the app to reconnect to Nymea again, leaving System settings on some of the attempts. On other attempts the Network pane remains in a Closed Network indication, although the device is able to join. After several seconds the indication of an Open Network is seen, and all seems normal.

Alright, try again now please

The air purifier now gets recognized. Thank you very much!
I rejoined the device for testing and the App/Nymea reconnect problem occured again.
An available update for the device is recognized, which is very nice. Again a huge thank you for implementing this.
Update started, update status was correct, progress advanced up to 100%. Afterwards version was still the old one, new version listed under available version, but no update available indication any more on the screen. I rejoined the device again and thereafter the correct version was shown. Besides the version in the zigbee pane is different than the version in the device view.

  1. The connection state - works (tested by unplugging the device)
  2. Signal strength -didnt changed yet, although I changed positions (while updating the signal strength was alternating between 100% an 99%)
  3. Power switch: Switching off works, switching on shows no reaction
  4. Flow Rate 1-3: The device has the following markings on the rotary knob „Auto“, „1“-„5“. So 1 sets the device into 1, 2 into 3 and 3 into 5.
    Turning the knob on the device, does not change the setting in Nymea
  5. Missing features:
    PM25 value
    Air quality value
    Filter replacement
    LED enable
    Child lock
  • What exactly do you mean with “App/Nymea reconnect problem”?
  • There was an issue matching exactly your description in the new firmware upgrade stuff which was fixed last night. Not sure if that made it to the build yet. Lets see if that is fixed with the next builds. Indeed the version reported by the devices in the Zigbee Node descriptor is a different one than the one reported by the OTA cluster. I am not sure why, but this seems to be the case for all the devices I’ve checked so far. Not sure yet how to deal with that.
  1. ok
  1. Hmm… the signal strength is a bit weird indeed. It is calculated by the zigbee firmware on the stick in some way and seems to take into account the whole route of a node. That means that a node far away may report better signal strength if it takes a router with only good links to the network, but it may report very bad signal strength if the route includes a weak link on the way. In any case, the code for this is the same for all Zigbee devices, so unless something is very broken and all devices report wrong signal strengths, this is what the zigbee network says it is. Think it’s worth investigating deeper? Perhaps try to make sense of the value by looking at the neighbor and routing tables in the network map.
  2. Yes, I was afraid this may not work properly yet. The device seems to support the FanControl cluster which defines the following values: Off, Low, Medium, High, On, Auto, Smart. Right now, fliping the on/off switch in nymea will set the FanControl to Off or ON. The 3 levels of the fan slider would activate Low, Medium, High. This was my best guess as I have never had such a device. From what you describe, this device seems to work out of spec then.
  3. Same as above. Probably the 0xfc57, Unknown allows controlling the 5 levels individually in a non-spec compliant manner.
  4. Looking at the Cluster Info you posted, none of those features seem to be implemented in a ZigBee spec compliant way. Well, there is an IlluminanceMeasurement cluster which would probably report the light intensity. Is that what you mean with PM25 value? I can only guess right now that the others may be delivered by the 0x042a, Unknown Cluster somehow.

I’ll have a look on the internet if I find some documentation for this device.

The App/Nymea reconnect problem in the last two experimental versions:

  1. Setting “Permit Join” in the Zigbee Pane, the Network opens
  2. Shortly after, the connection of the App to Nymea drops and you get the “Connecting”/Nymea" screen
  3. Going back into the Zigbee Pane, a closed Zigbee network is shown. Most devices are unconnected and connect one by one shortly after. Setting “Permit Join” does nothing for a while until it then opens and all is working well again.

This happened with nearly all my rejoin attempts while testing the air purifier, if some time were in between the rejoins. I did the testing using the current iOS App and latest experimental.

  1. Ok, no Problem
  2. Also no problem. So you can set Auto and 1-5 on the device. The low/medium/high is corresponding to the 1/3/5. The intermediate steps are just missing. Off works, but it will not turn on. Changing settings on the device are not reflected back into Nymea.
  3. The device will not report illuminance, I guess. I have an idea, just have to setup my second Pi for it on the weekend. Also Z2M might be a reference.

That sounds like a crash of nymead. Does it only happen when the air purifier is involved? I don’t see this crash on my setups. Please
apt-get install systemd-coredump libnymea1-dbgsym nymead-dbgsym libnymea-zigbee-dbgsym nymea-plugin-zigbee-tradfri-dbgsym
and when it happens again, use sudo coredumpctl to see the list of crashes. Then use sudo coredumpctl dump <pid> to print the crash debug information.

I’ve found some resources on this ikea specific cluster and added an implementation for it last night. Let’s see what happens with todays build. It’s likely still not working 100% correct but hopefully some steps closer.

When using the first command I get:

E: Unable to locate package libnymea-zigbee-dbgsym

and for the second command:

sudo: coredumpctl: command not found

Just updated on latest experimental. The air purifier has now more features in the app, but they seem all unresponsive.

  1. Can not command power state to the device
  2. Can not command flow rate to the device
    Could not test VOC or Air quality at the moment.

should’ve been libnymea-zigbee1-dbgsym

Updated on latest experimental just now (would be great, if one could just copy the server version from Nymea app to paste here).
3.Power switch sets the device into „auto mode“ and „off“.
4.Flow rate- device is not responding to the settings in the app
5.Filter runtime remains at 0
6.Replace filter- could not be tested yet and probably connected to 5.
7.Light power-if the device is running, setting to on switches the light off and vice versa. Should be the other way around, with „on“ as default.
8.Air quality- remains at moderate (default?)
9.VOC remains at 0 (also default?)
10. Child lock- switching shows no reaction on the device (a LED should light up, if active).
Generally manual settings on the device are not reflected in Nymea.

Thank you very much for implementing the Starkvind air purifier in Nymea 1.5. It works great.

1 Like

Just received a Zigbee Silvercrest Smart Button that I cloud join as unknown device only.
Would be great, if there is a way, that it could be supported.

_TZ3000_rco1yzb1
TS004F
RxOnWhileIdle: false
Basic cluster version:
Endpoints
└┬ 1
├┬ Input clusters
│├─ 0x0003 Identify (Server)
│├─ 0x1000 Touchlink Commissioning (Server)
│├─ 0x0004 Groups (Server)
│├─ 0x0006 On Off (Server)
│├─ 0xe001 0xe001 (Server)
│├─ 0x0001 Power Configuration (Server)
│└─ 0x0000 Basic (Server)
└┬ Output clusters
├─ 0x0003 Identify (Client)
├─ 0x1000 Touchlink Commissioning (Client)
├─ 0x0005 Scenes (Client)
├─ 0x0004 Groups (Client)
├─ 0x0006 On Off (Client)
├─ 0x0008 Level Control (Client)
├─ 0x0019 Ota Upgrade (Client)
└─ 0x000a Time (Client)

Btw, it is really great, that the clusters are listed in the Zigbee Node descriptor. Hope that this is enough for a first guess.