What do I need at Ikea?

Today my Kajplats stopped responding. The Myggbett still reacted,

so it was only the bulb. I could still control the Kajplats via Apple Home app.

I rebooted my HE and could control the Kajplats build again. First time something like this happen after I added the Kajplats and Myggbett.

Looks like some more IKEA Matter toys (LED strips) coming soon …

Hmm, got the same issue today with my Kajplats. After a reboot of my HE everything works again.

Starting to suspect that the latest FW causing this since it worked flawless before the update. @kkossev have you notice any strange behaviour with Matter after the latest FW?

I don’t know if this is related to the latest HE platform version, but in the past two weeks I had two incidents, where the Matter interface of my C-7 hub was found to be inoperative in the morning. A few hours earlier there has been an automatic hub reboot..

A manual reboot started the Matter service again, but this problem affected badly the WAF… : (

I hadn't used my BILRESA button in some time as didn't really have a use for it. It had been sitting in a drawer unpaired to anything and no batteries in it.

Got it out. put in batteries, hit the reset for the 10-15 seconds, paired right up with Apple.

But if I hit either of the buttons nothing happens. No light blink, nothing coming into Home.

Unpaired, re-paired a couple times. No change.

Any thoughts or can I assume it died in the drawer for some reason?

It isn't clear what isn't happening that you are expecting. The light on the button doesn't blink when you press a button. Have you set up any automations in Home to respond to the buttons?

If you are talking about something happening in Hubitat, have you added it to Hubitat, and what device driver?

I could be wrong on the light blinking. I was thinking it flashed when I pushed a button.

But right now I am just looking for the button push in Home. Not seeing it. Wanted to make sure it was working before adding it to HE.

EDIT: Well I guess my memory escapes me. I thought that when I pushed a button it registered in the Home app, but apparently not. I added it to HE and it works. I guess in Home if I don't add an automation it shows up as unconfigured and won't show button pushes. Which is ok, just not the way I remember it before.

I have a few of these Ikea Matter devices installed and was experience random issues with devices going offline/showing as offline, being nonresponsive, etc... I randomly learned about the existence of the official Thread app you could use to do a survey of your thread mesh network (it's called "Thread Tools"), so I installed the app on my phone and discovered that out of the three Amazon Echo devices I have that operate as Thread Border Routers one of them had randomly decided to create its own Thread network instead of integrating into the network used by the other two Echos which was certainly the source of some of my problems. A reset and reconfiguration of the Echo device resolved that and, while I did see a reduction in issues, there were still some problems remaining that mostly involved battery-powered devices. The other night I read that a lot of those problems could be solved by updating the firmware. Unfortunately, you cannot update the firmware on these devices using Hubitat and I don't own an Ikea Dirigera hub. After doing some reading it turned out the solution was to use Home Assistant, so I installed VMWare Workstation, fired up a virtual HA instance on a laptop, used multi-admin to onboard the Matter devices into HA, and it immediately recognized many of the devices needed firmware updates and started doing it. I've since then converted an existing Raspberry Pi 4 I had for tinkering into a full-time HA installation that will be able to handle any future firmware updates. Forty-eight hours later and not a single one of my Ikea devices has become non-responsive or gone offline. Although it's too early to say with confidence my problems have been completely fixed long-term I don't remember the last time I went two days without an issue. If you haven't already surveyed your mesh network or updated the firmware on your Ikea Matter devices I'd suggest doing that to eliminate those factors from any issues you have with those devices.

If you have an Apple TV (Ethernet 2022 version), that would be another alternative.

Yes, it's just disappointing that the ability to natively update the firmware hasn't made it into Hubitat (yet). I'm on day three and still have no disconnects so I'm feeling pretty good about my setup now.

Yes, the older firmware for the IKEA Matter products was unreliable, but I've had no issues lately. For what it's worth, there is way to determine what firmware is available for anyone wanting to see if they have the latest without having a Matter Thread device like Apple TV to pair it with.

I spent some quality time with ChatGPT and found out I can get what I want just using a web browser (the result is JSON, but the Edge browser gives you an option to pretty-print):

Find all IKEA devices (IKEA is vendor 4476):

https://on.dcl.csa-iot.org/dcl/model/models/4476

Find the product you're interested in. For example:

GRILLPLATS → PID 4096
MYGGSPRAY → PID 12288
TIMMERFLOTTE → PID 32773
KLIPPBOK → PID 32774

https://on.dcl.csa-iot.org/dcl/model/versions/4476/4096

and decode the softwareVersionString:

https://on.dcl.csa-iot.org/dcl/model/versions/4476/4096/17039366

Installing Home Assistant in a virtual machine instance was fairly simple (very detailed instructions are available on the Home Assistant website) and VMWare Workstation is free for personal use so I think it's feasible for anyone to be able to get the firmware updated where necessary without any extra hardware beyond a single computer that can run VMWare.

I finally got around to having AI write a script to list all the IKEA Matter devices and their currrent firmware level. It's a PowerShell script so can be run on Windows as follows:

powershell -ExecutionPolicy Bypass -File .\ikea_matter_thread_firmware.ps1

# IKEA Matter-over-Thread Firmware Report
# Windows 11 PowerShell 5.1+
#
# Source: CSA Matter Distributed Compliance Ledger (DCL)
# IKEA Vendor ID (VID): 4476
#
# Produces a clean one-line-per-product report showing the newest
# softwareVersionString published by IKEA for IKEA Matter-over-Thread
# endpoint devices.
#
# NOTE:
# The CSA DCL does not expose a generic "transport = Thread" field in
# the product-model response. The Thread endpoint list below is therefore
# an explicit IKEA Matter-over-Thread PID allow-list, based on IKEA's
# published Matter-over-Thread products. DIRIGERA is intentionally excluded.
#
# If IKEA adds a new Matter-over-Thread PID, add it to $ThreadPids.

$ErrorActionPreference = "Stop"

$Base = "https://on.dcl.csa-iot.org"
$Vid  = 4476

# IKEA Matter-over-Thread endpoint PIDs currently represented in the DCL.
# PID -> short category.  The category is used only for a cleaner report.
$ThreadPids = @{
    32773 = "Sensor"
    32774 = "Sensor"
    12288 = "Sensor"
    32775 = "Sensor"
    32768 = "Remote"
    32769 = "Remote"
    12289 = "Air quality"
    12292 = "Air quality"
    36864 = "Bulb"
    36865 = "Bulb"
    36866 = "Bulb"
    36867 = "Bulb"
    36868 = "Bulb"
    36869 = "Bulb"
    36870 = "Bulb"
    36871 = "Bulb"
    36872 = "Bulb"
    36873 = "Bulb"
    36874 = "Bulb"
    36879 = "Lamp"
    36880 = "Lamp"
    36881 = "Bulb"
    36882 = "Bulb"
    36883 = "Bulb"
    36884 = "Bulb"
    36885 = "Bulb"
    36886 = "Bulb"
    36887 = "Bulb"
    36888 = "Bulb"
    36889 = "Bulb"
    36891 = "Lamp"
    36893 = "Lamp"
    4096  = "Plug"
    4097  = "Plug"
    4098  = "Plug"
    20480 = "Thermostat"
}

function Get-DclJson([string]$Path) {
    $Url = "$Base$Path"
    try {
        Invoke-RestMethod -Uri $Url -Method Get -Headers @{ Accept = "application/json" }
    }
    catch {
        Write-Warning "DCL request failed: $Url"
        Write-Warning $_.Exception.Message
        return $null
    }
}

function Get-LatestVersion([int]$ProductPid) {
    $v = Get-DclJson "/dcl/model/versions/$Vid/$ProductPid"

    if ($null -eq $v -or $null -eq $v.modelVersions -or
        $null -eq $v.modelVersions.softwareVersions) {
        return $null
    }

    $softwareVersions = @($v.modelVersions.softwareVersions)

    $details = @()

    foreach ($sv in $softwareVersions) {
        $d = Get-DclJson "/dcl/model/versions/$Vid/$ProductPid/$sv"
        if ($null -ne $d -and $null -ne $d.modelVersion) {
            $details += $d.modelVersion
        }
    }

    if ($details.Count -eq 0) {
        return $null
    }

    # Highest DCL softwareVersion is treated as the newest published record.
    $latest = $details | Sort-Object { [uint64]$_.softwareVersion } -Descending | Select-Object -First 1
    return $latest
}

Write-Host ""
Write-Host "============================================================" -ForegroundColor Cyan
Write-Host "        IKEA MATTER-OVER-THREAD FIRMWARE REPORT" -ForegroundColor Cyan
Write-Host "============================================================" -ForegroundColor Cyan
Write-Host "CSA DCL source: $Base"
Write-Host "IKEA Vendor ID: $Vid"
Write-Host ""

# Get the current IKEA product catalog.
$catalog = Get-DclJson "/dcl/model/models/$Vid"

if ($null -eq $catalog -or $null -eq $catalog.vendorProducts) {
    throw "Could not retrieve IKEA's product catalog from the CSA DCL."
}

# Index products by PID.
$productsByPid = @{}

foreach ($p in $catalog.vendorProducts.products) {
    $productsByPid[[int]$p.pid] = $p
}

$rows = @()

foreach ($ProductPid in ($ThreadPids.Keys | Sort-Object)) {

    if (-not $productsByPid.ContainsKey($ProductPid)) {
        continue
    }

    $p = $productsByPid[$ProductPid]
    $latest = Get-LatestVersion $ProductPid

    if ($null -eq $latest) {
        $rows += [pscustomobject]@{
            Product         = $p.name.Trim()
            Category        = $ThreadPids[$ProductPid]
            PID             = $ProductPid
            PartNumber      = [string]$p.partNumber
            Firmware        = "N/A"
            DclVersion      = ""
            Status          = "No version record"
        }
        continue
    }

    $firmware = [string]$latest.softwareVersionString

    # Some DCL records currently contain the numeric softwareVersion itself
    # instead of a dotted version string. Flag those rather than pretending
    # we know the missing text representation.
    $status = "OK"
    if ($firmware -match '^\d+$') {
        $status = "DCL record has no dotted version string"
    }

    $rows += [pscustomobject]@{
        Product         = $p.name.Trim()
        Category        = $ThreadPids[$ProductPid]
        PID             = $ProductPid
        PartNumber      = [string]$p.partNumber
        Firmware        = $firmware
        DclVersion      = [string]$latest.softwareVersion
        Status          = $status
    }
}

$rows = @($rows | Sort-Object Category, Product, PID)

Write-Host ""
Write-Host ("{0,-42} {1,-14} {2,7} {3,-18} {4,-10}" -f `
    "PRODUCT", "CATEGORY", "PID", "PART NUMBER", "FIRMWARE") -ForegroundColor Yellow
Write-Host ("{0,-42} {1,-14} {2,7} {3,-18} {4,-10}" -f `
    ("-" * 42), ("-" * 14), ("-" * 7), ("-" * 18), ("-" * 10))

foreach ($r in $rows) {
    $product = $r.Product
    if ($product.Length -gt 42) { $product = $product.Substring(0,39) + "..." }

    $part = $r.PartNumber
    if ($part.Length -gt 18) { $part = $part.Substring(0,15) + "..." }

    $line = "{0,-42} {1,-14} {2,7} {3,-18} {4,-10}" -f `
        $product, $r.Category, $r.PID, $part, $r.Firmware

    if ($r.Status -eq "OK") {
        Write-Host $line
    }
    else {
        Write-Host $line -ForegroundColor Yellow
    }
}

Write-Host ""
Write-Host "============================================================" -ForegroundColor Cyan
Write-Host ("{0} IKEA Matter-over-Thread endpoint models reported." -f $rows.Count)
Write-Host "Firmware = newest softwareVersion record currently published in the DCL."
Write-Host "The firmware text is taken directly from DCL softwareVersionString."
Write-Host ""
Write-Host "IMPORTANT: The DCL does not report what firmware is installed on"
Write-Host "your individual device. It reports IKEA's published firmware records."
Write-Host "============================================================" -ForegroundColor Cyan

# ------------------------------------------------------------
# Optional CSV output
# ------------------------------------------------------------
# Uncomment the following lines if you want a spreadsheet-friendly CSV
# on your Desktop.
#
# $csvPath = Join-Path $env:USERPROFILE "Desktop\IKEA-Matter-Thread-Firmware.csv"
# $rows | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8
# Write-Host ""
# Write-Host "CSV saved to: $csvPath" -ForegroundColor Green


The output of the above script as of today:

PS C:\tmp> powershell -ExecutionPolicy Bypass -File .\ikea_matter_thread_firmware.ps1

============================================================
        IKEA MATTER-OVER-THREAD FIRMWARE REPORT
============================================================
CSA DCL source: https://on.dcl.csa-iot.org
IKEA Vendor ID: 4476


PRODUCT                                    CATEGORY           PID PART NUMBER        FIRMWARE
------------------------------------------ -------------- ------- ------------------ ----------
ALPSTUGA air quality monitor               Air quality      12289 E2495              1.0.26
ALPSTUGA air quality monitor               Air quality      12292 E2495-JP           1.0.26
KAJPLATS E12 CWS globe 800lm               Bulb             36887 LED2409G6NA        1.2.0
KAJPLATS E12 WS B38 CL 450lm               Bulb             36889 LED2402C3NA        1.2.0
KAJPLATS E12 WS globe 800lm                Bulb             36885 LED2404G6NA        1.2.0
KAJPLATS E14 CWS globe 806lm               Bulb             36870 LED2409G6          1.2.0
KAJPLATS E14 WS B38 CL 470lm               Bulb             36872 36872              1.2.0
KAJPLATS E14 WS globe 806lm                Bulb             36868 LED2404G6          1.2.0
KAJPLATS E26 CWS globe 1100lm              Bulb             36886 LED2405G8NA        1.2.0
KAJPLATS E26 WS globe 1100lm               Bulb             36882 LED2407G8NA        1.2.0
KAJPLATS E26 WS globe 1600lm               Bulb             36884 LED2408G10NA       1.2.0
KAJPLATS E26 WS globe 450lm                Bulb             36881 LED2406G4NA        1.1.20
KAJPLATS E27 CWS globe 1055lm              Bulb             36869 LED2405G8          1.2.0
KAJPLATS E27 WS G60 clear 470lm            Bulb             36874 LED2411G3          1.1.0
KAJPLATS E27 WS G95 clear 806lm            Bulb             36873 LED2401G5          1.1.0
KAJPLATS E27 WS globe 1055lm               Bulb             36865 LED2407G8          1.2.0
KAJPLATS E27 WS globe 1521lm               Bulb             36867 LED2408G10         1.2.0
KAJPLATS E27 WS globe 470lm                Bulb             36864 LED2406G4          1.1.20
KAJPLATS GU10 CWS 575lm                    Bulb             36871 LED2410R5          1.2.0
KAJPLATS GU10 CWS 575lm                    Bulb             36888 LED2410R5NA        1.2.0
KAJPLATS GU10 WS 575lm                     Bulb             36866 LED2403R5          1.2.0
KAJPLATS GU10 WS 575lm                     Bulb             36883 LED2403R5NA        1.2.0
DUBBELKISEL 30W                            Lamp             36891 E2512              1.2.0
DUBBELKISEL 30W NA                         Lamp             36893 E2513              1.2.0
VARMBLIXT pendant lamp                     Lamp             36879 E2516              1.0.6
VARMBLIXT table/wall lamp                  Lamp             36880 E2499              1.0.6
GRILLPLATS plug                            Plug              4096 E2491              1.4.6
TOFSMYGGA plug black/outdoor               Plug              4097  E2435-NA          1.4.8
TOFSMYGGA plug black/outdoor               Plug              4098 E2435-EU           1.4.6
BILRESA dual button                        Remote           32769 E2489              1.9.15
BILRESA scroll wheel                       Remote           32768 E2490              1.9.15
KLIPPBOK water leak sensor                 Sensor           32774 E2493              1.0.13
MYGGBETT door/window sensor                Sensor           32775 E2492              1.1.4
MYGGSPRAY wrlss mtn sensor                 Sensor           12288 E2494              1.1.4
TIMMERFLOTTE temp/hmd sensor               Sensor           32773 E2314              1.0.21
LILJEBAGGE radiator thermostat             Thermostat       20480 E2497              1.1.0

============================================================
36 IKEA Matter-over-Thread endpoint models reported.
Firmware = newest softwareVersion record currently published in the DCL.
The firmware text is taken directly from DCL softwareVersionString.

IMPORTANT: The DCL does not report what firmware is installed on
your individual device. It reports IKEA's published firmware records.
============================================================

Is there a driver for LILJEBAGGE?

Just got one and paired it to my Apple Home and then shared it to my C8.
Since there is no driver it shows as Device and can’t show or do anything.

Since that's not available in the U.S., I know nothing about it. But have you tried Generic Matter Thermostat?

I did but that driver didn’t work. No values and I could not control the thermostat.
@kkossev any plans to get one and try it out? :wink:

LILJEBAGGE is still not available at the IKEA stores where I can purchase from ... I will definitely try one (it has a great price!), but it should also work with the HE inbuilt Generic Matter drivers. We can try to find out where the problem is.

I pinged you in the 'Matter Advanced Device' thread, let me know there what you see for this device.

Oh, I haven’t tried that yet. Will do and also look at the Matter Advanced Device and report back.
Thank you!

@kkossev @HAL9000 Update: I removed the thermostat and re-added it, then selected the Generic Matter Thermostat. This time, it seems to be working.
I must have done something wrong the last time. I'll report back if anything isn't working.