From b7c24b0e1afe605fd394f221841ba66d0a8d8abc Mon Sep 17 00:00:00 2001 From: Ravi Teja KNTS Date: Sat, 10 Oct 2026 13:32:01 +0530 Subject: [PATCH 1/3] Finish plan step 2e and clear the content pass follow-ups Plan 2e (Sol): - Every page reads its words from MDX. The database fallbacks are gone, and the ad network pages moved to MDX word for word. - Content sync commands and placeholder preview scripts are retired. update-fields.mjs keeps titles, search text and cards. - The publisher no longer requires markdown fields, and large plans ship as Git blobs with a SHA-256 check instead of inside the GitHub deployment record. - Migration 20261010064142 makes the old columns optional and stops the tool date function reading them. The drop ships next release. Follow-ups: - BreadcrumbList structured data on every indexable page (Sol). - DNS lookup sets the AD bit, so "Authenticated" can show (Sol). - Shortcut records: names, platforms, sources, duplicates, thin records, and the old intro field removed (Luna). - Zigbee platform labels mapped to product names; launch link types normalized and submission evidence filled (Luna). - One
per page, no "Registry: Registry", hostnames wrap at dots, plainer tool words, whole code tokens in tables, phone tables (Opus). - Zigbee link and date labels, fair capability filters, source and checked date on shortcut pages (Opus). - The free-without-required-backlink filter only counts checked flows. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/stack127-publish-pages.yml | 3 +- .../[slug]/content/adapex/article.mdx | 1 + .../[slug]/content/adapex/intro.mdx | 1 + .../[slug]/content/aditude/article.mdx | 1 + .../[slug]/content/aditude/intro.mdx | 1 + .../[slug]/content/adnimation/article.mdx | 1 + .../[slug]/content/adnimation/intro.mdx | 1 + .../[slug]/content/adpushup/article.mdx | 1 + .../[slug]/content/adpushup/intro.mdx | 1 + .../amazon-publisher-services/article.mdx | 1 + .../amazon-publisher-services/intro.mdx | 1 + .../content/anymind-anymanager/article.mdx | 1 + .../content/anymind-anymanager/intro.mdx | 1 + .../content/buysellads-carbon-ads/article.mdx | 1 + .../content/buysellads-carbon-ads/intro.mdx | 1 + .../[slug]/content/clickio/article.mdx | 1 + .../[slug]/content/clickio/intro.mdx | 1 + .../[slug]/content/concert/article.mdx | 1 + .../[slug]/content/concert/intro.mdx | 1 + .../[slug]/content/ethicalads/article.mdx | 1 + .../[slug]/content/ethicalads/intro.mdx | 1 + .../[slug]/content/ezoic/article.mdx | 1 + .../[slug]/content/ezoic/intro.mdx | 1 + .../[slug]/content/freestar/article.mdx | 1 + .../[slug]/content/freestar/intro.mdx | 1 + .../[slug]/content/geniee-ssp/article.mdx | 1 + .../[slug]/content/geniee-ssp/intro.mdx | 1 + .../[slug]/content/google-adsense/article.mdx | 1 + .../[slug]/content/google-adsense/intro.mdx | 1 + .../ad-networks/[slug]/content/index.ts | 139 +++++++++++++++ .../[slug]/content/infolinks/article.mdx | 1 + .../[slug]/content/infolinks/intro.mdx | 1 + .../content/journey-by-mediavine/article.mdx | 1 + .../content/journey-by-mediavine/intro.mdx | 1 + .../[slug]/content/media-net/article.mdx | 1 + .../[slug]/content/media-net/intro.mdx | 1 + .../[slug]/content/mediavine/article.mdx | 1 + .../[slug]/content/mediavine/intro.mdx | 1 + .../[slug]/content/mgid/article.mdx | 1 + .../ad-networks/[slug]/content/mgid/intro.mdx | 1 + .../content/monetizemore-pubguru/article.mdx | 1 + .../content/monetizemore-pubguru/intro.mdx | 1 + .../[slug]/content/monumetric/article.mdx | 1 + .../[slug]/content/monumetric/intro.mdx | 1 + .../[slug]/content/newor-media/article.mdx | 1 + .../[slug]/content/newor-media/intro.mdx | 1 + .../[slug]/content/nitropay/article.mdx | 1 + .../[slug]/content/nitropay/intro.mdx | 1 + .../[slug]/content/opti-digital/article.mdx | 1 + .../[slug]/content/opti-digital/intro.mdx | 1 + .../[slug]/content/playwire/article.mdx | 1 + .../[slug]/content/playwire/intro.mdx | 1 + .../[slug]/content/pubfuture/article.mdx | 1 + .../[slug]/content/pubfuture/intro.mdx | 1 + .../[slug]/content/pubgalaxy/article.mdx | 1 + .../[slug]/content/pubgalaxy/intro.mdx | 1 + .../[slug]/content/publift/article.mdx | 1 + .../[slug]/content/publift/intro.mdx | 1 + .../[slug]/content/publir/article.mdx | 1 + .../[slug]/content/publir/intro.mdx | 1 + .../content/publisher-collective/article.mdx | 1 + .../content/publisher-collective/intro.mdx | 1 + .../[slug]/content/pubnation/article.mdx | 1 + .../[slug]/content/pubnation/intro.mdx | 1 + .../[slug]/content/pubpower/article.mdx | 1 + .../[slug]/content/pubpower/intro.mdx | 1 + .../[slug]/content/raptive/article.mdx | 1 + .../[slug]/content/raptive/intro.mdx | 1 + .../[slug]/content/refinery89/article.mdx | 1 + .../[slug]/content/refinery89/intro.mdx | 1 + .../[slug]/content/revcontent/article.mdx | 1 + .../[slug]/content/revcontent/intro.mdx | 1 + .../[slug]/content/setupad/article.mdx | 1 + .../[slug]/content/setupad/intro.mdx | 1 + .../[slug]/content/she-media/article.mdx | 1 + .../[slug]/content/she-media/intro.mdx | 1 + .../[slug]/content/snack-media/article.mdx | 1 + .../[slug]/content/snack-media/intro.mdx | 1 + .../[slug]/content/snigel/article.mdx | 1 + .../[slug]/content/snigel/intro.mdx | 1 + .../[slug]/content/sovrn/article.mdx | 1 + .../[slug]/content/sovrn/intro.mdx | 1 + .../[slug]/content/sparteo/article.mdx | 1 + .../[slug]/content/sparteo/intro.mdx | 1 + .../[slug]/content/taboola/article.mdx | 1 + .../[slug]/content/taboola/intro.mdx | 1 + .../[slug]/content/teads/article.mdx | 1 + .../[slug]/content/teads/intro.mdx | 1 + .../[slug]/content/the-moneytizer/article.mdx | 1 + .../[slug]/content/the-moneytizer/intro.mdx | 1 + .../[slug]/content/venatus/article.mdx | 1 + .../[slug]/content/venatus/intro.mdx | 1 + .../(directories)/ad-networks/[slug]/page.tsx | 11 +- .../ad-networks/content/article.mdx | 1 + .../ad-networks/content/intro.mdx | 1 + app/(site)/(directories)/ad-networks/page.tsx | 9 +- .../(directories)/epp-status-codes/page.tsx | 2 +- .../fusion-360/content/intro.mdx | 2 +- .../keyboard-shortcuts-reference.tsx | 24 +++ .../keyboard-shortcuts.module.css | 6 + .../content/free-listings.mdx | 2 +- .../(directories)/tld-directory/page.tsx | 2 +- .../zigbee-devices/content/intro.mdx | 2 +- .../(directories)/zigbee-devices/filters.ts | 57 +++++- .../(directories)/zigbee-devices/page.tsx | 5 +- .../zigbee-devices/zigbee-device-browser.tsx | 6 +- .../zigbee-devices/zigbee-device-view.tsx | 4 +- app/(site)/(tools)/(dns)/caa-checker/page.tsx | 2 +- .../(tools)/(dns)/dns-change-checker/page.tsx | 2 +- .../dns-lookup/dns-lookup-content.module.css | 17 -- .../(dns)/dns-lookup/dns-lookup-tool.tsx | 26 ++- app/(site)/(tools)/(dns)/dns-lookup/page.tsx | 2 +- app/(site)/(tools)/(dns)/dns-trace/page.tsx | 2 +- .../(tools)/(dns)/dnssec-checker/page.tsx | 2 +- .../(tools)/(dns)/nameserver-checker/page.tsx | 2 +- app/(site)/(tools)/(dns)/soa-checker/page.tsx | 2 +- .../(domain)/domain-age/domain-age-tool.tsx | 7 +- .../(tools)/(domain)/domain-age/page.tsx | 2 +- .../domain-availability-view.ts | 2 +- .../(domain)/domain-availability/page.tsx | 2 +- .../domain-expiry/domain-expiry-tool.tsx | 7 +- .../(tools)/(domain)/domain-expiry/page.tsx | 2 +- .../domain-lookup/domain-lookup-tool.tsx | 2 +- .../(tools)/(domain)/domain-lookup/page.tsx | 2 +- .../domain-owner/domain-owner-tool.tsx | 2 +- .../(tools)/(domain)/domain-owner/page.tsx | 2 +- .../domain-registrar-tool.tsx | 2 +- .../(domain)/domain-registrar/page.tsx | 2 +- .../domain-report/domain-report-view.ts | 2 +- .../(tools)/(domain)/domain-report/page.tsx | 2 +- .../(domain)/multi-tld-availability/page.tsx | 2 +- .../(domain)/punycode-converter/page.tsx | 2 +- .../(domain)/transfer-readiness/page.tsx | 2 +- .../transfer-readiness-tool.tsx | 2 +- .../(saas)/arr-calculator/arr-calculator.tsx | 2 +- .../content/article.mdx | 9 +- .../ltv-cac-calculator/content/article.mdx | 10 +- .../(saas)/mrr-calculator/content/usage.mdx | 2 +- .../(saas)/mrr-calculator/mrr-calculator.tsx | 6 +- .../raid-calculator/content/usage.mdx | 2 +- .../raid-calculator/raid-calculator.tsx | 4 +- .../chmod-calculator-engine.ts | 2 +- .../chmod-calculator.module.css | 4 - .../chmod-calculator/chmod-calculator.tsx | 2 +- app/(site)/(tools)/ip-asn-lookup/page.tsx | 2 +- app/ui/content-markdown.module.css | 8 +- app/ui/content-markdown.tsx | 1 + app/ui/courses/course-shell.tsx | 21 +-- app/ui/directories/directory-page-content.tsx | 10 +- app/ui/site/tool-page-content.tsx | 17 +- .../keyboard-shortcuts/altplusctrl-backlog.md | 2 +- .../tool-spec.md | 2 +- .../implementation-report.md | 2 +- content_docs/zigbee-devices/README.md | 39 +++-- content_docs/zigbee-devices/brief.md | 2 +- content_docs/zigbee-devices/data-workflow.md | 16 +- lib/breadcrumbs.ts | 40 ++++- lib/directory-page-content.ts | 10 -- lib/directory-pages.ts | 8 +- lib/dns/dns-wire.ts | 3 +- lib/launch-directories-query.ts | 15 +- lib/page-registry.ts | 16 +- lib/registry-layout.tsx | 11 +- lib/shortcuts/apps/1password.ts | 2 - lib/shortcuts/apps/7-zip.ts | 2 - lib/shortcuts/apps/ableton-live.ts | 9 +- lib/shortcuts/apps/adobe-acrobat-pro.ts | 2 - lib/shortcuts/apps/adobe-acrobat-reader.ts | 2 - lib/shortcuts/apps/adobe-after-effects.ts | 2 - lib/shortcuts/apps/adobe-audition.ts | 2 - lib/shortcuts/apps/adobe-illustrator.ts | 2 - lib/shortcuts/apps/adobe-indesign.ts | 2 - lib/shortcuts/apps/adobe-lightroom-classic.ts | 2 - lib/shortcuts/apps/adobe-premiere-pro.ts | 2 - lib/shortcuts/apps/adobe-premiere-rush.ts | 2 - .../apps/adobe-substance-3d-painter.ts | 2 - lib/shortcuts/apps/adobe-xd.ts | 2 - lib/shortcuts/apps/affinity-designer.ts | 2 - lib/shortcuts/apps/affinity-photo.ts | 2 - lib/shortcuts/apps/aider.ts | 2 - lib/shortcuts/apps/airtable.ts | 2 - lib/shortcuts/apps/alfred.ts | 2 - lib/shortcuts/apps/amplitude.ts | 2 - lib/shortcuts/apps/android-studio.ts | 2 - lib/shortcuts/apps/anydesk.ts | 2 - lib/shortcuts/apps/apple-music.ts | 2 - lib/shortcuts/apps/apple-notes.ts | 2 - lib/shortcuts/apps/arc-browser.ts | 6 +- lib/shortcuts/apps/asana.ts | 2 - lib/shortcuts/apps/audacity.ts | 2 - lib/shortcuts/apps/autocad.ts | 2 - lib/shortcuts/apps/autodesk-maya.ts | 2 - lib/shortcuts/apps/autodesk-revit.ts | 2 - lib/shortcuts/apps/axure-rp.ts | 2 - lib/shortcuts/apps/azure-devops.ts | 2 - lib/shortcuts/apps/balsamiq-wireframes.ts | 2 - lib/shortcuts/apps/basecamp.ts | 2 - lib/shortcuts/apps/bear.ts | 2 - lib/shortcuts/apps/bitbucket.ts | 2 - lib/shortcuts/apps/blender.ts | 26 +-- lib/shortcuts/apps/bluebeam-revu.ts | 2 - lib/shortcuts/apps/brave.ts | 4 +- lib/shortcuts/apps/buffer.ts | 2 - lib/shortcuts/apps/canva.ts | 2 - lib/shortcuts/apps/chrome.ts | 2 - lib/shortcuts/apps/cinema-4d.ts | 2 - lib/shortcuts/apps/claude-code.ts | 2 - lib/shortcuts/apps/clickup.ts | 2 - lib/shortcuts/apps/clip-studio-paint.ts | 2 - lib/shortcuts/apps/clockify.ts | 2 - lib/shortcuts/apps/coda.ts | 2 - lib/shortcuts/apps/codex.ts | 2 - lib/shortcuts/apps/confluence.ts | 2 - lib/shortcuts/apps/craft.ts | 2 - lib/shortcuts/apps/cubase.ts | 4 +- lib/shortcuts/apps/cursor.ts | 2 - .../apps/davinci-resolve-fusion-page.ts | 12 +- lib/shortcuts/apps/davinci-resolve.ts | 9 +- lib/shortcuts/apps/dbeaver.ts | 2 - lib/shortcuts/apps/deepl.ts | 15 +- lib/shortcuts/apps/descript.ts | 17 +- lib/shortcuts/apps/discord.ts | 12 +- lib/shortcuts/apps/draw-io-diagrams-net.ts | 4 +- lib/shortcuts/apps/eclipse.ts | 2 - lib/shortcuts/apps/emacs.ts | 2 - lib/shortcuts/apps/evernote.ts | 2 - lib/shortcuts/apps/excalidraw.ts | 2 - lib/shortcuts/apps/excel.ts | 2 - lib/shortcuts/apps/fantastical.ts | 2 - lib/shortcuts/apps/figjam.ts | 2 - lib/shortcuts/apps/figma.ts | 2 - lib/shortcuts/apps/filezilla.ts | 2 - lib/shortcuts/apps/final-cut-pro.ts | 2 - lib/shortcuts/apps/firefox.ts | 2 - lib/shortcuts/apps/fl-studio.ts | 2 - lib/shortcuts/apps/framer.ts | 2 - lib/shortcuts/apps/freshdesk.ts | 2 - lib/shortcuts/apps/front.ts | 2 - lib/shortcuts/apps/fusion-360.ts | 4 +- lib/shortcuts/apps/ghostty.ts | 2 - lib/shortcuts/apps/gimp.ts | 8 +- lib/shortcuts/apps/github-copilot.ts | 41 +---- lib/shortcuts/apps/github-desktop.ts | 2 - lib/shortcuts/apps/github.ts | 2 - lib/shortcuts/apps/gitkraken.ts | 2 - lib/shortcuts/apps/gitlab.ts | 2 - lib/shortcuts/apps/gmail.ts | 2 - lib/shortcuts/apps/gnome.ts | 4 +- lib/shortcuts/apps/godot-engine.ts | 2 - lib/shortcuts/apps/goodnotes.ts | 2 - lib/shortcuts/apps/google-docs.ts | 2 - lib/shortcuts/apps/google-drive.ts | 2 - lib/shortcuts/apps/google-forms.ts | 2 - lib/shortcuts/apps/google-gemini.ts | 2 - lib/shortcuts/apps/google-meet.ts | 2 - lib/shortcuts/apps/google-sheets.ts | 2 - lib/shortcuts/apps/google-slides.ts | 2 - lib/shortcuts/apps/grammarly.ts | 2 - lib/shortcuts/apps/harvest.ts | 2 - lib/shortcuts/apps/httpie.ts | 2 - lib/shortcuts/apps/ia-writer.ts | 2 - lib/shortcuts/apps/imessage.ts | 2 - lib/shortcuts/apps/inkscape.ts | 8 +- lib/shortcuts/apps/insomnia.ts | 2 - lib/shortcuts/apps/intellij-idea.ts | 2 - lib/shortcuts/apps/intercom.ts | 2 - lib/shortcuts/apps/iterm2.ts | 2 - lib/shortcuts/apps/jira.ts | 2 - lib/shortcuts/apps/joplin.ts | 2 - lib/shortcuts/apps/jupyter-notebook.ts | 2 - lib/shortcuts/apps/keynote.ts | 2 - lib/shortcuts/apps/krita.ts | 2 - lib/shortcuts/apps/libreoffice-writer.ts | 2 - lib/shortcuts/apps/linear.ts | 10 +- lib/shortcuts/apps/linkedin.ts | 2 - lib/shortcuts/apps/linux-kde-plasma.ts | 4 +- lib/shortcuts/apps/logic-pro.ts | 2 - lib/shortcuts/apps/logseq.ts | 2 - lib/shortcuts/apps/looker.ts | 2 - lib/shortcuts/apps/loom.ts | 2 - lib/shortcuts/apps/macos-finder.ts | 2 - lib/shortcuts/apps/macos-spotlight.ts | 2 - lib/shortcuts/apps/macos.ts | 2 - lib/shortcuts/apps/mastodon.ts | 2 - lib/shortcuts/apps/matlab.ts | 2 - lib/shortcuts/apps/mattermost.ts | 2 - lib/shortcuts/apps/microsoft-edge.ts | 4 +- lib/shortcuts/apps/microsoft-onedrive.ts | 2 - lib/shortcuts/apps/microsoft-onenote.ts | 2 - lib/shortcuts/apps/microsoft-outlook.ts | 2 - lib/shortcuts/apps/microsoft-powerpoint.ts | 2 - lib/shortcuts/apps/microsoft-powertoys.ts | 2 - lib/shortcuts/apps/microsoft-teams.ts | 2 - lib/shortcuts/apps/microsoft-word.ts | 2 - lib/shortcuts/apps/milanote.ts | 2 - lib/shortcuts/apps/miro.ts | 2 - lib/shortcuts/apps/monday-com.ts | 2 - lib/shortcuts/apps/mozilla-thunderbird.ts | 2 - lib/shortcuts/apps/neovim.ts | 2 - lib/shortcuts/apps/netflix.ts | 2 - lib/shortcuts/apps/notability.ts | 2 - lib/shortcuts/apps/notepad-plus-plus.ts | 2 - lib/shortcuts/apps/notion.ts | 2 - lib/shortcuts/apps/numbers.ts | 2 - lib/shortcuts/apps/obs-studio.ts | 2 - lib/shortcuts/apps/obsidian.ts | 2 - lib/shortcuts/apps/omnifocus.ts | 2 - lib/shortcuts/apps/opencode.ts | 2 - lib/shortcuts/apps/opera.ts | 2 - lib/shortcuts/apps/oracle-virtualbox.ts | 33 ++-- lib/shortcuts/apps/otter-ai.ts | 19 +- lib/shortcuts/apps/pages.ts | 2 - lib/shortcuts/apps/paint-net.ts | 2 - lib/shortcuts/apps/penpot.ts | 2 - lib/shortcuts/apps/pi-coding-agent.ts | 2 - lib/shortcuts/apps/power-bi.ts | 2 - lib/shortcuts/apps/powershell.ts | 2 - lib/shortcuts/apps/presonus-studio-one.ts | 2 - lib/shortcuts/apps/prezi.ts | 2 - lib/shortcuts/apps/pro-tools.ts | 2 - lib/shortcuts/apps/protopie.ts | 2 - lib/shortcuts/apps/pycharm.ts | 2 - lib/shortcuts/apps/quickbooks-online.ts | 2 - lib/shortcuts/apps/raycast.ts | 2 - lib/shortcuts/apps/reddit.ts | 2 - lib/shortcuts/apps/riverside-fm.ts | 2 - lib/shortcuts/apps/rocket-chat.ts | 35 +++- lib/shortcuts/apps/rstudio.ts | 2 - lib/shortcuts/apps/safari.ts | 2 - lib/shortcuts/apps/salesforce.ts | 2 - lib/shortcuts/apps/scrivener.ts | 2 - lib/shortcuts/apps/signal.ts | 2 - lib/shortcuts/apps/simplenote.ts | 2 - lib/shortcuts/apps/sketch.ts | 2 - lib/shortcuts/apps/sketchup.ts | 2 - lib/shortcuts/apps/slack.ts | 2 - lib/shortcuts/apps/smartsheet.ts | 2 - lib/shortcuts/apps/solidworks.ts | 2 - lib/shortcuts/apps/spark-mail.ts | 2 - lib/shortcuts/apps/spotify.ts | 2 - lib/shortcuts/apps/squarespace.ts | 2 - lib/shortcuts/apps/sublime-text.ts | 7 +- lib/shortcuts/apps/superhuman.ts | 2 - lib/shortcuts/apps/tableau.ts | 2 - lib/shortcuts/apps/tableplus.ts | 2 - lib/shortcuts/apps/tally-forms.ts | 2 - lib/shortcuts/apps/telegram.ts | 2 - lib/shortcuts/apps/things-3.ts | 124 +++++++------ lib/shortcuts/apps/tmux.ts | 2 - lib/shortcuts/apps/todoist.ts | 2 - lib/shortcuts/apps/typora.ts | 2 - lib/shortcuts/apps/ulysses.ts | 2 - lib/shortcuts/apps/vim.ts | 2 - lib/shortcuts/apps/visual-studio.ts | 2 - lib/shortcuts/apps/vmware-workstation.ts | 13 +- lib/shortcuts/apps/vscode.ts | 2 - lib/shortcuts/apps/warp.ts | 2 - lib/shortcuts/apps/webflow.ts | 2 - lib/shortcuts/apps/webstorm.ts | 2 - lib/shortcuts/apps/whimsical.ts | 2 - lib/shortcuts/apps/windows-file-explorer.ts | 5 +- lib/shortcuts/apps/windows-snipping-tool.ts | 2 - lib/shortcuts/apps/windows-terminal.ts | 2 - lib/shortcuts/apps/windows.ts | 2 - lib/shortcuts/apps/winmerge.ts | 2 - lib/shortcuts/apps/wireshark.ts | 18 +- lib/shortcuts/apps/wix.ts | 2 - lib/shortcuts/apps/wondershare-filmora.ts | 2 - lib/shortcuts/apps/wordpress-admin.ts | 2 - lib/shortcuts/apps/wps-office.ts | 2 - lib/shortcuts/apps/wrike.ts | 2 - lib/shortcuts/apps/x-twitter.ts | 9 +- lib/shortcuts/apps/youtrack.ts | 2 - lib/shortcuts/apps/youtube.ts | 10 +- lib/shortcuts/apps/zbrush.ts | 2 - lib/shortcuts/apps/zed.ts | 2 - lib/shortcuts/apps/zen-browser.ts | 10 +- lib/shortcuts/apps/zendesk.ts | 2 - lib/shortcuts/apps/zeplin.ts | 2 - lib/shortcuts/apps/zoom.ts | 2 - lib/shortcuts/apps/zulip.ts | 2 - lib/shortcuts/catalog.generated.ts | 116 +++++++------ lib/shortcuts/types.ts | 1 - lib/storage/raid.ts | 2 +- lib/tool-catalogs.ts | 8 +- lib/tool-pages.ts | 9 - lib/zigbee-devices/data/devices.json | 163 +++++++++--------- package.json | 1 - scripts/ad-networks/sync-page-copy.mjs | 12 -- .../preview-local-page.mjs | 102 ----------- scripts/arpu-arpa-calculator/scripts.json | 6 - scripts/arr-calculator/preview-local-page.mjs | 102 ----------- scripts/arr-calculator/scripts.json | 6 - .../preview-local-page.mjs | 104 ----------- .../preview-local-page.mjs | 106 ------------ .../preview-local-page.mjs | 88 ---------- scripts/docker-compose-checker/scripts.json | 6 - .../preview-local-page.mjs | 60 ------- .../preview-local-page.mjs | 60 ------- .../preview-local-page.mjs | 60 ------- .../preview-local-page.mjs | 79 --------- .../preview-local-page.mjs | 73 -------- .../preview-local-page.mjs | 73 -------- .../preview-local-page.mjs | 73 -------- scripts/kdp-tools/preview-local-pages.mjs | 137 --------------- .../preview-local-page.mjs | 73 -------- scripts/mrr-calculator/preview-local-page.mjs | 102 ----------- scripts/mrr-calculator/scripts.json | 6 - .../preview-local-page.mjs | 105 ----------- .../preview-local-page.mjs | 116 ------------- scripts/platform-fees/sync-records.mjs | 6 +- .../preview-local-page.mjs | 116 ------------- .../preview-local-page.mjs | 100 ----------- .../preview-local-page.mjs | 100 ----------- scripts/saas-metrics-calculator/scripts.json | 7 - .../preview-local-page.mjs | 89 ---------- .../scripts.json | 6 - .../stack127/content/export-page-content.mjs | 35 +++- .../stack127/database/rebuild-development.mjs | 11 +- .../database/rebuild-development.test.mjs | 14 +- scripts/stack127/directory-pages/lib.mjs | 45 +---- .../{update-content.mjs => update-fields.mjs} | 15 +- scripts/stack127/publishing/cli.mjs | 8 +- scripts/stack127/publishing/github.mjs | 56 ++++-- scripts/stack127/publishing/model.mjs | 10 +- scripts/stack127/publishing/plan-storage.mjs | 43 +++++ scripts/stack127/publishing/readiness.mjs | 6 +- scripts/stack127/tool-pages/lib.mjs | 10 -- .../stack127/tool-pages/update-content.mjs | 86 --------- scripts/zigbee-devices/lib/catalog.mjs | 49 +++++- skills/stack127/page-build/SKILL.md | 2 +- .../stack127-directory-writing/SKILL.md | 4 +- .../tools/stack127-tool-backend/SKILL.md | 2 +- .../SKILL.md | 2 +- .../tools/stack127-tool-writing/SKILL.md | 2 +- stack127_docs/directory-pages.md | 14 +- stack127_docs/page-content.md | 21 ++- stack127_docs/page-publishing.md | 42 ++--- stack127_docs/seo.md | 6 +- stack127_docs/tool-catalogs.md | 12 +- stack127_docs/tool-pages.md | 7 +- stack127_docs/tool-pipeline.md | 2 +- ...064142_prepare_page_content_retirement.sql | 37 ++++ tests/pages/dns-lookup/dns-lookup.test.mjs | 27 +++ .../keyboard-shortcuts/shared/data.test.mjs | 1 - tests/pages/launch-directories/query.test.mjs | 17 +- .../zigbee-devices/data-pipeline.test.mjs | 21 ++- tests/pages/zigbee-devices/filters.test.mjs | 17 ++ tests/stack127/breadcrumbs.test.mjs | 133 ++++++++++++++ tests/stack127/directory-pages.test.mjs | 26 +-- tests/stack127/directory-previews.test.mjs | 10 +- tests/stack127/page-content.test.mjs | 35 +++- .../stack127/page-dates-development.test.mjs | 11 +- .../page-publishing-database.test.mjs | 37 ++-- tests/stack127/page-publishing.test.mjs | 78 ++++++++- .../page-schema-contract-development.test.mjs | 87 ++++++++-- 456 files changed, 1600 insertions(+), 3311 deletions(-) create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adapex/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adapex/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/aditude/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/aditude/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adnimation/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adnimation/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adpushup/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/adpushup/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/clickio/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/clickio/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/concert/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/concert/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/ezoic/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/ezoic/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/freestar/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/freestar/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/index.ts create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/infolinks/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/infolinks/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/media-net/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/media-net/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/mediavine/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/mediavine/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/mgid/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/mgid/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/monumetric/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/monumetric/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/newor-media/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/newor-media/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/nitropay/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/nitropay/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/playwire/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/playwire/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publift/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publift/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publir/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publir/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubnation/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubnation/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubpower/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/pubpower/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/raptive/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/raptive/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/refinery89/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/refinery89/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/revcontent/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/revcontent/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/setupad/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/setupad/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/she-media/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/she-media/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/snack-media/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/snack-media/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/snigel/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/snigel/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/sovrn/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/sovrn/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/sparteo/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/sparteo/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/taboola/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/taboola/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/teads/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/teads/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/venatus/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/[slug]/content/venatus/intro.mdx create mode 100644 app/(site)/(directories)/ad-networks/content/article.mdx create mode 100644 app/(site)/(directories)/ad-networks/content/intro.mdx delete mode 100644 scripts/ad-networks/sync-page-copy.mjs delete mode 100644 scripts/arpu-arpa-calculator/preview-local-page.mjs delete mode 100644 scripts/arpu-arpa-calculator/scripts.json delete mode 100644 scripts/arr-calculator/preview-local-page.mjs delete mode 100644 scripts/arr-calculator/scripts.json delete mode 100644 scripts/burn-multiple-calculator/preview-local-page.mjs delete mode 100644 scripts/customer-churn-calculator/preview-local-page.mjs delete mode 100644 scripts/docker-compose-checker/preview-local-page.mjs delete mode 100644 scripts/docker-compose-checker/scripts.json delete mode 100644 scripts/kdp-backend-keywords-builder/preview-local-page.mjs delete mode 100644 scripts/kdp-book-description-formatter/preview-local-page.mjs delete mode 100644 scripts/kdp-book-title-analyzer/preview-local-page.mjs delete mode 100644 scripts/kdp-break-even-acos-calculator/preview-local-page.mjs delete mode 100644 scripts/kdp-minimum-list-price-calculator/preview-local-page.mjs delete mode 100644 scripts/kdp-payment-date-calculator/preview-local-page.mjs delete mode 100644 scripts/kdp-price-profit-calculator/preview-local-page.mjs delete mode 100644 scripts/kdp-tools/preview-local-pages.mjs delete mode 100644 scripts/kindle-unlimited-kenp-earnings-calculator/preview-local-page.mjs delete mode 100644 scripts/mrr-calculator/preview-local-page.mjs delete mode 100644 scripts/mrr-calculator/scripts.json delete mode 100644 scripts/mrr-waterfall-calculator/preview-local-page.mjs delete mode 100644 scripts/net-revenue-retention-calculator/preview-local-page.mjs delete mode 100644 scripts/revenue-churn-calculator/preview-local-page.mjs delete mode 100644 scripts/saas-gross-margin-calculator/preview-local-page.mjs delete mode 100644 scripts/saas-metrics-calculator/preview-local-page.mjs delete mode 100644 scripts/saas-metrics-calculator/scripts.json delete mode 100644 scripts/self-hosted-app-resource-planner/preview-local-page.mjs delete mode 100644 scripts/self-hosted-app-resource-planner/scripts.json rename scripts/stack127/directory-pages/{update-content.mjs => update-fields.mjs} (72%) create mode 100644 scripts/stack127/publishing/plan-storage.mjs delete mode 100644 scripts/stack127/tool-pages/update-content.mjs create mode 100644 supabase/migrations/20261010064142_prepare_page_content_retirement.sql create mode 100644 tests/stack127/breadcrumbs.test.mjs diff --git a/.github/workflows/stack127-publish-pages.yml b/.github/workflows/stack127-publish-pages.yml index 537ab7df..724a7ced 100644 --- a/.github/workflows/stack127-publish-pages.yml +++ b/.github/workflows/stack127-publish-pages.yml @@ -109,7 +109,8 @@ jobs: await checkCurrentRelease(options); await verifyFrontend(options.site, options.sha); } - await publishingMain(publication.plan.kind, ['apply', '--plan', `${process.env.RUNNER_TEMP}/page-plan.json`, '--environment', 'production', '--confirm', 'stack127-production', '--release-sha', publication.releaseSha], { + const plan = JSON.parse(await readFile(`${process.env.RUNNER_TEMP}/page-plan.json`, 'utf8')); + await publishingMain(plan.kind, ['apply', '--plan', `${process.env.RUNNER_TEMP}/page-plan.json`, '--environment', 'production', '--confirm', 'stack127-production', '--release-sha', publication.releaseSha], { afterCommit: async ({ pool }) => { if (options.hosting !== 'cloudflare') return; const client = await pool.connect(); diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adapex/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adapex/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adapex/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adapex/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adapex/intro.mdx new file mode 100644 index 00000000..1bb3f8d1 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adapex/intro.mdx @@ -0,0 +1 @@ +Publisher ad monetization service. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/aditude/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/aditude/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/aditude/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/aditude/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/aditude/intro.mdx new file mode 100644 index 00000000..087fd774 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/aditude/intro.mdx @@ -0,0 +1 @@ +Publisher ad technology platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/intro.mdx new file mode 100644 index 00000000..2e74bcb9 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adnimation/intro.mdx @@ -0,0 +1 @@ +Publisher ad management service. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/intro.mdx new file mode 100644 index 00000000..48375e7e --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/adpushup/intro.mdx @@ -0,0 +1 @@ +Publisher ad revenue optimization platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/intro.mdx new file mode 100644 index 00000000..1a6ea971 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/amazon-publisher-services/intro.mdx @@ -0,0 +1 @@ +Amazon advertising and header bidding services for web and app publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/intro.mdx new file mode 100644 index 00000000..609dd2c5 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/anymind-anymanager/intro.mdx @@ -0,0 +1 @@ +AnyMind platform for web and app publisher monetization. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/intro.mdx new file mode 100644 index 00000000..06a32587 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/buysellads-carbon-ads/intro.mdx @@ -0,0 +1 @@ +Publisher advertising programs including the Carbon Ads network. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/clickio/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/clickio/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/clickio/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/clickio/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/clickio/intro.mdx new file mode 100644 index 00000000..3f9b5f4c --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/clickio/intro.mdx @@ -0,0 +1 @@ +Publisher monetization platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/concert/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/concert/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/concert/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/concert/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/concert/intro.mdx new file mode 100644 index 00000000..0cee2ade --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/concert/intro.mdx @@ -0,0 +1 @@ +Vox Media publisher-led advertising marketplace. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/intro.mdx new file mode 100644 index 00000000..b38e0d94 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/ethicalads/intro.mdx @@ -0,0 +1 @@ +Privacy-focused advertising network for developer and open source websites. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/intro.mdx new file mode 100644 index 00000000..66637bdf --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/ezoic/intro.mdx @@ -0,0 +1 @@ +Website monetization tools for digital publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/freestar/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/freestar/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/freestar/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/freestar/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/freestar/intro.mdx new file mode 100644 index 00000000..b283e52a --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/freestar/intro.mdx @@ -0,0 +1 @@ +Publisher advertising and monetization platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/intro.mdx new file mode 100644 index 00000000..f3e35ac7 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/geniee-ssp/intro.mdx @@ -0,0 +1 @@ +Publisher supply-side platform operated by Geniee. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/intro.mdx new file mode 100644 index 00000000..b1ee6b14 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/google-adsense/intro.mdx @@ -0,0 +1 @@ +Google advertising program for website publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/index.ts b/app/(site)/(directories)/ad-networks/[slug]/content/index.ts new file mode 100644 index 00000000..598b32e3 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/index.ts @@ -0,0 +1,139 @@ +import type { ComponentType } from "react"; +import Intro1 from "./adapex/intro.mdx"; +import Article1 from "./adapex/article.mdx"; +import Intro2 from "./aditude/intro.mdx"; +import Article2 from "./aditude/article.mdx"; +import Intro3 from "./adnimation/intro.mdx"; +import Article3 from "./adnimation/article.mdx"; +import Intro4 from "./adpushup/intro.mdx"; +import Article4 from "./adpushup/article.mdx"; +import Intro5 from "./amazon-publisher-services/intro.mdx"; +import Article5 from "./amazon-publisher-services/article.mdx"; +import Intro6 from "./anymind-anymanager/intro.mdx"; +import Article6 from "./anymind-anymanager/article.mdx"; +import Intro7 from "./buysellads-carbon-ads/intro.mdx"; +import Article7 from "./buysellads-carbon-ads/article.mdx"; +import Intro8 from "./clickio/intro.mdx"; +import Article8 from "./clickio/article.mdx"; +import Intro9 from "./concert/intro.mdx"; +import Article9 from "./concert/article.mdx"; +import Intro10 from "./ethicalads/intro.mdx"; +import Article10 from "./ethicalads/article.mdx"; +import Intro11 from "./ezoic/intro.mdx"; +import Article11 from "./ezoic/article.mdx"; +import Intro12 from "./freestar/intro.mdx"; +import Article12 from "./freestar/article.mdx"; +import Intro13 from "./geniee-ssp/intro.mdx"; +import Article13 from "./geniee-ssp/article.mdx"; +import Intro14 from "./google-adsense/intro.mdx"; +import Article14 from "./google-adsense/article.mdx"; +import Intro15 from "./infolinks/intro.mdx"; +import Article15 from "./infolinks/article.mdx"; +import Intro16 from "./journey-by-mediavine/intro.mdx"; +import Article16 from "./journey-by-mediavine/article.mdx"; +import Intro17 from "./media-net/intro.mdx"; +import Article17 from "./media-net/article.mdx"; +import Intro18 from "./mediavine/intro.mdx"; +import Article18 from "./mediavine/article.mdx"; +import Intro19 from "./mgid/intro.mdx"; +import Article19 from "./mgid/article.mdx"; +import Intro20 from "./monetizemore-pubguru/intro.mdx"; +import Article20 from "./monetizemore-pubguru/article.mdx"; +import Intro21 from "./monumetric/intro.mdx"; +import Article21 from "./monumetric/article.mdx"; +import Intro22 from "./newor-media/intro.mdx"; +import Article22 from "./newor-media/article.mdx"; +import Intro23 from "./nitropay/intro.mdx"; +import Article23 from "./nitropay/article.mdx"; +import Intro24 from "./opti-digital/intro.mdx"; +import Article24 from "./opti-digital/article.mdx"; +import Intro25 from "./playwire/intro.mdx"; +import Article25 from "./playwire/article.mdx"; +import Intro26 from "./pubfuture/intro.mdx"; +import Article26 from "./pubfuture/article.mdx"; +import Intro27 from "./pubgalaxy/intro.mdx"; +import Article27 from "./pubgalaxy/article.mdx"; +import Intro28 from "./publift/intro.mdx"; +import Article28 from "./publift/article.mdx"; +import Intro29 from "./publir/intro.mdx"; +import Article29 from "./publir/article.mdx"; +import Intro30 from "./publisher-collective/intro.mdx"; +import Article30 from "./publisher-collective/article.mdx"; +import Intro31 from "./pubnation/intro.mdx"; +import Article31 from "./pubnation/article.mdx"; +import Intro32 from "./pubpower/intro.mdx"; +import Article32 from "./pubpower/article.mdx"; +import Intro33 from "./raptive/intro.mdx"; +import Article33 from "./raptive/article.mdx"; +import Intro34 from "./refinery89/intro.mdx"; +import Article34 from "./refinery89/article.mdx"; +import Intro35 from "./revcontent/intro.mdx"; +import Article35 from "./revcontent/article.mdx"; +import Intro36 from "./setupad/intro.mdx"; +import Article36 from "./setupad/article.mdx"; +import Intro37 from "./she-media/intro.mdx"; +import Article37 from "./she-media/article.mdx"; +import Intro38 from "./snack-media/intro.mdx"; +import Article38 from "./snack-media/article.mdx"; +import Intro39 from "./snigel/intro.mdx"; +import Article39 from "./snigel/article.mdx"; +import Intro40 from "./sovrn/intro.mdx"; +import Article40 from "./sovrn/article.mdx"; +import Intro41 from "./sparteo/intro.mdx"; +import Article41 from "./sparteo/article.mdx"; +import Intro42 from "./taboola/intro.mdx"; +import Article42 from "./taboola/article.mdx"; +import Intro43 from "./teads/intro.mdx"; +import Article43 from "./teads/article.mdx"; +import Intro44 from "./the-moneytizer/intro.mdx"; +import Article44 from "./the-moneytizer/article.mdx"; +import Intro45 from "./venatus/intro.mdx"; +import Article45 from "./venatus/article.mdx"; + +export const adNetworkContent: Record = { + "adapex": { Intro: Intro1, Article: Article1 }, + "aditude": { Intro: Intro2, Article: Article2 }, + "adnimation": { Intro: Intro3, Article: Article3 }, + "adpushup": { Intro: Intro4, Article: Article4 }, + "amazon-publisher-services": { Intro: Intro5, Article: Article5 }, + "anymind-anymanager": { Intro: Intro6, Article: Article6 }, + "buysellads-carbon-ads": { Intro: Intro7, Article: Article7 }, + "clickio": { Intro: Intro8, Article: Article8 }, + "concert": { Intro: Intro9, Article: Article9 }, + "ethicalads": { Intro: Intro10, Article: Article10 }, + "ezoic": { Intro: Intro11, Article: Article11 }, + "freestar": { Intro: Intro12, Article: Article12 }, + "geniee-ssp": { Intro: Intro13, Article: Article13 }, + "google-adsense": { Intro: Intro14, Article: Article14 }, + "infolinks": { Intro: Intro15, Article: Article15 }, + "journey-by-mediavine": { Intro: Intro16, Article: Article16 }, + "media-net": { Intro: Intro17, Article: Article17 }, + "mediavine": { Intro: Intro18, Article: Article18 }, + "mgid": { Intro: Intro19, Article: Article19 }, + "monetizemore-pubguru": { Intro: Intro20, Article: Article20 }, + "monumetric": { Intro: Intro21, Article: Article21 }, + "newor-media": { Intro: Intro22, Article: Article22 }, + "nitropay": { Intro: Intro23, Article: Article23 }, + "opti-digital": { Intro: Intro24, Article: Article24 }, + "playwire": { Intro: Intro25, Article: Article25 }, + "pubfuture": { Intro: Intro26, Article: Article26 }, + "pubgalaxy": { Intro: Intro27, Article: Article27 }, + "publift": { Intro: Intro28, Article: Article28 }, + "publir": { Intro: Intro29, Article: Article29 }, + "publisher-collective": { Intro: Intro30, Article: Article30 }, + "pubnation": { Intro: Intro31, Article: Article31 }, + "pubpower": { Intro: Intro32, Article: Article32 }, + "raptive": { Intro: Intro33, Article: Article33 }, + "refinery89": { Intro: Intro34, Article: Article34 }, + "revcontent": { Intro: Intro35, Article: Article35 }, + "setupad": { Intro: Intro36, Article: Article36 }, + "she-media": { Intro: Intro37, Article: Article37 }, + "snack-media": { Intro: Intro38, Article: Article38 }, + "snigel": { Intro: Intro39, Article: Article39 }, + "sovrn": { Intro: Intro40, Article: Article40 }, + "sparteo": { Intro: Intro41, Article: Article41 }, + "taboola": { Intro: Intro42, Article: Article42 }, + "teads": { Intro: Intro43, Article: Article43 }, + "the-moneytizer": { Intro: Intro44, Article: Article44 }, + "venatus": { Intro: Intro45, Article: Article45 }, +}; diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/intro.mdx new file mode 100644 index 00000000..4b722216 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/infolinks/intro.mdx @@ -0,0 +1 @@ +Publisher advertising platform with in-text ad products. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/intro.mdx new file mode 100644 index 00000000..8b6af17e --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/journey-by-mediavine/intro.mdx @@ -0,0 +1 @@ +Mediavine ad management program for growing publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/media-net/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/media-net/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/media-net/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/media-net/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/media-net/intro.mdx new file mode 100644 index 00000000..1ffaadd6 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/media-net/intro.mdx @@ -0,0 +1 @@ +Publisher ad monetization platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/intro.mdx new file mode 100644 index 00000000..e0fb65ff --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/mediavine/intro.mdx @@ -0,0 +1 @@ +Ad management for publishers and creators. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/mgid/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/mgid/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/mgid/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/mgid/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/mgid/intro.mdx new file mode 100644 index 00000000..2dfcb12c --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/mgid/intro.mdx @@ -0,0 +1 @@ +Native advertising and website monetization platform for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/intro.mdx new file mode 100644 index 00000000..f081d581 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/monetizemore-pubguru/intro.mdx @@ -0,0 +1 @@ +Managed ad operations and PubGuru monetization tools for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/intro.mdx new file mode 100644 index 00000000..49365a91 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/monumetric/intro.mdx @@ -0,0 +1 @@ +Managed advertising for website publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/intro.mdx new file mode 100644 index 00000000..d863be3d --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/newor-media/intro.mdx @@ -0,0 +1 @@ +Publisher programs for managing and monetizing website ads. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/intro.mdx new file mode 100644 index 00000000..af2ba7a8 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/nitropay/intro.mdx @@ -0,0 +1 @@ +Ad monetization for website publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/intro.mdx new file mode 100644 index 00000000..3f9b5f4c --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/opti-digital/intro.mdx @@ -0,0 +1 @@ +Publisher monetization platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/playwire/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/playwire/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/playwire/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/playwire/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/playwire/intro.mdx new file mode 100644 index 00000000..e45c693f --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/playwire/intro.mdx @@ -0,0 +1 @@ +Advertising monetization for independent web publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/intro.mdx new file mode 100644 index 00000000..48fc1bf9 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubfuture/intro.mdx @@ -0,0 +1 @@ +Header bidding and advertising monetization services for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/intro.mdx new file mode 100644 index 00000000..99be0017 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubgalaxy/intro.mdx @@ -0,0 +1 @@ +Ad revenue optimization for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publift/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publift/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publift/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publift/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publift/intro.mdx new file mode 100644 index 00000000..3619d0ae --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publift/intro.mdx @@ -0,0 +1 @@ +Publisher monetization platform using Fuse technology. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publir/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publir/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publir/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publir/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publir/intro.mdx new file mode 100644 index 00000000..03592a7f --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publir/intro.mdx @@ -0,0 +1 @@ +Ad optimization and audience monetization platform for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/intro.mdx new file mode 100644 index 00000000..7cf32bff --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/publisher-collective/intro.mdx @@ -0,0 +1 @@ +Publisher monetization service and network. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/intro.mdx new file mode 100644 index 00000000..8277d893 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubnation/intro.mdx @@ -0,0 +1 @@ +Publisher monetization company. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/intro.mdx new file mode 100644 index 00000000..bd0dac31 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/pubpower/intro.mdx @@ -0,0 +1 @@ +Publisher ad management platform. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/raptive/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/raptive/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/raptive/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/raptive/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/raptive/intro.mdx new file mode 100644 index 00000000..82a62ed1 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/raptive/intro.mdx @@ -0,0 +1 @@ +Ad management and monetization for creators. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/intro.mdx new file mode 100644 index 00000000..1bb3f8d1 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/refinery89/intro.mdx @@ -0,0 +1 @@ +Publisher ad monetization service. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/intro.mdx new file mode 100644 index 00000000..98750459 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/revcontent/intro.mdx @@ -0,0 +1 @@ +Content recommendation and native advertising platform for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/setupad/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/setupad/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/setupad/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/setupad/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/setupad/intro.mdx new file mode 100644 index 00000000..81882588 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/setupad/intro.mdx @@ -0,0 +1 @@ +Publisher platform for display ad monetization. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/she-media/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/she-media/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/she-media/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/she-media/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/she-media/intro.mdx new file mode 100644 index 00000000..4e89fd3d --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/she-media/intro.mdx @@ -0,0 +1 @@ +Publisher partner network run by SHE Media. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/intro.mdx new file mode 100644 index 00000000..e585d510 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/snack-media/intro.mdx @@ -0,0 +1 @@ +Publisher advertising and monetization services. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/snigel/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/snigel/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/snigel/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/snigel/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/snigel/intro.mdx new file mode 100644 index 00000000..4f5a1524 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/snigel/intro.mdx @@ -0,0 +1 @@ +Publisher ad management brand. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/intro.mdx new file mode 100644 index 00000000..6e2eb8d3 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/sovrn/intro.mdx @@ -0,0 +1 @@ +Advertising and monetization products for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/intro.mdx new file mode 100644 index 00000000..118d5d4f --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/sparteo/intro.mdx @@ -0,0 +1 @@ +Publisher monetization technology and managed advertising services. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/taboola/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/taboola/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/taboola/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/taboola/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/taboola/intro.mdx new file mode 100644 index 00000000..4fdcf874 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/taboola/intro.mdx @@ -0,0 +1 @@ +Content recommendation and advertising platform for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/teads/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/teads/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/teads/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/teads/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/teads/intro.mdx new file mode 100644 index 00000000..049c4ddc --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/teads/intro.mdx @@ -0,0 +1 @@ +Publisher advertising platform that includes the former Outbrain business. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/intro.mdx new file mode 100644 index 00000000..a20fbb64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/the-moneytizer/intro.mdx @@ -0,0 +1 @@ +Managed website monetization and header bidding for publishers. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/venatus/article.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/venatus/article.mdx new file mode 100644 index 00000000..7531ce64 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/venatus/article.mdx @@ -0,0 +1 @@ +A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use. diff --git a/app/(site)/(directories)/ad-networks/[slug]/content/venatus/intro.mdx b/app/(site)/(directories)/ad-networks/[slug]/content/venatus/intro.mdx new file mode 100644 index 00000000..744f98d2 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/[slug]/content/venatus/intro.mdx @@ -0,0 +1 @@ +Advertising and monetization for publisher partners. A site can use more than one ad network. diff --git a/app/(site)/(directories)/ad-networks/[slug]/page.tsx b/app/(site)/(directories)/ad-networks/[slug]/page.tsx index 843357d1..8a405ceb 100644 --- a/app/(site)/(directories)/ad-networks/[slug]/page.tsx +++ b/app/(site)/(directories)/ad-networks/[slug]/page.tsx @@ -1,7 +1,7 @@ -import { DirectoryPageTitle, DirectoryPageContent } from "@/app/ui/directories/directory-page-content"; +import { DirectoryPageTitle } from "@/app/ui/directories/directory-page-content"; import { getBreadcrumbs } from "@/lib/breadcrumbs"; import { PageMeta } from "@/app/ui/site/page-meta"; -import { ContentMarkdown } from "@/app/ui/content-markdown"; +import { adNetworkContent } from "./content"; import { notFound } from "next/navigation"; import { Network } from "lucide-react"; import { DirectoryQueryProvider } from "@/app/ui/directories/directory-query"; @@ -24,6 +24,9 @@ export async function generateStaticParams() { export default async function AdNetworkPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; const directoryPage = await getRequiredDirectoryPage(`ad-networks/${slug}`); + const content = adNetworkContent[slug]; + if (!content) throw new Error(`Ad network has no MDX content: ${slug}`); + const { Intro, Article } = content; const [network, networks, parentPage] = await Promise.all([getAdNetwork(slug), listAdNetworks(""), getPublishedDirectoryPage("ad-networks")]); if (!network) notFound(); const route = `/ad-networks/${slug}`; @@ -38,11 +41,11 @@ export default async function AdNetworkPage({ params }: { params: Promise<{ slug

} />{" "}

- +
{network.official_url ?

Official {network.name} website ↗

: null} -
+
; diff --git a/app/(site)/(directories)/ad-networks/content/article.mdx b/app/(site)/(directories)/ad-networks/content/article.mdx new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/content/article.mdx @@ -0,0 +1 @@ + diff --git a/app/(site)/(directories)/ad-networks/content/intro.mdx b/app/(site)/(directories)/ad-networks/content/intro.mdx new file mode 100644 index 00000000..56c56744 --- /dev/null +++ b/app/(site)/(directories)/ad-networks/content/intro.mdx @@ -0,0 +1 @@ +Explore ad networks and the websites verified for each one. Counts include confirmed relationships only. diff --git a/app/(site)/(directories)/ad-networks/page.tsx b/app/(site)/(directories)/ad-networks/page.tsx index 10f664b3..88662a24 100644 --- a/app/(site)/(directories)/ad-networks/page.tsx +++ b/app/(site)/(directories)/ad-networks/page.tsx @@ -1,8 +1,9 @@ import { getRequiredDirectoryPage } from "@/lib/directory-pages"; import { getBreadcrumbs } from "@/lib/breadcrumbs"; -import { DirectoryPageTitle, DirectoryPageContent } from "@/app/ui/directories/directory-page-content"; +import { DirectoryPageTitle } from "@/app/ui/directories/directory-page-content"; import { PageMeta } from "@/app/ui/site/page-meta"; -import { ContentMarkdown } from "@/app/ui/content-markdown"; +import Intro from "./content/intro.mdx"; +import Article from "./content/article.mdx"; import { Network } from "lucide-react"; import { DirectoryQueryProvider } from "@/app/ui/directories/directory-query"; import { AppShell } from "@/app/ui/site/app-shell"; @@ -29,12 +30,12 @@ export default async function AdNetworksPage() {

} />{" "}

- +
({ name, slug, summary, verified_count }))} /> - +
; diff --git a/app/(site)/(directories)/epp-status-codes/page.tsx b/app/(site)/(directories)/epp-status-codes/page.tsx index ece3d558..0eb49e6b 100644 --- a/app/(site)/(directories)/epp-status-codes/page.tsx +++ b/app/(site)/(directories)/epp-status-codes/page.tsx @@ -61,7 +61,7 @@ export default async function EppStatusCodesPage() { sidebar={} sidebarLabel="Domain tools sidebar" > - +

{" "}

diff --git a/app/(site)/(directories)/keyboard-shortcuts/fusion-360/content/intro.mdx b/app/(site)/(directories)/keyboard-shortcuts/fusion-360/content/intro.mdx index f8756873..9468569a 100644 --- a/app/(site)/(directories)/keyboard-shortcuts/fusion-360/content/intro.mdx +++ b/app/(site)/(directories)/keyboard-shortcuts/fusion-360/content/intro.mdx @@ -1 +1 @@ -Fusion 360 is Autodesk's cloud-connected CAD software for designing parts and products in 3D. Use these keys to start sketch lines, shapes, and constraints, pick common modeling commands, change selection modes, and open, save, or switch documents. +Autodesk Fusion, formerly Fusion 360, is Autodesk's cloud-connected CAD software for designing parts and products in 3D. Use these keys to start sketch lines, shapes, and constraints, pick common modeling commands, change selection modes, and open, save, or switch documents. diff --git a/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts-reference.tsx b/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts-reference.tsx index f49807d0..23e55a00 100644 --- a/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts-reference.tsx +++ b/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts-reference.tsx @@ -11,6 +11,28 @@ import { DirectoryTitleIcon } from "@/app/ui/directories/directory-title-icon"; import { platformLabels, shortcutCount, type AppShortcuts, type Shortcut } from "@/lib/shortcuts/types"; import styles from "./keyboard-shortcuts.module.css"; +const checkedDateFormatter = new Intl.DateTimeFormat("en-US", { + day: "numeric", + month: "short", + year: "numeric", + timeZone: "UTC", +}); + +function SourceNote({ app }: { app: AppShortcuts }) { + const checked = new Date(app.lastVerified); + const hasChecked = !Number.isNaN(checked.getTime()); + return ( +
+

Source

+

+ {app.sourceLabel} + {hasChecked ? <> · Checked : null} +

+ {app.versionContext ?

{app.versionContext}

: null} +
+ ); +} + function KeyChips({ keys, alternatives = [] }: { keys: string[]; alternatives?: string[][] }) { const bindings = [keys, ...alternatives]; @@ -101,6 +123,8 @@ export function KeyboardShortcutsReference({ app, breadcrumbs, directoryPage, ic ))} + +

Make a printable {app.name} sheet

diff --git a/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts.module.css b/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts.module.css index dd1b489c..d726d494 100644 --- a/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts.module.css +++ b/app/(site)/(directories)/keyboard-shortcuts/keyboard-shortcuts.module.css @@ -56,6 +56,12 @@ line-height: var(--line-ui); overflow-wrap: anywhere; } +.source { max-width: var(--measure-prose); margin-top: var(--space-14); padding-top: var(--space-10); border-top: 1px solid var(--color-border); } +.source h2 { margin: 0 0 var(--space-5); font-family: var(--font-display); font-size: var(--text-h3); line-height: var(--line-heading); font-weight: var(--weight-bold); } +.source p { margin: 0 0 var(--space-3); line-height: var(--line-body); } +.source a { color: var(--color-link); font-weight: var(--weight-semibold); text-decoration: none; text-underline-offset: 3px; } +.source a:hover { text-decoration: underline; } +.source a:focus-visible { outline: 0; box-shadow: var(--focus-ring); } .nextStep { max-width: var(--measure-prose); margin-top: var(--space-14); } .nextStep p { margin: 0 0 var(--space-3); line-height: var(--line-body); } .nextStep a { color: var(--color-link); text-decoration: none; text-underline-offset: 3px; } diff --git a/app/(site)/(directories)/launch-directories/content/free-listings.mdx b/app/(site)/(directories)/launch-directories/content/free-listings.mdx index 87b8a7bb..2582a9b0 100644 --- a/app/(site)/(directories)/launch-directories/content/free-listings.mdx +++ b/app/(site)/(directories)/launch-directories/content/free-listings.mdx @@ -2,4 +2,4 @@ Some free plans ask for something in return, such as a backlink to the directory, proof that you own the domain, or votes and comments on other launches. Where we checked the free flow, the card lists these under Free plan. -The Free without required backlink filter shows only places where we checked the free flow and found no required backlink. Free places we haven't checked yet are left out. +The Free without required backlink filter shows only free places where we checked the free flow and it doesn't ask for a backlink or badge. Places we haven't checked yet stay out of it, even if their price looks free. A place can still change its rules, so read the card before you submit. diff --git a/app/(site)/(directories)/tld-directory/page.tsx b/app/(site)/(directories)/tld-directory/page.tsx index f8b40ce5..3692de66 100644 --- a/app/(site)/(directories)/tld-directory/page.tsx +++ b/app/(site)/(directories)/tld-directory/page.tsx @@ -39,7 +39,7 @@ export default async function TldDirectoryPage() { sidebar={} sidebarLabel="Domain tools sidebar" > - +

{" "}

diff --git a/app/(site)/(directories)/zigbee-devices/content/intro.mdx b/app/(site)/(directories)/zigbee-devices/content/intro.mdx index bbec86c2..81cc0888 100644 --- a/app/(site)/(directories)/zigbee-devices/content/intro.mdx +++ b/app/(site)/(directories)/zigbee-devices/content/intro.mdx @@ -1 +1 @@ -Search by brand, retail model, or feature to see whether a Zigbee device has a Zigbee2MQTT definition, a community report for ZHA, or both. Open a card for its features, device identifiers, and links to each source. The date above the cards shows when we last read those sources. +Search by brand, retail model, or feature to see whether a Zigbee device has a Zigbee2MQTT definition, a community report for ZHA or another hub, or both. Open a card for its features, device identifiers, and links to each source. The date above the cards shows when we last read those sources. diff --git a/app/(site)/(directories)/zigbee-devices/filters.ts b/app/(site)/(directories)/zigbee-devices/filters.ts index e86c3bf7..ba4ca905 100644 --- a/app/(site)/(directories)/zigbee-devices/filters.ts +++ b/app/(site)/(directories)/zigbee-devices/filters.ts @@ -1,4 +1,4 @@ -import type { ZigbeeDevice } from "@/lib/zigbee-devices"; +import type { featuredZigbeeCapabilities, ZigbeeDevice } from "@/lib/zigbee-devices"; import { hardwareCardName } from "@/lib/hardware-directories/card-name"; import { pageParamHref, paramPage, paramString, paramValues, type DirectoryParams } from "@/app/ui/directories/directory-params"; @@ -12,8 +12,46 @@ export type ZigbeeSort = (typeof zigbeeSortValues)[number]; type FilterableDevice = Pick; -type SortableDevice = Pick; +type SortableDevice = Pick; +type CapabilityDevice = Pick; + +// Zigbee2MQTT field names match the featured capabilities directly. Blakadder +// writes free-text feature names, so each featured capability lists the +// Blakadder names that mean the same thing. +const reportedCapabilityPatterns: Record<(typeof featuredZigbeeCapabilities)[number], RegExp> = { + action: /\baction|click|\bhold\b|release|^single$|^double$/, + battery: /^battery/, + brightness: /^brightness$|^level$|dimmable/, + climate: /thermostat|setpoint|heating|cooling|climate/, + contact: /contact|door opened/, + cover: /^cover|position|tilt|^open$|^close$|^stop$/, + energy: /energy|meter(ing)?$|power meter/, + humidity: /humidity/, + light: /^colou?r|^colotemp|^light/, + lock: /^lock|^unlock$/, + occupancy: /occupancy|motion$/, + power: /^power$|power (measurement|monitoring|meter)|electrical measurement/, + smoke: /smoke/, + switch: /on\/off|on_off$|^switch$|^state$/, + temperature: /^temperature$|local temperature/, +}; + +/** Featured capabilities from both sources, so Blakadder-only records can match too. */ +export function deviceCapabilities(device: CapabilityDevice) { + const capabilities = new Set(device.zigbee2mqtt_capabilities); + for (const reported of device.zha_reported_capabilities) { + const value = reported.trim().toLowerCase(); + for (const [capability, pattern] of Object.entries(reportedCapabilityPatterns)) { + if (pattern.test(value)) capabilities.add(capability); + } + } + return capabilities; +} +function featuredCapabilityCount(device: CapabilityDevice) { + const capabilities = deviceCapabilities(device); + return Object.keys(reportedCapabilityPatterns).filter((capability) => capabilities.has(capability)).length; +} export { zigbeeIndexRecord, type ZigbeeIndexRecord } from "@/lib/zigbee-devices/search-index"; @@ -60,12 +98,10 @@ export function filterDevices(devices: T[], params: if (!matchesSearch(device, query)) return false; if (categories.size > 0 && !categories.has(device.category)) return false; if (vendors.size > 0 && !vendors.has(device.vendor)) return false; - if ( - capabilities.size > 0 - && ![...capabilities].some((capability) => - device.zigbee2mqtt_capabilities.includes(capability), - ) - ) return false; + if (capabilities.size > 0) { + const listed = deviceCapabilities(device); + if (![...capabilities].some((capability) => listed.has(capability))) return false; + } if (ota === "yes" && !device.ota) return false; if (battery === "yes" && !device.battery_reporting) return false; return true; @@ -73,6 +109,8 @@ export function filterDevices(devices: T[], params: } export function sortDevices(devices: T[], sort: ZigbeeSort | string) { + const featureCounts = new Map(); + if (sort === "capabilities") for (const device of devices) featureCounts.set(device, featuredCapabilityCount(device)); return [...devices].sort((left, right) => { if (sort === "vendor") { return left.vendor.localeCompare(right.vendor) @@ -80,7 +118,8 @@ export function sortDevices(devices: T[], sort: Zigbee } if (sort === "capabilities") { - return right.zigbee2mqtt_capabilities.length - left.zigbee2mqtt_capabilities.length + return (featureCounts.get(right) ?? 0) - (featureCounts.get(left) ?? 0) + || right.zigbee2mqtt_capabilities.length - left.zigbee2mqtt_capabilities.length || hardwareCardName(left.name, left.vendor, left.model).localeCompare(hardwareCardName(right.name, right.vendor, right.model)) || left.model.localeCompare(right.model); } diff --git a/app/(site)/(directories)/zigbee-devices/page.tsx b/app/(site)/(directories)/zigbee-devices/page.tsx index 76ee14b5..688fc3d3 100644 --- a/app/(site)/(directories)/zigbee-devices/page.tsx +++ b/app/(site)/(directories)/zigbee-devices/page.tsx @@ -20,7 +20,7 @@ import { import { addAmazonMatches } from "@/lib/amazon-affiliate/server"; import type { DirectoryFilterOption as FilterOption } from "../../../ui/directories/directory-filters"; import { DirectoryQueryProvider } from "../../../ui/directories/directory-query"; -import { sortDevices, zigbeeIndexRecord, zigbeePageSize } from "./filters"; +import { deviceCapabilities, sortDevices, zigbeeIndexRecord, zigbeePageSize } from "./filters"; import { ZigbeeDeviceFilters, ZigbeeDeviceResults } from "./zigbee-device-view"; import styles from "./zigbee-devices.module.css"; import Article from "./content/article.mdx"; @@ -46,9 +46,10 @@ export default async function ZigbeeDevicesPage() { const vendorOptions: FilterOption[] = [...vendorCounts.entries()] .map(([value, count]) => ({ count, label: value, value })) .sort((left, right) => left.label.localeCompare(right.label)); + const capabilitiesBySlug = new Map(devices.map((device) => [device.slug, deviceCapabilities(device)])); const capabilityOptions: FilterOption[] = featuredZigbeeCapabilities .map((value) => ({ - count: devices.filter((device) => device.zigbee2mqtt_capabilities.includes(value)).length, + count: devices.filter((device) => capabilitiesBySlug.get(device.slug)?.has(value)).length, label: value.replaceAll("_", " "), value, })) diff --git a/app/(site)/(directories)/zigbee-devices/zigbee-device-browser.tsx b/app/(site)/(directories)/zigbee-devices/zigbee-device-browser.tsx index 708f844c..024091be 100644 --- a/app/(site)/(directories)/zigbee-devices/zigbee-device-browser.tsx +++ b/app/(site)/(directories)/zigbee-devices/zigbee-device-browser.tsx @@ -30,8 +30,8 @@ function DeviceDetails({ categoryLabels, device, onClose }: { categoryLabels: Re const support = device.card?.compatibility ?? { label: "Works with", status: "confirmed", value: "Zigbee2MQTT + ZHA" }; const sections = device.detail_sections ?? [ { heading: "Exact device", facts: [{ label: "Manufacturer", value: device.vendor }, { label: "Retail model", value: device.model }, { label: "Category", value: categoryLabel(device.category) }] }, - { heading: "Platform compatibility", facts: [{ label: "Zigbee2MQTT", value: device.zigbee2mqtt_url ? "Support record available" : "Not listed" }, { label: "ZHA", value: device.blakadder_url ? "Community record available" : "Not listed" }] }, - { heading: "Exposed features", facts: [{ label: "Zigbee2MQTT fields", value: formatList(device.zigbee2mqtt_capabilities) }, { label: "ZHA reported features", value: formatList(device.zha_reported_capabilities) }] }, + { heading: "Platform compatibility", facts: [{ label: "Zigbee2MQTT", value: device.zigbee2mqtt_url ? "Support record available" : "Not listed" }, { label: "Blakadder", value: device.blakadder_url ? "Community record available" : "Not listed" }] }, + { heading: "Exposed features", facts: [{ label: "Zigbee2MQTT fields", value: formatList(device.zigbee2mqtt_capabilities) }, { label: "Blakadder reported features", value: formatList(device.zha_reported_capabilities) }] }, ]; const visibleSections = sections .map((section) => ({ @@ -87,7 +87,7 @@ function DeviceDetails({ categoryLabels, device, onClose }: { categoryLabels: Re
{device.amazon ? Check price on Amazon : null} {device.zigbee2mqtt_url ? Zigbee2MQTT support : null} - {device.blakadder_url ? ZHA community report : null} + {device.blakadder_url ? Blakadder community report : null}
); diff --git a/app/(site)/(directories)/zigbee-devices/zigbee-device-view.tsx b/app/(site)/(directories)/zigbee-devices/zigbee-device-view.tsx index c2a0a6bd..87405783 100644 --- a/app/(site)/(directories)/zigbee-devices/zigbee-device-view.tsx +++ b/app/(site)/(directories)/zigbee-devices/zigbee-device-view.tsx @@ -29,7 +29,7 @@ const paramKeys = ["q", "sort", "category", "vendor", "capability", "ota", "batt const sortOptions = [ { label: "Device name", value: "name" }, { label: "Vendor", value: "vendor" }, - { label: "Most Zigbee2MQTT features", value: "capabilities" }, + { label: "Most features", value: "capabilities" }, { label: "Recently added to a support list", value: "newest" }, ]; @@ -123,7 +123,7 @@ export function ZigbeeDeviceResults({ categoryLabels, details, firstPage, index, {chipRow}

{count.toLocaleString("en-US")} matching devices

-

Updated {snapshotDate}

+

Sources read {snapshotDate}

{pageDevices.length > 0 ? ( diff --git a/app/(site)/(tools)/(dns)/caa-checker/page.tsx b/app/(site)/(tools)/(dns)/caa-checker/page.tsx index b97c0b9c..c3781d90 100644 --- a/app/(site)/(tools)/(dns)/caa-checker/page.tsx +++ b/app/(site)/(tools)/(dns)/caa-checker/page.tsx @@ -13,7 +13,7 @@ export default async function CaaCheckerPage() { const toolPage = await getRequiredToolPage("caa-checker"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/dns-change-checker/page.tsx b/app/(site)/(tools)/(dns)/dns-change-checker/page.tsx index 008d99e9..c59b0527 100644 --- a/app/(site)/(tools)/(dns)/dns-change-checker/page.tsx +++ b/app/(site)/(tools)/(dns)/dns-change-checker/page.tsx @@ -13,7 +13,7 @@ export default async function DnsChangeCheckerPage() { const toolPage = await getRequiredToolPage("dns-change-checker"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-content.module.css b/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-content.module.css index f97149ac..999db5b8 100644 --- a/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-content.module.css +++ b/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-content.module.css @@ -2,20 +2,3 @@ width: 100%; min-width: 0; } - -.guide table { - width: 100%; - min-width: 0; - table-layout: fixed; -} - -.guide th, -.guide td { - white-space: normal; - overflow-wrap: anywhere; -} - -.guide th:first-child, -.guide td:first-child { - width: 35%; -} diff --git a/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-tool.tsx b/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-tool.tsx index 1f624353..70161b9b 100644 --- a/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-tool.tsx +++ b/app/(site)/(tools)/(dns)/dns-lookup/dns-lookup-tool.tsx @@ -1,6 +1,6 @@ "use client"; -import { useEffect, useMemo, useRef, useState, type FormEvent } from "react"; +import { Fragment, useEffect, useMemo, useRef, useState, type FormEvent } from "react"; import { UiButton, UiSelect, UiTextField } from "@/app/ui/controls"; import { UiDataTable } from "@/app/ui/display"; import { dnsRecordsCsv } from "@/lib/dns/export.ts"; @@ -41,6 +41,16 @@ function ownerGroups(records: NormalizedDnsRecord[]) { return [...groups.entries()]; } +/** Lets a long hostname wrap after a dot before it ever breaks inside a label. */ +function Hostname({ name }: { name: string }) { + const labels = name.split("."); + return labels.map((label, index) => ( + {label}{index < labels.length - 1 ? <>. : null} + )); +} + +const HOSTNAME_RECORD_TYPES = new Set(["CNAME", "NS", "PTR"]); + async function copyText(value: string) { await navigator.clipboard.writeText(value); } @@ -51,7 +61,7 @@ function AliasChain({ authoritative, edges }: { authoritative: boolean; edges: D
{edges.length === 1 ? ( <> -

{edges[0].from} points to {edges[0].to}, so the records below may belong to the second name.

+

points to , so the records below may belong to the second name.

{authoritative ? "The nameserver reports an authoritative TTL of" : "The resolver reported"} {authoritative ? formatAuthoritativeTtl(edges[0].resolverTtlSeconds) : formatResolverTtl(edges[0].resolverTtlSeconds)} for this alias.

) : ( @@ -60,7 +70,7 @@ function AliasChain({ authoritative, edges }: { authoritative: boolean; edges: D
    {edges.map((edge) => (
  1. - {edge.from} → {edge.to} + →
  2. ))}
@@ -148,7 +158,7 @@ function RecordRow({ return (
  • - {fields[0]?.value ?? record.value} + {recordMeta}
    @@ -184,7 +194,9 @@ function RecordRow({
  • {fields.length === 1 ? ( - {fields[0].value} + + {HOSTNAME_RECORD_TYPES.has(record.type) ? : fields[0].value} + ) : (
    {fields.map((field) => ( @@ -465,7 +477,7 @@ function LookupResults({ result }: { result: DnsLookupResponse }) { {result.aliasObservations.map((observation) => (
    {observation.requestedType} query -
      {observation.aliasChain.map((edge) =>
    1. {edge.from} → {edge.to}
    2. )}
    +
      {observation.aliasChain.map((edge) =>
    1. →
    2. )}
    ))}
  • @@ -608,7 +620,7 @@ export function DnsLookupTool({ open={specializedOpen} > - Specialized record types + More record types {specializedRecordOptions.some((option) => option.value === selection) ? {selection} selected : null}
    diff --git a/app/(site)/(tools)/(dns)/dns-lookup/page.tsx b/app/(site)/(tools)/(dns)/dns-lookup/page.tsx index 1208db37..419bd90a 100644 --- a/app/(site)/(tools)/(dns)/dns-lookup/page.tsx +++ b/app/(site)/(tools)/(dns)/dns-lookup/page.tsx @@ -14,7 +14,7 @@ export default async function DnsLookupPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/dns-trace/page.tsx b/app/(site)/(tools)/(dns)/dns-trace/page.tsx index 484fc51a..98bcfd84 100644 --- a/app/(site)/(tools)/(dns)/dns-trace/page.tsx +++ b/app/(site)/(tools)/(dns)/dns-trace/page.tsx @@ -13,7 +13,7 @@ export default async function DnsTracePage() { const toolPage = await getRequiredToolPage("dns-trace"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/dnssec-checker/page.tsx b/app/(site)/(tools)/(dns)/dnssec-checker/page.tsx index 3f32e9af..224fad98 100644 --- a/app/(site)/(tools)/(dns)/dnssec-checker/page.tsx +++ b/app/(site)/(tools)/(dns)/dnssec-checker/page.tsx @@ -13,7 +13,7 @@ export default async function DnssecCheckerPage() { const toolPage = await getRequiredToolPage("dnssec-checker"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/nameserver-checker/page.tsx b/app/(site)/(tools)/(dns)/nameserver-checker/page.tsx index 4268af2d..a3ed4c00 100644 --- a/app/(site)/(tools)/(dns)/nameserver-checker/page.tsx +++ b/app/(site)/(tools)/(dns)/nameserver-checker/page.tsx @@ -13,7 +13,7 @@ export default async function NameserverCheckerPage() { const toolPage = await getRequiredToolPage("nameserver-checker"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(dns)/soa-checker/page.tsx b/app/(site)/(tools)/(dns)/soa-checker/page.tsx index 1ca09501..5f4149cc 100644 --- a/app/(site)/(tools)/(dns)/soa-checker/page.tsx +++ b/app/(site)/(tools)/(dns)/soa-checker/page.tsx @@ -13,7 +13,7 @@ export default async function SoaCheckerPage() { const toolPage = await getRequiredToolPage("soa-checker"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-age/domain-age-tool.tsx b/app/(site)/(tools)/(domain)/domain-age/domain-age-tool.tsx index a2dd6da9..32f856bb 100644 --- a/app/(site)/(tools)/(domain)/domain-age/domain-age-tool.tsx +++ b/app/(site)/(tools)/(domain)/domain-age/domain-age-tool.tsx @@ -14,11 +14,11 @@ import { import styles from "./domain-age-tool.module.css"; function sourceHost(fetch: RdapFetch | null) { - if (!fetch?.url) return "Registry"; + if (!fetch?.url) return "Host not reported"; try { return new URL(fetch.url).host; } catch { - return "Registry"; + return "Host not reported"; } } @@ -110,7 +110,8 @@ function unavailableResult(result: DomainRegistration) { function SourceMetadata({ result }: { result: DomainRegistration }) { const fetch = result.registryFetch; - if (!fetch) return null; + // With no RDAP service for the ending, nothing was fetched, so there is no source to show. + if (!fetch || fetch.status === "no_service") return null; return (
    diff --git a/app/(site)/(tools)/(domain)/domain-age/page.tsx b/app/(site)/(tools)/(domain)/domain-age/page.tsx index 6e744d1b..f65f951d 100644 --- a/app/(site)/(tools)/(domain)/domain-age/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-age/page.tsx @@ -14,7 +14,7 @@ export default async function DomainAgePage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-availability/domain-availability-view.ts b/app/(site)/(tools)/(domain)/domain-availability/domain-availability-view.ts index cdf38652..a63eee62 100644 --- a/app/(site)/(tools)/(domain)/domain-availability/domain-availability-view.ts +++ b/app/(site)/(tools)/(domain)/domain-availability/domain-availability-view.ts @@ -68,7 +68,7 @@ export function hasExpiryFollowUp(result: DomainRegistration) { export function registrySourceMetadata(result: DomainRegistration) { const fetch = result.registryFetch; - if (!fetch) return null; + if (!fetch || fetch.status === "no_service") return null; let host: string | null = null; if (fetch.url) { try { diff --git a/app/(site)/(tools)/(domain)/domain-availability/page.tsx b/app/(site)/(tools)/(domain)/domain-availability/page.tsx index 571b650a..16f53d60 100644 --- a/app/(site)/(tools)/(domain)/domain-availability/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-availability/page.tsx @@ -13,7 +13,7 @@ export default async function DomainAvailabilityPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-expiry/domain-expiry-tool.tsx b/app/(site)/(tools)/(domain)/domain-expiry/domain-expiry-tool.tsx index 4d17d215..7eff4a23 100644 --- a/app/(site)/(tools)/(domain)/domain-expiry/domain-expiry-tool.tsx +++ b/app/(site)/(tools)/(domain)/domain-expiry/domain-expiry-tool.tsx @@ -41,11 +41,11 @@ function currentStage(registration: DomainRegistration): StageId { } function sourceHost(fetch: RdapFetch | null) { - if (!fetch?.url) return "Registry"; + if (!fetch?.url) return "Host not reported"; try { return new URL(fetch.url).host; } catch { - return "Registry"; + return "Host not reported"; } } @@ -156,7 +156,8 @@ function unavailableAnswer(result: DomainRegistration) { function SourceMetadata({ result }: { result: DomainRegistration }) { const fetch = result.registryFetch; - if (!fetch) return null; + // With no RDAP service for the ending, nothing was fetched, so there is no source to show. + if (!fetch || fetch.status === "no_service") return null; return (
    Registry
    {sourceHost(fetch)}
    diff --git a/app/(site)/(tools)/(domain)/domain-expiry/page.tsx b/app/(site)/(tools)/(domain)/domain-expiry/page.tsx index d9659eb3..f322d5c7 100644 --- a/app/(site)/(tools)/(domain)/domain-expiry/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-expiry/page.tsx @@ -13,7 +13,7 @@ export default async function DomainExpiryPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-lookup/domain-lookup-tool.tsx b/app/(site)/(tools)/(domain)/domain-lookup/domain-lookup-tool.tsx index 8e0a3845..5aa8e0a7 100644 --- a/app/(site)/(tools)/(domain)/domain-lookup/domain-lookup-tool.tsx +++ b/app/(site)/(tools)/(domain)/domain-lookup/domain-lookup-tool.tsx @@ -174,7 +174,7 @@ function Contacts({ result }: { result: DomainRegistration }) { } function Freshness({ result }: { result: DomainRegistration }) { - const rows = [{ fetch: result.registryFetch, label: "Registry response" }, { fetch: result.registrarFetch, label: "Registrar response" }].filter((entry): entry is { fetch: RdapFetch; label: string } => Boolean(entry.fetch)); + const rows = [{ fetch: result.registryFetch, label: "Registry response" }, { fetch: result.registrarFetch, label: "Registrar response" }].filter((entry): entry is { fetch: RdapFetch; label: string } => Boolean(entry.fetch) && entry.fetch?.status !== "no_service"); if (!rows.length) return null; return
    {rows.map(({ fetch, label }) =>
    {label}
    {lookupSourceHost(fetch.url) ?? "Host not reported"}{fetch.fromCache ? Cached : null}
    )}
    ; } diff --git a/app/(site)/(tools)/(domain)/domain-lookup/page.tsx b/app/(site)/(tools)/(domain)/domain-lookup/page.tsx index c9a8c81e..c5fe0b39 100644 --- a/app/(site)/(tools)/(domain)/domain-lookup/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-lookup/page.tsx @@ -13,7 +13,7 @@ export default async function DomainLookupPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-owner/domain-owner-tool.tsx b/app/(site)/(tools)/(domain)/domain-owner/domain-owner-tool.tsx index ff86607b..b47788c1 100644 --- a/app/(site)/(tools)/(domain)/domain-owner/domain-owner-tool.tsx +++ b/app/(site)/(tools)/(domain)/domain-owner/domain-owner-tool.tsx @@ -141,7 +141,7 @@ function Freshness({ result }: { result: DomainRegistration }) { const responses = [ { fetch: result.registryFetch, label: "Registry response" }, { fetch: result.registrarFetch, label: "Registrar response" }, - ].filter((item): item is { fetch: RdapFetch; label: string } => Boolean(item.fetch)); + ].filter((item): item is { fetch: RdapFetch; label: string } => Boolean(item.fetch) && item.fetch?.status !== "no_service"); if (!responses.length) return null; return (
    diff --git a/app/(site)/(tools)/(domain)/domain-owner/page.tsx b/app/(site)/(tools)/(domain)/domain-owner/page.tsx index d502e584..7e0f402c 100644 --- a/app/(site)/(tools)/(domain)/domain-owner/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-owner/page.tsx @@ -13,7 +13,7 @@ export default async function DomainOwnerPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-registrar/domain-registrar-tool.tsx b/app/(site)/(tools)/(domain)/domain-registrar/domain-registrar-tool.tsx index 800f502c..389cbc89 100644 --- a/app/(site)/(tools)/(domain)/domain-registrar/domain-registrar-tool.tsx +++ b/app/(site)/(tools)/(domain)/domain-registrar/domain-registrar-tool.tsx @@ -99,7 +99,7 @@ function NextSteps({ result }: { result: DomainRegistration }) { function Freshness({ result }: { result: DomainRegistration }) { const rows = [{ fetch: result.registryFetch, label: "Registry response" }, { fetch: result.registrarFetch, label: "Registrar response" }] - .filter((entry): entry is { fetch: RdapFetch; label: string } => Boolean(entry.fetch)); + .filter((entry): entry is { fetch: RdapFetch; label: string } => Boolean(entry.fetch) && entry.fetch?.status !== "no_service"); if (!rows.length) return null; return (
    diff --git a/app/(site)/(tools)/(domain)/domain-registrar/page.tsx b/app/(site)/(tools)/(domain)/domain-registrar/page.tsx index cf636ceb..b6e2acb4 100644 --- a/app/(site)/(tools)/(domain)/domain-registrar/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-registrar/page.tsx @@ -13,7 +13,7 @@ export default async function DomainRegistrarPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/domain-report/domain-report-view.ts b/app/(site)/(tools)/(domain)/domain-report/domain-report-view.ts index bf9ab252..dbbdaecf 100644 --- a/app/(site)/(tools)/(domain)/domain-report/domain-report-view.ts +++ b/app/(site)/(tools)/(domain)/domain-report/domain-report-view.ts @@ -121,7 +121,7 @@ export function findingDetail(finding: ReportFinding) { export function reportSourceRows(result: DomainReport) { const rows: Array<{ id: string; label: string; value: string }> = []; for (const [label, fetch] of [["Registry RDAP", result.registration?.registryFetch], ["Registrar RDAP", result.registration?.registrarFetch]] as const) { - if (!fetch) continue; + if (!fetch || fetch.status === "no_service") continue; rows.push({ id: label, label, value: `${host(fetch.url) ?? "Host not reported"}, fetched ${formatReportDate(fetch.fetchedAt)}, ${fetch.fromCache ? "cached" : "live response"}` }); } if (result.delegation) rows.push({ id: "dns", label: "DNS delegation", value: `${result.delegation.zone} via parent .${result.delegation.parentZone}, checked ${formatReportDate(result.delegation.checkedAt)}` }); diff --git a/app/(site)/(tools)/(domain)/domain-report/page.tsx b/app/(site)/(tools)/(domain)/domain-report/page.tsx index 7fdce560..48f89047 100644 --- a/app/(site)/(tools)/(domain)/domain-report/page.tsx +++ b/app/(site)/(tools)/(domain)/domain-report/page.tsx @@ -13,7 +13,7 @@ export default async function DomainReportPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/multi-tld-availability/page.tsx b/app/(site)/(tools)/(domain)/multi-tld-availability/page.tsx index 47f1ad48..74bd3be1 100644 --- a/app/(site)/(tools)/(domain)/multi-tld-availability/page.tsx +++ b/app/(site)/(tools)/(domain)/multi-tld-availability/page.tsx @@ -12,7 +12,7 @@ export default async function MultiTldAvailabilityPage() { const toolPage = await getRequiredToolPage("multi-tld-availability"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/punycode-converter/page.tsx b/app/(site)/(tools)/(domain)/punycode-converter/page.tsx index 170a5a65..6749b785 100644 --- a/app/(site)/(tools)/(domain)/punycode-converter/page.tsx +++ b/app/(site)/(tools)/(domain)/punycode-converter/page.tsx @@ -12,7 +12,7 @@ export default async function PunycodeConverterPage() { const toolPage = await getRequiredToolPage("punycode-converter"); return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/transfer-readiness/page.tsx b/app/(site)/(tools)/(domain)/transfer-readiness/page.tsx index 1048e377..e36858c2 100644 --- a/app/(site)/(tools)/(domain)/transfer-readiness/page.tsx +++ b/app/(site)/(tools)/(domain)/transfer-readiness/page.tsx @@ -13,7 +13,7 @@ export default async function TransferReadinessPage() { return ( - + } intro={} diff --git a/app/(site)/(tools)/(domain)/transfer-readiness/transfer-readiness-tool.tsx b/app/(site)/(tools)/(domain)/transfer-readiness/transfer-readiness-tool.tsx index 513c7bbc..49817999 100644 --- a/app/(site)/(tools)/(domain)/transfer-readiness/transfer-readiness-tool.tsx +++ b/app/(site)/(tools)/(domain)/transfer-readiness/transfer-readiness-tool.tsx @@ -93,7 +93,7 @@ function AccountChecklist({ items }: { items: string[] }) { function SourceMetadata({ result }: { result: TransferReadiness }) { const registration = result.registration; const fetch = registration.registryFetch; - if (!fetch) return null; + if (!fetch || fetch.status === "no_service") return null; return (
    Registry source
    {sourceHost(fetch.url) ?? "Host not reported"}
    diff --git a/app/(site)/(tools)/(saas)/arr-calculator/arr-calculator.tsx b/app/(site)/(tools)/(saas)/arr-calculator/arr-calculator.tsx index a416ddba..032f61ce 100644 --- a/app/(site)/(tools)/(saas)/arr-calculator/arr-calculator.tsx +++ b/app/(site)/(tools)/(saas)/arr-calculator/arr-calculator.tsx @@ -135,7 +135,7 @@ export function ArrCalculator() {

    diff --git a/app/(site)/(tools)/(saas)/break-even-mrr-calculator/content/article.mdx b/app/(site)/(tools)/(saas)/break-even-mrr-calculator/content/article.mdx index e7ba0ca6..9f3fcfa1 100644 --- a/app/(site)/(tools)/(saas)/break-even-mrr-calculator/content/article.mdx +++ b/app/(site)/(tools)/(saas)/break-even-mrr-calculator/content/article.mdx @@ -77,10 +77,11 @@ Current MRR shows where today's recurring revenue sits against break-even. It do Take $1,000 of fixed costs, $50 of ARPA, and $10 of variable cost. Contribution is $40.00 and break-even MRR is $1,250.00. 25 accounts bring exactly $1,250.00, so the two revenue figures match here. -| Current MRR | Monthly result now | Gap | More accounts at $50 | -| --- | --- | --- | --- | -| $500 | -$600.00 | MRR still needed: $750.00 | 15 | -| $5,000 | $3,000.00 | Above break-even by $3,750.00 | 0 | +| Result | $500 current MRR | $5,000 current MRR | +| --- | --- | --- | +| Monthly result now | -$600.00 | $3,000.00 | +| Gap | MRR still needed: $750.00 | Above break-even by $3,750.00 | +| More accounts at $50 | 15 | 0 | At $500 of current MRR, variable costs leave $400.00, which is $600.00 short of the $1,000 fixed cost. Each extra account adds $40.00, so 15 accounts close that $600.00 gap. diff --git a/app/(site)/(tools)/(saas)/ltv-cac-calculator/content/article.mdx b/app/(site)/(tools)/(saas)/ltv-cac-calculator/content/article.mdx index 69d73516..de18f9ed 100644 --- a/app/(site)/(tools)/(saas)/ltv-cac-calculator/content/article.mdx +++ b/app/(site)/(tools)/(saas)/ltv-cac-calculator/content/article.mdx @@ -28,11 +28,11 @@ Payback uses the cost and one period of gross profit. Churn isn't part of it. Th With $50 of monthly ARPA, an 80% margin, and a $400 CAC, monthly gross profit is $40.00, so payback is 10.0 months at any churn: -| Monthly customer churn | Lifetime gross profit | Ratio | Payback | -| --- | --- | --- | --- | -| 3% | $1,333.33 | 3.33:1 | 10.0 months | -| 0.5% | $8,000.00 | 20.00:1 | 10.0 months | -| 0% | Not estimable | Not estimable | 10.0 months | +| Monthly customer churn | Lifetime gross profit | Ratio | +| --- | --- | --- | +| 3% | $1,333.33 | 3.33:1 | +| 0.5% | $8,000.00 | 20.00:1 | +| 0% | Not estimable | Not estimable | The 20.00:1 ratio still takes 10.0 months of gross profit to cover $400. A high ratio here means customers stay longer in the model. It doesn't mean the money comes back faster. diff --git a/app/(site)/(tools)/(saas)/mrr-calculator/content/usage.mdx b/app/(site)/(tools)/(saas)/mrr-calculator/content/usage.mdx index fcf3ee13..2cbf4f10 100644 --- a/app/(site)/(tools)/(saas)/mrr-calculator/content/usage.mdx +++ b/app/(site)/(tools)/(saas)/mrr-calculator/content/usage.mdx @@ -16,7 +16,7 @@ Enter every price in one currency. The currency menu only changes the symbol, so - Pro yearly: 30 subscriptions × $190 a year ÷ 12 = $475.00 - Team: 8 subscriptions × $147 a quarter ÷ 3 = $392.00 -MRR is $3,147.00. Annualized ARR is $37,764.00. +MRR is $3,147.00. ARR (12 × MRR) is $37,764.00. diff --git a/app/(site)/(tools)/(saas)/mrr-calculator/mrr-calculator.tsx b/app/(site)/(tools)/(saas)/mrr-calculator/mrr-calculator.tsx index d1f95a67..b997a01f 100644 --- a/app/(site)/(tools)/(saas)/mrr-calculator/mrr-calculator.tsx +++ b/app/(site)/(tools)/(saas)/mrr-calculator/mrr-calculator.tsx @@ -199,7 +199,7 @@ export function MrrCalculator() {

    Plans

    -

    Enter the recurring price for the selected full billing term.

    +

    Enter what one subscription pays each billing interval. A $190 yearly plan is 190, with Annually.

    -
    Annualized ARR
    +
    ARR (12 × MRR)
    {formatCents(result.annualizedArrCents, result.currency)}

    - 12 × MRR is a run rate. It does not mean that revenue was earned or is guaranteed. + ARR here is a run rate. It isn't revenue you have earned or are sure to get.

    diff --git a/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts b/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts index a14d2194..ad5a21a8 100644 --- a/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts +++ b/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts @@ -187,7 +187,7 @@ function resultForMode(mode: number): ChmodValidResult { bits.sticky ? "Sticky" : null, ].filter((value): value is string => Boolean(value)); const context = bits.othersWrite - ? ["The others class includes write permission. This is not an effective-access check."] + ? ["Every other user on the system can write to this. Real access also depends on folder permissions, ACLs, and mount options."] : []; const octal = formatOctalMode(mode); return { diff --git a/app/(site)/(tools)/chmod-calculator/chmod-calculator.module.css b/app/(site)/(tools)/chmod-calculator/chmod-calculator.module.css index 45b66279..6f8e15ed 100644 --- a/app/(site)/(tools)/chmod-calculator/chmod-calculator.module.css +++ b/app/(site)/(tools)/chmod-calculator/chmod-calculator.module.css @@ -163,10 +163,6 @@ } @media (max-width: 680px) { - .tool + :global([data-tool-page-content]) table { - min-width: 42rem; - } - .permissionGroups { grid-template-columns: minmax(0, 1fr); } diff --git a/app/(site)/(tools)/chmod-calculator/chmod-calculator.tsx b/app/(site)/(tools)/chmod-calculator/chmod-calculator.tsx index 2e0e6b55..169692df 100644 --- a/app/(site)/(tools)/chmod-calculator/chmod-calculator.tsx +++ b/app/(site)/(tools)/chmod-calculator/chmod-calculator.tsx @@ -274,7 +274,7 @@ export function ChmodCalculator() {
    } code={result.command} label="Command example" /> -

    Replace the example path with your file's path. Filesystem effects are not verified by this calculator.

    +

    Replace the example path with your file's path. This page only works out the mode. It can't see your files.

    ) : null} diff --git a/app/(site)/(tools)/ip-asn-lookup/page.tsx b/app/(site)/(tools)/ip-asn-lookup/page.tsx index ea0f16eb..2baaf8fe 100644 --- a/app/(site)/(tools)/ip-asn-lookup/page.tsx +++ b/app/(site)/(tools)/ip-asn-lookup/page.tsx @@ -13,7 +13,7 @@ export default async function IpAsnLookupPage() { const toolPage = await getRequiredToolPage("ip-asn-lookup"); return ( - + } intro={} toolPage={toolPage} /> diff --git a/app/ui/content-markdown.module.css b/app/ui/content-markdown.module.css index 584dffc9..071d8f2e 100644 --- a/app/ui/content-markdown.module.css +++ b/app/ui/content-markdown.module.css @@ -34,8 +34,12 @@ border-bottom: 0; } -.tableScroll code { - overflow-wrap: break-word; +/* Each code item is one box, so values like rw-r--r-- don't split across lines with the text around them. + Quoted messages wrap at spaces inside their box. A table too wide for the column scrolls in its frame. + The selector outranks the prose rule for inline code, which would break anywhere. */ +.tableScroll table :not(pre) > code { + display: inline-block; + overflow-wrap: normal; white-space: normal; word-break: normal; } diff --git a/app/ui/content-markdown.tsx b/app/ui/content-markdown.tsx index 5ae1578c..9b21b75b 100644 --- a/app/ui/content-markdown.tsx +++ b/app/ui/content-markdown.tsx @@ -166,6 +166,7 @@ function transformUrl(url: string) { return url.startsWith("marker-art://") ? url : defaultUrlTransform(url); } +/** Only courses render database Markdown. Other page families import MDX content. */ export function ContentMarkdown({ markdown, components: overrides }: { markdown: string; components?: Components }): ReactNode { return {markdown}; } diff --git a/app/ui/courses/course-shell.tsx b/app/ui/courses/course-shell.tsx index 8489eb30..fcf146bd 100644 --- a/app/ui/courses/course-shell.tsx +++ b/app/ui/courses/course-shell.tsx @@ -6,11 +6,10 @@ import Link from "next/link"; import type { ReactNode } from "react"; import type { CourseDefinition } from "@/lib/courses"; import { courseLessonHref, courseLessonNeighbors } from "@/lib/courses"; -import { getPublishedPage, getRequiredPublishedPage } from "@/lib/page-registry"; +import { getRequiredPublishedPage } from "@/lib/page-registry"; import { ContentMarkdown } from "@/app/ui/content-markdown"; -import { buildBreadcrumbStructuredData } from "@/lib/seo"; +import { buildCourseBreadcrumbs } from "@/lib/breadcrumbs"; import { AppShell, SidebarLabel } from "@/app/ui/site/app-shell"; -import { JsonLd } from "@/app/ui/site/json-ld"; import { PageHeader } from "@/app/ui/site/page-header"; import { PageMeta } from "@/app/ui/site/page-meta"; import { proseClassName, proseFlowClassName } from "@/app/ui/site/prose"; @@ -88,20 +87,9 @@ export async function CourseLessonPage({ children, course, currentSlug, entryHer const lesson = course.lessons.find((entry) => entry.slug === currentSlug); if (!lesson?.published) notFound(); const isLanding = currentSlug === ""; - const [coursePage, lessonPage] = await Promise.all([ - getRequiredPublishedPage(course.registrySlug), - isLanding ? null : getPublishedPage(courseLessonHref(course, lesson).slice(1)), - ]); - // Noindex pages carry no structured data. - const indexable = (isLanding ? coursePage : lessonPage)?.is_indexable ?? false; + const coursePage = await getRequiredPublishedPage(course.registrySlug); const heading = directoryTitleParts(title).map(part => part.text).join(""); - const crumbs = [ - { name: "stack127", path: "/" }, - { name: courseName(course), path: course.basePath }, - ]; - if (lesson?.slug) { - crumbs.push({ name: lesson.sidebarLabel, path: courseLessonHref(course, lesson) }); - } + const crumbs = buildCourseBreadcrumbs(course, lesson); const headingBlock = ( ({ name: crumb.name, href: crumb.path, section: index < 2 }))}> @@ -117,7 +105,6 @@ export async function CourseLessonPage({ children, course, currentSlug, entryHer sidebar={} sidebarLabel={`${courseName(course)} sidebar`} > - {indexable ? : null} {entryHeroArt ? {headingBlock} : null} {entryHeroArt ? null : headingBlock} diff --git a/app/ui/directories/directory-page-content.tsx b/app/ui/directories/directory-page-content.tsx index 149911ad..dc274142 100644 --- a/app/ui/directories/directory-page-content.tsx +++ b/app/ui/directories/directory-page-content.tsx @@ -1,16 +1,8 @@ import { Fragment } from "react"; -import type { Components } from "react-markdown"; -import { ContentMarkdown } from "../content-markdown"; -import { directoryContentSection, directoryTitleParts } from "@/lib/directory-page-content"; -import type { Stack127DirectoryPage } from "@/lib/directory-pages"; +import { directoryTitleParts } from "@/lib/directory-page-content"; export function DirectoryPageTitle({ title }: { title: string }) { return directoryTitleParts(title).map((part, index) => part.marked ? {part.text} : {part.text}); } - -export function DirectoryPageContent({ page, section, components }: { page: Stack127DirectoryPage; section?: string; components?: Components }) { - const markdown = section ? directoryContentSection(page.content_markdown, section) : page.content_markdown; - return markdown ? : null; -} diff --git a/app/ui/site/tool-page-content.tsx b/app/ui/site/tool-page-content.tsx index 143f3d5e..8d75344b 100644 --- a/app/ui/site/tool-page-content.tsx +++ b/app/ui/site/tool-page-content.tsx @@ -4,18 +4,17 @@ import type { Stack127ToolPage } from "@/lib/tool-pages"; import { PageHeader } from "./page-header"; import { PageMeta } from "./page-meta"; import { PageTitleIcon } from "./page-title-icon"; -import { ContentMarkdown } from "../content-markdown"; import { proseClassName, proseFlowClassName } from "./prose"; import styles from "./tool-page-content.module.css"; -/** `intro` is the page's content/intro.mdx. Pages not yet moved to MDX render intro_markdown. */ +/** `intro` is the page's required content/intro.mdx. */ export async function ToolPageHeader({ icon, intro, toolPage, }: { icon: ReactNode; - intro?: ReactNode; + intro: ReactNode; toolPage: Stack127ToolPage; }) { const breadcrumbs = await getToolBreadcrumbs(toolPage.page_id, toolPage.slug, toolPage.card_name); @@ -30,7 +29,7 @@ export async function ToolPageHeader({ updatedAt={toolPage.updated_at} version={toolPage.tool_version} /> - {intro ?? } + {intro} ); } @@ -46,13 +45,3 @@ export function ToolPageArticle({ children }: { children: ReactNode }) {
    ); } - -/** For pages whose usage and article still come from the database. */ -export function ToolPageMarkdown({ toolPage }: { toolPage: Stack127ToolPage }) { - return ( - - {toolPage.usage_markdown ? : null} - - - ); -} diff --git a/content_docs/keyboard-shortcuts/altplusctrl-backlog.md b/content_docs/keyboard-shortcuts/altplusctrl-backlog.md index 33c05807..7fd47ac2 100644 --- a/content_docs/keyboard-shortcuts/altplusctrl-backlog.md +++ b/content_docs/keyboard-shortcuts/altplusctrl-backlog.md @@ -125,7 +125,7 @@ Research must start with the current first-party shortcut reference for the name | Krita | `krita` | Verified | https://docs.krita.org/en/reference_manual/preferences/shortcut_settings.html | | LastPass | `lastpass` | Blocked | https://lastpass.com/misc_download2.php?lang=en_US | | LibreOffice Writer | `libreoffice-writer` | Verified | https://help.libreoffice.org/latest/en-US/text/swriter/04/01020000.html?DbPAR=SHARED | -| Linear | `linear` | Verified | https://linear.app/changelog/2021-03-25-keyboard-shortcuts-help | +| Linear | `linear` | Verified | https://linear.app/docs/select-issues | | LinkedIn | `linkedin` | Verified | https://www.linkedin.com/help/linkedin/answer/a6246187?lang=en-US | | Linux (KDE Plasma) | `linux-kde-plasma` | Verified | https://docs.kde.org/stable_kf6/en/khelpcenter/fundamentals/fundamentals.pdf | | Logic Pro | `logic-pro` | Verified | https://support.apple.com/en-ca/guide/logicpro/lgcp02bf31b6/mac | diff --git a/content_docs/kindle-unlimited-kenp-earnings-calculator/tool-spec.md b/content_docs/kindle-unlimited-kenp-earnings-calculator/tool-spec.md index ea216b76..f6497eef 100644 --- a/content_docs/kindle-unlimited-kenp-earnings-calculator/tool-spec.md +++ b/content_docs/kindle-unlimited-kenp-earnings-calculator/tool-spec.md @@ -83,7 +83,7 @@ Use `Amazon.com`, `USD`, and a valid month for these arithmetic checks; the rate The flat route is `app/(site)/(tools)/kindle-unlimited-kenp-earnings-calculator/page.tsx`; it uses the shared shell, `PageCanvas`, and tool-page renderer. Put the pure validation and arithmetic engine in `lib/kdp/kenp.ts`, the client form and result in the route's `kindle-unlimited-kenp-earnings-calculator.tsx`, and route-only layout in its `.module.css` if shared tool styles do not cover it. Put focused arithmetic and validation tests in `tests/pages/kindle-unlimited-kenp-earnings-calculator/kenp.test.mjs`. No new page-specific script or external data table is needed. -The page's publication and SEO record belongs to `public.stack127_pages`; title, introduction, usage, supporting copy, card fields, and version belong to `public.stack127_tool_pages`; catalog links belong to `public.stack127_tool_catalog_memberships`. Use the existing `scripts/stack127/tool-pages/update-content.mjs` and `update-catalogs.mjs` workflow for development content and placement. The calculation constants are the user's inputs, not a maintained payout table. +The page's publication and SEO record belongs to `public.stack127_pages`; title, card fields, and version belong to `public.stack127_tool_pages`; catalog links belong to `public.stack127_tool_catalog_memberships`. The introduction, usage, and supporting copy live in the route's `content/*.mdx`. Use `stack127:tools:publish` for reviewed development metadata and catalog placement, following `stack127_docs/page-publishing.md`. The calculation constants are the user's inputs, not a maintained payout table. ### Catalog placement diff --git a/content_docs/self-hosted-app-resource-planner/implementation-report.md b/content_docs/self-hosted-app-resource-planner/implementation-report.md index b70d4a39..7f009f05 100644 --- a/content_docs/self-hosted-app-resource-planner/implementation-report.md +++ b/content_docs/self-hosted-app-resource-planner/implementation-report.md @@ -300,7 +300,7 @@ Restored: - Catalogue loading: server-side query of published self-hostable app rows and reviewed resource estimates, passing a compact normalized catalogue to the client. Reuse existing directory data conventions; do not create a new public data table. - Styles: `self-hosted-app-resource-planner.module.css`, following the tool workbench and existing tokens. Do not put page CSS in `app/globals.css`. - Tests: pure engine unit tests, route/page tests, focused Playwright states, and one ownership manifest at `tests/pages/self-hosted-app-resource-planner/page.json`. -- Script: `scripts/self-hosted-app-resource-planner/preview-local-page.mjs` and `scripts.json` if the route needs a preview helper. +- Development preview: prepare, preview, and apply a reviewed `stack127:tools:publish` batch with `--environment development`, following `stack127_docs/page-publishing.md`. - Dependency policy: use existing React, Next, and tool UI primitives. Add no dependency for arithmetic or bars. - Publication: keep `public.stack127_pages` unpublished during build and QA. The route must return 404 until separately published. diff --git a/content_docs/zigbee-devices/README.md b/content_docs/zigbee-devices/README.md index 1b11e910..0f4fda74 100644 --- a/content_docs/zigbee-devices/README.md +++ b/content_docs/zigbee-devices/README.md @@ -2,35 +2,42 @@ ## Status -Implementation approved on 2026-08-29. Keep `/zigbee-devices` unpublished until a separate publication review. +Published at `/zigbee-devices`. Publication is controlled by `public.stack127_pages`. ## Product decision -This is not a general list of every product that carries a Zigbee logo. It is a source-backed intersection of exact device models that have: +This is not a general list of every product that carries a Zigbee logo. It is a source-backed union of exact device models known to either: -1. a current Zigbee2MQTT converter definition; and -2. a community compatibility record that names both ZHA and Zigbee2MQTT. +1. Zigbee2MQTT, through a current converter definition; or +2. the Blakadder community compatibility repository, through a device record. -The directory does not reduce those facts to one universal "compatible" verdict. A device may join a network while exposing only some of its features. Each record keeps the two sources separate. +When both sources name the same brand and model, the record carries evidence from both. A device stays listed when only one source knows it. + +The directory does not reduce those facts to one universal "compatible" verdict. A device may join a network while exposing only some of its features. Each record keeps the sources separate: + +- Zigbee2MQTT support comes only from Zigbee2MQTT. +- ZHA, deCONZ, Tasmota, ioBroker, and other hub reports come only from Blakadder, and only for the hubs that record names. A Blakadder record without a ZHA entry is not shown as ZHA support. +- The capability filter and the "Most features" sort read Zigbee2MQTT fields and Blakadder's reported features, mapped to the same short list of featured capabilities. ## Route and family - Canonical route: `/zigbee-devices` - Source family: `app/(site)/(directories)/zigbee-devices/` -- Publication state: unpublished +- Page words: `content/intro.mdx` and `content/article.mdx` beside the route - Runtime data: committed repo-owned snapshot under `lib/zigbee-devices/data/` - Refresh code: `scripts/zigbee-devices/` -## Initial source contract +## Source contract + +- Zigbee2MQTT converter definitions come from the pinned `zigbee-herdsman-converters` npm package, licensed MIT, and the pinned Zigbee2MQTT website commit. +- Community reports come from the Blakadder Zigbee Device Compatibility Repository at a recorded Git commit. +- Records join on an exact vendor and model, or an exact model when only one record has it. Ambiguous matches stay as separate records instead of being guessed. +- Coordinator records are excluded because this directory covers devices attached to a Zigbee network. Coordinators live in `/zigbee-coordinators`. +- Each record keeps its upstream image URL. Images are stored as normalized WebP copies. +- Missing evidence stays unknown. A device with no ZHA report has not failed with ZHA; nobody has reported it yet. -- Zigbee2MQTT converter definitions come from the pinned `zigbee-herdsman-converters` npm package, licensed MIT. -- Cross-gateway confirmation comes from the Blakadder Zigbee Device Compatibility Repository at a recorded Git commit. -- Device images come from that same pinned Blakadder revision. The refresh stores normalized WebP copies locally and keeps the upstream image URL and repository licenses with the generated assets. -- Records join only on an exact marketed model identifier after case normalization. -- Ambiguous duplicate models are excluded instead of guessed. -- Coordinator records are excluded because this directory covers devices attached to a Zigbee network. Coordinators remain a separate planned catalog. -- Missing evidence stays unknown. Absence from the ZHA quirks repository does not mean a standards-compliant device is unsupported. +## Page rules -## Launch boundary +Coverage is not described as exhaustive. The page header shows when the page was last updated. The line above the cards shows when the sources were last read, labelled "Sources read". Device details link to each source: "Zigbee2MQTT support" and "Blakadder community report". -The first complete snapshot may contain every safe exact-model intersection. Coverage is not described as exhaustive, and the page must show the snapshot date and source revisions. Price, regional availability, range, battery-life claims, rankings, and affiliate links are out of scope. +Amazon product links appear only where a reviewed match exists, with the affiliate disclosure. Regional availability, range, battery-life claims, and rankings are out of scope. diff --git a/content_docs/zigbee-devices/brief.md b/content_docs/zigbee-devices/brief.md index 5bdd4613..14ecf009 100644 --- a/content_docs/zigbee-devices/brief.md +++ b/content_docs/zigbee-devices/brief.md @@ -14,7 +14,7 @@ The primary query is `Zigbee compatible devices`. Supporting queries are `Zigbee ## Coverage contract -The catalog universe is the union of current Zigbee2MQTT device definitions and Blakadder compatibility records. A device stays in the catalog when only one source knows it. Exact-model joins add evidence but never decide inclusion. Coordinator records belong in `/zigbee-coordinators` and are excluded here with a counted reason. Every included record needs a local product image, an image source, exact model identity, support status by source, useful capabilities, and a source link. The snapshot records source totals, union size, matched records, one-source records, exclusions, image coverage, failures, revisions, and refresh time. Keep the route unpublished until the union, details, and images are complete. +The catalog universe is the union of current Zigbee2MQTT device definitions and Blakadder compatibility records. A device stays in the catalog when only one source knows it. Exact-model joins add evidence but never decide inclusion. Coordinator records belong in `/zigbee-coordinators` and are excluded here with a counted reason. Every included record needs a local product image, an image source, exact model identity, support status by source, useful capabilities, and a source link. The snapshot records source totals, union size, matched records, one-source records, exclusions, image coverage, failures, revisions, and refresh time. ## Show vs say diff --git a/content_docs/zigbee-devices/data-workflow.md b/content_docs/zigbee-devices/data-workflow.md index aff2d024..ac1ef222 100644 --- a/content_docs/zigbee-devices/data-workflow.md +++ b/content_docs/zigbee-devices/data-workflow.md @@ -14,21 +14,19 @@ The operator pins both inputs, runs the refresh, reviews the count and exclusion ## Safe matching 1. Parse Blakadder front matter without executing repository content. -2. Keep records whose compatibility list includes both `zha` and `z2m`. -3. Exclude coordinators. -4. Group records by case-normalized marketed model. -5. Exclude model groups with conflicting identity fields. -6. Match the remaining model exactly to one Zigbee2MQTT definition. -7. Prepare the converter definition and flatten exposed capability names. -8. Write deterministic records sorted by vendor, model, and slug. -9. Normalize each matching Blakadder image to fit within a 480 by 480 WebP and store it under `public/zigbee-device-images/`. +2. Exclude coordinators. +3. Expand every marketed Zigbee2MQTT definition, including white-label models, and flatten its exposed capability names. +4. Join a Blakadder record to a definition on exact vendor and model, or on exact model when only one record has it. Ambiguous matches are not joined. +5. Add every unjoined Blakadder record as its own device, so the catalog is the union of both sources. +6. Write deterministic records sorted by vendor, model, and slug. +7. Normalize each product image to fit within a 480 by 480 WebP and keep its upstream image URL. Generic Zigbee identifiers such as `TS0601` do not create a match by themselves. Those identifiers are reused by unrelated devices and need manufacturer fingerprints. ## Review checks - Device count does not fall unexpectedly. -- Every record has both source URLs and pinned source revisions. +- Every record has at least one source URL, and the snapshot records pinned source revisions. - Every record has one local product image and an exact upstream image URL. - Slugs and marketed models are unique. - No coordinator appears. diff --git a/lib/breadcrumbs.ts b/lib/breadcrumbs.ts index c7d3a056..4c2af661 100644 --- a/lib/breadcrumbs.ts +++ b/lib/breadcrumbs.ts @@ -1,6 +1,8 @@ import { cache } from "react"; -import { getExactPublishedPage, pathFromSlug } from "./page-registry"; +import { getExactPublishedPage, pathFromSlug, type Stack127Page } from "./page-registry"; import { getPrimaryToolCatalog } from "./tool-catalogs"; +import { courseLessonHref, type CourseDefinition, type CourseLesson } from "./courses"; +import { directoryTitleParts } from "./directory-page-content"; /** One step in a page's trail. Sections are the site's top-level areas and show lowercase, like the main menu. */ export type Breadcrumb = { name: string; href: string; section: boolean }; @@ -39,3 +41,39 @@ export const getToolBreadcrumbs = cache(async (toolPageId: number | string, slug { name, href: pathFromSlug(slug), section: false }, ]; }); + +/** Course headings and registry JSON-LD share the course title and lesson's sidebar name. */ +export function buildCourseBreadcrumbs(course: CourseDefinition, lesson: CourseLesson) { + return [ + { name: home.name, path: home.href }, + { name: directoryTitleParts(course.title).map(part => part.text).join(""), path: course.basePath }, + ...(lesson.slug ? [{ name: lesson.sidebarLabel, path: courseLessonHref(course, lesson) }] : []), + ]; +} + +/** Resolve the same trail as the page header without relying on route-owned structured data. */ +export const getPageBreadcrumbs = cache(async (page: Stack127Page): Promise => { + if (!page.slug) return []; + if (page.page_family === "tool") { + const { getRequiredToolPage } = await import("./tool-pages"); + const tool = await getRequiredToolPage(page.slug); + return getToolBreadcrumbs(page.id, page.slug, tool.card_name); + } + if (page.page_family === "course") { + const { getRequiredCourse } = await import("./course-pages"); + const courseSlug = page.slug.split("/")[0]; + const course = await getRequiredCourse(courseSlug); + const lesson = course.lessons.find(entry => entry.slug === page.slug.slice(courseSlug.length + 1)); + if (!lesson?.published) throw new Error(`Published course lesson is missing: ${page.slug}`); + return buildCourseBreadcrumbs(course, lesson).map((crumb, index) => ({ + name: crumb.name, href: crumb.path, section: index < 2, + })); + } + if (page.slug.startsWith("keyboard-shortcuts/")) { + const { loadShortcutApp } = await import("./shortcuts/index"); + const app = await loadShortcutApp(page.slug.slice("keyboard-shortcuts/".length)); + if (!app) throw new Error(`Published shortcut app is missing: ${page.slug}`); + return getBreadcrumbs(page.slug, app.name); + } + return getBreadcrumbs(page.slug); +}); diff --git a/lib/directory-page-content.ts b/lib/directory-page-content.ts index 42a80c10..d8b8edcb 100644 --- a/lib/directory-page-content.ts +++ b/lib/directory-page-content.ts @@ -1,13 +1,3 @@ -/** Named Markdown sections keep prose beside the records it explains. */ -export function directoryContentSection(markdown: string | null, section: string) { - if (!markdown) return ""; - const sections = markdown.split(/^\s*$/m); - for (let index = 1; index < sections.length; index += 2) { - if (sections[index] === section) return sections[index + 1].trim(); - } - throw new Error(`Directory content section is missing: ${section}`); -} - export function directoryTitleParts(title: string) { return title.split(/([\s\S]*?<\/mark>)/g).filter(Boolean).map(text => ({ text: text.replace(/^|<\/mark>$/g, ""), diff --git a/lib/directory-pages.ts b/lib/directory-pages.ts index 10d102db..2d809130 100644 --- a/lib/directory-pages.ts +++ b/lib/directory-pages.ts @@ -11,8 +11,6 @@ export type Stack127DirectoryPage = { page_id: number | string; slug: string; title: string; - intro_markdown: string; - content_markdown: string | null; card_name: string; card_description: string; card_icon_key: string | null; @@ -22,7 +20,7 @@ export type Stack127DirectoryPage = { row_updated_at: Date | string; }; -const columns = "page_id,title,intro_markdown,content_markdown,card_name,card_description,card_icon_key,card_art_key,row_updated_at"; +const columns = "page_id,title,card_name,card_description,card_icon_key,card_art_key,row_updated_at"; export const getPublishedDirectoryPage = cache(async (slug: string) => unstable_cache(async () => { return readPublicData({ @@ -39,7 +37,9 @@ export const getPublishedDirectoryPage = cache(async (slug: string) => unstable_ }, postgresRead: async () => { const result = await getPool().query(` - select content.*, page.slug, page.published_at, page.updated_at + select content.page_id,content.title,content.card_name,content.card_description, + content.card_icon_key,content.card_art_key,content.row_updated_at, + page.slug,page.published_at,page.updated_at from public.stack127_directory_pages content join public.stack127_pages page on page.id = content.page_id where page.slug = $1 and page.page_family = 'directory' and page.is_published diff --git a/lib/dns/dns-wire.ts b/lib/dns/dns-wire.ts index 7ee2c6ce..8badd6d6 100644 --- a/lib/dns/dns-wire.ts +++ b/lib/dns/dns-wire.ts @@ -111,7 +111,8 @@ export function encodeDnsQuery( const packet: Packet = { type: "query", id: options.id ?? Math.floor(Math.random() * 65_536), - flags: options.recursive === false ? 0 : dnsPacket.RECURSION_DESIRED, + // RFC 6840 section 5.7 requests the resolver's AD flag without requesting DNSSEC records via DO. + flags: options.recursive === false ? 0 : dnsPacket.RECURSION_DESIRED | dnsPacket.AUTHENTIC_DATA, questions: [{ name, type: type as RecordType, class: "IN" }], answers: [], authorities: [], diff --git a/lib/launch-directories-query.ts b/lib/launch-directories-query.ts index 1a362346..bf627d16 100644 --- a/lib/launch-directories-query.ts +++ b/lib/launch-directories-query.ts @@ -2,7 +2,7 @@ import type { LaunchDirectory } from "./launch-directories"; export const LAUNCH_DIRECTORY_PAGE_SIZE = 24; -// A short editorial list of long-running launch sites most makers start with. +// A short editorial pick of the launch sites most makers start with. const recommendedPins = new Map([ ["product-hunt", 0], ["betalist", 1], ["devhunt", 2], ["peerlist-launchpad", 3], ["alternativeto", 4], ["saashub", 5], @@ -46,6 +46,16 @@ export function launchDirectoryHasFreeOption(directory: LaunchDirectory) { return directory.cost_kind === "free" || directory.cost_kind === "free_and_paid"; } +/** + * A free plan whose checked submission flow says a backlink is optional or not required. + * Unchecked records don't qualify: unknown isn't the same as "not required". + */ +export function launchDirectoryFreeWithoutRequiredBacklink(directory: LaunchDirectory) { + if (!launchDirectoryHasFreeOption(directory)) return false; + const backlink = directory.submission_details?.backlink; + return backlink === "optional" || backlink === "not_required"; +} + function matchesCost(directory: LaunchDirectory, cost: string) { if (cost === "free") return launchDirectoryHasFreeOption(directory); return directory.cost_kind === cost; @@ -70,8 +80,7 @@ export function filterLaunchDirectories( && (!query.categories?.length || query.categories.some((category) => directory.categories.includes(category))) && (!query.costs?.length || query.costs.some((cost) => matchesCost(directory, cost))) && (!query.links?.length || query.links.includes(directory.link_type_kind)) - && (query.backlink !== "not_required" || (launchDirectoryHasFreeOption(directory) - && ["optional", "not_required"].includes(directory.submission_details?.backlink ?? "unknown"))) + && (query.backlink !== "not_required" || launchDirectoryFreeWithoutRequiredBacklink(directory)) && (query.submission !== "verified" || verified) && (query.submission !== "unverified" || !verified); }); diff --git a/lib/page-registry.ts b/lib/page-registry.ts index c60855d7..1a734ec4 100644 --- a/lib/page-registry.ts +++ b/lib/page-registry.ts @@ -5,7 +5,7 @@ import { cache } from "react"; import { unstable_cache } from "next/cache"; import { getPool } from "./db"; import { readPublicData, selectPublicRows } from "./public-data-api"; -import { absoluteUrl, siteName, siteUrl } from "./seo"; +import { absoluteUrl, buildBreadcrumbStructuredData, siteName, siteUrl } from "./seo"; import { homePageSlugs, resolvePagePublicationState } from "./page-registry-helpers"; import type { RegistryPublicationState } from "./page-registry-helpers"; import { PAGE_REGISTRY_TAG, HOME_PAGES_TAG, SITEMAP_TAG } from "./cache-tags"; @@ -279,8 +279,7 @@ export function buildRegistryPageStructuredData(state: PagePublicationState) { }; } -// Directory structured data uses the same publication boundary as page metadata. -export async function getRegistryPageStructuredData(state: PagePublicationState) { +async function getRegistryPageEntity(state: PagePublicationState) { const page = buildRegistryPageStructuredData(state); if (!page || state.kind !== "exact" || !state.page.slug.startsWith("platform-fees/")) return page; @@ -312,3 +311,14 @@ export async function getRegistryPageStructuredData(state: PagePublicationState) return page; } } + +// All page and breadcrumb data share the registry's exact, indexable publication boundary. +export async function getRegistryPageStructuredData(state: PagePublicationState) { + const page = await getRegistryPageEntity(state); + if (!page || state.kind !== "exact") return null; + const { getPageBreadcrumbs } = await import("./breadcrumbs"); + const trail = await getPageBreadcrumbs(state.page); + return [page, ...(trail.length ? [buildBreadcrumbStructuredData(trail.map(crumb => ({ + name: crumb.name, path: crumb.href, + })))] : [])]; +} diff --git a/lib/registry-layout.tsx b/lib/registry-layout.tsx index 9e2daae8..142d626c 100644 --- a/lib/registry-layout.tsx +++ b/lib/registry-layout.tsx @@ -2,7 +2,7 @@ import type { Metadata } from "next"; import type { ReactNode } from "react"; import { notFound } from "next/navigation"; import { cache } from "react"; -import { buildRegistryMetadata, getRegistryPageStructuredData, getPagePublicationState } from "./page-registry"; +import { buildRegistryMetadata, getRegistryPageStructuredData, getPagePublicationState, type PagePublicationState } from "./page-registry"; import { JsonLd } from "@/app/ui/site/json-ld"; import { siteStructuredData } from "./seo"; @@ -15,7 +15,11 @@ const stateForPath = cache(async (pathname: string) => { /** Structured data for one exact path. Index pages under a shared parent layout render it themselves. */ export async function RegistryStructuredData({ path }: { path: string }) { const state = await stateForPath(path); - const data = state ? await getRegistryPageStructuredData(state) : null; + return state ? RegistryPageJsonLd({ state }) : null; +} + +async function RegistryPageJsonLd({ state }: { state: PagePublicationState }) { + const data = await getRegistryPageStructuredData(state); return data ? <> : null; } @@ -41,8 +45,7 @@ export function registryLayout(template: string, { structuredData = "layout" }: if (!state) return props.children; if (state.kind === "missing") notFound(); if (structuredData === "page") return props.children; - const data = await getRegistryPageStructuredData(state); - return <>{data ? <> : null}{props.children}; + return <>{await RegistryPageJsonLd({ state })}{props.children}; }, }; } diff --git a/lib/shortcuts/apps/1password.ts b/lib/shortcuts/apps/1password.ts index 71eb948e..7a33aac2 100644 --- a/lib/shortcuts/apps/1password.ts +++ b/lib/shortcuts/apps/1password.ts @@ -8,8 +8,6 @@ export const onePassword: AppShortcuts = { name: "1Password", category: "Password manager", platforms: [...platforms], - intro: - "1Password has separate keyboard layers for the desktop app, Quick Access, and the browser extension. The bindings below keep those contexts separate so the same key can be read without guessing where it works.", versionContext: "Current desktop defaults checked August 31, 2026. Global shortcuts can be changed in 1Password settings. Linux global shortcuts depend on X11 or user-configured Wayland bindings. iPhone and iPad shortcuts are outside stack127's current platform model.", sourceUrl: "https://support.1password.com/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/7-zip.ts b/lib/shortcuts/apps/7-zip.ts index a54fd9da..148a4df3 100644 --- a/lib/shortcuts/apps/7-zip.ts +++ b/lib/shortcuts/apps/7-zip.ts @@ -8,8 +8,6 @@ export const sevenZip: AppShortcuts = { name: "7-Zip", category: "File archiver", platforms: [...platforms], - intro: - "7-Zip File Manager uses function keys for file work and numeric keypad keys for selection. The official source defines the bindings directly in the File Manager key handler.", versionContext: "7-Zip 26.02 File Manager defaults checked August 31, 2026. These bindings cover the Windows graphical File Manager, not the 7z command-line program or Explorer context-menu access keys.", sourceUrl: "https://github.com/ip7z/7zip/blob/26.02/CPP/7zip/UI/FileManager/PanelKey.cpp", diff --git a/lib/shortcuts/apps/ableton-live.ts b/lib/shortcuts/apps/ableton-live.ts index 4e977b39..ca311610 100644 --- a/lib/shortcuts/apps/ableton-live.ts +++ b/lib/shortcuts/apps/ableton-live.ts @@ -18,13 +18,11 @@ export const abletonLive: AppShortcuts = { name: "Ableton Live", category: "Digital audio workstation", platforms: ["windows", "macos"], - intro: - "Ableton Live's keymap reaches almost every part of a set: views, devices, clips, arrangement editing, tracks, transport, and the browser. The groups follow Live's own manual so a binding stays tied to the view where it works.", versionContext: - "Documented defaults for Ableton Live 12 checked August 31, 2026. Single-letter commands are affected by the Computer MIDI Keyboard. When it is active, hold Shift with a single-letter shortcut. User Key Map and MIDI Map assignments are not defaults and are not listed.", + "Documented defaults for Ableton Live 12 checked October 10, 2026. Single-letter commands are affected by the Computer MIDI Keyboard. When it is active, hold Shift with a single-letter shortcut. User Key Map and MIDI Map assignments are not defaults and are not listed.", sourceUrl: "https://www.ableton.com/en/manual/live-keyboard-shortcuts/", sourceLabel: "Ableton Live 12 keyboard shortcuts manual", - lastVerified: "2026-08-31", + lastVerified: "2026-10-10", groups: [ { id: "views", @@ -242,7 +240,7 @@ export const abletonLive: AppShortcuts = { ["move-session-track", "Move the selected track left or right", ["Ctrl", "Left/Right"], ["Cmd", "Left/Right"]], ["move-nonadjacent-scenes", "Move nonadjacent scenes without collapsing them", ["Ctrl", "Up/Down"], ["Cmd", "Up/Down"]], ["deactivate-clip", "Deactivate the selected clip", ["0"]], - ["jump-session-track-title", "Jump to the highlighted track title bar", ["Esc"]], + ["jump-track-title", "Jump to the highlighted track title bar in Session or Arrangement View", ["Esc"]], ["jump-first-track", "Jump to the first track in the current scene", ["Home"]], ["jump-last-track", "Jump to the last track or return to the current scene", ["End"]], ["solo-chain", "Solo the selected chain", ["S"]], @@ -272,7 +270,6 @@ export const abletonLive: AppShortcuts = { ["zoom-back-arrangement", "Zoom back from the Arrangement time selection", ["X"]], ["play-insert-marker", "Play from the insert marker in the selected clip", ["Ctrl", "Space"], ["Option", "Space"]], ["insert-marker-playhead", "Move the insert marker to the playhead", ["Ctrl", "Shift", "Space"], ["Cmd", "Shift", "Space"]], - ["jump-arrangement-track-title", "Jump to the highlighted track title bar", ["Esc"]], ["focus-arrangement-mixer", "Move focus to the Mixer", ["Alt", "Shift", "M"], ["Option", "Shift", "M"]], ["show-take-lanes", "Show take lanes", ["Ctrl", "Alt", "U"], ["Cmd", "Option", "U"]], ["add-take-to-main", "Add the selected take lane area to the main track lane", ["Enter"]], diff --git a/lib/shortcuts/apps/adobe-acrobat-pro.ts b/lib/shortcuts/apps/adobe-acrobat-pro.ts index 95ee6632..6e06dc21 100644 --- a/lib/shortcuts/apps/adobe-acrobat-pro.ts +++ b/lib/shortcuts/apps/adobe-acrobat-pro.ts @@ -310,8 +310,6 @@ export const adobeAcrobatPro: AppShortcuts = { name: "Adobe Acrobat Pro", category: "PDF editor", platforms: ["windows", "macos"], - intro: - "Acrobat's desktop keymap covers tool selection, PDF navigation, comments, form work, task panes, bookmarks, search, and accessibility. Focus-sensitive and single-key commands stay grouped with the interface state they require.", versionContext: "Current Acrobat desktop defaults from Adobe's September 23, 2025 reference, checked August 31, 2026. Enable Use single-key accelerators to access tools for the one-letter tool commands. Browser-hosted PDFs may reserve some bindings before Acrobat receives them.", sourceUrl: "https://helpx.adobe.com/acrobat/desktop/get-started/preferences-and-settings/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-acrobat-reader.ts b/lib/shortcuts/apps/adobe-acrobat-reader.ts index 1f8ce19c..e57c9e44 100644 --- a/lib/shortcuts/apps/adobe-acrobat-reader.ts +++ b/lib/shortcuts/apps/adobe-acrobat-reader.ts @@ -6,8 +6,6 @@ export const adobeAcrobatReader: AppShortcuts = { name: "Adobe Acrobat Reader", category: "PDF reader", platforms: ["windows", "macos"], - intro: - "Adobe documents one desktop keyboard map for Acrobat Reader and Acrobat. This Reader reference keeps the viewing, commenting, form-entry, search, portfolio, navigation, and accessibility commands, while leaving Acrobat-only authoring tools on the Acrobat Pro page.", versionContext: "Current Acrobat Reader desktop defaults checked August 31, 2026. Adobe's June 21, 2026 Reader accessibility guide states that Reader and Acrobat use the same keyboard shortcuts and links to the September 23, 2025 Acrobat table. Enable Use single-key accelerators to access tools for one-letter commands.", sourceUrl: "https://helpx.adobe.com/reader/desktop/accessibility-features.html", diff --git a/lib/shortcuts/apps/adobe-after-effects.ts b/lib/shortcuts/apps/adobe-after-effects.ts index 3eaa7906..9a79018c 100644 --- a/lib/shortcuts/apps/adobe-after-effects.ts +++ b/lib/shortcuts/apps/adobe-after-effects.ts @@ -18,8 +18,6 @@ export const adobeAfterEffects: AppShortcuts = { name: "Adobe After Effects", category: "Motion graphics and compositing", platforms: ["windows", "macos"], - intro: - "After Effects assigns shortcuts across the application and inside individual panels. This reference keeps timeline properties, layers, views, tools, keyframes, masks, paint, text, previews, and rendering in separate groups so focus-dependent commands retain their context.", versionContext: "After Effects Default preset on a supported U.S. English keyboard, from Adobe's May 5, 2026 reference and checked August 31, 2026. Custom shortcut sets are not listed. Numeric-keypad commands need Num Lock on Windows. macOS function keys can conflict with system shortcuts, and panel shortcuts override application shortcuts while that panel has focus.", sourceUrl: "https://helpx.adobe.com/after-effects/desktop/get-started/keyboard-shortcuts/keyboard-shortcuts-reference.html", diff --git a/lib/shortcuts/apps/adobe-audition.ts b/lib/shortcuts/apps/adobe-audition.ts index be8413a0..ee3d74bb 100644 --- a/lib/shortcuts/apps/adobe-audition.ts +++ b/lib/shortcuts/apps/adobe-audition.ts @@ -18,8 +18,6 @@ export const adobeAudition: AppShortcuts = { name: "Adobe Audition", category: "Audio editor", platforms: ["windows", "macos"], - intro: - "Audition's published defaults cover transport and zoom, markers, Waveform Editor processing, spectral editing, and Multitrack clip or mixer adjustments. Editor-specific commands stay separate so a binding is not mistaken for an application-wide action.", versionContext: "Adobe's current expert-selected default list, updated June 17, 2026 and checked August 31, 2026. Adobe labels the web reference as partial and directs users to Edit > Keyboard Shortcuts for the complete installed keymap. CD-authoring commands removed in Audition 26.3 are not included, and custom shortcut sets are outside this reference.", sourceUrl: "https://helpx.adobe.com/audition/desktop/keyboard-shortcuts/default-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-illustrator.ts b/lib/shortcuts/apps/adobe-illustrator.ts index 5ea6efa4..f2263f4c 100644 --- a/lib/shortcuts/apps/adobe-illustrator.ts +++ b/lib/shortcuts/apps/adobe-illustrator.ts @@ -17,8 +17,6 @@ export const adobeIllustrator: AppShortcuts = { name: "Adobe Illustrator", category: "Vector graphics editor", platforms: ["windows", "macos"], - intro: - "Illustrator's default keymap covers document work, its dense tool palette, artboards, object selection, drawing, color, type, and effects. These tables keep Adobe's Windows and macOS defaults separate.", versionContext: "Current Adobe Illustrator desktop defaults from Adobe's English reference updated February 17, 2026. Custom shortcut sets and pointer-only gestures are not listed.", sourceUrl: "https://helpx.adobe.com/illustrator/using/default-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-indesign.ts b/lib/shortcuts/apps/adobe-indesign.ts index ee037cac..44b07d49 100644 --- a/lib/shortcuts/apps/adobe-indesign.ts +++ b/lib/shortcuts/apps/adobe-indesign.ts @@ -17,8 +17,6 @@ export const adobeInDesign: AppShortcuts = { name: "Adobe InDesign", category: "Page layout and publishing", platforms: ["windows", "macos"], - intro: - "InDesign's default shortcuts cover layout tools, frames, transformations, typography, tables, document navigation, panels, styles, and production previews. The same key can change meaning when a text insertion point is active, so context stays in each action.", versionContext: "Current InDesign desktop defaults from Adobe's keyboard shortcut reference checked August 31, 2026. The tables use the InDesign Default shortcut set, not its optional Illustrator, Photoshop, PageMaker, QuarkXPress, or custom sets.", sourceUrl: "https://helpx.adobe.com/indesign/desktop/get-started/settings-and-preferences/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-lightroom-classic.ts b/lib/shortcuts/apps/adobe-lightroom-classic.ts index a9a9d1b4..6f3b4775 100644 --- a/lib/shortcuts/apps/adobe-lightroom-classic.ts +++ b/lib/shortcuts/apps/adobe-lightroom-classic.ts @@ -26,8 +26,6 @@ export const adobeLightroomClassic: AppShortcuts = { name: "Adobe Lightroom Classic", category: "Photo catalog and editor", platforms: ["windows", "macos"], - intro: - "Lightroom Classic's keymap follows its module-based workflow. It covers the workspace, catalog and photo management, Library views, ratings, collections, metadata, Develop controls, and local adjustment tools.", versionContext: "Current Lightroom Classic desktop defaults from Adobe's reference updated July 5, 2026 and checked August 31, 2026. Adobe's August 2026 release notes identify Lightroom Classic 15.5 as the current release.", sourceUrl: "https://helpx.adobe.com/lightroom-classic/desktop/introduction-to-lightroom-classic/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-premiere-pro.ts b/lib/shortcuts/apps/adobe-premiere-pro.ts index 41a383b8..42ed2640 100644 --- a/lib/shortcuts/apps/adobe-premiere-pro.ts +++ b/lib/shortcuts/apps/adobe-premiere-pro.ts @@ -17,8 +17,6 @@ export const adobePremierePro: AppShortcuts = { name: "Adobe Premiere Pro", category: "Video editor", platforms: ["windows", "macos"], - intro: - "Premiere Pro separates application commands from panel-specific commands. This reference keeps file, edit, clip, sequence, marker, graphics, workspace, mixer, effects, utility-panel, Project, Program Monitor, and Timeline bindings in their working context.", versionContext: "Current Adobe Premiere desktop default shortcut set from Adobe's reference updated January 7, 2026 and checked August 31, 2026. Custom presets and unassigned commands are not listed.", sourceUrl: "https://helpx.adobe.com/premiere/desktop/get-started/keyboard-shortcuts/default-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-premiere-rush.ts b/lib/shortcuts/apps/adobe-premiere-rush.ts index a00930a3..fc337917 100644 --- a/lib/shortcuts/apps/adobe-premiere-rush.ts +++ b/lib/shortcuts/apps/adobe-premiere-rush.ts @@ -18,8 +18,6 @@ export const adobePremiereRush: AppShortcuts = { name: "Adobe Premiere Rush", category: "Video editing", platforms: ["windows", "macos"], - intro: - "Premiere Rush keeps project, clip, timeline, preview, and media-browser commands in separate contexts. This reference preserves those focus boundaries and the few commands that apply only while editing title text.", versionContext: "Final desktop defaults from Adobe's June 11, 2026 reference, checked August 31, 2026. Adobe discontinued Premiere Rush and removed it from download after September 30, 2025, but existing installations can still use these documented shortcuts.", sourceUrl: "https://helpx.adobe.com/premiere-rush/desktop/introduction/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/adobe-substance-3d-painter.ts b/lib/shortcuts/apps/adobe-substance-3d-painter.ts index c1169d49..946f1650 100644 --- a/lib/shortcuts/apps/adobe-substance-3d-painter.ts +++ b/lib/shortcuts/apps/adobe-substance-3d-painter.ts @@ -18,8 +18,6 @@ export const adobeSubstance3dPainter: AppShortcuts = { name: "Adobe Substance 3D Painter", category: "3D texturing", platforms: ["windows", "macos"], - intro: - "Substance 3D Painter combines editable application shortcuts with fixed mouse and layer-stack controls. This reference separates tools, viewport navigation, painting gestures, masks, layers, and project commands so each chord keeps its working context.", versionContext: "Current defaults from Adobe's July 3, 2026 shortcut reference, checked August 31, 2026. Editable assignments can be changed in Settings > Shortcuts. Fixed shortcuts are identified by their group, and actions whose official shortcut cell is blank are omitted.", sourceUrl: "https://experienceleague.adobe.com/en/docs/substance-3d-painter/using/interface/settings/shortcuts", diff --git a/lib/shortcuts/apps/adobe-xd.ts b/lib/shortcuts/apps/adobe-xd.ts index e095a3b7..28be39ea 100644 --- a/lib/shortcuts/apps/adobe-xd.ts +++ b/lib/shortcuts/apps/adobe-xd.ts @@ -20,8 +20,6 @@ export const adobeXd: AppShortcuts = { name: "Adobe XD", category: "Interface design and prototyping", platforms: ["windows", "macos"], - intro: - "Adobe XD assigns commands across design, vector editing, layout, prototype preview, and shared-spec contexts. This reference keeps platform-only exports, window controls, and preview recording explicit instead of inventing Windows equivalents.", versionContext: "Adobe XD maintenance-mode desktop defaults from Adobe's June 3, 2026 reference, checked August 31, 2026. The page is Adobe's current shortcut list, but XD no longer receives ongoing feature development. Browser gestures and touch-only interactions are omitted.", sourceUrl: "https://helpx.adobe.com/xd/desktop/introduction/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/affinity-designer.ts b/lib/shortcuts/apps/affinity-designer.ts index 3ae8ef61..d26dacfb 100644 --- a/lib/shortcuts/apps/affinity-designer.ts +++ b/lib/shortcuts/apps/affinity-designer.ts @@ -18,8 +18,6 @@ export const affinityDesigner: AppShortcuts = { name: "Affinity Designer 2", category: "Vector design", platforms: ["windows", "macos"], - intro: - "Affinity Designer 2 assigns tools by Persona and combines them with document, view, text, drawing-modifier, and layer controls. Tool letters can be tapped to keep a tool active or held for temporary use before returning to the previous tool.", versionContext: "Affinity Designer 2 desktop defaults from Serif's May 23, 2024 Windows and macOS shortcut sheets, cross-checked against the current Affinity V2 online help on August 31, 2026. The sheets use English UK keyboard layouts, so physical key positions can differ. Customized shortcuts are not listed.", sourceUrl: "https://affinity.help/designer2/English.lproj/pages/Workspace/shortcuts.html", diff --git a/lib/shortcuts/apps/affinity-photo.ts b/lib/shortcuts/apps/affinity-photo.ts index ac9c949a..28986351 100644 --- a/lib/shortcuts/apps/affinity-photo.ts +++ b/lib/shortcuts/apps/affinity-photo.ts @@ -18,8 +18,6 @@ export const affinityPhoto: AppShortcuts = { name: "Affinity Photo 2", category: "Photo editing", platforms: ["windows", "macos"], - intro: - "Affinity Photo 2 changes tool letters with the active Persona while keeping common document, view, brush, and layer commands available throughout the desktop app. This reference labels each Persona so overlapping keys remain understandable.", versionContext: "Affinity Photo 2 desktop defaults from Serif's September 19, 2023 Windows and macOS shortcut sheets, cross-checked against the current Affinity V2 online help on August 31, 2026. The sheets use English UK or British keyboard layouts, so physical key positions can differ. Customized shortcuts are not listed.", sourceUrl: "https://affinity.help/photo2/English.lproj/pages/Workspace/shortcuts.html", diff --git a/lib/shortcuts/apps/aider.ts b/lib/shortcuts/apps/aider.ts index d5ade574..be0c9529 100644 --- a/lib/shortcuts/apps/aider.ts +++ b/lib/shortcuts/apps/aider.ts @@ -13,8 +13,6 @@ export const aider: AppShortcuts = { name: "Aider", category: "AI pair programming", platforms: [...platforms], - intro: - "Aider's interactive terminal prompt supports editing, history navigation, interruption, multiline input, and external-editor handoff. Its default Emacs bindings and optional vi command mode are documented separately so the active input mode is always clear.", versionContext: "Current Aider command-line documentation checked August 31, 2026. Emacs bindings are the default. The vi group applies only when Aider is started with --vim. Terminal emulators and operating systems can intercept some control or meta combinations before Aider receives them.", sourceUrl: "https://aider.chat/docs/usage/commands.html", diff --git a/lib/shortcuts/apps/airtable.ts b/lib/shortcuts/apps/airtable.ts index 498a5e20..e529aee1 100644 --- a/lib/shortcuts/apps/airtable.ts +++ b/lib/shortcuts/apps/airtable.ts @@ -17,8 +17,6 @@ export const airtable: AppShortcuts = { name: "Airtable", category: "Collaborative database", platforms: ["windows", "macos"], - intro: - "Airtable's documented shortcuts cover base navigation, view controls, cell editing, record movement, and the Gallery, Kanban, Gantt, and expanded-record surfaces. The reference keeps context-specific commands with the view where Airtable says they work.", versionContext: "Airtable web keyboard shortcuts from the current official support article checked August 31, 2026. At that check, the article displayed a relative 'Last updated 23 days ago' label rather than a stable revision date. Airtable publishes separate Mac and Windows tables. Browser and operating-system shortcuts, screenshots, and modifier-plus-pointer gestures are omitted. No Linux keymap is documented on the source page.", sourceUrl: "https://support.airtable.com/articles/7980233311-airtable-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/alfred.ts b/lib/shortcuts/apps/alfred.ts index 2c07ead4..11140636 100644 --- a/lib/shortcuts/apps/alfred.ts +++ b/lib/shortcuts/apps/alfred.ts @@ -13,8 +13,6 @@ export const alfred: AppShortcuts = { name: "Alfred", category: "Productivity launcher", platforms: ["macos"], - intro: - "Alfred's default hotkeys cover launching and dismissing the search window, acting on results, browsing files, managing the File Buffer, using Clipboard History, and controlling the Music Mini Player. Powerpack requirements are stated where they apply.", versionContext: "Default Alfred 5 hotkeys from the current official cheatsheet checked August 31, 2026. Alfred lets users change hotkeys, so modified installations can differ. Universal Actions, File System Navigation, Clipboard History, snippets, contacts, email, workflows, and the Music Mini Player require the Powerpack where noted.", sourceUrl: "https://www.alfredapp.com/help/getting-started/cheatsheet/", diff --git a/lib/shortcuts/apps/amplitude.ts b/lib/shortcuts/apps/amplitude.ts index b1c5cc76..c9325eac 100644 --- a/lib/shortcuts/apps/amplitude.ts +++ b/lib/shortcuts/apps/amplitude.ts @@ -14,8 +14,6 @@ export const amplitude: AppShortcuts = { name: "Amplitude", category: "Product analytics", platforms: [...platforms], - intro: - "Amplitude's chart-creation shortcuts open event and property controls, refresh or save analysis, copy and organize charts, and operate hovered selector rows. Every binding here stays within the chart builder context documented by Amplitude.", versionContext: "Current Amplitude Analytics chart basics documentation checked August 31, 2026. These browser-app shortcuts work on chart creation pages for all chart types except Data Tables. The official table does not publish operating-system variants, so the documented combinations are shown unchanged across desktop platforms.", sourceUrl: "https://amplitude.com/docs/analytics/charts/chart-basics#keyboard-shortcuts", diff --git a/lib/shortcuts/apps/android-studio.ts b/lib/shortcuts/apps/android-studio.ts index 8dbafe15..1f3e04ba 100644 --- a/lib/shortcuts/apps/android-studio.ts +++ b/lib/shortcuts/apps/android-studio.ts @@ -18,8 +18,6 @@ export const androidStudio: AppShortcuts = { name: "Android Studio", category: "Android IDE", platforms: ["windows", "macos", "linux"], - intro: - "Android Studio's default keymap covers tool windows, search and navigation, visual layout tools, code generation and editing, builds, debugging, refactoring, and version control. Windows and Linux share one documented column, while macOS has its own combinations.", versionContext: "Default Android Studio keymaps from Google's reference updated March 6, 2026 and checked August 31, 2026. Android Studio supports preset and custom keymaps, which can replace these defaults. Mouse-only gestures and modifier-plus-pointer alternatives are omitted.", sourceUrl: "https://developer.android.com/studio/intro/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/anydesk.ts b/lib/shortcuts/apps/anydesk.ts index f5f46226..d72512ae 100644 --- a/lib/shortcuts/apps/anydesk.ts +++ b/lib/shortcuts/apps/anydesk.ts @@ -12,8 +12,6 @@ export const anydesk: AppShortcuts = { name: "AnyDesk", category: "Remote desktop", platforms: ["windows"], - intro: - "AnyDesk reserves one Windows hotkey family for controlling an active remote session. Every command begins with Control+Alt+Shift, which keeps local session controls distinct from keystrokes sent to the remote device.", versionContext: "Current Windows hotkeys from AnyDesk's July 30, 2025 reference, checked August 31, 2026. Mouse capture requires AnyDesk 8 or later. Remote-system shortcuts and keyboard translation examples are not AnyDesk commands and are not listed.", sourceUrl: "https://support.anydesk.com/keyboard-hotkeys", diff --git a/lib/shortcuts/apps/apple-music.ts b/lib/shortcuts/apps/apple-music.ts index 121b3bd1..6bcf5dff 100644 --- a/lib/shortcuts/apps/apple-music.ts +++ b/lib/shortcuts/apps/apple-music.ts @@ -18,8 +18,6 @@ export const appleMusic: AppShortcuts = { name: "Apple Music", category: "Music streaming and library", platforms: ["windows", "macos"], - intro: - "Apple Music uses different desktop keymaps on Windows and macOS. This reference keeps platform-only playlist, library, window, and access-key commands visible instead of applying a blanket Control-to-Command conversion.", versionContext: "Current Apple Music desktop shortcuts from Apple's Windows and macOS Tahoe user guides, checked August 31, 2026. Keys can vary with language and keyboard layout. Windows access keys are sequential: press Alt first, then type the listed letters.", sourceUrl: "https://support.apple.com/guide/music/keyboard-shortcuts-mus1019/mac", diff --git a/lib/shortcuts/apps/apple-notes.ts b/lib/shortcuts/apps/apple-notes.ts index e7b21f05..d29d2861 100644 --- a/lib/shortcuts/apps/apple-notes.ts +++ b/lib/shortcuts/apps/apple-notes.ts @@ -12,8 +12,6 @@ export const appleNotes: AppShortcuts = { name: "Apple Notes", category: "Notes", platforms: ["macos"], - intro: - "Notes on Mac provides shortcuts for the main window, note formatting, lists, shared-note navigation, and table editing. Table keys depend on whether the insertion point is inside a cell, so those commands remain in their own group.", versionContext: "Current Notes defaults from Apple's macOS Tahoe user guide, checked August 31, 2026. Shortcuts can vary with language and keyboard layout. Trackpad and Magic Mouse gestures are omitted from this keyboard-only reference.", sourceUrl: "https://support.apple.com/guide/notes/keyboard-shortcuts-and-gestures-apd46c25187e/mac", diff --git a/lib/shortcuts/apps/arc-browser.ts b/lib/shortcuts/apps/arc-browser.ts index 1344bef0..17dc926e 100644 --- a/lib/shortcuts/apps/arc-browser.ts +++ b/lib/shortcuts/apps/arc-browser.ts @@ -14,16 +14,14 @@ const rows = (items: Row[]): Shortcut[] => export const arcBrowser: AppShortcuts = { slug: "arc-browser", - name: "Arc Browser", + name: "Arc", category: "Web browser", platforms: ["windows", "macos"], - intro: - "Arc organizes browsing around tabs, Spaces, a sidebar, and Split View. This reference preserves the different Windows and macOS navigation chords, including macOS-only Little Arc and alternate history keys.", versionContext: "Default shortcuts from Arc's current official Help Center article, checked August 31, 2026. Arc's article metadata reports an update on November 5, 2024. Arc lets users remap shortcuts in Settings, so this reference covers documented defaults only.", sourceUrl: "https://resources.arc.net/hc/en-us/articles/20595231349911-Keyboard-Shortcuts", sourceLabel: "Arc Browser keyboard shortcuts", - lastVerified: "2026-08-31", + lastVerified: "2026-10-10", groups: [ { id: "tabs-and-windows", diff --git a/lib/shortcuts/apps/asana.ts b/lib/shortcuts/apps/asana.ts index d0c463c4..7b1820ae 100644 --- a/lib/shortcuts/apps/asana.ts +++ b/lib/shortcuts/apps/asana.ts @@ -18,8 +18,6 @@ export const asana: AppShortcuts = { name: "Asana", category: "Work management", platforms: ["windows", "macos"], - intro: - "Asana combines Inbox keys, task actions, Tab-key chords, selection controls, and native desktop-window shortcuts. The list-view field-navigation command is different: Asana explicitly documents it as two Right Arrow presses.", versionContext: "Current defaults from Asana's official Help Center, checked August 31, 2026. Some shortcuts may not work with non-English keyboard input. Desktop-window commands apply to the Asana desktop app. Tab+B requires the Tab-B hack to be enabled in Settings.", sourceUrl: "https://help.asana.com/s/article/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/audacity.ts b/lib/shortcuts/apps/audacity.ts index 37274b52..731f1f18 100644 --- a/lib/shortcuts/apps/audacity.ts +++ b/lib/shortcuts/apps/audacity.ts @@ -18,8 +18,6 @@ export const audacity: AppShortcuts = { name: "Audacity", category: "Audio editor", platforms: ["windows", "macos", "linux"], - intro: - "Audacity's Standard shortcut set covers projects, audio editing, selections, timeline views, playback, recording, looping, track mute controls, and effect reuse. The extended Full set remains separate because it is not enabled by default.", versionContext: "Current Audacity Development Manual checked August 31, 2026. This record includes the default Standard set only. The manual maps Ctrl to Command and Alt to Option on macOS, with explicit Mac exceptions preserved. Users can customize or replace the defaults in Shortcuts Preferences.", sourceUrl: "https://manual.audacityteam.org/man/keyboard_shortcut_reference.html", diff --git a/lib/shortcuts/apps/autocad.ts b/lib/shortcuts/apps/autocad.ts index fef1b24e..7ed71bd7 100644 --- a/lib/shortcuts/apps/autocad.ts +++ b/lib/shortcuts/apps/autocad.ts @@ -13,8 +13,6 @@ export const autocad: AppShortcuts = { name: "AutoCAD", category: "Computer-aided design", platforms: ["windows"], - intro: - "AutoCAD's default CUIx keymap controls drawings, palettes, selection and editing, drafting aids, viewports, layouts, and 3D subobject filters. This record follows the Windows shortcut table published for AutoCAD 2026.", versionContext: "Default AutoCAD 2026 shortcut keys from Autodesk's CUIx reference checked August 31, 2026. AutoCAD can customize these assignments, so edited CUIx files can differ. Entries marked AutoCAD only exclude AutoCAD LT. Autodesk publishes a separate product and keymap for AutoCAD on Mac, which is not mixed into this Windows record.", sourceUrl: "https://help.autodesk.com/cloudhelp/2026/ENU/AutoCAD-Customization/files/GUID-B6A9C126-230D-47F5-8973-464BC80E3736.htm", diff --git a/lib/shortcuts/apps/autodesk-maya.ts b/lib/shortcuts/apps/autodesk-maya.ts index a913e9cf..21769c94 100644 --- a/lib/shortcuts/apps/autodesk-maya.ts +++ b/lib/shortcuts/apps/autodesk-maya.ts @@ -18,8 +18,6 @@ export const autodeskMaya: AppShortcuts = { name: "Autodesk Maya", category: "3D modeling and animation", platforms: ["windows", "macos", "linux"], - intro: - "Maya's default hotkeys cover transform tools, scene files, object display, animation playback, snapping, component selection, editing, panel views, and polygon modeling. Mouse-only camera and marking-menu gestures are kept out of the keyboard tables.", versionContext: "Maya 2026 default hotkeys from Autodesk's searchable reference checked August 31, 2026. On macOS, Autodesk maps Alt to Option and Ctrl to Control unless a command explicitly lists Command. The Hotkey Editor can replace these defaults. Some function keys and US-keyboard punctuation can conflict with macOS or non-US layouts.", sourceUrl: "https://help.autodesk.com/cloudhelp/2026/ENU/Maya-KeyboardShortcuts/files/GUID-30CACC9D-8FBE-4B85-8A8F-C5ADF32DDD4E.htm", diff --git a/lib/shortcuts/apps/autodesk-revit.ts b/lib/shortcuts/apps/autodesk-revit.ts index f4403df9..771a9263 100644 --- a/lib/shortcuts/apps/autodesk-revit.ts +++ b/lib/shortcuts/apps/autodesk-revit.ts @@ -14,8 +14,6 @@ export const autodeskRevit: AppShortcuts = { name: "Autodesk Revit", category: "Building information modeling", platforms: ["windows"], - intro: - "Revit uses short letter sequences for modeling, annotation, view, and systems commands. The tables retain Autodesk's alternative sequences and reserved Ctrl combinations where the 2026 default list publishes them.", versionContext: "Default Revit 2026 shortcuts from Autodesk's versioned PDF checked August 31, 2026. Letter shortcuts are sequences: press the keys in order rather than as a chord. Revit runs on Windows, and its Keyboard Shortcuts dialog can add, remove, or replace non-reserved assignments.", sourceUrl: "https://www.autodesk.com/revit-keyboard-shortcut-list-pdf-2026-enu", diff --git a/lib/shortcuts/apps/axure-rp.ts b/lib/shortcuts/apps/axure-rp.ts index 61d2214b..b93be365 100644 --- a/lib/shortcuts/apps/axure-rp.ts +++ b/lib/shortcuts/apps/axure-rp.ts @@ -17,8 +17,6 @@ export const axureRp: AppShortcuts = { name: "Axure RP", category: "Prototyping and wireframing", platforms: ["windows", "macos"], - intro: - "Axure RP 11's keymap covers files, canvas movement, widget insertion and editing, vector operations, sitemap management, prototype tools, panes, preview, and publishing. Single-key canvas commands remain visible as documented alternatives.", versionContext: "Current Axure RP 11 keyboard shortcut reference checked August 31, 2026. Windows and Mac columns are preserved. Single-key shortcuts are enabled by default but can be disabled in Canvas preferences. Pointer gestures and modifier-only mouse behaviors are omitted.", sourceUrl: "https://docs.axure.com/axure-rp/reference/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/azure-devops.ts b/lib/shortcuts/apps/azure-devops.ts index 1507f0fd..73bc4bc9 100644 --- a/lib/shortcuts/apps/azure-devops.ts +++ b/lib/shortcuts/apps/azure-devops.ts @@ -17,8 +17,6 @@ export const azureDevops: AppShortcuts = { name: "Azure DevOps", category: "Software development platform", platforms: ["windows", "macos"], - intro: - "Azure DevOps web shortcuts change with the active service and page. Sequential navigation keys work only when focus is outside an input control, so this reference separates global navigation, Repos, work items, Boards, Test Plans, and Wiki commands.", versionContext: "Azure DevOps Services and Azure DevOps Server web-portal shortcuts from Microsoft's February 17, 2026 reference, checked August 31, 2026. Portal Control chords are preserved literally on both platforms where Microsoft publishes one shared table. The rich-text editor uses the separate Windows and macOS bindings supplied by Microsoft.", sourceUrl: "https://learn.microsoft.com/en-us/azure/devops/project/navigation/keyboard-shortcuts?view=azure-devops", diff --git a/lib/shortcuts/apps/balsamiq-wireframes.ts b/lib/shortcuts/apps/balsamiq-wireframes.ts index f72d6b6b..a08e5b22 100644 --- a/lib/shortcuts/apps/balsamiq-wireframes.ts +++ b/lib/shortcuts/apps/balsamiq-wireframes.ts @@ -34,8 +34,6 @@ export const balsamiqWireframes: AppShortcuts = { name: "Balsamiq Wireframes", category: "Wireframing", platforms: ["windows", "macos"], - intro: - "Balsamiq Wireframes combines direct-selection keys, drawing letters, and context-sensitive editing commands. Browser and operating-system shortcuts can take precedence in the web editor, so this reference keeps Balsamiq's published platform limits visible.", versionContext: "Current Balsamiq Wireframes shortcut reference checked August 31, 2026. The main table prints Control-based editing commands without a Mac equivalent; those rows are therefore labeled Windows. macOS entries appear only where Balsamiq explicitly publishes a Mac binding or a Control/Command pair.", sourceUrl: "https://balsamiq.com/support/docs/creating-and-editing/shortcuts/", diff --git a/lib/shortcuts/apps/basecamp.ts b/lib/shortcuts/apps/basecamp.ts index 836e1be2..f9581b05 100644 --- a/lib/shortcuts/apps/basecamp.ts +++ b/lib/shortcuts/apps/basecamp.ts @@ -18,8 +18,6 @@ export const basecamp: AppShortcuts = { name: "Basecamp", category: "Project management", platforms: ["windows", "macos"], - intro: - "Basecamp 5 uses Shift-letter navigation throughout the web app, plus a small set of project and page commands. Hold Shift outside a text field to reveal available keycaps; inside a text field, press Shift twice to activate hotkey mode.", versionContext: "Current Basecamp 5 keyboard cheat sheet checked August 31, 2026. Commands are shared by Windows and macOS except where Basecamp explicitly publishes Command or Option alternatives.", sourceUrl: "https://basecamp.com/keyboard", diff --git a/lib/shortcuts/apps/bear.ts b/lib/shortcuts/apps/bear.ts index 3f04317d..5e7e9d2e 100644 --- a/lib/shortcuts/apps/bear.ts +++ b/lib/shortcuts/apps/bear.ts @@ -12,8 +12,6 @@ export const bear: AppShortcuts = { name: "Bear", category: "Notes and writing", platforms: ["macos"], - intro: - "Bear for Mac has native commands for Markdown-style formatting, note structure, tables, navigation, and windows. Many bindings depend on whether focus is in the editor, note list, sidebar, or a table cell, so they are grouped by working context.", versionContext: "Current Bear for Mac shortcut reference checked August 31, 2026. Bear Web has a separate beta keymap and is not mixed into this native macOS reference. Back and forward shortcuts can vary with keyboard layout and localization.", sourceUrl: "https://bear.app/faq/mac-keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/bitbucket.ts b/lib/shortcuts/apps/bitbucket.ts index 060de44e..bc7d9e84 100644 --- a/lib/shortcuts/apps/bitbucket.ts +++ b/lib/shortcuts/apps/bitbucket.ts @@ -13,8 +13,6 @@ export const bitbucket: AppShortcuts = { name: "Bitbucket", category: "Code hosting", platforms: [...platforms], - intro: - "Bitbucket Cloud's documented keyboard shortcuts cover site search, navigation panels, repository file filtering, and the core pull-request review tabs and actions.", versionContext: "Current Bitbucket Cloud shortcut reference checked August 31, 2026. Single-letter commands work in the page context named by each group. Bitbucket lets users disable all keyboard shortcuts in Personal Bitbucket settings.", sourceUrl: "https://support.atlassian.com/bitbucket-cloud/docs/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/blender.ts b/lib/shortcuts/apps/blender.ts index 25e5fb78..03e366f6 100644 --- a/lib/shortcuts/apps/blender.ts +++ b/lib/shortcuts/apps/blender.ts @@ -30,8 +30,6 @@ export const blender: AppShortcuts = { name: "Blender", category: "3D creation suite", platforms: ["windows", "macos", "linux"], - intro: - "Blender's common default keymap covers file work, properties, selections, editor panels, 3D Viewport modes, animation keys, and Python data-path tools.", versionContext: "Common shortcuts from the Blender 5.2 LTS Manual, checked August 31, 2026. The page is intentionally not comprehensive. It documents the Blender preset, not the Industry Compatible or legacy Blender 27x presets. On macOS, Command can replace Ctrl except where the operating system conflicts; those Command forms appear as alternatives.", sourceUrl: "https://docs.blender.org/manual/en/latest/interface/keymap/blender_default.html", @@ -55,10 +53,11 @@ export const blender: AppShortcuts = { }, { id: "general", - title: "Files, history, and general commands", + title: "Files, history, preferences, and general commands", intro: - "Open and save blend files, undo work, search commands, render, manage workspaces, and control the active area's size or playback direction.", - shortcuts: rows([ + "Open and save blend files, undo work, search commands, render, manage workspaces, open Preferences, and control the active area's size or playback direction.", + shortcuts: [ + ...rows([ ["open", "Open a file", ["Ctrl", "O"]], ["save", "Save the current file", ["Ctrl", "S"]], ["new", "Create a new file", ["Ctrl", "N"]], @@ -77,7 +76,9 @@ export const blender: AppShortcuts = { ["next-workspace", "Go to the next workspace", ["Ctrl", "Page Up"]], ["previous-workspace", "Go to the previous workspace", ["Ctrl", "Page Down"]], ["reverse-playback", "Play the animation in reverse", ["Shift", "Ctrl", "Space"]], - ]), + ]), + { id: "preferences", action: "Open Preferences", keys: [{ platform: "macos", keys: ["Cmd", ","] }] }, + ], }, { id: "editors", @@ -150,19 +151,6 @@ export const blender: AppShortcuts = { ["copy-full-path", "Copy the hovered field's full data path", ["Shift", "Ctrl", "Alt", "C"]], ]), }, - { - id: "macos", - title: "macOS command", - intro: - "Blender documents one additional shortcut specifically for macOS, separate from the Command alternatives shown on Ctrl-based rows.", - shortcuts: [ - { - id: "preferences", - action: "Open Preferences", - keys: [{ platform: "macos", keys: ["Cmd", ","] }], - }, - ], - }, ], }; diff --git a/lib/shortcuts/apps/bluebeam-revu.ts b/lib/shortcuts/apps/bluebeam-revu.ts index 334985f5..4ab3cb93 100644 --- a/lib/shortcuts/apps/bluebeam-revu.ts +++ b/lib/shortcuts/apps/bluebeam-revu.ts @@ -14,8 +14,6 @@ export const bluebeamRevu: AppShortcuts = { name: "Bluebeam Revu", category: "PDF editor", platforms: ["windows"], - intro: - "Bluebeam Revu's published Windows shortcuts cover markup creation and arrangement, measurement, PDF viewing, editing, page operations, panels, and document navigation.", versionContext: "Official Revu 21 and Revu 20 keyboard reference checked August 31, 2026. These are default Windows assignments. Revu can reassign existing commands and add custom shortcuts, so a customized installation may differ.", sourceUrl: "https://support.bluebeam.com/revu/resources/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/brave.ts b/lib/shortcuts/apps/brave.ts index a7a08dfc..c911be7b 100644 --- a/lib/shortcuts/apps/brave.ts +++ b/lib/shortcuts/apps/brave.ts @@ -5,11 +5,9 @@ const platforms = ["windows", "macos", "linux"] as const; export const brave: AppShortcuts = { slug: "brave", - name: "Brave Browser", + name: "Brave", category: "Web browser", platforms: [...platforms], - intro: - "Brave keeps the useful browser controls close to the keyboard: move across tabs, jump to the address bar, search a page, or open browser tools without leaving the current window.", versionContext: "Documented defaults from the Brave Help Center checked August 26, 2026. The Windows and Linux table shares bindings, while macOS has its own table. Brave also allows shortcut changes in Settings, System, Shortcuts.", sourceUrl: "https://support.brave.app/hc/en-us/articles/360032272171-What-keyboard-shortcuts-can-I-use-in-Brave", diff --git a/lib/shortcuts/apps/buffer.ts b/lib/shortcuts/apps/buffer.ts index e9e79380..8e769cd2 100644 --- a/lib/shortcuts/apps/buffer.ts +++ b/lib/shortcuts/apps/buffer.ts @@ -29,8 +29,6 @@ export const buffer: AppShortcuts = { name: "Buffer", category: "Social media management", platforms, - intro: - "Buffer's web shortcuts open its reference and command bar, jump among product areas, start new work, schedule posts, build threads, and navigate Community conversations.", versionContext: "Current Buffer Help Center shortcut list checked August 31, 2026. Navigation commands are two-key sequences, not simultaneous chords, and global shortcuts are suppressed while the cursor is in a text field. Buffer Home must be enabled for its navigation command.", sourceUrl: "https://support.buffer.com/en-us/articles/using-buffers-keyboard-shortcuts-jvc735UOsa", diff --git a/lib/shortcuts/apps/canva.ts b/lib/shortcuts/apps/canva.ts index 80bb5ed9..0e4f9f8c 100644 --- a/lib/shortcuts/apps/canva.ts +++ b/lib/shortcuts/apps/canva.ts @@ -43,8 +43,6 @@ export const canva: AppShortcuts = { name: "Canva", category: "Design and visual communication", platforms: ["windows", "macos"], - intro: - "Canva's editor uses shortcuts for creating elements, arranging and resizing selections, formatting text, changing page views, and handling comments. Desktop-app window and tab commands are separate from shortcuts that act inside a design.", versionContext: "Current Canva Help Center reference checked August 31, 2026. Windows and macOS bindings are preserved independently. Canva Docs-only text styles and desktop-app-only window commands are labeled in their group context; no missing platform equivalent was inferred.", sourceUrl: "https://www.canva.com/help/canva-keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/chrome.ts b/lib/shortcuts/apps/chrome.ts index 94f8891a..6b0e9afd 100644 --- a/lib/shortcuts/apps/chrome.ts +++ b/lib/shortcuts/apps/chrome.ts @@ -8,8 +8,6 @@ export const chrome: AppShortcuts = { name: "Google Chrome", category: "Web browser", platforms: [...platforms], - intro: - "Chrome's official list covers the browser habits that happen dozens of times a day: manage tabs, move through history, search the current page, reach browser tools, and work in the address bar without leaving the keyboard.", versionContext: "Documented defaults from Google Chrome Help checked August 26, 2026. Google separates Windows and Linux from macOS, and some commands depend on the focused page, address bar, or dialog.", sourceUrl: "https://support.google.com/chrome/answer/157179", diff --git a/lib/shortcuts/apps/cinema-4d.ts b/lib/shortcuts/apps/cinema-4d.ts index 16c33e8a..4a8c806a 100644 --- a/lib/shortcuts/apps/cinema-4d.ts +++ b/lib/shortcuts/apps/cinema-4d.ts @@ -22,8 +22,6 @@ export const cinema4d: AppShortcuts = { name: "Cinema 4D", category: "3D creation suite", platforms: ["windows", "macos"], - intro: - "Cinema 4D's default shortcuts cover animation, project files, managers, the viewport, display modes, modeling and selection tools, rendering, and sculpt controls.", versionContext: "Cinema 4D 2026 default shortcut table checked August 31, 2026. Maxon says macOS users press Command instead of Ctrl. Letter pairs are hierarchical shortcuts pressed in sequence. Command Manager presets and manager-specific assignments can change the active set.", sourceUrl: "https://help.maxon.net/c4d/2026/en-us/Content/html/Shortcuts.html", diff --git a/lib/shortcuts/apps/claude-code.ts b/lib/shortcuts/apps/claude-code.ts index d3045645..92312e19 100644 --- a/lib/shortcuts/apps/claude-code.ts +++ b/lib/shortcuts/apps/claude-code.ts @@ -8,8 +8,6 @@ export const claudeCode: AppShortcuts = { name: "Claude Code", category: "AI coding agent", platforms: [...platforms], - intro: - "Claude Code spends most of its time waiting for a decision, running a tool, or holding a prompt. These official interactive-mode shortcuts cover interrupts, rewinds, mode changes, multiline input, terminal-style editing, and transcript navigation.", versionContext: "Interactive-mode shortcuts from the official Claude Code docs checked August 26, 2026. Keys vary by terminal. On macOS, Option must be configured as Meta for Alt-style text editing. The readline flavor changes some editing defaults in Claude Code v2.1.238 and later.", sourceUrl: "https://code.claude.com/docs/en/interactive-mode", diff --git a/lib/shortcuts/apps/clickup.ts b/lib/shortcuts/apps/clickup.ts index 5ef01d63..eb78fb82 100644 --- a/lib/shortcuts/apps/clickup.ts +++ b/lib/shortcuts/apps/clickup.ts @@ -17,8 +17,6 @@ export const clickup: AppShortcuts = { name: "ClickUp", category: "Project management", platforms: ["windows", "macos"], - intro: - "ClickUp's official shortcut set covers workspace navigation, task creation, text editing, Chat, Inbox triage, views, SyncUps, and desktop-wide capture commands.", versionContext: "Current ClickUp Help shortcut table checked August 31, 2026. Workspace shortcuts are disabled by default and must be enabled in personal settings. Most global commands require focus outside a text field. Chat and SyncUps commands depend on those ClickApps being available.", sourceUrl: "https://help.clickup.com/hc/en-us/articles/6309030550167-Use-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/clip-studio-paint.ts b/lib/shortcuts/apps/clip-studio-paint.ts index 170df6d0..91b97aea 100644 --- a/lib/shortcuts/apps/clip-studio-paint.ts +++ b/lib/shortcuts/apps/clip-studio-paint.ts @@ -18,8 +18,6 @@ export const clipStudioPaint: AppShortcuts = { name: "Clip Studio Paint", category: "Digital illustration", platforms: ["windows", "macos"], - intro: - "Clip Studio Paint assigns defaults to file, edit, layer, selection, canvas, and ruler commands. The defaults can be customized, so this reference describes the initial shortcut set rather than a user's edited configuration.", versionContext: "Clip Studio Paint 5.0 default menu shortcuts at initial startup, checked August 31, 2026. The official guide describes Windows notation and directs macOS users to replace Control with Command and Alt with Option. Canvas switching retains the separately published Control-based Mac chords.", sourceUrl: "https://help.clip-studio.com/en-us/manual_en/780_shortcuts/Menu_Shortcuts.htm", diff --git a/lib/shortcuts/apps/clockify.ts b/lib/shortcuts/apps/clockify.ts index 78afb7ac..35277e54 100644 --- a/lib/shortcuts/apps/clockify.ts +++ b/lib/shortcuts/apps/clockify.ts @@ -13,8 +13,6 @@ export const clockify: AppShortcuts = { name: "Clockify", category: "Time tracking", platforms: ["windows", "macos", "linux"], - intro: - "Clockify's web Time Tracker uses single keys when no field is being edited. The native Mac app has a separate set of Command shortcuts that work while its window has focus.", versionContext: "Current Clockify web and Mac desktop documentation checked August 31, 2026. Favorite-entry number keys require the workspace feature to be enabled and entries pinned. User-configurable global shortcuts are not listed as defaults.", sourceUrl: "https://clockify.me/help/track-time-and-expenses/creating-a-time-entry", diff --git a/lib/shortcuts/apps/coda.ts b/lib/shortcuts/apps/coda.ts index 7e8458bd..55d639ea 100644 --- a/lib/shortcuts/apps/coda.ts +++ b/lib/shortcuts/apps/coda.ts @@ -14,8 +14,6 @@ export const coda: AppShortcuts = { name: "Coda", category: "Collaborative documents", platforms: ["windows", "macos"], - intro: - "Coda combines document navigation, rich-text formatting, insert triggers, and table movement. Several keys change behavior with focus, so page, paragraph, and table commands are separated here.", versionContext: "Current complete Coda Mac and PC shortcut reference checked August 31, 2026. Coda labels Windows shortcuts as PC. Identical keys are retained where its platform tables agree, including Control-based indentation on Mac.", sourceUrl: "https://help.coda.io/hc/en-us/articles/39555894316173-Keyboard-shortcuts", diff --git a/lib/shortcuts/apps/codex.ts b/lib/shortcuts/apps/codex.ts index 291ec07d..3d63d56f 100644 --- a/lib/shortcuts/apps/codex.ts +++ b/lib/shortcuts/apps/codex.ts @@ -8,8 +8,6 @@ export const codex: AppShortcuts = { name: "Codex CLI", category: "AI coding agent", platforms: [...platforms], - intro: - "Codex CLI gives you a terminal UI around a running coding task. The current keymap covers steering, prompt editing, transcript navigation, reasoning effort, approvals, and the list pickers that appear around a session.", versionContext: "Built-in TUI defaults from the official OpenAI Codex source checked August 26, 2026. Codex resolves context-specific bindings and lets users rebind supported actions through /keymap and tui.keymap in config.toml. Alt may be reported as Option on macOS terminals.", sourceUrl: "https://github.com/openai/codex/blob/main/codex-rs/tui/src/keymap.rs", diff --git a/lib/shortcuts/apps/confluence.ts b/lib/shortcuts/apps/confluence.ts index e2ebbdd1..261937ad 100644 --- a/lib/shortcuts/apps/confluence.ts +++ b/lib/shortcuts/apps/confluence.ts @@ -14,8 +14,6 @@ export const confluence: AppShortcuts = { name: "Confluence", category: "Team knowledge base", platforms: ["windows", "macos"], - intro: - "Confluence Cloud has separate command sets for site navigation, pages and live docs, editor formatting, tables, Markdown input, and whiteboards. General shortcuts can be disabled in the in-product shortcut dialog.", versionContext: "Current Confluence Cloud reference checked August 31, 2026. Windows and Mac columns are preserved literally, including Control-based Mac commands and the Option-based text-formatting rows published by Atlassian. Confluence Data Center and the legacy editor are outside scope.", sourceUrl: "https://support.atlassian.com/confluence-cloud/docs/keyboard-shortcuts-markdown-and-autocomplete/", diff --git a/lib/shortcuts/apps/craft.ts b/lib/shortcuts/apps/craft.ts index ca349526..0109c4e4 100644 --- a/lib/shortcuts/apps/craft.ts +++ b/lib/shortcuts/apps/craft.ts @@ -39,8 +39,6 @@ export const craft: AppShortcuts = { name: "Craft", category: "Notes and documents", platforms: ["windows", "macos"], - intro: - "Craft separates document navigation, task entry, block editing, formatting, organization, and tabs. Several commands are available only in the Mac app, so those bindings are kept platform-specific.", versionContext: "Current Craft keyboard shortcut reference checked September 1, 2026. Craft publishes separate Mac and Windows lists; users can also add app-specific shortcuts through macOS settings.", sourceUrl: "https://support.craft.do/en/introduction/shortcuts", diff --git a/lib/shortcuts/apps/cubase.ts b/lib/shortcuts/apps/cubase.ts index 73ba65b6..deaeb173 100644 --- a/lib/shortcuts/apps/cubase.ts +++ b/lib/shortcuts/apps/cubase.ts @@ -5,11 +5,9 @@ const platforms = ["windows", "macos"] as const; export const cubase: AppShortcuts = { slug: "cubase", - name: "Steinberg Cubase", + name: "Cubase", category: "Music production", platforms: [...platforms], - intro: - "Cubase Pro's current default key command reference covers project files, editing, transport, windows, and media. The platform-neutral commands are paired with the documented Windows and macOS modifier conventions.", versionContext: "Cubase Pro 15.0 key commands checked September 1, 2026. Steinberg documents Windows and macOS defaults and allows users to customize or reset the key command preset.", sourceUrl: "https://www.steinberg.help/r/cubase-pro/15.0/en/cubase_nuendo/topics/key_commands/key_commands_default_c.html", diff --git a/lib/shortcuts/apps/cursor.ts b/lib/shortcuts/apps/cursor.ts index 23d579ba..15d6a4ba 100644 --- a/lib/shortcuts/apps/cursor.ts +++ b/lib/shortcuts/apps/cursor.ts @@ -8,8 +8,6 @@ export const cursor: AppShortcuts = { name: "Cursor", category: "AI code editor", platforms: [...platforms], - intro: - "Cursor puts the editor and an AI workspace side by side. Its official reference covers chat, inline edit, code context, autocomplete, terminal prompts, model controls, and the familiar editor navigation keys around them.", versionContext: "Default Cursor bindings from cursor.com checked August 26, 2026. Cursor notes that the full list is available by pressing Cmd+R or Ctrl+R and saving with Cmd+S or Ctrl+S. Every shortcut can be remapped.", sourceUrl: "https://cursor.com/docs/reference/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/davinci-resolve-fusion-page.ts b/lib/shortcuts/apps/davinci-resolve-fusion-page.ts index a98a2438..5bd99f67 100644 --- a/lib/shortcuts/apps/davinci-resolve-fusion-page.ts +++ b/lib/shortcuts/apps/davinci-resolve-fusion-page.ts @@ -1,6 +1,6 @@ import type { AppShortcuts, Shortcut } from "../types.ts"; -const platforms = ["windows", "macos"] as const; +const platforms = ["windows", "macos", "linux"] as const; const shared = (id: string, action: string, keys: string[], note?: string): Shortcut => ({ id, @@ -18,16 +18,14 @@ const mac = (id: string, action: string, keys: string[], note?: string): Shortcu export const davinciResolveFusionPage: AppShortcuts = { slug: "davinci-resolve-fusion-page", - name: "DaVinci Resolve Fusion Page", + name: "DaVinci Resolve Fusion page", category: "Compositing and motion graphics", platforms: [...platforms], - intro: - "The Fusion page uses a small set of transport and playhead commands for moving through a composition. The focused Fusion timeline or viewer determines where a command applies.", versionContext: - "DaVinci Resolve Fusion 20.3 Reference Manual checked September 1, 2026. Resolve supports custom keyboard mappings, and the manual's Command-labelled range commands are kept separate from the shared transport keys.", + "DaVinci Resolve Fusion 20.3 Reference Manual checked October 10, 2026. Resolve is available on Linux and supports custom keyboard mappings; the manual's Command-labelled range commands are kept separate from the shared transport keys.", sourceUrl: "https://documents.blackmagicdesign.com/UserManuals/FusionManual.pdf?_v=1724310010000", sourceLabel: "Fusion 20.3 Reference Manual", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "playback-and-navigation", @@ -40,6 +38,8 @@ export const davinciResolveFusionPage: AppShortcuts = { shared("play-forward", "Play forward", ["L"]), shared("frame-back", "Move one frame backward", ["Left"]), shared("frame-forward", "Move one frame forward", ["Right"]), + shared("global-start", "Jump to the global start", ["Shift", "Left"]), + shared("global-end", "Jump to the global end", ["Shift", "Right"]), ], }, { diff --git a/lib/shortcuts/apps/davinci-resolve.ts b/lib/shortcuts/apps/davinci-resolve.ts index 9a7c8dcd..eb257f33 100644 --- a/lib/shortcuts/apps/davinci-resolve.ts +++ b/lib/shortcuts/apps/davinci-resolve.ts @@ -1,6 +1,6 @@ import type { AppShortcuts, Shortcut, ShortcutKey } from "../types.ts"; -const platforms = ["windows", "macos"] as const; +const platforms = ["windows", "macos", "linux"] as const; const shared = (id: string, action: string, keys: string[], note?: string): Shortcut => ({ id, @@ -15,6 +15,7 @@ const pair = (id: string, action: string, windows: string[], macos: string[], no keys: [ { platform: "windows", keys: windows }, { platform: "macos", keys: macos }, + { platform: "linux", keys: windows }, ], ...(note ? { note } : {}), }); @@ -24,13 +25,11 @@ export const davinciResolve: AppShortcuts = { name: "DaVinci Resolve", category: "Video editing", platforms: [...platforms], - intro: - "These DaVinci Resolve commands cover playback, timeline navigation, timeline zoom, and the blade and clip-enable tools. Focus matters because Resolve has page- and panel-specific commands.", versionContext: - "DaVinci Resolve 20 guides checked September 1, 2026. Blackmagic Design lets users change nearly every command in Keyboard Customization, so these entries describe the documented defaults.", + "DaVinci Resolve 20 guides checked October 10, 2026. Blackmagic Design lists a Linux version and lets users change nearly every command in Keyboard Customization, so these entries describe the documented defaults.", sourceUrl: "https://documents.blackmagicdesign.com/UserManuals/DaVinci-Resolve-20-Editors-Guide.pdf?_v=1757574010000", sourceLabel: "DaVinci Resolve 20 Editors Guide", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "playback", diff --git a/lib/shortcuts/apps/dbeaver.ts b/lib/shortcuts/apps/dbeaver.ts index 4d28a16d..f651fb06 100644 --- a/lib/shortcuts/apps/dbeaver.ts +++ b/lib/shortcuts/apps/dbeaver.ts @@ -37,8 +37,6 @@ export const dbeaver: AppShortcuts = { name: "DBeaver", category: "Database tools", platforms: [...platforms], - intro: - "DBeaver groups shortcuts by connections, result sets, editors, search, windows, files, and debugging. Focused view and the active key scheme affect which command receives a key.", versionContext: "Current DBeaver shortcut wiki edited August 18, 2026 and checked September 1, 2026. The wiki lists Windows/Linux and macOS columns, and notes that users can change bindings or select the DBeaver Keyboard Only scheme.", sourceUrl: "https://github.com/dbeaver/dbeaver/wiki/Shortcuts", diff --git a/lib/shortcuts/apps/deepl.ts b/lib/shortcuts/apps/deepl.ts index 64b9976e..04f24012 100644 --- a/lib/shortcuts/apps/deepl.ts +++ b/lib/shortcuts/apps/deepl.ts @@ -12,8 +12,6 @@ export const deepl: AppShortcuts = { name: "DeepL", category: "Translation and writing", platforms: ["windows", "macos"], - intro: - "DeepL's desktop shortcuts send selected text from any application to DeepL for translation or writing improvement. Translation uses a repeated C sequence; the keys are not pressed as one simultaneous chord.", versionContext: "Current DeepL desktop-app defaults checked August 31, 2026. Translation and improvement shortcuts can be disabled or customized in app settings, so these entries describe the published defaults.", sourceUrl: "https://support.deepl.com/hc/en-us/articles/360020613059-Use-DeepL-shortcuts-for-desktop-apps", @@ -21,20 +19,15 @@ export const deepl: AppShortcuts = { lastVerified: "2026-08-31", groups: [ { - id: "selected-text", - title: "Translate or improve selected text", - intro: "Select text in any app first. For translation, hold the platform modifier and press C twice; ordinary copy sends nothing to DeepL.", + id: "selected-text-and-app", + title: "Selected text and app controls", + intro: "Select text in another app before using DeepL's translation or improvement commands. DeepL also documents a Mac quit shortcut.", shortcuts: [ dual("translate", "Translate selected text", ["Ctrl", "C", "then", "C"], ["Cmd", "C", "then", "C"]), dual("improve", "Improve selected text", ["Ctrl", "Win", "C"], ["Ctrl", "Cmd", "C"]), + { id: "quit", action: "Quit DeepL for Mac", keys: [{ platform: "macos", keys: ["Cmd", "Q"] }] }, ], }, - { - id: "application", - title: "Application", - intro: "DeepL documents a native quit command for its Mac desktop application.", - shortcuts: [{ id: "quit", action: "Quit DeepL for Mac", keys: [{ platform: "macos", keys: ["Cmd", "Q"] }] }], - }, ], }; diff --git a/lib/shortcuts/apps/descript.ts b/lib/shortcuts/apps/descript.ts index 83728780..ea3c683f 100644 --- a/lib/shortcuts/apps/descript.ts +++ b/lib/shortcuts/apps/descript.ts @@ -24,8 +24,6 @@ export const descript: AppShortcuts = { name: "Descript", category: "Audio and video editing", platforms: [...platforms], - intro: - "Descript's documented shortcuts cover tool selection, the action bar, transcript correction, timeline visibility, and scene creation. The editor's in-app shortcut panel contains additional commands.", versionContext: "Current Descript blog and Help Center pages checked September 1, 2026. Descript's defaults apply to its Mac and Windows editor; focus on the script editor or timeline where noted.", sourceUrl: "https://www.descript.com/blog/article/how-to-use-descript", @@ -45,12 +43,13 @@ export const descript: AppShortcuts = { ], }, { - id: "action-bar", - title: "Action bar", - intro: "The action bar searches Descript commands and AI features from inside a project.", + id: "commands-and-view", + title: "Commands and view", + intro: "Open Descript commands and the shortcut list, then change the project editor layout.", shortcuts: [ pair("open-shortcuts", "Open the keyboard shortcut list", ["Ctrl", "Alt", "K"], ["Option", "Cmd", "K"]), pair("action-bar", "Open the action bar", ["Ctrl", "K"], ["Cmd", "K"]), + pair("toggle-timeline", "Show or hide the timeline", ["Ctrl", "Shift", "S"], ["Cmd", "Shift", "S"]), ], }, { @@ -64,14 +63,6 @@ export const descript: AppShortcuts = { shared("split-scene", "Split the current scene", ["/"], "Type the slash in the script where the new scene should begin."), ], }, - { - id: "timeline-and-view", - title: "Timeline and view", - intro: "The timeline command changes the editor layout while the project remains open.", - shortcuts: [ - pair("toggle-timeline", "Show or hide the timeline", ["Ctrl", "Shift", "S"], ["Cmd", "Shift", "S"]), - ], - }, ], }; diff --git a/lib/shortcuts/apps/discord.ts b/lib/shortcuts/apps/discord.ts index 66f99819..8b7beccf 100644 --- a/lib/shortcuts/apps/discord.ts +++ b/lib/shortcuts/apps/discord.ts @@ -1,21 +1,19 @@ import type { AppShortcuts, Shortcut, ShortcutKey } from "../types.ts"; -const key = (platform: "windows" | "macos", keys: string[], alternatives?: string[][]): ShortcutKey => ({ platform, keys, ...(alternatives ? { alternatives } : {}) }); -const pair = (id: string, action: string, win: string[], mac: string[], winAlt?: string[][], macAlt?: string[][]): Shortcut => ({ id, action, keys: [key("windows", win, winAlt), key("macos", mac, macAlt)] }); +const key = (platform: "windows" | "macos" | "linux", keys: string[], alternatives?: string[][]): ShortcutKey => ({ platform, keys, ...(alternatives ? { alternatives } : {}) }); +const pair = (id: string, action: string, win: string[], mac: string[], winAlt?: string[][], macAlt?: string[][]): Shortcut => ({ id, action, keys: [key("windows", win, winAlt), key("macos", mac, macAlt), key("linux", win, winAlt)] }); const shared = (id: string, action: string, keys: string[], alternatives?: string[][]): Shortcut => pair(id, action, keys, keys, alternatives, alternatives); export const discord: AppShortcuts = { slug: "discord", name: "Discord", category: "Communication", - platforms: ["windows", "macos"], - intro: - "Discord's browser and desktop shortcuts cover settings, search, messages, channels, servers, voice controls, and keyboard navigation. Custom keybinds are desktop-only and are not included as defaults.", + platforms: ["windows", "macos", "linux"], versionContext: - "Current Discord commands, shortcuts, and navigation guide updated April 14, 2025 and checked August 31, 2026. The documented shortcuts apply to browser and desktop Discord, not the mobile app.", + "Current Discord commands, shortcuts, and navigation guide updated April 14, 2025 and checked October 10, 2026. The documented shortcuts apply to browser and desktop Discord, not the mobile app. The guide labels Windows and Mac bindings; Linux uses the Windows modifier column.", sourceUrl: "https://support.discord.com/hc/en-us/articles/31232432266647-Discord-Commands-Shortcuts-and-Navigation-Guide", sourceLabel: "Discord commands, shortcuts, and navigation guide", - lastVerified: "2026-08-31", + lastVerified: "2026-10-10", groups: [ { id: "general", diff --git a/lib/shortcuts/apps/draw-io-diagrams-net.ts b/lib/shortcuts/apps/draw-io-diagrams-net.ts index 58769f87..68bffe31 100644 --- a/lib/shortcuts/apps/draw-io-diagrams-net.ts +++ b/lib/shortcuts/apps/draw-io-diagrams-net.ts @@ -21,11 +21,9 @@ const same = (id: string, action: string, keys: string[], alternatives?: string[ export const drawIoDiagramsNet: AppShortcuts = { slug: "draw-io-diagrams-net", - name: "draw.io (diagrams.net)", + name: "draw.io", category: "Diagramming", platforms: ["windows", "macos", "linux"], - intro: - "The diagrams.net editor has keyboard commands for document work, canvas views, selection, shapes, labels, styling, and tables, plus modifier-and-pointer gestures for precise diagram construction. Focus and the selected object determine which command runs.", versionContext: "Current official printable draw.io shortcut reference and 2026 documentation checked August 31, 2026. The reference directs macOS users to use Command for Control and Option for Alt. Linux follows Control notation except for the separately published redo binding.", sourceUrl: "https://app.diagrams.net/shortcuts.svg", diff --git a/lib/shortcuts/apps/eclipse.ts b/lib/shortcuts/apps/eclipse.ts index 29fdd482..cd5143d9 100644 --- a/lib/shortcuts/apps/eclipse.ts +++ b/lib/shortcuts/apps/eclipse.ts @@ -23,8 +23,6 @@ export const eclipse: AppShortcuts = { name: "Eclipse IDE", category: "Developer tools", platforms: [...platforms], - intro: - "Eclipse shortcuts cover quick access, code navigation, editing, search, debugging, and workbench navigation. The active context, installed plug-ins, scheme, locale, and operating system can change the active binding.", versionContext: "Eclipse IDE 2026-06 (4.40) documentation and the current Eclipse IDE keybindings card checked September 1, 2026. The entries describe the Default scheme where the documentation provides a default and retain Eclipse's platform-specific Command mappings.", sourceUrl: "https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.user/concepts/concepts-keys.htm", diff --git a/lib/shortcuts/apps/emacs.ts b/lib/shortcuts/apps/emacs.ts index 27b353a7..872f622a 100644 --- a/lib/shortcuts/apps/emacs.ts +++ b/lib/shortcuts/apps/emacs.ts @@ -53,8 +53,6 @@ export const emacs: AppShortcuts = { name: "GNU Emacs", category: "Text editors", platforms: [...platforms], - intro: - "GNU Emacs uses Control and Meta key notation for movement, editing, files, buffers, windows, search, help, and keyboard macros. Prefix commands are shown in press order rather than as one chord.", versionContext: "GNU Emacs 30.2 manual and current GNU Emacs reference card checked September 1, 2026. Emacs modes can add local bindings, and terminal or operating-system settings can change how Meta, Alt, and function keys reach Emacs.", sourceUrl: "https://www.gnu.org/software/emacs/manual/html_node/emacs/", diff --git a/lib/shortcuts/apps/evernote.ts b/lib/shortcuts/apps/evernote.ts index 021bbab7..d8536360 100644 --- a/lib/shortcuts/apps/evernote.ts +++ b/lib/shortcuts/apps/evernote.ts @@ -31,8 +31,6 @@ export const evernote: AppShortcuts = { name: "Evernote", category: "Notes and documents", platforms: [...platforms], - intro: - "Evernote publishes separate Mac and Windows shortcuts for global capture, notes, navigation, views, editing, formatting, and its AI assistant.", versionContext: "Current Evernote keyboard shortcut reference updated July 31, 2026 and checked September 1, 2026. Some shortcuts can be customized or disabled from Evernote's shortcut drawer.", sourceUrl: "https://help.evernote.com/hc/en-us/articles/34296687388307-Keyboard-shortcuts", diff --git a/lib/shortcuts/apps/excalidraw.ts b/lib/shortcuts/apps/excalidraw.ts index 0dd14331..e9a3519c 100644 --- a/lib/shortcuts/apps/excalidraw.ts +++ b/lib/shortcuts/apps/excalidraw.ts @@ -46,8 +46,6 @@ export const excalidraw: AppShortcuts = { name: "Excalidraw", category: "Whiteboard and diagrams", platforms: [...platforms], - intro: - "Excalidraw's official shortcut map covers file actions, clipboard and layer operations, canvas modes, zoom, selection, and tool locking. Most commands use Ctrl on Windows and Linux or Command on macOS.", versionContext: "The current Excalidraw shortcut map in the official repository was checked September 1, 2026. Excalidraw can be embedded in other products, where host shortcuts or browser behavior may take precedence.", sourceUrl: "https://raw.githubusercontent.com/excalidraw/excalidraw/master/packages/excalidraw/actions/shortcuts.ts", diff --git a/lib/shortcuts/apps/excel.ts b/lib/shortcuts/apps/excel.ts index a662250c..ff41632d 100644 --- a/lib/shortcuts/apps/excel.ts +++ b/lib/shortcuts/apps/excel.ts @@ -10,8 +10,6 @@ export const excel: AppShortcuts = { name: "Microsoft Excel", category: "Spreadsheet", platforms: [...platforms], - intro: - "Excel shortcuts are easiest to use when they follow the job in front of you: move through a grid, edit a cell, format a selection, work with data, and reach the ribbon or formula bar. This reference covers current desktop defaults for Windows and Mac.", versionContext: "Microsoft's Excel shortcut reference checked in August 2026. It applies to Microsoft 365 and the listed recent Excel desktop releases; the source uses a US keyboard layout and warns that macOS settings, function-key preferences, and platform conflicts can change behavior.", sourceUrl: "https://support.microsoft.com/en-us/office/keyboard-shortcuts-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f", diff --git a/lib/shortcuts/apps/fantastical.ts b/lib/shortcuts/apps/fantastical.ts index b0d0b379..5680a4a6 100644 --- a/lib/shortcuts/apps/fantastical.ts +++ b/lib/shortcuts/apps/fantastical.ts @@ -31,8 +31,6 @@ export const fantastical: AppShortcuts = { name: "Fantastical", category: "Calendar and tasks", platforms: [...platforms], - intro: - "Fantastical's Mac and Windows shortcut pages cover search, event and task creation, date navigation, item movement, and app controls.", versionContext: "Current Fantastical keyboard shortcut pages checked September 1, 2026. The Mac page lists more commands than the Windows page, and the global open shortcut can be customized.", sourceUrl: "https://flexibits.com/fantastical/help/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/figjam.ts b/lib/shortcuts/apps/figjam.ts index 9c15ee6e..8e35613d 100644 --- a/lib/shortcuts/apps/figjam.ts +++ b/lib/shortcuts/apps/figjam.ts @@ -32,8 +32,6 @@ export const figjam: AppShortcuts = { name: "FigJam", category: "Whiteboards and collaboration", platforms: [...platforms], - intro: - "FigJam's official help pages document shortcuts for selection and ordering, text, connectors, drawing, comments, tables, and board tools.", versionContext: "Current Figma Help Center FigJam pages checked September 1, 2026. The shortcuts apply to the FigJam board and may require a board, text object, table, or selection to have focus.", sourceUrl: "https://help.figma.com/hc/en-us/articles/1500004292221-Select-move-and-order-objects-in-FigJam", diff --git a/lib/shortcuts/apps/figma.ts b/lib/shortcuts/apps/figma.ts index fa0b26cc..d31b48c0 100644 --- a/lib/shortcuts/apps/figma.ts +++ b/lib/shortcuts/apps/figma.ts @@ -8,8 +8,6 @@ export const figma: AppShortcuts = { name: "Figma", category: "Design tool", platforms: [...platforms], - intro: - "Figma work is mostly selection and repetition. These shortcuts get you from tool choice to shape editing to layer and canvas control without breaking the design flow.", versionContext: "The current Figma help page documents canvas navigation, keyboard selection, object creation, and the in-product shortcuts panel. macOS uses Cmd and Option where Windows and Linux use Ctrl and Alt.", sourceUrl: "https://help.figma.com/hc/en-us/articles/360040328653-Use-Figma-products-with-a-keyboard", diff --git a/lib/shortcuts/apps/filezilla.ts b/lib/shortcuts/apps/filezilla.ts index 06f381cb..d8d26e99 100644 --- a/lib/shortcuts/apps/filezilla.ts +++ b/lib/shortcuts/apps/filezilla.ts @@ -14,8 +14,6 @@ export const filezilla: AppShortcuts = { name: "FileZilla", category: "File transfer", platforms: [...platforms], - intro: - "FileZilla's official wiki lists shortcuts for panes, transfers, bookmarks, searches, queues, tabs, and local or remote file navigation.", versionContext: "Current FileZilla Wiki keyboard shortcut page checked September 1, 2026. The wiki publishes one desktop shortcut set without platform columns, so those values are retained across Windows, macOS, and Linux.", sourceUrl: "https://wiki.filezilla-project.org/Keyboard_shortcuts", diff --git a/lib/shortcuts/apps/final-cut-pro.ts b/lib/shortcuts/apps/final-cut-pro.ts index 06b56362..acbbcd8e 100644 --- a/lib/shortcuts/apps/final-cut-pro.ts +++ b/lib/shortcuts/apps/final-cut-pro.ts @@ -12,8 +12,6 @@ export const finalCutPro: AppShortcuts = { name: "Final Cut Pro", category: "Video editing", platforms: ["macos"], - intro: - "Final Cut Pro's Mac guide documents shortcuts for application control, editing, clip placement, timeline navigation, selection, and playback organization.", versionContext: "Final Cut Pro for Mac 12.3 keyboard shortcut guide checked September 1, 2026. Shortcuts can be viewed and changed in the Command Editor, so these entries describe Apple's documented defaults.", sourceUrl: "https://support.apple.com/en-mide/guide/final-cut-pro/ver90ba5929/mac", diff --git a/lib/shortcuts/apps/firefox.ts b/lib/shortcuts/apps/firefox.ts index 20c025be..2b270670 100644 --- a/lib/shortcuts/apps/firefox.ts +++ b/lib/shortcuts/apps/firefox.ts @@ -8,8 +8,6 @@ export const firefox: AppShortcuts = { name: "Mozilla Firefox", category: "Web browser", platforms: [...platforms], - intro: - "Firefox's official reference spans browsing, editing, tabs, search, bookmarks, developer tools, PDFs, and media. This table keeps those contexts together so the shortcut still makes sense when the page is no longer just a page.", versionContext: "Mozilla's keyboard reference checked August 26, 2026. Windows and Linux generally share the Ctrl bindings, while macOS uses Command or Option. A few backspace, tab-order, and link-opening shortcuts depend on Firefox preferences.", sourceUrl: "https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly", diff --git a/lib/shortcuts/apps/fl-studio.ts b/lib/shortcuts/apps/fl-studio.ts index 6c227cf2..acba6b26 100644 --- a/lib/shortcuts/apps/fl-studio.ts +++ b/lib/shortcuts/apps/fl-studio.ts @@ -38,8 +38,6 @@ export const flStudio: AppShortcuts = { name: "FL Studio", category: "Music production", platforms: [...platforms], - intro: - "FL Studio groups shortcuts by global commands, files, patterns, the Channel Rack, transport, windows, the Mixer, the Playlist, the Piano roll, and the Browser.", versionContext: "Current FL Studio online manual keyboard shortcut page checked September 1, 2026. The manual says shortcuts depend on the active window or plugin and that its list is not exhaustive.", sourceUrl: "https://www.image-line.com/fl-studio-learning/fl-studio-online-manual/html/basics_shortcuts.htm", diff --git a/lib/shortcuts/apps/framer.ts b/lib/shortcuts/apps/framer.ts index 02ea09f5..775d85be 100644 --- a/lib/shortcuts/apps/framer.ts +++ b/lib/shortcuts/apps/framer.ts @@ -45,8 +45,6 @@ export const framer: AppShortcuts = { name: "Framer", category: "Website design", platforms: [...platforms], - intro: - "Framer's official shortcut table covers agents, arranging, editing, layout, preview, projects, selection, tools, typography, vector editing, views, and zoom.", versionContext: "Current Framer keyboard shortcut table checked September 1, 2026. Framer publishes separate Mac and Windows columns in one searchable reference.", sourceUrl: "https://www.framer.com/shortcuts", diff --git a/lib/shortcuts/apps/freshdesk.ts b/lib/shortcuts/apps/freshdesk.ts index 2a162303..a15538b3 100644 --- a/lib/shortcuts/apps/freshdesk.ts +++ b/lib/shortcuts/apps/freshdesk.ts @@ -8,8 +8,6 @@ const freshdesk: AppShortcuts = { name: "Freshdesk", category: "Support desk", platforms: [...platforms], - intro: - "Freshdesk splits its shortcut map by screen. These entries cover global navigation, ticket lists, selected tickets, and the ticket editor so support agents can move through a queue and reply without leaving the keyboard.", versionContext: "The current Freshdesk support reference covers Freshdesk Omni accounts and notes that accounts created before December 2025 may see a different shortcut set. Shortcuts must be enabled from Profile > Keyboard Shortcuts.", sourceUrl: "https://support.freshdesk.com/support/solutions/articles/186758-keyboard-shortcuts-in-freshdesk", diff --git a/lib/shortcuts/apps/front.ts b/lib/shortcuts/apps/front.ts index a56bc2eb..ab6bf3ea 100644 --- a/lib/shortcuts/apps/front.ts +++ b/lib/shortcuts/apps/front.ts @@ -8,8 +8,6 @@ const front: AppShortcuts = { name: "Front", category: "Shared inbox", platforms: [...platforms], - intro: - "Front shortcuts keep conversations moving through selection, reply, assignment, tagging, and archive actions. The reference below uses Front's own shortcut set, including the commands that are useful while a conversation or composer has focus.", versionContext: "Front publishes four selectable shortcut sets. This record uses the Front set. Personal preferences, the browser versus desktop app, and single-key settings can change what is active. Windows uses Control where the Mac reference uses Command, and Alt where it uses Option.", sourceUrl: "https://help.front.com/en/articles/2189", diff --git a/lib/shortcuts/apps/fusion-360.ts b/lib/shortcuts/apps/fusion-360.ts index 7f45096b..efe942ee 100644 --- a/lib/shortcuts/apps/fusion-360.ts +++ b/lib/shortcuts/apps/fusion-360.ts @@ -5,11 +5,9 @@ const platforms = ["windows", "macos"] as const; const fusion360: AppShortcuts = { slug: "fusion-360", - name: "Fusion 360", + name: "Autodesk Fusion", category: "CAD and engineering", platforms: [...platforms], - intro: - "Fusion 360 puts common modeling, sketching, view, and document commands on the keyboard. This reference keeps the commands that are useful across a normal design session and leaves pointer gestures outside the shortcut list.", versionContext: "Autodesk's current Fusion keyboard reference labels Windows and macOS separately. Command replaces Control on macOS for the shared document and modeling commands, while Autodesk-specific Option and Command combinations remain platform-specific.", sourceUrl: "https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-F0491540-0324-470A-B651-2238D0EFAC30", diff --git a/lib/shortcuts/apps/ghostty.ts b/lib/shortcuts/apps/ghostty.ts index 9ed032ab..b79d965d 100644 --- a/lib/shortcuts/apps/ghostty.ts +++ b/lib/shortcuts/apps/ghostty.ts @@ -8,8 +8,6 @@ export const ghostty: AppShortcuts = { name: "Ghostty", category: "Terminal emulator", platforms: [...platforms], - intro: - "Ghostty's defaults are about arranging terminal work. Split the surface, move between tabs, copy and paste, search scrollback, change the view, and reload configuration while keeping the shell session alive.", versionContext: "Current default bindings from Ghostty's official keybind documentation and repository source checked in August 2026. Ghostty is supported on macOS and Linux, every keybind is remappable, and ghostty +list-keybinds --default prints the complete build-specific list.", sourceUrl: "https://ghostty.org/docs/config/keybind", diff --git a/lib/shortcuts/apps/gimp.ts b/lib/shortcuts/apps/gimp.ts index b7cc3fb0..2163f074 100644 --- a/lib/shortcuts/apps/gimp.ts +++ b/lib/shortcuts/apps/gimp.ts @@ -1,20 +1,18 @@ import { combo } from "../build.ts"; import type { AppShortcuts } from "../types.ts"; -const platforms = ["windows", "linux"] as const; +const platforms = ["windows", "macos", "linux"] as const; const gimp: AppShortcuts = { slug: "gimp", name: "GIMP", category: "Image editor", platforms: [...platforms], - intro: - "GIMP's official quick reference groups shortcuts by toolbox, image files, dialogs, and view controls. These entries cover the commands used most often when selecting, painting, editing layers, and exporting an image.", versionContext: - "The official GIMP one-page quick reference publishes the desktop bindings without a separate macOS column. This record therefore covers Windows and Linux only, and keeps the documented Ctrl-based combinations as written.", + "The official GIMP one-page quick reference publishes one set of desktop bindings without operating-system columns. The listed keys are kept as published on Windows, macOS, and Linux; individual installations may differ.", sourceUrl: "https://docs.gimp.org/quickreference/gimp-keys-en.pdf", sourceLabel: "official GIMP keyboard shortcuts quick reference", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "toolbox", diff --git a/lib/shortcuts/apps/github-copilot.ts b/lib/shortcuts/apps/github-copilot.ts index 2da3f001..78d2ef45 100644 --- a/lib/shortcuts/apps/github-copilot.ts +++ b/lib/shortcuts/apps/github-copilot.ts @@ -8,31 +8,22 @@ const githubCopilot: AppShortcuts = { name: "GitHub Copilot", category: "AI coding assistant", platforms: [...platforms], - intro: - "GitHub Copilot's documented keys live inside the host IDE. These entries use GitHub's current Visual Studio Code reference for inline suggestions and the separate pane, with the same suggestion controls also documented for JetBrains IDEs.", versionContext: - "The official GitHub page separates Visual Studio Code, JetBrains, Visual Studio, Eclipse, Vim/Neovim, and Xcode. This record uses the Visual Studio Code defaults for Windows, macOS, and Linux. Host keymaps and user rebinding can change the active commands.", + "GitHub's current shortcut page separates Visual Studio Code, JetBrains, Visual Studio, Eclipse, Vim/Neovim, and Xcode. This record uses the Visual Studio Code defaults for Windows, macOS, and Linux. Host keymaps and user rebinding can change the active commands.", sourceUrl: "https://docs.github.com/en/copilot/reference/keyboard-shortcuts?tool=vscode", sourceLabel: "official GitHub Copilot IDE keyboard shortcuts", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "inline-suggestions", title: "Inline suggestions", - intro: "Accept, dismiss, move through, or request a Copilot suggestion while editing code in the host IDE.", + intro: "Accept, dismiss, move through, or request a suggestion, or open Copilot's separate suggestions pane while editing code.", shortcuts: [ { id: "accept-suggestion", action: "Accept an inline suggestion", keys: combo(platforms, ["Tab"]) }, { id: "dismiss-suggestion", action: "Dismiss an inline suggestion", keys: combo(platforms, ["Esc"]) }, { id: "next-suggestion", action: "Show the next inline suggestion", keys: combo(platforms, ["Alt", "]"], ["Option", "]"]) }, { id: "previous-suggestion", action: "Show the previous inline suggestion", keys: combo(platforms, ["Alt", "["], ["Option", "["]) }, { id: "trigger-suggestion", action: "Trigger an inline suggestion", keys: combo(platforms, ["Alt", "\\"], ["Option", "\\"]) }, - ], - }, - { - id: "copilot-pane", - title: "Copilot pane", - intro: "Open the separate Copilot suggestions pane when the inline result is not the one you want to use.", - shortcuts: [ { id: "open-copilot-pane", action: "Open GitHub Copilot for additional suggestions", @@ -45,32 +36,6 @@ const githubCopilot: AppShortcuts = { }, ], }, - { - id: "suggestion-navigation", - title: "Suggestion navigation", - intro: "Accept the next word or line when a longer completion is visible in the Copilot inline suggestion.", - shortcuts: [ - { - id: "accept-next-word", - action: "Accept the next word of a suggestion", - keys: perPlatform(platforms, { - macos: ["Cmd", "Right"], - windows: ["Ctrl", "Right"], - linux: ["Ctrl", "Right"], - }), - }, - { - id: "accept-next-line", - action: "Accept the next line of a suggestion", - keys: perPlatform(platforms, { - macos: ["Cmd", "Ctrl", "Right"], - windows: ["Ctrl", "Alt", "Right"], - linux: ["Ctrl", "Alt", "Right"], - }), - note: "GitHub documents this command in its code-suggestions guide. The inline suggestion accept-next-line command may need a custom key binding in some host versions.", - }, - ], - }, ], }; diff --git a/lib/shortcuts/apps/github-desktop.ts b/lib/shortcuts/apps/github-desktop.ts index 1565787d..c8453981 100644 --- a/lib/shortcuts/apps/github-desktop.ts +++ b/lib/shortcuts/apps/github-desktop.ts @@ -8,8 +8,6 @@ const githubDesktop: AppShortcuts = { name: "GitHub Desktop", category: "Git client", platforms: [...platforms], - intro: - "GitHub Desktop's shortcuts cover repository setup, branch work, commit flow, and the views that developers use while reviewing changes. Mac and Windows bindings come directly from GitHub's current desktop reference.", versionContext: "GitHub publishes separate macOS and Windows tables. This record covers the desktop application, not browser shortcuts or terminal commands. Windows uses Control where macOS uses Command, with the platform-specific full-screen and developer-tool commands preserved.", sourceUrl: "https://docs.github.com/en/desktop/overview/github-desktop-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/github.ts b/lib/shortcuts/apps/github.ts index 7eeb623f..75df01fc 100644 --- a/lib/shortcuts/apps/github.ts +++ b/lib/shortcuts/apps/github.ts @@ -8,8 +8,6 @@ export const github: AppShortcuts = { name: "GitHub", category: "Code hosting platform", platforms: [...platforms], - intro: - "GitHub's keyboard layer changes with the page you are on. These groups cover site navigation, repository sections, issue and pull request triage, comment editing, code browsing, and notifications.", versionContext: "Shortcuts documented on docs.github.com in August 2026. Character key shortcuts can be disabled in accessibility settings, and the GitHub Command Palette is in public preview and disabled by default.", sourceUrl: "https://docs.github.com/en/get-started/accessibility/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/gitkraken.ts b/lib/shortcuts/apps/gitkraken.ts index dfff6df6..f1707ed1 100644 --- a/lib/shortcuts/apps/gitkraken.ts +++ b/lib/shortcuts/apps/gitkraken.ts @@ -8,8 +8,6 @@ const gitkraken: AppShortcuts = { name: "GitKraken", category: "Git client", platforms: [...platforms], - intro: - "GitKraken's desktop shortcuts cover the work that repeats in every repository: fetch, stage, commit, move through history, compare changes, and switch between open tabs. The same reference covers Windows, macOS, and Linux.", versionContext: "The current GitKraken Desktop reference documents Command for macOS and Control for Windows and Linux. Some keys act on the commit graph or the panel under focus, so the group notes call out those contexts.", sourceUrl: "https://help.gitkraken.com/gitkraken-desktop/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/gitlab.ts b/lib/shortcuts/apps/gitlab.ts index f6af7686..a9325a49 100644 --- a/lib/shortcuts/apps/gitlab.ts +++ b/lib/shortcuts/apps/gitlab.ts @@ -8,8 +8,6 @@ const gitlab: AppShortcuts = { name: "GitLab", category: "Code hosting", platforms: [...platforms], - intro: - "GitLab's web shortcuts move between projects, issues, merge requests, and the editor. This set follows the current GitLab.com and self-managed reference, including the sequential G routes that make project navigation fast.", versionContext: "GitLab publishes one web shortcut reference with macOS modifier differences where they matter. Windows and Linux share the Control-based bindings in the source. Some commands depend on the current project, issue, or merge request view.", sourceUrl: "https://docs.gitlab.com/user/shortcuts/", diff --git a/lib/shortcuts/apps/gmail.ts b/lib/shortcuts/apps/gmail.ts index eeaa8b56..45ce11af 100644 --- a/lib/shortcuts/apps/gmail.ts +++ b/lib/shortcuts/apps/gmail.ts @@ -8,8 +8,6 @@ export const gmail: AppShortcuts = { name: "Gmail", category: "Email", platforms: [...platforms], - intro: - "Gmail becomes much faster once a conversation stays selected. This reference covers the complete documented keyboard layer for inbox triage, composing, reading threads, jumping between views, selecting conversations, formatting, and opening Gmail's menus.", versionContext: "Google's official Gmail Help page checked in August 2026. Gmail keyboard shortcuts must be turned on in Settings, and Google notes that language and keyboard layout can affect support. Gmail also lets users customize the single-key actions after enabling custom shortcuts.", sourceUrl: "https://support.google.com/mail/answer/6594", diff --git a/lib/shortcuts/apps/gnome.ts b/lib/shortcuts/apps/gnome.ts index 5639830d..e7726c8d 100644 --- a/lib/shortcuts/apps/gnome.ts +++ b/lib/shortcuts/apps/gnome.ts @@ -2,11 +2,9 @@ import type { AppShortcuts } from "../types.ts"; export const gnome: AppShortcuts = { slug: "gnome", - name: "Linux GNOME", + name: "GNOME", category: "Desktop environment", platforms: ["linux"], - intro: - "GNOME's Super-key shortcuts connect the desktop shell to the work inside its windows. This reference covers the current official shell defaults for Activities, windows, workspaces, monitors, notifications, screenshots, recording, and common text editing.", versionContext: "Defaults from the current GNOME Help keyboard-shortcuts page checked in August 2026. Window-manager and terminal shortcuts can vary when a distribution changes GNOME settings or when another desktop component claims the same key.", sourceUrl: "https://help.gnome.org/gnome-help/shell-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/godot-engine.ts b/lib/shortcuts/apps/godot-engine.ts index fb28dd82..12c14356 100644 --- a/lib/shortcuts/apps/godot-engine.ts +++ b/lib/shortcuts/apps/godot-engine.ts @@ -8,8 +8,6 @@ const godotEngine: AppShortcuts = { name: "Godot Engine", category: "Game engine", platforms: [...platforms], - intro: - "Godot's editor shortcuts move between workspaces, scenes, panels, and the 2D canvas. This record follows the default key mapping in the current Godot 4.6 manual and keeps tool, scene, and run commands together.", versionContext: "The Godot 4.6 manual documents separate macOS workspace commands and shared editor commands for Windows, Linux, and macOS. All shortcuts can be changed in Editor Settings > Shortcuts, and some canvas keys depend on the active tool.", sourceUrl: "https://docs.godotengine.org/en/4.6/tutorials/editor/default_key_mapping.html", diff --git a/lib/shortcuts/apps/goodnotes.ts b/lib/shortcuts/apps/goodnotes.ts index 1a986532..75810973 100644 --- a/lib/shortcuts/apps/goodnotes.ts +++ b/lib/shortcuts/apps/goodnotes.ts @@ -8,8 +8,6 @@ const goodnotes: AppShortcuts = { name: "Goodnotes", category: "Note-taking", platforms: [...platforms], - intro: - "Goodnotes shortcuts cover notebooks and tabs, editing, page navigation, drawing tools, and text formatting. This desktop set follows the current Goodnotes reference for macOS and Windows.", versionContext: "Goodnotes publishes separate Mac, Windows, iPadOS, and web columns. This record includes the Mac and Windows desktop bindings only. Some tools are available only in a document or text editor, as noted by their group.", sourceUrl: "https://support.goodnotes.com/hc/en-us/articles/17220521238159-Keyboard-Shortcuts-in-Goodnotes", diff --git a/lib/shortcuts/apps/google-docs.ts b/lib/shortcuts/apps/google-docs.ts index f20e4f4e..0e9d9f6c 100644 --- a/lib/shortcuts/apps/google-docs.ts +++ b/lib/shortcuts/apps/google-docs.ts @@ -8,8 +8,6 @@ const googleDocs: AppShortcuts = { name: "Google Docs", category: "Document editor", platforms: [...platforms], - intro: - "Google Docs shortcuts handle editing, formatting, navigation, comments, and document commands in the browser. The entries below use Google's current Windows and macOS help tables rather than generic browser shortcuts.", versionContext: "Google publishes separate PC and Mac columns for Docs. These commands apply while a document or its editor has focus. Browser, screen-reader, and Chromebook tables are outside this desktop record.", sourceUrl: "https://support.google.com/docs/answer/179738?hl=en-GB", diff --git a/lib/shortcuts/apps/google-drive.ts b/lib/shortcuts/apps/google-drive.ts index 444c5320..833f808c 100644 --- a/lib/shortcuts/apps/google-drive.ts +++ b/lib/shortcuts/apps/google-drive.ts @@ -8,8 +8,6 @@ const googleDrive: AppShortcuts = { name: "Google Drive", category: "Cloud storage", platforms: [...platforms], - intro: - "Google Drive's web shortcuts cover navigation panels, item selection, file actions, creation, and preview controls. The record follows Google's current desktop help page for Windows and macOS.", versionContext: "Google publishes PC and Mac columns for Drive. The navigation sequences below are entered in order, not pressed as one chord. Some commands require the file list, details pane, or preview to have focus.", sourceUrl: "https://support.google.com/drive/answer/2563044?co=GENIE.Platform%3DDesktop&hl=en", diff --git a/lib/shortcuts/apps/google-forms.ts b/lib/shortcuts/apps/google-forms.ts index 5eab3ff8..9efb5ac2 100644 --- a/lib/shortcuts/apps/google-forms.ts +++ b/lib/shortcuts/apps/google-forms.ts @@ -8,8 +8,6 @@ const googleForms: AppShortcuts = { name: "Google Forms", category: "Form builder", platforms: [...platforms], - intro: - "Google Forms shortcuts help you move through a form, insert questions and media, format text, and manage grading. The bindings below come from Google's current PC and Mac shortcut reference.", versionContext: "Google documents shortcuts for the form editor on PC and Mac. Commands that insert an item use a sequential Ctrl or Command sequence, represented with a visible then token here.", sourceUrl: "https://support.google.com/docs/answer/6026976?hl=en", diff --git a/lib/shortcuts/apps/google-gemini.ts b/lib/shortcuts/apps/google-gemini.ts index e83c9d13..eb6b2b56 100644 --- a/lib/shortcuts/apps/google-gemini.ts +++ b/lib/shortcuts/apps/google-gemini.ts @@ -8,8 +8,6 @@ const googleGemini: AppShortcuts = { name: "Google Gemini", category: "AI assistant", platforms: [...platforms], - intro: - "Google's current Gemini keyboard reference is for Gemini in Chrome. It documents opening the side panel, switching between the tab and Gemini, and entering selection mode on Windows and Mac.", versionContext: "Gemini in Chrome is an opt-in feature that Google is rolling out gradually. Its shortcuts can be changed in Chrome settings, and this record does not present them as shortcuts for the general Gemini web app.", sourceUrl: "https://support.google.com/gemini/answer/16988996?hl=en-GP", diff --git a/lib/shortcuts/apps/google-meet.ts b/lib/shortcuts/apps/google-meet.ts index 951322bb..d23f22f8 100644 --- a/lib/shortcuts/apps/google-meet.ts +++ b/lib/shortcuts/apps/google-meet.ts @@ -8,8 +8,6 @@ const googleMeet: AppShortcuts = { name: "Google Meet", category: "Video meetings", platforms: [...platforms], - intro: - "Google Meet's documented meeting shortcuts control the camera, microphone, captions, presentation, participants, chat, and layout. They work while a Meet call has focus.", versionContext: "Google publishes separate Windows and Mac meeting tables. The complete in-meeting shortcut list is available from Meet's help dialog with Shift+question mark; some commands depend on account or meeting permissions.", sourceUrl: "https://support.google.com/meet/answer/9298571?hl=en", diff --git a/lib/shortcuts/apps/google-sheets.ts b/lib/shortcuts/apps/google-sheets.ts index 0dd1213f..d116d45a 100644 --- a/lib/shortcuts/apps/google-sheets.ts +++ b/lib/shortcuts/apps/google-sheets.ts @@ -8,8 +8,6 @@ export const googleSheets: AppShortcuts = { name: "Google Sheets", category: "Spreadsheet", platforms: [...platforms], - intro: - "Google Sheets shortcuts cover selection, cell entry, formatting, sheet navigation, comments, menus, formulas, and accessibility. This reference keeps Google's PC bindings for Windows and Linux separate from its current Mac bindings.", versionContext: "Google's official Google Sheets Help page checked in August 2026. Google labels Windows and ChromeOS as PC; Linux browsers generally use the same PC Ctrl and Alt bindings, while browser language, keyboard layout, and compatible spreadsheet shortcuts can change behavior.", sourceUrl: "https://support.google.com/docs/answer/181110", diff --git a/lib/shortcuts/apps/google-slides.ts b/lib/shortcuts/apps/google-slides.ts index 20e258d8..bee58ad5 100644 --- a/lib/shortcuts/apps/google-slides.ts +++ b/lib/shortcuts/apps/google-slides.ts @@ -8,8 +8,6 @@ const googleSlides: AppShortcuts = { name: "Google Slides", category: "Presentation editor", platforms: [...platforms], - intro: - "Google Slides shortcuts cover slide creation, editing, filmstrip movement, presentation controls, and text formatting. The entries below use Google's current Windows and Mac help tables.", versionContext: "Google publishes PC and Mac columns for Slides. Commands such as filmstrip movement and speaker notes require focus in the matching Slides area, while formatting commands apply to selected text or objects.", sourceUrl: "https://support.google.com/docs/answer/1696717?hl=en-EN", diff --git a/lib/shortcuts/apps/grammarly.ts b/lib/shortcuts/apps/grammarly.ts index 6f973e3d..29fafdc8 100644 --- a/lib/shortcuts/apps/grammarly.ts +++ b/lib/shortcuts/apps/grammarly.ts @@ -8,8 +8,6 @@ const grammarly: AppShortcuts = { name: "Grammarly", category: "Writing assistant", platforms: [...platforms], - intro: - "Grammarly's current desktop accessibility reference documents keyboard navigation for the assistant and sidebar. These entries cover opening and closing the desktop surfaces and moving through their controls.", versionContext: "The source covers Grammarly for Windows and Mac, not every browser or editor integration. Tab and Shift+Tab move focus, while Enter or Space activates a focused control. Grammarly's separate quick-fix Tab behavior is being discontinued and is not included.", sourceUrl: "https://support.grammarly.com/hc/en-us/articles/24059143083277-Can-I-use-my-keyboard-to-navigate-Grammarly-for-Windows-and-Mac", diff --git a/lib/shortcuts/apps/harvest.ts b/lib/shortcuts/apps/harvest.ts index a6285d8f..2e180ed9 100644 --- a/lib/shortcuts/apps/harvest.ts +++ b/lib/shortcuts/apps/harvest.ts @@ -8,8 +8,6 @@ const harvest: AppShortcuts = { name: "Harvest", category: "Time tracking", platforms: [...platforms], - intro: - "Harvest's Windows app shortcuts cover timer creation, the timesheet, favorites, day navigation, and editing or deleting a selected entry. The source gives these as the app's current Windows defaults.", versionContext: "Harvest documents Windows defaults and marks several commands as customizable in preferences. Its Mac preferences page describes customization without publishing stable default key values, so this record is Windows-only.", sourceUrl: "https://support.getharvest.com/hc/en-us/articles/360048685411-Windows-app-Keyboard-shortcuts", diff --git a/lib/shortcuts/apps/httpie.ts b/lib/shortcuts/apps/httpie.ts index 8ca9ae21..a754cdb7 100644 --- a/lib/shortcuts/apps/httpie.ts +++ b/lib/shortcuts/apps/httpie.ts @@ -8,8 +8,6 @@ const httpie: AppShortcuts = { name: "HTTPie", category: "API client", platforms: [...platforms], - intro: - "HTTPie Desktop's shortcuts cover tabs, the request editor, search, and the library. They keep a request session moving while the URL, code editor, or response panel has focus.", versionContext: "The official HTTPie Desktop preview documentation publishes macOS, Windows, and Linux bindings. Some commands are desktop-only, and the preview feature set may change as HTTPie Desktop evolves.", sourceUrl: "https://httpie.io/docs/desktop/preview", diff --git a/lib/shortcuts/apps/ia-writer.ts b/lib/shortcuts/apps/ia-writer.ts index 5296be9f..eeb53566 100644 --- a/lib/shortcuts/apps/ia-writer.ts +++ b/lib/shortcuts/apps/ia-writer.ts @@ -8,8 +8,6 @@ const iaWriter: AppShortcuts = { name: "iA Writer", category: "Writing app", platforms: [...platforms], - intro: - "iA Writer's Mac shortcuts cover files, search, Markdown structure, formatting, preview, and export. They follow the current iA Writer reference so a writer can stay in the editor from first draft to final output.", versionContext: "The official iA Writer page publishes the Mac app shortcuts and notes that bindings can change with app updates. The Windows page was not used here because the current public reference did not expose an equivalent complete table.", sourceUrl: "https://ia.net/writer/support/basics/shortcuts", diff --git a/lib/shortcuts/apps/imessage.ts b/lib/shortcuts/apps/imessage.ts index 2700b055..fbc8bbba 100644 --- a/lib/shortcuts/apps/imessage.ts +++ b/lib/shortcuts/apps/imessage.ts @@ -8,8 +8,6 @@ const imessage: AppShortcuts = { name: "Messages", category: "Messaging", platforms: [...platforms], - intro: - "Apple's Messages shortcuts cover conversation filters, search, replies, Tapbacks, message editing, and conversation details. This record is for the current macOS Messages app.", versionContext: "The official Apple User Guide publishes the Messages shortcuts for macOS. The app name shown to Mac users is Messages, while this Stack127 record keeps the requested iMessage slug. iPhone and iPad gestures are outside scope.", sourceUrl: "https://support.apple.com/guide/messages/keyboard-shortcuts-ichtc78b3bff/mac", diff --git a/lib/shortcuts/apps/inkscape.ts b/lib/shortcuts/apps/inkscape.ts index ba76c7f4..377d7f4a 100644 --- a/lib/shortcuts/apps/inkscape.ts +++ b/lib/shortcuts/apps/inkscape.ts @@ -1,20 +1,18 @@ import { combo } from "../build.ts"; import type { AppShortcuts } from "../types.ts"; -const platforms = ["windows", "linux"] as const; +const platforms = ["windows", "macos", "linux"] as const; const inkscape: AppShortcuts = { slug: "inkscape", name: "Inkscape", category: "Vector editor", platforms: [...platforms], - intro: - "Inkscape's official key reference covers tools, files, object editing, z-order, and canvas views. These entries focus on the commands that recur while drawing and preparing a vector document.", versionContext: - "The Inkscape documentation reference and its default key XML are maintained by the Inkscape project. The public reference does not publish a separate macOS column, so this record covers Windows and Linux and leaves custom keymaps out.", + "Inkscape's official keyboard reference checked October 10, 2026. The project says its shortcuts use Ctrl rather than Command on macOS; users can change shortcuts in Preferences.", sourceUrl: "https://inkscape.org/sl/doc/keys.html", sourceLabel: "official Inkscape keyboard shortcuts", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "tools", diff --git a/lib/shortcuts/apps/insomnia.ts b/lib/shortcuts/apps/insomnia.ts index c54e99f7..4c3f1180 100644 --- a/lib/shortcuts/apps/insomnia.ts +++ b/lib/shortcuts/apps/insomnia.ts @@ -8,8 +8,6 @@ const insomnia: AppShortcuts = { name: "Insomnia", category: "API client", platforms: [...platforms], - intro: - "Insomnia's desktop shortcuts cover request editing, sending, environments, history, plugins, and workspace organization. The entries below follow Kong's current Windows and macOS shortcut reference.", versionContext: "Kong's Insomnia documentation publishes Windows and macOS columns. Several commands depend on the request editor, response panel, or sidebar having focus, and all shortcuts remain user-configurable through the app.", sourceUrl: "https://developer.konghq.com/insomnia/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/intellij-idea.ts b/lib/shortcuts/apps/intellij-idea.ts index b7bbb0ab..7d8a1454 100644 --- a/lib/shortcuts/apps/intellij-idea.ts +++ b/lib/shortcuts/apps/intellij-idea.ts @@ -9,8 +9,6 @@ const intellijIdea: AppShortcuts = { name: "IntelliJ IDEA", category: "IDE", platforms: [...platforms], - intro: - "IntelliJ IDEA's default keymaps cover search, editing, coding assistance, navigation, debugging, and refactoring. This record keeps the high-use commands from JetBrains' current Windows and macOS keymap references.", versionContext: "JetBrains documents predefined Windows and macOS keymaps for IntelliJ IDEA 2026.2. All bindings can be changed in Settings > Keymap, and function keys may also be claimed by the operating system.", sourceUrl: "https://www.jetbrains.com/help/idea/mastering-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/intercom.ts b/lib/shortcuts/apps/intercom.ts index 7727ea98..b74731dd 100644 --- a/lib/shortcuts/apps/intercom.ts +++ b/lib/shortcuts/apps/intercom.ts @@ -8,8 +8,6 @@ const intercom: AppShortcuts = { name: "Intercom", category: "Customer support", platforms: [...platforms], - intro: - "Intercom's Inbox shortcuts cover conversation actions, inbox navigation, and the reply composer. The current Command-K help article also lists direct keys for the actions agents use most often.", versionContext: "Intercom documents the same direct shortcuts for Mac and Windows with Command or Control modifiers. The direct keys work outside the composer on QWERTY keyboards in Chrome or Edge, and the Command-K menu remains available from the Inbox.", sourceUrl: "https://www.intercom.com/help/en/articles/6272267-how-to-use-command-k-with-intercom-inbox", diff --git a/lib/shortcuts/apps/iterm2.ts b/lib/shortcuts/apps/iterm2.ts index 3376007e..7aef2f8f 100644 --- a/lib/shortcuts/apps/iterm2.ts +++ b/lib/shortcuts/apps/iterm2.ts @@ -7,8 +7,6 @@ export const iterm2: AppShortcuts = { name: "iTerm2", category: "Terminal emulator", platforms: ["macos"], - intro: - "iTerm2's shortcuts are about keeping several terminal jobs visible at once. Work across panes and tabs, search scrollback, recover paste history, mark useful output, broadcast input, and open the less obvious terminal tools.", versionContext: "Default bindings documented on iTerm2's official one-page documentation checked in August 2026. Many bindings can be changed in Preferences, Keys, so a local key mapping can differ from these defaults.", sourceUrl: "https://iterm2.com/documentation-one-page.html", diff --git a/lib/shortcuts/apps/jira.ts b/lib/shortcuts/apps/jira.ts index 2a7db855..93190b4c 100644 --- a/lib/shortcuts/apps/jira.ts +++ b/lib/shortcuts/apps/jira.ts @@ -8,8 +8,6 @@ const jira: AppShortcuts = { name: "Jira", category: "Issue tracking", platforms: [...platforms], - intro: - "Jira Cloud's current shortcut reference covers the actions available from issue views and boards, including creating, opening, assigning, commenting, and moving through work items.", versionContext: "Atlassian says the exact Jira shortcut set depends on the current page and can be inspected from Help > Keyboard shortcuts or with question mark. The direct keys below are published for Jira Cloud and do not assume a platform-specific modifier.", sourceUrl: "https://support.atlassian.com/jira-software-cloud/docs/use-keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/joplin.ts b/lib/shortcuts/apps/joplin.ts index ad36bd54..76c9556c 100644 --- a/lib/shortcuts/apps/joplin.ts +++ b/lib/shortcuts/apps/joplin.ts @@ -8,8 +8,6 @@ export const joplin: AppShortcuts = { name: "Joplin", category: "Notes and writing", platforms: [...platforms], - intro: - "Joplin's terminal client uses short commands, navigation keys, and typed key sequences to work with notes, todos, notebooks, and the built-in console.", versionContext: "Default Joplin Terminal keymap from the current official terminal-app guide, checked September 1, 2026. The terminal client is available on macOS, Linux, and Windows through WSL; its keymap uses sequential keys rather than simultaneous modifier chords.", sourceUrl: "https://joplinapp.org/help/apps/terminal/", diff --git a/lib/shortcuts/apps/jupyter-notebook.ts b/lib/shortcuts/apps/jupyter-notebook.ts index dbf9636e..d43993f4 100644 --- a/lib/shortcuts/apps/jupyter-notebook.ts +++ b/lib/shortcuts/apps/jupyter-notebook.ts @@ -8,8 +8,6 @@ export const jupyterNotebook: AppShortcuts = { name: "Jupyter Notebook", category: "Developer tools", platforms: [...platforms], - intro: - "Jupyter Notebook keeps the notebook itself in the browser, so its most useful keys switch between editing and command mode, run cells, search, and control the kernel.", versionContext: "Essential shortcuts from the Jupyter Notebook 7.6.0 documentation, checked September 1, 2026. The full context-sensitive map is available from Help > Keyboard Shortcuts inside the running notebook; this page keeps the defaults explicitly documented in the public guide.", sourceUrl: "https://jupyter-notebook.readthedocs.io/en/v7.6.0/notebook.html", diff --git a/lib/shortcuts/apps/keynote.ts b/lib/shortcuts/apps/keynote.ts index bcef8004..3c5f92af 100644 --- a/lib/shortcuts/apps/keynote.ts +++ b/lib/shortcuts/apps/keynote.ts @@ -8,8 +8,6 @@ export const keynote: AppShortcuts = { name: "Keynote", category: "Presentation software", platforms: [...platforms], - intro: - "Keynote's Mac shortcuts cover presentation files, slide navigation, text and object editing, tables, comments, and the live presentation controls.", versionContext: "Keyboard shortcuts from Apple's current Keynote for Mac User Guide, checked September 1, 2026. Some commands are context-sensitive, and presentation-mode keys apply only while a slideshow is running.", sourceUrl: "https://support.apple.com/guide/keynote/keyboard-shortcuts-tanfde4a3e6d/mac", diff --git a/lib/shortcuts/apps/krita.ts b/lib/shortcuts/apps/krita.ts index 28b2605f..9762fd5b 100644 --- a/lib/shortcuts/apps/krita.ts +++ b/lib/shortcuts/apps/krita.ts @@ -8,8 +8,6 @@ export const krita: AppShortcuts = { name: "Krita", category: "Digital painting", platforms: [...platforms], - intro: - "Krita's default menu, selection, layer, canvas, brush, and text-editor shortcuts keep drawing work close to the keyboard.", versionContext: "Defaults from the Krita Manual 5.3.0, checked September 1, 2026. Krita lets users replace the default scheme, export custom profiles, and assign alternate shortcuts; this page records the documented defaults. The manual publishes the same Ctrl-based command notation for the cross-platform commands below.", sourceUrl: "https://docs.krita.org/en/reference_manual/preferences/shortcut_settings.html", diff --git a/lib/shortcuts/apps/libreoffice-writer.ts b/lib/shortcuts/apps/libreoffice-writer.ts index d338397e..dfabd1bc 100644 --- a/lib/shortcuts/apps/libreoffice-writer.ts +++ b/lib/shortcuts/apps/libreoffice-writer.ts @@ -26,8 +26,6 @@ export const libreOfficeWriter: AppShortcuts = { name: "LibreOffice Writer", category: "Word processing", platforms: [...platforms], - intro: - "Writer's default shortcuts cover document navigation, styles, tables, text selection, and the keyboard-first editing commands used across LibreOffice.", versionContext: "Default shortcuts from LibreOffice 26.8 Help, checked September 1, 2026. The source notes that desktop environments can claim a key and that users can change assignments in Tools > Customize > Keyboard. Windows and Linux use Ctrl or Alt; the documented Command and Option forms are preserved for macOS.", sourceUrl: "https://help.libreoffice.org/latest/en-US/text/swriter/04/01020000.html?DbPAR=SHARED", diff --git a/lib/shortcuts/apps/linear.ts b/lib/shortcuts/apps/linear.ts index 524ea62c..0adfa863 100644 --- a/lib/shortcuts/apps/linear.ts +++ b/lib/shortcuts/apps/linear.ts @@ -22,13 +22,11 @@ export const linear: AppShortcuts = { name: "Linear", category: "Project management", platforms: [...platforms], - intro: - "Linear's keyboard map links issue triage, search, navigation, views, and the rich-text editor. Chords use the same letter-first pattern as Linear's own documentation.", versionContext: - "Current public Linear shortcut documentation checked September 1, 2026. Linear also exposes a searchable in-app shortcut help screen with `?`; public docs cover the commonly used defaults and may not include every workspace or permission-dependent action.", - sourceUrl: "https://linear.app/changelog/2021-03-25-keyboard-shortcuts-help", - sourceLabel: "Linear keyboard shortcuts help", - lastVerified: "2026-09-01", + "Current Linear issue, search, favorites, layout, and editor documentation checked October 10, 2026. Public docs cover common defaults and may not include every workspace- or permission-dependent action.", + sourceUrl: "https://linear.app/docs/select-issues", + sourceLabel: "official Linear issue-selection and keyboard documentation", + lastVerified: "2026-10-10", groups: [ { id: "navigation-and-search", diff --git a/lib/shortcuts/apps/linkedin.ts b/lib/shortcuts/apps/linkedin.ts index 981bf8c3..96ffa966 100644 --- a/lib/shortcuts/apps/linkedin.ts +++ b/lib/shortcuts/apps/linkedin.ts @@ -8,8 +8,6 @@ export const linkedin: AppShortcuts = { name: "LinkedIn", category: "Social networking", platforms: [...platforms], - intro: - "LinkedIn's desktop feed shortcuts move between posts and notifications, open the main destinations, and expose a quick reference modal.", versionContext: "Desktop-only shortcuts from LinkedIn's current Keyboard Shortcuts FAQ, checked September 1, 2026. LinkedIn says the shortcuts can be enabled or disabled from the keyboard menu and are not available in its mobile apps.", sourceUrl: "https://www.linkedin.com/help/linkedin/answer/a6246187?lang=en-US", diff --git a/lib/shortcuts/apps/linux-kde-plasma.ts b/lib/shortcuts/apps/linux-kde-plasma.ts index 78242947..ffdce500 100644 --- a/lib/shortcuts/apps/linux-kde-plasma.ts +++ b/lib/shortcuts/apps/linux-kde-plasma.ts @@ -5,11 +5,9 @@ const platforms = ["linux"] as const; export const linuxKdePlasma: AppShortcuts = { slug: "linux-kde-plasma", - name: "Linux (KDE Plasma)", + name: "KDE Plasma", category: "Desktop environment", platforms: [...platforms], - intro: - "KDE Plasma's documented defaults cover window switching, workspaces, activities, the desktop, and the global actions that stay available above individual apps.", versionContext: "Defaults from the current KDE Plasma 6 Fundamentals and Plasma Desktop handbooks, checked September 1, 2026. Global shortcuts are configurable in System Settings, and distributions or user profiles can change them. The handbooks disagree on the direction of one Meta-plus zoom binding, so that conflicting zoom pair is omitted.", sourceUrl: "https://docs.kde.org/stable_kf6/en/khelpcenter/fundamentals/fundamentals.pdf", diff --git a/lib/shortcuts/apps/logic-pro.ts b/lib/shortcuts/apps/logic-pro.ts index c50095f6..ea1dceed 100644 --- a/lib/shortcuts/apps/logic-pro.ts +++ b/lib/shortcuts/apps/logic-pro.ts @@ -12,8 +12,6 @@ export const logicPro: AppShortcuts = { name: "Logic Pro", category: "Music production", platforms: ["macos"], - intro: - "Logic Pro's key commands cover transport, editing, track and region work, window focus, and the main production views. The most useful commands are grouped by the job they perform.", versionContext: "Default Logic Pro key commands for the U.S. preset, checked September 1, 2026. Logic Pro is macOS-only and key commands can be reassigned in the Key Commands window.", sourceUrl: "https://support.apple.com/en-ca/guide/logicpro/lgcp02bf31b6/mac", diff --git a/lib/shortcuts/apps/logseq.ts b/lib/shortcuts/apps/logseq.ts index 0043be84..addca605 100644 --- a/lib/shortcuts/apps/logseq.ts +++ b/lib/shortcuts/apps/logseq.ts @@ -34,8 +34,6 @@ export const logseq: AppShortcuts = { name: "Logseq", category: "Knowledge management", platforms: [...platforms], - intro: - "Logseq's default keymap covers block editing, navigation, search, page movement, and the left and right sidebars. Sequences are shown in the order they are typed.", versionContext: "Current default Logseq keymap source checked September 1, 2026. The project defines a platform-neutral `mod` modifier, which maps to Ctrl on Windows and Linux and Command on macOS. Users can change the keymap in Logseq settings or the source configuration.", sourceUrl: "https://github.com/logseq/logseq/blob/master/src/main/frontend/modules/shortcut/config.cljs", diff --git a/lib/shortcuts/apps/looker.ts b/lib/shortcuts/apps/looker.ts index 5c186596..447383b3 100644 --- a/lib/shortcuts/apps/looker.ts +++ b/lib/shortcuts/apps/looker.ts @@ -17,8 +17,6 @@ export const looker: AppShortcuts = { name: "Looker", category: "Analytics", platforms: [...platforms], - intro: - "Looker's official shortcut map changes with the current location: dashboards, Looks, Explores, and the LookML IDE each have their own commands.", versionContext: "Shortcuts from the current Google Cloud Looker keyboard-shortcuts page, last updated July 22, 2025 and checked September 1, 2026. Availability depends on the current Looker location, permissions, and browser; the published table covers Windows and macOS.", sourceUrl: "https://docs.cloud.google.com/looker/docs/keyboard-shortcuts?hl=en", diff --git a/lib/shortcuts/apps/loom.ts b/lib/shortcuts/apps/loom.ts index 0e3f82db..41485428 100644 --- a/lib/shortcuts/apps/loom.ts +++ b/lib/shortcuts/apps/loom.ts @@ -21,8 +21,6 @@ export const loom: AppShortcuts = { name: "Loom", category: "Screen recording", platforms: [...platforms], - intro: - "Loom's desktop recorder, Chrome extension, and video player each have a small set of documented controls. This reference keeps those contexts separate.", versionContext: "Current Loom help shortcuts checked September 1, 2026. Desktop bindings can be changed in Preferences, Chrome extension bindings can be changed at chrome://extensions/shortcuts, and Loom documents QWERTY support for the desktop set.", sourceUrl: "https://support.atlassian.com/loom/docs/use-looms-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/macos-finder.ts b/lib/shortcuts/apps/macos-finder.ts index 90f7639a..acfe7587 100644 --- a/lib/shortcuts/apps/macos-finder.ts +++ b/lib/shortcuts/apps/macos-finder.ts @@ -8,8 +8,6 @@ export const macosFinder: AppShortcuts = { name: "macOS Finder", category: "File management", platforms: [...platforms], - intro: - "Finder's Mac shortcuts cover file actions, common folders, tabs, search, and the bars that shape a Finder window. Context changes with the selected item and the front Finder view.", versionContext: "Finder and system shortcuts from Apple's current Mac keyboard-shortcuts reference, checked September 1, 2026. A command can change with the current Finder selection or window state.", sourceUrl: "https://support.apple.com/102650", diff --git a/lib/shortcuts/apps/macos-spotlight.ts b/lib/shortcuts/apps/macos-spotlight.ts index f97b95c2..306168aa 100644 --- a/lib/shortcuts/apps/macos-spotlight.ts +++ b/lib/shortcuts/apps/macos-spotlight.ts @@ -8,8 +8,6 @@ export const macosSpotlight: AppShortcuts = { name: "macOS Spotlight", category: "Operating system", platforms: [...platforms], - intro: - "Spotlight shortcuts open the search panel, move through results, narrow the result type, and send a selected item to its owning app or Finder.", versionContext: "Spotlight keyboard shortcuts from Apple's current Mac User Guide, checked September 1, 2026. Result categories and filters can vary with the macOS version and enabled Spotlight sources.", sourceUrl: "https://support.apple.com/guide/mac-help/mh26783/mac", diff --git a/lib/shortcuts/apps/macos.ts b/lib/shortcuts/apps/macos.ts index a8b92e66..e3e02710 100644 --- a/lib/shortcuts/apps/macos.ts +++ b/lib/shortcuts/apps/macos.ts @@ -6,8 +6,6 @@ export const macos: AppShortcuts = { name: "macOS", category: "Operating system", platforms: ["macos"], - intro: - "macOS shortcuts are the layer underneath almost every app. Start with clipboard and window control, then use Mission Control, screenshots, Finder, text movement, and system actions when the desktop gets busy.", versionContext: "From Apple's Mac keyboard shortcuts article published March 10, 2026, checked again in August 2026. Shortcuts apply to current macOS releases, though individual apps can override common bindings and some keys depend on the keyboard hardware.", sourceUrl: "https://support.apple.com/en-us/102650", diff --git a/lib/shortcuts/apps/mastodon.ts b/lib/shortcuts/apps/mastodon.ts index 938cda6f..c99f35d6 100644 --- a/lib/shortcuts/apps/mastodon.ts +++ b/lib/shortcuts/apps/mastodon.ts @@ -22,8 +22,6 @@ export const mastodon: AppShortcuts = { name: "Mastodon", category: "Social networking", platforms: [...platforms], - intro: - "Mastodon's web shortcuts search, open, and act on posts, move through columns, and use G-prefixed sequences to reach common views.", versionContext: "Web hotkeys from Mastodon's current main source, checked September 1, 2026. The source ignores shortcuts while focus is in an input, textarea, or select, and user instances can run different releases or customizations. Alt is shown as Option on macOS.", sourceUrl: "https://github.com/mastodon/mastodon/blob/main/app/javascript/mastodon/components/hotkeys/index.tsx", diff --git a/lib/shortcuts/apps/matlab.ts b/lib/shortcuts/apps/matlab.ts index 2e4fc62c..f2ce245d 100644 --- a/lib/shortcuts/apps/matlab.ts +++ b/lib/shortcuts/apps/matlab.ts @@ -29,8 +29,6 @@ export const matlab: AppShortcuts = { name: "MATLAB", category: "Developer tools", platforms: [...platforms], - intro: - "MATLAB's Editor shortcuts cover files, navigation, search, code editing, sections, running, folding, and desktop focus. Platform-specific columns are kept separate where MathWorks changes the modifier.", versionContext: "Current MATLAB Editor and desktop keyboard-shortcut tables checked September 1, 2026. The exact set depends on MATLAB release and operating-system keyboard settings; users can inspect or change bindings in Preferences.", sourceUrl: "https://www.mathworks.com/help/matlab/matlab_prog/editor-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/mattermost.ts b/lib/shortcuts/apps/mattermost.ts index 78e3709d..d81b9355 100644 --- a/lib/shortcuts/apps/mattermost.ts +++ b/lib/shortcuts/apps/mattermost.ts @@ -22,8 +22,6 @@ export const mattermost: AppShortcuts = { name: "Mattermost", category: "Team chat", platforms: [...platforms], - intro: - "Mattermost shortcuts cover channel navigation, search, message editing, formatting, file uploads, calls, and desktop tab management.", versionContext: "Current Mattermost keyboard shortcuts checked September 1, 2026. The official table covers Windows, Linux, and macOS. Some call controls depend on Mattermost Calls being enabled, and desktop tab commands apply to the Mattermost desktop app.", sourceUrl: "https://docs.mattermost.com/end-user-guide/collaborate/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/microsoft-edge.ts b/lib/shortcuts/apps/microsoft-edge.ts index 19113629..9505c41b 100644 --- a/lib/shortcuts/apps/microsoft-edge.ts +++ b/lib/shortcuts/apps/microsoft-edge.ts @@ -20,10 +20,8 @@ const windowsOnly = (id: string, action: string, keys: string[], note?: string): export const microsoftEdge: AppShortcuts = { slug: "microsoft-edge", name: "Microsoft Edge", - category: "Web browsers", + category: "Web browser", platforms: [...platforms], - intro: - "Microsoft Edge shortcuts cover tabs, windows, navigation, search, downloads, developer tools, and page display on Windows and macOS.", versionContext: "Current Microsoft Edge desktop shortcuts checked September 1, 2026. The official table has separate Windows and Mac columns; some commands depend on the page type, such as PDF viewing, and extensions can add conflicts.", sourceUrl: "https://support.microsoft.com/en-US/edge/keyboard-shortcuts-in-microsoft-edge", diff --git a/lib/shortcuts/apps/microsoft-onedrive.ts b/lib/shortcuts/apps/microsoft-onedrive.ts index 64c91171..00d6056b 100644 --- a/lib/shortcuts/apps/microsoft-onedrive.ts +++ b/lib/shortcuts/apps/microsoft-onedrive.ts @@ -12,8 +12,6 @@ export const microsoftOneDrive: AppShortcuts = { name: "Microsoft OneDrive", category: "Cloud storage", platforms: ["windows"], - intro: - "OneDrive's Windows and web shortcuts cover file selection, navigation, sharing, details, list refreshes, and keyboard access to common file actions.", versionContext: "Official OneDrive for work or school shortcuts checked September 1, 2026. The source uses Windows keyboard names and documents several commands specifically for the OneDrive web interface.", sourceUrl: "https://support.microsoft.com/en-US/accessibility/onedrive/keyboard-shortcuts-for-onedrive-for-work-or-school", diff --git a/lib/shortcuts/apps/microsoft-onenote.ts b/lib/shortcuts/apps/microsoft-onenote.ts index 1626844a..2caa71ba 100644 --- a/lib/shortcuts/apps/microsoft-onenote.ts +++ b/lib/shortcuts/apps/microsoft-onenote.ts @@ -29,8 +29,6 @@ export const microsoftOneNote: AppShortcuts = { name: "Microsoft OneNote", category: "Notes and writing", platforms: [...platforms], - intro: - "OneNote's Windows and Mac desktop shortcuts cover notes, notebooks, search, synchronization, page movement, and the common editing commands.", versionContext: "Current Microsoft OneNote desktop shortcut tables checked September 1, 2026. Windows, macOS, and web versions have different maps, so this record separates the Windows and Mac desktop commands and leaves web-only access keys out.", sourceUrl: "https://support.microsoft.com/en-us/accessibility/onenote/keyboard-shortcuts-in-onenote", diff --git a/lib/shortcuts/apps/microsoft-outlook.ts b/lib/shortcuts/apps/microsoft-outlook.ts index e88d1786..25b59157 100644 --- a/lib/shortcuts/apps/microsoft-outlook.ts +++ b/lib/shortcuts/apps/microsoft-outlook.ts @@ -12,8 +12,6 @@ export const microsoftOutlook: AppShortcuts = { name: "Microsoft Outlook", category: "Email", platforms: ["windows"], - intro: - "Outlook's Windows shortcuts differ between the new Outlook app and classic Outlook. The groups below keep their mail, calendar, and message commands distinct.", versionContext: "Current Microsoft Outlook shortcut documentation checked September 1, 2026. This record covers Windows desktop and web-oriented Windows commands from Microsoft's New Outlook and classic Outlook tables. Outlook for Mac has a separate official table and is not mixed into this Windows record.", sourceUrl: "https://support.microsoft.com/en-us/office/keyboard-shortcuts-for-outlook-3cdeb221-7ae5-4c1d-8c1d-9e63216c1efd", diff --git a/lib/shortcuts/apps/microsoft-powerpoint.ts b/lib/shortcuts/apps/microsoft-powerpoint.ts index 62027c0a..c1c2b005 100644 --- a/lib/shortcuts/apps/microsoft-powerpoint.ts +++ b/lib/shortcuts/apps/microsoft-powerpoint.ts @@ -36,8 +36,6 @@ export const microsoftPowerPoint: AppShortcuts = { name: "Microsoft PowerPoint", category: "Presentation software", platforms: [...platforms], - intro: - "PowerPoint's keyboard map separates Windows authoring commands from the presentation controls shared by Windows and Mac. Use the ribbon key tips for commands that do not have a dedicated chord.", versionContext: "Current Microsoft PowerPoint creation and presentation shortcuts checked September 1, 2026. The official creation table is Windows-focused, while the delivery table documents Windows and Mac separately. Ribbon access keys and presentation commands can vary with the PowerPoint version and keyboard layout.", sourceUrl: "https://support.microsoft.com/en-us/office/use-keyboard-shortcuts-to-deliver-powerpoint-presentations-1524ffce-bd2a-45f4-9a7f-f18b992b93a0", diff --git a/lib/shortcuts/apps/microsoft-powertoys.ts b/lib/shortcuts/apps/microsoft-powertoys.ts index f1eeedf5..cc01ee4c 100644 --- a/lib/shortcuts/apps/microsoft-powertoys.ts +++ b/lib/shortcuts/apps/microsoft-powertoys.ts @@ -12,8 +12,6 @@ export const microsoftPowerToys: AppShortcuts = { name: "Microsoft PowerToys", category: "Windows utilities", platforms: ["windows"], - intro: - "PowerToys shortcuts start with the Shortcut Guide, PowerToys Run, Always On Top, Color Picker, FancyZones, and Workspaces. The utility bindings are global while PowerToys is running.", versionContext: "Current Microsoft PowerToys documentation checked September 1, 2026. These are the documented defaults, but every utility can be disabled or remapped in PowerToys settings and the set may change as utilities evolve.", sourceUrl: "https://learn.microsoft.com/en-us/windows/powertoys/shortcut-guide", diff --git a/lib/shortcuts/apps/microsoft-teams.ts b/lib/shortcuts/apps/microsoft-teams.ts index f8fabe2f..7f757452 100644 --- a/lib/shortcuts/apps/microsoft-teams.ts +++ b/lib/shortcuts/apps/microsoft-teams.ts @@ -38,8 +38,6 @@ export const microsoftTeams: AppShortcuts = { name: "Microsoft Teams", category: "Team chat", platforms: [...platforms], - intro: - "Teams shortcuts cover search, chats, settings, pane focus, messaging, and meeting controls across the Windows and macOS desktop and web clients.", versionContext: "Current Microsoft Teams desktop and web shortcut tables checked September 1, 2026. Several commands have separate desktop and web forms, and Teams can reserve or customize shortcuts depending on the client and account.", sourceUrl: "https://support.microsoft.com/en-us/accessibility/teams/keyboard-shortcuts-for-microsoft-teams", diff --git a/lib/shortcuts/apps/microsoft-word.ts b/lib/shortcuts/apps/microsoft-word.ts index 0d7067ad..1ef894a7 100644 --- a/lib/shortcuts/apps/microsoft-word.ts +++ b/lib/shortcuts/apps/microsoft-word.ts @@ -29,8 +29,6 @@ export const microsoftWord: AppShortcuts = { name: "Microsoft Word", category: "Word processing", platforms: [...platforms], - intro: - "Word's desktop shortcut map covers editing, navigation, formatting, review, fields, and document views on Windows and macOS.", versionContext: "Current Microsoft Word shortcut tables checked September 1, 2026. The official article uses U.S. keyboard layouts and separate Windows and Mac sections. Web, mobile, add-in, and custom shortcut behavior is outside this desktop record.", sourceUrl: "https://support.microsoft.com/en-us/accessibility/word/keyboard-shortcuts-in-word", diff --git a/lib/shortcuts/apps/milanote.ts b/lib/shortcuts/apps/milanote.ts index 979c9f1c..16c24c66 100644 --- a/lib/shortcuts/apps/milanote.ts +++ b/lib/shortcuts/apps/milanote.ts @@ -15,8 +15,6 @@ export const milanote: AppShortcuts = { name: "Milanote", category: "Notes and docs", platforms: [...platforms], - intro: - "Milanote puts boards, notes, images, and tables on one canvas. This reference keeps board movement, text formatting, drawing, and desktop navigation separate so a shortcut is tied to the thing it changes.", versionContext: "Current Milanote desktop and browser shortcuts checked September 1, 2026. Milanote also supports an in-app shortcut menu, and several actions depend on whether a note, board, table, or drawing is selected.", sourceUrl: "https://help.milanote.com/en/articles/111393-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/miro.ts b/lib/shortcuts/apps/miro.ts index 80482d6d..57f752ec 100644 --- a/lib/shortcuts/apps/miro.ts +++ b/lib/shortcuts/apps/miro.ts @@ -36,8 +36,6 @@ export const miro: AppShortcuts = { name: "Miro", category: "Design tool", platforms: [...platforms], - intro: - "Miro's board shortcuts cover tools, object editing, canvas movement, and keyboard-only navigation. The reference separates single-key board tools from modifier shortcuts so accessibility settings and desktop-app commands stay visible.", versionContext: "Current Miro browser and desktop shortcuts checked September 1, 2026. Miro lets users turn single-character shortcuts off from Accessibility, and the desktop app adds reload, tab, exit, and board-link commands.", sourceUrl: "https://help.miro.com/hc/en-us/articles/360017731033-Shortcuts-and-hotkeys", diff --git a/lib/shortcuts/apps/monday-com.ts b/lib/shortcuts/apps/monday-com.ts index 60c00c2a..7e5ca45e 100644 --- a/lib/shortcuts/apps/monday-com.ts +++ b/lib/shortcuts/apps/monday-com.ts @@ -15,8 +15,6 @@ export const mondayCom: AppShortcuts = { name: "monday.com", category: "Project management", platforms: [...platforms], - intro: - "monday.com's shortcuts split between system navigation and board work. This page keeps cell editing, board movement, range selection, and account-level search in the same order as the current support reference.", versionContext: "Current monday.com web shortcuts checked September 1, 2026. The shortcut list is available from the account menu or Shift + ?. Labels differ slightly between Mac and PC, but the actions are shared.", sourceUrl: "https://support.monday.com/hc/en-us/articles/115005339905-monday-com-Shortcuts", diff --git a/lib/shortcuts/apps/mozilla-thunderbird.ts b/lib/shortcuts/apps/mozilla-thunderbird.ts index f14db399..47ea0b66 100644 --- a/lib/shortcuts/apps/mozilla-thunderbird.ts +++ b/lib/shortcuts/apps/mozilla-thunderbird.ts @@ -20,8 +20,6 @@ export const mozillaThunderbird: AppShortcuts = { name: "Mozilla Thunderbird", category: "Email", platforms: [...platforms], - intro: - "Thunderbird changes its shortcut set with the active pane, so a key can select text while composing and messages while browsing a folder. This reference groups the documented mail, search, navigation, composing, address book, and calendar defaults without hiding those context changes.", versionContext: "Current Thunderbird desktop shortcuts checked September 1, 2026. The official table was updated April 2, 2026. Add-ons can customize or disable some shortcuts, and macOS laptops may need Fn for function keys.", sourceUrl: "https://support.mozilla.org/en-US/kb/keyboard-shortcuts-thunderbird", diff --git a/lib/shortcuts/apps/neovim.ts b/lib/shortcuts/apps/neovim.ts index 32d89ee5..2b56e011 100644 --- a/lib/shortcuts/apps/neovim.ts +++ b/lib/shortcuts/apps/neovim.ts @@ -8,8 +8,6 @@ export const neovim: AppShortcuts = { name: "Neovim", category: "Text editor", platforms: [...platforms], - intro: - "Neovim keeps Vim's modal editing model and adds built-in behavior around it. This reference covers the core motions and operators plus the LSP, commenting, diagnostic, and terminal-mode defaults that distinguish a current Neovim session from a plugin-specific setup.", versionContext: "Core behavior and built-in mappings from the official Neovim quick reference and LSP documentation checked in August 2026. LSP mappings appear when a language server attaches; plugin and user keymaps can add or replace any of these commands. See https://neovim.io/doc/user/lsp/ for the LSP defaults.", sourceUrl: "https://neovim.io/doc/user/quickref/", diff --git a/lib/shortcuts/apps/netflix.ts b/lib/shortcuts/apps/netflix.ts index 6c9c70a2..2e43489c 100644 --- a/lib/shortcuts/apps/netflix.ts +++ b/lib/shortcuts/apps/netflix.ts @@ -15,8 +15,6 @@ export const netflix: AppShortcuts = { name: "Netflix", category: "Video streaming", platforms: [...platforms], - intro: - "Netflix's computer player uses a short set of playback controls for pausing, seeking, volume, fullscreen mode, mute, and intro skipping. This reference keeps the player actions together and calls out the Windows app exceptions published by Netflix.", versionContext: "Netflix Help Center keyboard shortcuts checked September 1, 2026. The shortcuts apply while watching on a computer; Space and Escape also work in the Windows 10 and Windows 11 app where Netflix says so.", sourceUrl: "https://help.netflix.com/en/node/24855", diff --git a/lib/shortcuts/apps/notability.ts b/lib/shortcuts/apps/notability.ts index 7f34e36c..6a7edcad 100644 --- a/lib/shortcuts/apps/notability.ts +++ b/lib/shortcuts/apps/notability.ts @@ -15,8 +15,6 @@ export const notability: AppShortcuts = { name: "Notability", category: "Notes and docs", platforms: [...platforms], - intro: - "Notability's Mac shortcuts cover note creation, page movement, audio playback, search, formatting, recording, and the library. Toolbox and color shortcuts use the current positions in Notability's configurable controls.", versionContext: "Notability keyboard shortcuts checked September 1, 2026. This record uses the official Mac table and the toolbox, color, size, and content manager rows. The separate iPad table is outside this catalog's Windows, macOS, and Linux platform model.", sourceUrl: "https://support.gingerlabs.com/hc/en-us/articles/360021489291-Keyboard-shortcuts", diff --git a/lib/shortcuts/apps/notepad-plus-plus.ts b/lib/shortcuts/apps/notepad-plus-plus.ts index ccc2ed5d..afeaa710 100644 --- a/lib/shortcuts/apps/notepad-plus-plus.ts +++ b/lib/shortcuts/apps/notepad-plus-plus.ts @@ -12,8 +12,6 @@ export const notepadPlusPlus: AppShortcuts = { name: "Notepad++", category: "Text editor", platforms: ["windows"], - intro: - "Notepad++ keeps file, search, view, and editor commands in its Shortcut Mapper. This reference lists the stable default bindings documented in the official manual and calls out that users can remap the command or Scintilla layers.", versionContext: "Notepad++ current user manual shortcuts checked September 1, 2026. Defaults can differ after editing Settings > Shortcut Mapper, and the manual notes that keyboard layout behavior changed in version 8.7.6.", sourceUrl: "https://npp-user-manual.org/docs/user-interface/", diff --git a/lib/shortcuts/apps/notion.ts b/lib/shortcuts/apps/notion.ts index 5ec28624..d9a2e260 100644 --- a/lib/shortcuts/apps/notion.ts +++ b/lib/shortcuts/apps/notion.ts @@ -8,8 +8,6 @@ export const notion: AppShortcuts = { name: "Notion", category: "Notes and docs", platforms: [...platforms], - intro: - "Notion combines app shortcuts, block editing, Markdown-style input, slash commands, and database actions. This reference keeps those layers together so a long page stays quick to build and navigate.", versionContext: "Current shortcuts from the Notion Help Center in August 2026. The source uses cmd on Mac and ctrl on Windows and Linux and assumes an English QWERTY keyboard.", sourceUrl: "https://www.notion.com/help/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/numbers.ts b/lib/shortcuts/apps/numbers.ts index 22573b2a..edde6ae2 100644 --- a/lib/shortcuts/apps/numbers.ts +++ b/lib/shortcuts/apps/numbers.ts @@ -12,8 +12,6 @@ export const numbers: AppShortcuts = { name: "Numbers", category: "Spreadsheet", platforms: ["macos"], - intro: - "Numbers on Mac uses familiar editing keys alongside spreadsheet-specific commands for sheets, tables, formulas, objects, and comments. This reference keeps the app-level commands separate from cell navigation and text formatting so the same key is easier to locate.", versionContext: "Numbers for Mac shortcuts from Apple's current Numbers User Guide, checked September 1, 2026. Apple notes that System Settings can change some shortcuts, and portable Macs may require Fn for function keys.", sourceUrl: "https://support.apple.com/guide/numbers/keyboard-shortcuts-tana45192591/mac", diff --git a/lib/shortcuts/apps/obs-studio.ts b/lib/shortcuts/apps/obs-studio.ts index d80f58ce..d8276635 100644 --- a/lib/shortcuts/apps/obs-studio.ts +++ b/lib/shortcuts/apps/obs-studio.ts @@ -8,8 +8,6 @@ export const obsStudio: AppShortcuts = { name: "OBS Studio", category: "Streaming and recording", platforms: [...platforms], - intro: - "OBS Studio's documented defaults focus on editing sources and moving around the preview. This reference keeps the general commands, source-list actions, transforms, and preview controls separate so a key is read in the right OBS context.", versionContext: "The official OBS keyboard reference was last updated August 25, 2021 and was checked again September 1, 2026. OBS lets users assign or change hotkeys in Settings, so these entries describe the published defaults rather than a user's custom profile.", sourceUrl: "https://obsproject.com/kb/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/obsidian.ts b/lib/shortcuts/apps/obsidian.ts index 68ff3f79..8526012c 100644 --- a/lib/shortcuts/apps/obsidian.ts +++ b/lib/shortcuts/apps/obsidian.ts @@ -20,8 +20,6 @@ export const obsidian: AppShortcuts = { name: "Obsidian", category: "Notes and docs", platforms: [...platforms], - intro: - "Obsidian separates system editing shortcuts from customizable command hotkeys. This reference covers the documented editing and navigation defaults across Windows, Linux, and macOS, while leaving plugin and user-assigned commands to Obsidian's Hotkeys settings.", versionContext: "Obsidian editing and navigation shortcuts from the current official help, checked September 1, 2026. Command hotkeys can be changed or assigned multiple times in Settings > Hotkeys, and displayed keys follow a US layout.", sourceUrl: "https://obsidian.md/help/editing-shortcuts", diff --git a/lib/shortcuts/apps/omnifocus.ts b/lib/shortcuts/apps/omnifocus.ts index 6d623724..132a053d 100644 --- a/lib/shortcuts/apps/omnifocus.ts +++ b/lib/shortcuts/apps/omnifocus.ts @@ -12,8 +12,6 @@ export const omnifocus: AppShortcuts = { name: "OmniFocus", category: "Task management", platforms: ["macos"], - intro: - "OmniFocus on Mac provides shortcuts for quick entry, perspectives, item editing, review, notes, and window management. This reference uses the official OmniFocus 4 command list and leaves iPad, iPhone, and web-only bindings out of the macOS page.", versionContext: "OmniFocus 4.8.11 Mac shortcuts from the official reference manual, checked September 1, 2026. Some quick-entry and perspective shortcuts can be customized, and the manual includes separate bindings for iPad and the web app.", sourceUrl: "https://support.omnigroup.com/documentation/omnifocus/universal/4.8.11/en/commands/", diff --git a/lib/shortcuts/apps/opencode.ts b/lib/shortcuts/apps/opencode.ts index b1ab1f0c..99d2f5bb 100644 --- a/lib/shortcuts/apps/opencode.ts +++ b/lib/shortcuts/apps/opencode.ts @@ -16,8 +16,6 @@ export const opencode: AppShortcuts = { name: "OpenCode", category: "AI coding agent", platforms: [...platforms], - intro: - "OpenCode exposes a large, remappable TUI keymap. This page covers the current default leader chords, session and model controls, message navigation, prompt editing, dialogs, and the desktop prompt layer.", versionContext: "Current default keybinds from opencode.ai, last updated August 25, 2026. The leader is Ctrl+X, leader chords are sequential, and every TUI binding can be remapped in tui.json.", sourceUrl: "https://opencode.ai/docs/keybinds", diff --git a/lib/shortcuts/apps/opera.ts b/lib/shortcuts/apps/opera.ts index 054a7ee9..62fb1c0e 100644 --- a/lib/shortcuts/apps/opera.ts +++ b/lib/shortcuts/apps/opera.ts @@ -14,8 +14,6 @@ export const opera: AppShortcuts = { name: "Opera", category: "Web browser", platforms: [...platforms], - intro: - "Opera's documented browser shortcuts cover commands, page search, tabs, navigation, and display controls. Opera also lets users customize most browser shortcuts in Settings, so this page keeps the published defaults and calls out the configurable layer.", versionContext: "Current Opera desktop shortcuts checked September 1, 2026. The official page covers macOS and Windows/Linux defaults and notes that shortcuts can be customized under Settings > Browser > Shortcuts.", sourceUrl: "https://help.opera.com/en/latest/shortcuts/", diff --git a/lib/shortcuts/apps/oracle-virtualbox.ts b/lib/shortcuts/apps/oracle-virtualbox.ts index cb199dd0..125e5d4b 100644 --- a/lib/shortcuts/apps/oracle-virtualbox.ts +++ b/lib/shortcuts/apps/oracle-virtualbox.ts @@ -14,31 +14,12 @@ export const oracleVirtualBox: AppShortcuts = { name: "Oracle VirtualBox", category: "Developer tools", platforms: [...platforms], - intro: - "VirtualBox reserves a host key to release keyboard and mouse ownership from a virtual machine and to send special combinations to the guest. This reference keeps host-key actions separate from guest shortcuts, because the guest operating system still owns its own normal keymap.", versionContext: "Oracle VirtualBox 7.2 User Guide keyboard and host-key behavior checked September 1, 2026. The default host key is Right Ctrl on Windows and Linux hosts and Left Command on a Mac host; users can change it in Preferences.", sourceUrl: "https://docs.oracle.com/en/virtualization/virtualbox/7.2/user/working-with-vms.html", sourceLabel: "Oracle VirtualBox User Guide host-key shortcuts", lastVerified: "2026-09-01", groups: [ - { - id: "host-key", - title: "Host key and ownership", - intro: "Use the host key to return keyboard or mouse ownership to the host operating system while a virtual machine is focused.", - shortcuts: [ - { - id: "release-input", - action: "Release keyboard and mouse from the guest", - keys: [ - { platform: "windows", keys: ["Right Ctrl"] }, - { platform: "linux", keys: ["Right Ctrl"] }, - { platform: "macos", keys: ["Left Cmd"] }, - ], - note: "The host key can be changed in VirtualBox Preferences, so treat these as the documented defaults.", - }, - ], - }, { id: "special-combinations", title: "Send special combinations to the guest", @@ -52,9 +33,19 @@ export const oracleVirtualBox: AppShortcuts = { }, { id: "input-routing", - title: "Input routing", - intro: "VirtualBox can route common combinations such as Alt+Tab to the host or guest, and the choice depends on input settings and focus.", + title: "Input routing and host-key ownership", + intro: "Release input from the guest or route common combinations such as Alt+Tab to the host or guest. Routing depends on input settings and focus.", shortcuts: [ + { + id: "release-input", + action: "Release keyboard and mouse from the guest", + keys: [ + { platform: "windows", keys: ["Right Ctrl"] }, + { platform: "linux", keys: ["Right Ctrl"] }, + { platform: "macos", keys: ["Left Cmd"] }, + ], + note: "The host key can be changed in VirtualBox Preferences, so treat these as the documented defaults.", + }, { id: "alt-tab-routing", action: "Route Alt+Tab to the host or guest", diff --git a/lib/shortcuts/apps/otter-ai.ts b/lib/shortcuts/apps/otter-ai.ts index 0759d9ba..a1953bd7 100644 --- a/lib/shortcuts/apps/otter-ai.ts +++ b/lib/shortcuts/apps/otter-ai.ts @@ -22,20 +22,12 @@ export const otterAi: AppShortcuts = { name: "Otter.ai", category: "Transcription", platforms: [...platforms], - intro: - "Otter's published shortcuts cover search, audio playback, and transcript editing. The key map stays focused on the commands Otter documents for its web workspace and leaves account or browser shortcuts out.", versionContext: "Otter Help Center keyboard shortcuts checked September 1, 2026. The source article was updated February 4, 2025 and labels the modifier differences for Mac and Windows.", sourceUrl: "https://help.otter.ai/hc/en-us/articles/29431724341399-Keyboard-Shortcuts", sourceLabel: "official Otter.ai keyboard shortcuts", lastVerified: "2026-09-01", groups: [ - { - id: "search", - title: "Search", - intro: "Open Otter's search view from the workspace with the platform's documented modifier and letter combination.", - shortcuts: [dual("open-search", "Open search", ["Ctrl", "K"], ["Cmd", "K"])], - }, { id: "audio-playback", title: "Audio playback", @@ -60,10 +52,13 @@ export const otterAi: AppShortcuts = { ], }, { - id: "shortcut-help", - title: "Shortcut help", - intro: "Show or hide Otter's shortcut panel with the platform modifier and slash command from the help article.", - shortcuts: [dual("toggle-shortcut-panel", "Toggle the keyboard shortcuts panel", ["Ctrl", "/"], ["Cmd", "/"])], + id: "search-and-shortcut-help", + title: "Search and shortcut help", + intro: "Open search or show Otter's keyboard shortcut panel with the platform modifier shown in the help article.", + shortcuts: [ + dual("open-search", "Open search", ["Ctrl", "K"], ["Cmd", "K"]), + dual("toggle-shortcut-panel", "Toggle the keyboard shortcuts panel", ["Ctrl", "/"], ["Cmd", "/"]), + ], }, ], }; diff --git a/lib/shortcuts/apps/pages.ts b/lib/shortcuts/apps/pages.ts index 3e169d15..11df15b9 100644 --- a/lib/shortcuts/apps/pages.ts +++ b/lib/shortcuts/apps/pages.ts @@ -12,8 +12,6 @@ export const pages: AppShortcuts = { name: "Pages", category: "Notes and docs", platforms: ["macos"], - intro: - "Pages on Mac combines document editing with page-layout objects, tables, comments, and style controls. This reference groups the commands people use while writing, searching, formatting, and arranging a document, with Apple-specific object and table actions kept visible.", versionContext: "Pages for Mac shortcuts from Apple's current Pages User Guide, checked September 1, 2026. Apple notes that portable Macs may require Fn and that paragraph, character, or list styles can also receive user-assigned shortcuts.", sourceUrl: "https://support.apple.com/guide/pages/keyboard-shortcuts-tanc0ffef022/mac", diff --git a/lib/shortcuts/apps/paint-net.ts b/lib/shortcuts/apps/paint-net.ts index a9e9326e..87f131e2 100644 --- a/lib/shortcuts/apps/paint-net.ts +++ b/lib/shortcuts/apps/paint-net.ts @@ -12,8 +12,6 @@ export const paintNet: AppShortcuts = { name: "Paint.NET", category: "Design tool", platforms: ["windows"], - intro: - "Paint.NET combines canvas navigation with image zoom, selection controls, tool windows, and keyboard access to its drawing tools. Its official list also documents repeated key presses for tool groups, so those bindings stay explicit instead of being collapsed into one generic tool shortcut.", versionContext: "Paint.NET keyboard and mouse commands from the official documentation, checked September 1, 2026. This reference is for the Windows desktop application and keeps mouse gestures only where the official command is a keyboard-plus-mouse action.", sourceUrl: "https://www.getpaint.net/doc/latest/KeyboardMouseCommands.html", diff --git a/lib/shortcuts/apps/penpot.ts b/lib/shortcuts/apps/penpot.ts index 77bac89e..28922e58 100644 --- a/lib/shortcuts/apps/penpot.ts +++ b/lib/shortcuts/apps/penpot.ts @@ -14,8 +14,6 @@ export const penpot: AppShortcuts = { name: "Penpot", category: "Design tool", platforms: [...platforms], - intro: - "Penpot's workspace shortcuts cover alignment, object editing, zoom, layers, selection, and prototyping. This reference keeps Windows and Linux together where the official table does and shows macOS symbols as their equivalent key combinations.", versionContext: "Penpot workspace shortcuts from the official user guide, checked September 1, 2026. Penpot also publishes the current keymap in its source repository, and many bindings are available only when the workspace has focus.", sourceUrl: "https://help.penpot.dev/user-guide/first-steps/shortcuts/", diff --git a/lib/shortcuts/apps/pi-coding-agent.ts b/lib/shortcuts/apps/pi-coding-agent.ts index 31cce29c..f8ae2eb4 100644 --- a/lib/shortcuts/apps/pi-coding-agent.ts +++ b/lib/shortcuts/apps/pi-coding-agent.ts @@ -16,8 +16,6 @@ export const piCodingAgent: AppShortcuts = { name: "Pi coding agent", category: "AI coding agent", platforms: [...platforms], - intro: - "Pi's keyboard model separates the prompt you are writing from the agent work already running. This reference covers the current editor, queue, session, model, thinking, transcript, tree, and application defaults.", versionContext: "Current defaults from Pi's official coding-agent README and keybindings guide in August 2026. Bindings can be replaced in ~/.pi/agent/keybindings.json and reloaded with /reload. Native Windows and WSL have a few terminal-specific differences.", sourceUrl: "https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/keybindings.md", diff --git a/lib/shortcuts/apps/power-bi.ts b/lib/shortcuts/apps/power-bi.ts index 119665ff..a00f9d1e 100644 --- a/lib/shortcuts/apps/power-bi.ts +++ b/lib/shortcuts/apps/power-bi.ts @@ -12,8 +12,6 @@ export const powerBi: AppShortcuts = { name: "Power BI", category: "Data and analytics", platforms: ["windows"], - intro: - "Power BI Desktop documents shortcuts for report visuals, tables, matrices, panes, canvas zoom, slicers, selection, DAX, data entry, and model relationships. This page focuses on the Windows desktop report experience and keeps context-specific keys in the group where they apply.", versionContext: "Power BI Desktop keyboard shortcuts from Microsoft Learn, checked September 1, 2026. The shortcut overlay opens with Shift+? and several bindings work only when a visual, pane, formula bar, or model object has focus.", sourceUrl: "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-accessibility-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/powershell.ts b/lib/shortcuts/apps/powershell.ts index 60a043db..dbfec2f6 100644 --- a/lib/shortcuts/apps/powershell.ts +++ b/lib/shortcuts/apps/powershell.ts @@ -16,8 +16,6 @@ export const powershell: AppShortcuts = { name: "PowerShell", category: "Shell", platforms: [...platforms], - intro: - "PowerShell's interactive keyboard layer comes from PSReadLine. This reference covers its Windows, Emacs, and Vi modes across cursor movement, line editing, history, completion, selection, and multiline input.", versionContext: "Current PSReadLine functions and key handlers documented by Microsoft in August 2026. The active edit mode controls many defaults: Windows mode is common on Windows, while Emacs is the default on non-Windows. Check Get-PSReadLineKeyHandler for the exact local map.", sourceUrl: "https://learn.microsoft.com/en-us/powershell/module/psreadline/about/about_psreadline_functions?view=powershell-7.6", diff --git a/lib/shortcuts/apps/presonus-studio-one.ts b/lib/shortcuts/apps/presonus-studio-one.ts index ca30021a..1451763c 100644 --- a/lib/shortcuts/apps/presonus-studio-one.ts +++ b/lib/shortcuts/apps/presonus-studio-one.ts @@ -17,8 +17,6 @@ export const presonusStudioOne: AppShortcuts = { name: "PreSonus Studio One", category: "Music production", platforms: [...platforms], - intro: - "Studio One's official key command sheet covers transport, editing, events, tracks, the browser, console views, markers, zoom, and file commands. This reference keeps the PC commands and their documented Mac modifier substitutions together.", versionContext: "Studio One Pro 7 Key Command Sheet checked September 1, 2026. The sheet says its commands are for PC, with Ctrl becoming Cmd on Mac and Alt becoming Option or Alt on Mac. Studio One lets users change commands in Options or General or Keyboard Shortcuts.", sourceUrl: "https://pae-web.presonusmusic.com/downloads/products/pdf/Studio_One_Pro_7_Key_Command_Sheet.pdf", diff --git a/lib/shortcuts/apps/prezi.ts b/lib/shortcuts/apps/prezi.ts index 65431bc9..50a4ab2f 100644 --- a/lib/shortcuts/apps/prezi.ts +++ b/lib/shortcuts/apps/prezi.ts @@ -14,8 +14,6 @@ export const prezi: AppShortcuts = { name: "Prezi Present", category: "Presentation", platforms: [...platforms], - intro: - "Prezi Present uses familiar editing commands alongside canvas navigation and object transformation controls. This reference covers the first-party shortcuts for selecting, arranging, moving through a presentation, and changing the canvas view.", versionContext: "Prezi Present keyboard shortcuts from the official Support Center, checked September 1, 2026. The article describes Windows and macOS modifier equivalents; browser focus and presentation mode can change which command receives a key.", sourceUrl: "https://support.prezi.com/hc/en-us/articles/360003499013-How-to-use-keyboard-shortcuts-in-Prezi-Present", diff --git a/lib/shortcuts/apps/pro-tools.ts b/lib/shortcuts/apps/pro-tools.ts index 47ac2cc9..f1b5156e 100644 --- a/lib/shortcuts/apps/pro-tools.ts +++ b/lib/shortcuts/apps/pro-tools.ts @@ -17,8 +17,6 @@ export const proTools: AppShortcuts = { name: "Pro Tools", category: "Music production", platforms: [...platforms], - intro: - "Avid's Pro Tools Shortcuts Guide covers search, shortcut focus, playback, recording, edit tools, selection, nudging, clip gain, MIDI editing, and core menus. This reference keeps the Mac and Windows columns explicit and preserves feature-scope notes.", versionContext: "Avid Pro Tools Shortcuts Guide 2025.10, created September 22, 2025, checked September 1, 2026. Pro Tools lets users customize most commands, and some rows require Pro Tools Ultimate, Studio, a numeric keypad, or a particular transport mode.", sourceUrl: "https://resources.avid.com/SupportFiles/PT/Pro_Tools_Shortcuts_2025.10.pdf", diff --git a/lib/shortcuts/apps/protopie.ts b/lib/shortcuts/apps/protopie.ts index e3aa54ba..01b121d2 100644 --- a/lib/shortcuts/apps/protopie.ts +++ b/lib/shortcuts/apps/protopie.ts @@ -17,8 +17,6 @@ export const protopie: AppShortcuts = { name: "ProtoPie", category: "Prototyping", platforms: [...platforms], - intro: - "ProtoPie's official shortcut list covers Studio files, editing tools, objects, arrangement, interactions, canvas navigation, panels, and preview windows. The record keeps the Windows and macOS columns side by side and excludes pointer-only gestures.", versionContext: "ProtoPie Studio shortcuts checked September 1, 2026. The official list says the shortcut modal opens from Help or Control+Shift+Question mark on macOS and Ctrl+Shift+Question mark on Windows. Some actions use a key with a pointer gesture and are left out of this keyboard-only record.", sourceUrl: "https://www.protopie.io/learn/docs/basic-features-shortcuts", diff --git a/lib/shortcuts/apps/pycharm.ts b/lib/shortcuts/apps/pycharm.ts index c96cecd8..6a4a85c8 100644 --- a/lib/shortcuts/apps/pycharm.ts +++ b/lib/shortcuts/apps/pycharm.ts @@ -8,8 +8,6 @@ export const pycharm: AppShortcuts = { name: "PyCharm", category: "Code editor", platforms: [...platforms], - intro: - "PyCharm's keymap reference groups the actions developers reach for while searching, editing, navigating, building, and debugging Python projects. This page keeps those actions together and shows the Windows, Linux, and macOS modifier differences.", versionContext: "PyCharm 2026.2 keymap reference checked September 1, 2026. JetBrains lets users choose and customize a keymap, so these entries describe the published default reference actions and not every plugin shortcut.", sourceUrl: "https://www.jetbrains.com/help/pycharm/keymap-reference.html", diff --git a/lib/shortcuts/apps/quickbooks-online.ts b/lib/shortcuts/apps/quickbooks-online.ts index e0cf6636..adb72a24 100644 --- a/lib/shortcuts/apps/quickbooks-online.ts +++ b/lib/shortcuts/apps/quickbooks-online.ts @@ -17,8 +17,6 @@ export const quickbooksOnline: AppShortcuts = { name: "QuickBooks Online", category: "Accounting", platforms: [...platforms], - intro: - "QuickBooks Online documents shortcuts for date fields, forms, dropdowns, transactions, registers, payroll, and the browser window. This reference keeps browser-specific save variants as alternatives instead of treating them as universal commands.", versionContext: "Intuit's QuickBooks Help article was updated August 28, 2026 and checked September 1, 2026. The article covers Internet Explorer, Firefox, and Chrome, with Mac substitutions where Intuit documents them. The in-product reference opens with Control+Option+Question mark on Mac.", sourceUrl: "https://quickbooks.intuit.com/learn-support/en-us/help-article/product-setup/keyboard-shortcuts-quickbooks-online/L49aUqVh2_US_en_US", diff --git a/lib/shortcuts/apps/raycast.ts b/lib/shortcuts/apps/raycast.ts index 2cd88bbd..5b4acb6d 100644 --- a/lib/shortcuts/apps/raycast.ts +++ b/lib/shortcuts/apps/raycast.ts @@ -15,8 +15,6 @@ export const raycast: AppShortcuts = { name: "Raycast", category: "Launcher", platforms: [...platforms], - intro: - "Raycast is a keyboard-first launcher with search, action panels, forms, AI chat, and configurable hotkeys. This reference separates built-in commands from settings and text editing so configurable global shortcuts are not mistaken for fixed app bindings.", versionContext: "Current Raycast Manual keyboard shortcuts checked September 1, 2026. Raycast supports macOS and Windows, and users can change page navigation, Emacs, Vim, and global hotkeys in settings.", sourceUrl: "https://manual.raycast.com/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/reddit.ts b/lib/shortcuts/apps/reddit.ts index a74e7cc2..d9d02ffc 100644 --- a/lib/shortcuts/apps/reddit.ts +++ b/lib/shortcuts/apps/reddit.ts @@ -15,8 +15,6 @@ export const reddit: AppShortcuts = { name: "Reddit", category: "Social and community", platforms: [...platforms], - intro: - "Reddit's current desktop web hotkeys move through posts and comments, perform voting and saving actions, and control media playback. This page keeps navigation, actions, and media separate so the single-letter bindings are easy to scan.", versionContext: "Current Reddit desktop web hotkeys checked September 1, 2026. Reddit says the feature is available on the newest reddit.com interface, not old Reddit. On Windows, the help article maps its CMD references to Alt.", sourceUrl: "https://support.reddithelp.com/hc/en-us/articles/38744650091412-How-to-use-keyboard-shortcuts-hotkeys", diff --git a/lib/shortcuts/apps/riverside-fm.ts b/lib/shortcuts/apps/riverside-fm.ts index ac09abf3..ce35d389 100644 --- a/lib/shortcuts/apps/riverside-fm.ts +++ b/lib/shortcuts/apps/riverside-fm.ts @@ -22,8 +22,6 @@ export const riversideFm: AppShortcuts = { name: "Riverside.fm", category: "Video and audio", platforms: [...platforms], - intro: - "Riverside's editor shortcuts cover transcript selection, timeline playback, recording splits, comments, scenes, and clipboard actions. This reference keeps the editor scope clear because the separate Studio shortcut list is a different workflow.", versionContext: "Riverside Help Center editor hotkeys checked September 1, 2026. The source documents Windows and macOS modifier variants for editing commands, while arrow, letter, and timeline controls are published as shared editor keys.", sourceUrl: "https://support.riverside.com/hc/en-us/articles/6279202420253-Editor-hotkeys-and-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/rocket-chat.ts b/lib/shortcuts/apps/rocket-chat.ts index 1fa9a4eb..ec4da614 100644 --- a/lib/shortcuts/apps/rocket-chat.ts +++ b/lib/shortcuts/apps/rocket-chat.ts @@ -22,8 +22,6 @@ export const rocketChat: AppShortcuts = { name: "Rocket.Chat", category: "Team chat", platforms: [...platforms], - intro: - "Rocket.Chat's documented defaults cover global search, read-state management, and the message composer. This reference keeps the composer-specific keys separate because they only apply while the empty or active composer has focus.", versionContext: "Rocket.Chat account and release-note shortcut references checked September 1, 2026. Rocket.Chat says macOS uses Command and Option where Windows and Linux use Control and Alt; server settings, browser extensions, and custom keymaps can change the active bindings.", sourceUrl: "https://docs.rocket.chat/docs/your-rocketchat-account", @@ -36,8 +34,15 @@ export const rocketChat: AppShortcuts = { intro: "Open Rocket.Chat's shortcut help, search for a channel or user, and clear unread state from the main interface.", shortcuts: [ shared("shortcut-help", "Show keyboard shortcuts", ["Shift", "?"]), - desktop("search-channel-user", "Search for a channel or user", ["Ctrl", "P"], ["Cmd", "P"]), - desktop("search-channel-user-alternative", "Search for a channel or user", ["Ctrl", "K"], ["Cmd", "K"], "Rocket.Chat documents Ctrl/Cmd+K as an additional search binding."), + { + id: "search-channel-user", + action: "Search for a channel or user", + keys: [ + { platform: "windows", keys: ["Ctrl", "P"], alternatives: [["Ctrl", "K"]] }, + { platform: "linux", keys: ["Ctrl", "P"], alternatives: [["Ctrl", "K"]] }, + { platform: "macos", keys: ["Cmd", "P"], alternatives: [["Cmd", "K"]] }, + ], + }, desktop("mark-all-read", "Mark all messages as read", ["Ctrl", "Escape"], ["Cmd", "Escape"]), ], }, @@ -47,10 +52,24 @@ export const rocketChat: AppShortcuts = { intro: "Move through composer history, reach its boundaries, and insert a line break while writing a Rocket.Chat message.", shortcuts: [ shared("edit-previous-message", "Edit the previous message", ["Up Arrow"], "The composer must be empty; Up Arrow otherwise moves the cursor in the message."), - desktop("composer-start", "Move to the beginning of the composer", ["Alt", "Left Arrow"], ["Option", "Left Arrow"]), - desktop("composer-start-alt", "Move to the beginning of the composer", ["Alt", "Up Arrow"], ["Option", "Up Arrow"]), - desktop("composer-end", "Move to the end of the composer", ["Alt", "Right Arrow"], ["Option", "Right Arrow"]), - desktop("composer-end-alt", "Move to the end of the composer", ["Alt", "Down Arrow"], ["Option", "Down Arrow"]), + { + id: "composer-start", + action: "Move to the beginning of the composer", + keys: [ + { platform: "windows", keys: ["Alt", "Left Arrow"], alternatives: [["Alt", "Up Arrow"]] }, + { platform: "linux", keys: ["Alt", "Left Arrow"], alternatives: [["Alt", "Up Arrow"]] }, + { platform: "macos", keys: ["Option", "Left Arrow"], alternatives: [["Option", "Up Arrow"]] }, + ], + }, + { + id: "composer-end", + action: "Move to the end of the composer", + keys: [ + { platform: "windows", keys: ["Alt", "Right Arrow"], alternatives: [["Alt", "Down Arrow"]] }, + { platform: "linux", keys: ["Alt", "Right Arrow"], alternatives: [["Alt", "Down Arrow"]] }, + { platform: "macos", keys: ["Option", "Right Arrow"], alternatives: [["Option", "Down Arrow"]] }, + ], + }, shared("new-line", "Insert a new line without sending", ["Shift", "Enter"]), ], }, diff --git a/lib/shortcuts/apps/rstudio.ts b/lib/shortcuts/apps/rstudio.ts index 68be14e2..13fb900b 100644 --- a/lib/shortcuts/apps/rstudio.ts +++ b/lib/shortcuts/apps/rstudio.ts @@ -24,8 +24,6 @@ export const rstudio: AppShortcuts = { name: "RStudio", category: "Developer tool", platforms: [...desktopPlatforms], - intro: - "RStudio's current Posit guide publishes defaults for the command palette, console, source editor, completions, panes, help, builds, debugging, plots, version control, sessions, terminals, and menus. This reference keeps Windows, Linux, and macOS differences explicit.", versionContext: "RStudio User Guide version 2026.08.2 checked September 1, 2026. The guide warns that Emacs, Vim, and Sublime Text keybindings change the defaults. This record uses the standard keybinding set and omits rows where the guide says no shortcut.", sourceUrl: "https://docs.posit.co/ide/user/ide/reference/shortcuts.html", diff --git a/lib/shortcuts/apps/safari.ts b/lib/shortcuts/apps/safari.ts index 27c8c310..bc9a5774 100644 --- a/lib/shortcuts/apps/safari.ts +++ b/lib/shortcuts/apps/safari.ts @@ -21,8 +21,6 @@ export const safari: AppShortcuts = { name: "Safari", category: "Web browser", platforms: [...platforms], - intro: - "Safari's Mac User Guide lists keyboard commands for scrolling, webpage fields, tabs, history, downloads, reading lists, bookmarks, zoom, and windows. This reference keeps keyboard actions separate from the guide's pointer gestures.", versionContext: "Apple's Safari User Guide for Mac checked September 1, 2026. Apple notes that shortcuts can vary with language and keyboard layout, so the Safari menus remain the authority when a local layout changes a key.", sourceUrl: "https://support.apple.com/en-az/guide/safari/cpsh003/mac", diff --git a/lib/shortcuts/apps/salesforce.ts b/lib/shortcuts/apps/salesforce.ts index a6e6d8d6..a1dc7cb7 100644 --- a/lib/shortcuts/apps/salesforce.ts +++ b/lib/shortcuts/apps/salesforce.ts @@ -22,8 +22,6 @@ export const salesforce: AppShortcuts = { name: "Salesforce", category: "Customer relationship management", platforms: [...platforms], - intro: - "Salesforce Lightning Experience publishes global, navigation, composer, and console shortcuts. This reference keeps the standard Lightning actions separate from the extra workspace-tab controls available in Lightning console apps.", versionContext: "Salesforce Help keyboard shortcut references checked September 1, 2026. Lightning shortcuts are enabled by default, are not case-sensitive, and can be disabled from the Help menu. Console shortcuts apply to Lightning console apps and may not be available in standard navigation.", sourceUrl: "https://help.salesforce.com/s/articleView?id=sf.accessibility_keyboard_shortcuts_lex.htm&language=en_US&type=5", diff --git a/lib/shortcuts/apps/scrivener.ts b/lib/shortcuts/apps/scrivener.ts index ced3beed..8fc08e0c 100644 --- a/lib/shortcuts/apps/scrivener.ts +++ b/lib/shortcuts/apps/scrivener.ts @@ -15,8 +15,6 @@ export const scrivener: AppShortcuts = { name: "Scrivener", category: "Writing", platforms: [...platforms], - intro: - "Scrivener's current manuals include an exhaustive menu appendix with file, edit, document, format, navigate, project, and window commands. This reference records the stable desktop defaults that writers use for projects, documents, text editing, search, and compilation.", versionContext: "Scrivener 3 User Manual for Windows and macOS checked September 1, 2026. The manuals document default menu assignments and explain that users can change many commands in the Keyboard options. The two platform tables use different modifier conventions.", sourceUrl: "https://www.literatureandlatte.com/docs/Scrivener_Manual-Win.pdf", diff --git a/lib/shortcuts/apps/signal.ts b/lib/shortcuts/apps/signal.ts index 59d74b02..f8d672f8 100644 --- a/lib/shortcuts/apps/signal.ts +++ b/lib/shortcuts/apps/signal.ts @@ -8,8 +8,6 @@ export const signal: AppShortcuts = { name: "Signal", category: "Messaging", platforms: [...platforms], - intro: - "Signal Desktop keyboard shortcuts move through conversations, search messages, format drafts, manage media, and control calls. This reference keeps the published Mac and Windows/Linux differences visible.", versionContext: "Signal Desktop keyboard shortcuts checked September 1, 2026. The official table covers the Mac and Windows/Linux desktop apps; user settings and browser shortcuts are outside this record.", sourceUrl: "https://support.signal.org/hc/en-us/articles/360036517511-Signal-Desktop-Keyboard-Shortcuts", diff --git a/lib/shortcuts/apps/simplenote.ts b/lib/shortcuts/apps/simplenote.ts index 9569646d..2239d209 100644 --- a/lib/shortcuts/apps/simplenote.ts +++ b/lib/shortcuts/apps/simplenote.ts @@ -8,8 +8,6 @@ export const simplenote: AppShortcuts = { name: "Simplenote", category: "Notes and writing", platforms: [...platforms], - intro: - "Simplenote's official help page lists desktop shortcuts for creating and searching notes, checklists, focus mode, Markdown preview, and font size. The platform-specific table is preserved here.", versionContext: "Simplenote desktop shortcuts checked September 1, 2026. The source separates Electron on Linux and Windows from the macOS app, and its full in-app list may include more commands than the common entries shown here.", sourceUrl: "https://simplenote.com/help/", diff --git a/lib/shortcuts/apps/sketch.ts b/lib/shortcuts/apps/sketch.ts index 619f99ed..9af2d54d 100644 --- a/lib/shortcuts/apps/sketch.ts +++ b/lib/shortcuts/apps/sketch.ts @@ -8,8 +8,6 @@ export const sketch: AppShortcuts = { name: "Sketch", category: "Design tool", platforms: [...platforms], - intro: - "Sketch's Mac app shortcut reference covers documents, canvas navigation, comments, layers, styling, and export. This page keeps the current US English Mac defaults separate from Sketch web shortcuts.", versionContext: "Sketch Mac app shortcuts checked September 1, 2026. The official page was updated June 22, 2026 and notes that listed combinations use the US English keyboard layout.", sourceUrl: "https://www.sketch.com/docs/shortcuts/mac/", diff --git a/lib/shortcuts/apps/sketchup.ts b/lib/shortcuts/apps/sketchup.ts index df9804e1..f0b88ec4 100644 --- a/lib/shortcuts/apps/sketchup.ts +++ b/lib/shortcuts/apps/sketchup.ts @@ -9,8 +9,6 @@ export const sketchup: AppShortcuts = { name: "SketchUp", category: "3D design", platforms: [...platforms], - intro: - "SketchUp's current default shortcut table covers the direct tool keys used for selection, drawing, modeling, and camera control. These entries apply to the Windows and Mac desktop defaults.", versionContext: "SketchUp default keyboard shortcuts checked September 1, 2026. The official help page was updated August 31, 2026 and notes that custom shortcuts can replace these defaults.", sourceUrl: "https://help.sketchup.com/en/default-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/slack.ts b/lib/shortcuts/apps/slack.ts index 19b95c22..85545a40 100644 --- a/lib/shortcuts/apps/slack.ts +++ b/lib/shortcuts/apps/slack.ts @@ -8,8 +8,6 @@ export const slack: AppShortcuts = { name: "Slack", category: "Team chat", platforms: [...platforms], - intro: - "Slack's shortcut map spans the desktop shell, conversations, workspaces, tabs, messages, huddles, and canvas editing. This page keeps those contexts together and calls out desktop-only or keyboard-layout-sensitive bindings.", versionContext: "Current Slack Help shortcuts checked in August 2026. A single asterisk in Slack's source means the binding can vary by keyboard language; two asterisks mean it works only in the desktop app. Slack does not currently support custom shortcuts.", sourceUrl: "https://slack.com/help/articles/201374536-Slack-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/smartsheet.ts b/lib/shortcuts/apps/smartsheet.ts index 5d023a4b..40e6bbf3 100644 --- a/lib/shortcuts/apps/smartsheet.ts +++ b/lib/shortcuts/apps/smartsheet.ts @@ -8,8 +8,6 @@ export const smartsheet: AppShortcuts = { name: "Smartsheet", category: "Project management", platforms: [...platforms], - intro: - "Smartsheet's official keyboard shortcut table covers sheet editing, search, hierarchy, formatting, row selection, date entry, and dashboard focus. Windows and Mac mappings are shown separately where they differ.", versionContext: "Smartsheet keyboard shortcuts checked September 1, 2026. The official Learning Center table says Mac users should use Command instead of Ctrl for the paired shortcuts.", sourceUrl: "https://help.smartsheet.com/articles/522200-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/solidworks.ts b/lib/shortcuts/apps/solidworks.ts index c93e5864..fe3846e6 100644 --- a/lib/shortcuts/apps/solidworks.ts +++ b/lib/shortcuts/apps/solidworks.ts @@ -7,8 +7,6 @@ export const solidworks: AppShortcuts = { name: "SOLIDWORKS", category: "CAD and engineering", platforms: ["windows"], - intro: - "SOLIDWORKS Design Help publishes selected Windows shortcuts for assemblies, copying, display, selection, sketching, and the shortcut bar. The record focuses on stable key commands rather than mouse gestures.", versionContext: "SOLIDWORKS 2026 selected keyboard shortcuts checked September 1, 2026. The source calls this a selected list and notes that keyboard assignments can be customized, so this is not a complete custom keymap.", sourceUrl: "https://help.solidworks.com/2026/english/SolidWorks/sldworks/c_time_saving_keyboard_shortcuts.htm", diff --git a/lib/shortcuts/apps/spark-mail.ts b/lib/shortcuts/apps/spark-mail.ts index 7af78ede..bb952f4a 100644 --- a/lib/shortcuts/apps/spark-mail.ts +++ b/lib/shortcuts/apps/spark-mail.ts @@ -8,8 +8,6 @@ export const sparkMail: AppShortcuts = { name: "Spark Mail", category: "Email", platforms: [...platforms], - intro: - "Spark Mail's desktop shortcut reference groups email triage, navigation, composing, formatting, calendar, and team actions. This record uses the published Mac and Windows desktop presets.", versionContext: "Spark Desktop shortcuts checked September 1, 2026. Spark supports configurable shortcut presets, so these entries describe the published default desktop bindings rather than a user's custom preset.", sourceUrl: "https://sparkmailapp.com/help/tips-tricks/use-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/spotify.ts b/lib/shortcuts/apps/spotify.ts index 4ca94787..61a2a57b 100644 --- a/lib/shortcuts/apps/spotify.ts +++ b/lib/shortcuts/apps/spotify.ts @@ -8,8 +8,6 @@ export const spotify: AppShortcuts = { name: "Spotify", category: "Music streaming", platforms: [...platforms], - intro: - "Spotify's current desktop support page lists shortcuts for search, playback, library navigation, sidebars, and queue actions. The table below keeps its Mac and Windows differences explicit.", versionContext: "Spotify desktop and web player shortcuts checked September 1, 2026. Spotify says the app can show the full in-app list, so this record contains the stable actions published in the support article.", sourceUrl: "https://support.spotify.com/na-en/article/keyboard-shortcuts/", diff --git a/lib/shortcuts/apps/squarespace.ts b/lib/shortcuts/apps/squarespace.ts index 841a9dd8..c611f188 100644 --- a/lib/shortcuts/apps/squarespace.ts +++ b/lib/shortcuts/apps/squarespace.ts @@ -8,8 +8,6 @@ export const squarespace: AppShortcuts = { name: "Squarespace", category: "Website builder", platforms: [...platforms], - intro: - "Squarespace's official guide covers site navigation, Fluid Engine block editing, text formatting, and Acuity actions. These entries describe the current Mac and Windows editing shortcuts.", versionContext: "Squarespace keyboard shortcuts checked September 1, 2026. The official guide was updated November 5, 2025 and warns that some shortcuts do not work in products or panels outside direct site editing.", sourceUrl: "https://support.squarespace.com/hc/en-us/articles/214491097-Squarespace-keyboard-shortcuts-and-tips", diff --git a/lib/shortcuts/apps/sublime-text.ts b/lib/shortcuts/apps/sublime-text.ts index 544d0994..94fd0b9c 100644 --- a/lib/shortcuts/apps/sublime-text.ts +++ b/lib/shortcuts/apps/sublime-text.ts @@ -8,8 +8,6 @@ export const sublimeText: AppShortcuts = { name: "Sublime Text", category: "Code editor", platforms: [...platforms], - intro: - "Sublime Text's current community documentation publishes separate Windows/Linux and macOS tables for editing, navigation, builds, search, tabs, folding, and bookmarks.", versionContext: "Sublime Text keyboard shortcut tables checked September 1, 2026. Windows and Linux share most bindings, while macOS changes the primary modifier and a few editing commands.", sourceUrl: "https://docs.sublimetext.io/reference/keyboard_shortcuts_win.html", @@ -51,8 +49,9 @@ export const sublimeText: AppShortcuts = { { id: "quick-open", action: "Quick-open files by name", keys: combo(platforms, ["Ctrl", "P"], ["Cmd", "P"]) }, { id: "goto-symbol", action: "Go to a symbol", keys: combo(platforms, ["Ctrl", "R"], ["Cmd", "R"]) }, { id: "goto-line", action: "Go to a line", keys: perPlatform(platforms, { windows: ["Ctrl", "G"], linux: ["Ctrl", "G"], macos: ["Ctrl", "G"] }) }, - { id: "build", action: "Build", keys: perPlatform(platforms, { windows: ["F7"], linux: ["F7"], macos: ["F7"] }) }, - { id: "build-command", action: "Build", keys: combo(platforms, ["Ctrl", "B"], ["Cmd", "B"]) }, + { id: "build", action: "Build", keys: perPlatform(platforms, { + windows: ["F7"], linux: ["F7"], macos: ["F7"], + }).map((key) => ({ ...key, alternatives: key.platform === "macos" ? [["Cmd", "B"]] : [["Ctrl", "B"]] })) }, { id: "build-selected", action: "Build selected", keys: perPlatform(platforms, { windows: ["Ctrl", "Shift", "B"], linux: ["Ctrl", "Shift", "B"], macos: ["Shift", "Cmd", "B"] }) }, { id: "command-palette", action: "Open the Command Palette", keys: perPlatform(platforms, { windows: ["Ctrl", "Shift", "P"], linux: ["Ctrl", "Shift", "P"], macos: ["Shift", "Cmd", "P"] }) }, { id: "sidebar", action: "Toggle the side bar", keys: perPlatform(platforms, { windows: ["Ctrl", "K", "Ctrl", "B"], linux: ["Ctrl", "K", "Ctrl", "B"], macos: ["Cmd", "K", "Cmd", "B"] }) }, diff --git a/lib/shortcuts/apps/superhuman.ts b/lib/shortcuts/apps/superhuman.ts index abf9e432..647259cb 100644 --- a/lib/shortcuts/apps/superhuman.ts +++ b/lib/shortcuts/apps/superhuman.ts @@ -8,8 +8,6 @@ export const superhuman: AppShortcuts = { name: "Superhuman", category: "Email", platforms: [...platforms], - intro: - "Superhuman's official shortcut guide covers inbox triage, search, composing, formatting, navigation, and tabs. This reference pairs the desktop modifier differences while keeping single-key actions readable.", versionContext: "Superhuman Mail desktop shortcuts checked September 1, 2026. The official guide and shortcut PDF note that bindings can vary by platform and that the Command menu exposes the current list.", sourceUrl: "https://help.superhuman.com/hc/en-us/articles/46005701270541-Keyboard-Shortcuts-in-Superhuman-Mail", diff --git a/lib/shortcuts/apps/tableau.ts b/lib/shortcuts/apps/tableau.ts index ff82ca37..b38486a3 100644 --- a/lib/shortcuts/apps/tableau.ts +++ b/lib/shortcuts/apps/tableau.ts @@ -8,8 +8,6 @@ export const tableau: AppShortcuts = { name: "Tableau", category: "Analytics", platforms: [...platforms], - intro: - "Tableau's official shortcut reference covers Desktop workbooks, authoring, data, dashboards, marks, and worksheet navigation. This curated set keeps the most-used Windows and Mac defaults together.", versionContext: "Tableau Desktop keyboard shortcuts checked September 1, 2026. The official reference also documents Server, Cloud, and Prep shortcuts, but this record focuses on the Desktop authoring workflow.", sourceUrl: "https://help.tableau.com/current/pro/desktop/en-us/shortcut.htm", diff --git a/lib/shortcuts/apps/tableplus.ts b/lib/shortcuts/apps/tableplus.ts index a281bbcf..4cd13e19 100644 --- a/lib/shortcuts/apps/tableplus.ts +++ b/lib/shortcuts/apps/tableplus.ts @@ -8,8 +8,6 @@ export const tableplus: AppShortcuts = { name: "TablePlus", category: "Database tools", platforms: [...platforms], - intro: - "TablePlus's official shortcut documentation covers connections, workspaces, SQL editing, panes, query execution, and table data. Windows entries use the documented Control replacement for Command.", versionContext: "TablePlus shortcut keys checked September 1, 2026. The documentation says to replace Command with Control on Windows and notes that key mappings can be customized in Preferences.", sourceUrl: "https://docs.tableplus.com/utilities/shortcut-keys", diff --git a/lib/shortcuts/apps/tally-forms.ts b/lib/shortcuts/apps/tally-forms.ts index 10edf5da..14e2725a 100644 --- a/lib/shortcuts/apps/tally-forms.ts +++ b/lib/shortcuts/apps/tally-forms.ts @@ -8,8 +8,6 @@ export const tallyForms: AppShortcuts = { name: "Tally Forms", category: "Forms", platforms: [...platforms], - intro: - "Tally's official keyboard shortcut guide covers form editing, block movement, formatting, command menus, and Markdown-style input. The shared web shortcuts are paired across Windows, macOS, and Linux.", versionContext: "Tally keyboard shortcuts checked September 1, 2026. The source describes shortcuts for the Tally editor and uses Cmd on macOS and Ctrl on Windows or Linux.", sourceUrl: "https://tally.so/help/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/telegram.ts b/lib/shortcuts/apps/telegram.ts index d11d4c6c..18c02353 100644 --- a/lib/shortcuts/apps/telegram.ts +++ b/lib/shortcuts/apps/telegram.ts @@ -8,8 +8,6 @@ export const telegram: AppShortcuts = { name: "Telegram", category: "Messaging", platforms: [...platforms], - intro: - "Telegram Desktop publishes its default shortcut actions in the open-source desktop implementation and exposes them in Chat Settings. This reference focuses on chat, folder, window, and message navigation.", versionContext: "Telegram Desktop shortcuts checked September 1, 2026 against the current desktop source and official translation strings. Telegram lets users customize and reset these bindings in Chat Settings > Keyboard shortcuts.", sourceUrl: "https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/core/shortcuts.cpp", diff --git a/lib/shortcuts/apps/things-3.ts b/lib/shortcuts/apps/things-3.ts index e81e2b84..05975600 100644 --- a/lib/shortcuts/apps/things-3.ts +++ b/lib/shortcuts/apps/things-3.ts @@ -1,81 +1,97 @@ import type { AppShortcuts } from "../types.ts"; -const platforms = ["macos"] as const; const mac = (keys: string[]) => [{ platform: "macos" as const, keys }]; export const things3: AppShortcuts = { slug: "things-3", name: "Things 3", category: "Task management", - platforms: [...platforms], - intro: - "Things 3's official Mac shortcut reference covers task creation, scheduling, navigation, Markdown styling, search, and list organization. iPad and iPhone shortcuts are outside this Mac record.", + platforms: ["macos"], versionContext: - "Things 3 Mac shortcuts checked September 1, 2026 against the official support article and shortcut PDF. Things lets users use a global quick-entry hotkey in addition to these in-app defaults.", + "Things for Mac keyboard shortcuts checked October 10, 2026 against Cultured Code's current support article. The Quick Entry hotkeys can be changed in Things settings.", sourceUrl: "https://culturedcode.com/things/support/articles/2785159/", - sourceLabel: "official Things 3 Mac keyboard shortcuts", - lastVerified: "2026-09-01", + sourceLabel: "official Things for Mac keyboard shortcuts", + lastVerified: "2026-10-10", groups: [ { id: "create-and-edit", - title: "Create and edit tasks", - intro: "Task creation and editing shortcuts add to-dos, projects, notes, repeating tasks, and the common completion or cancellation states.", + title: "Create and edit items", + intro: "Create to-dos, projects, headings, and checklists, then edit or complete the selected item.", shortcuts: [ { id: "new-todo", action: "Create a new to-do", keys: mac(["Cmd", "N"]) }, - { id: "new-repeating", action: "Create a repeating to-do", keys: mac(["Option", "Cmd", "N"]) }, - { id: "new-project", action: "Create a new project", keys: mac(["Shift", "Cmd", "N"]) }, - { id: "new-below", action: "Create a new to-do below the current item", keys: mac(["Space"]) }, - { id: "edit", action: "Open an item for editing", keys: mac(["Return"]) }, - { id: "commit-note", action: "Commit a note edit", keys: mac(["Option", "Return"]) }, - { id: "complete", action: "Complete the current item", keys: mac(["Cmd", "."]) }, - { id: "cancel", action: "Cancel the current item", keys: mac(["Option", "Delete"]) }, - { id: "log", action: "Log the current item", keys: mac(["Cmd", "L"]) }, - { id: "file", action: "File the current item", keys: mac(["Shift", "Cmd", "F"]) }, - { id: "today", action: "Set the item to Today", keys: mac(["Cmd", "T"]) }, - { id: "someday", action: "Set the item to Someday", keys: mac(["Cmd", "Y"]) }, - { id: "reschedule", action: "Reschedule the item", keys: mac(["Cmd", "R"]) }, - { id: "repeat", action: "Set a repeating schedule", keys: mac(["Option", "Cmd", "R"]) }, + { id: "new-below", action: "Create a to-do below the selection", keys: mac(["Space"]) }, + { id: "new-from-clipboard", action: "Create to-dos from clipboard rows", keys: mac(["Cmd", "V"]) }, + { id: "new-checklist", action: "Create a checklist in an open to-do", keys: mac(["Shift", "Cmd", "C"]) }, + { id: "new-project", action: "Create a new project", keys: mac(["Option", "Cmd", "N"]) }, + { id: "new-heading", action: "Create a new heading", keys: mac(["Shift", "Cmd", "N"]) }, + { id: "new-heading-with-selection", action: "Create a heading and place selected to-dos under it", keys: mac(["Option", "Shift", "Cmd", "N"]) }, + { id: "quick-entry", action: "Open Quick Entry", keys: mac(["Ctrl", "Space"]), note: "This global shortcut can be changed in Things settings." }, + { id: "quick-entry-autofill", action: "Open Quick Entry with Autofill", keys: mac(["Ctrl", "Option", "Space"]), note: "This global shortcut can be changed in Things settings." }, + { id: "open-item", action: "Open the selected item", keys: mac(["Return"]) }, + { id: "save-item", action: "Save and close the selected item", keys: mac(["Cmd", "Return"]) }, + { id: "duplicate-item", action: "Duplicate the selected item", keys: mac(["Cmd", "D"]) }, + { id: "copy-item", action: "Copy a to-do or project", keys: mac(["Cmd", "C"]) }, + { id: "paste-item", action: "Paste a to-do or project", keys: mac(["Cmd", "V"]) }, + { id: "complete-item", action: "Complete the selected item", keys: mac(["Cmd", "K"]) }, + { id: "cancel-item", action: "Cancel the selected item", keys: mac(["Option", "Cmd", "K"]) }, + { id: "file-completed", action: "Move completed items to Logbook", keys: mac(["Shift", "Cmd", "Y"]) }, ], }, { - id: "navigation", - title: "Navigation and search", - intro: "Navigation shortcuts open lists, move through the sidebar, search tasks, and advance through matching results or project items.", + id: "select-and-move", + title: "Select and move items", + intro: "Select items in a list and change their order or move them to another list.", + shortcuts: [ + { id: "select-first", action: "Select the first item", keys: mac(["Option", "Up"]) }, + { id: "select-last", action: "Select the last item", keys: mac(["Option", "Down"]) }, + { id: "extend-up", action: "Extend the selection upward", keys: mac(["Shift", "Up"]) }, + { id: "extend-down", action: "Extend the selection downward", keys: mac(["Shift", "Down"]) }, + { id: "extend-top", action: "Extend the selection to the top", keys: mac(["Option", "Shift", "Up"]) }, + { id: "extend-bottom", action: "Extend the selection to the bottom", keys: mac(["Option", "Shift", "Down"]) }, + { id: "select-all", action: "Select all items", keys: mac(["Cmd", "A"]) }, + { id: "move-list", action: "Move an item to another list", keys: mac(["Shift", "Cmd", "M"]) }, + { id: "move-copied-here", action: "Move a copied item to this list", keys: mac(["Option", "Cmd", "V"]) }, + { id: "move-up", action: "Move an item up", keys: mac(["Cmd", "Up"]) }, + { id: "move-down", action: "Move an item down", keys: mac(["Cmd", "Down"]) }, + { id: "move-top", action: "Move an item to the top of the list", keys: mac(["Option", "Cmd", "Up"]) }, + { id: "move-bottom", action: "Move an item to the bottom of the list", keys: mac(["Option", "Cmd", "Down"]) }, + ], + }, + { + id: "dates-and-scheduling", + title: "Dates and scheduling", + intro: "Set an item’s start date, deadline, or repetition schedule.", + shortcuts: [ + { id: "show-when", action: "Show the When date picker", keys: mac(["Cmd", "S"]) }, + { id: "start-today", action: "Start today", keys: mac(["Cmd", "T"]) }, + { id: "start-evening", action: "Start this evening", keys: mac(["Cmd", "E"]) }, + { id: "start-anytime", action: "Start anytime", keys: mac(["Cmd", "R"]) }, + { id: "start-someday", action: "Start someday", keys: mac(["Cmd", "O"]) }, + { id: "date-plus-day", action: "Move the start date forward one day", keys: mac(["Ctrl", "]"]) }, + { id: "date-minus-day", action: "Move the start date back one day", keys: mac(["Ctrl", "["]) }, + { id: "deadline", action: "Add a deadline", keys: mac(["Shift", "Cmd", "D"]) }, + { id: "repeat", action: "Add a repetition schedule", keys: mac(["Shift", "Cmd", "R"]) }, + ], + }, + { + id: "navigation-and-windows", + title: "Navigation, search, and windows", + intro: "Open the main lists, search for items, and control Things windows and the sidebar.", shortcuts: [ { id: "inbox", action: "Open Inbox", keys: mac(["Cmd", "0"]) }, - { id: "today-list", action: "Open Today", keys: mac(["Cmd", "1"]) }, - { id: "next-list", action: "Open Next", keys: mac(["Cmd", "2"]) }, + { id: "today", action: "Open Today", keys: mac(["Cmd", "1"]) }, + { id: "next", action: "Open Next", keys: mac(["Cmd", "2"]) }, { id: "scheduled", action: "Open Scheduled", keys: mac(["Cmd", "3"]) }, - { id: "someday-list", action: "Open Someday", keys: mac(["Cmd", "4"]) }, + { id: "someday", action: "Open Someday", keys: mac(["Cmd", "4"]) }, { id: "projects", action: "Open Projects", keys: mac(["Cmd", "5"]) }, { id: "logbook", action: "Open Logbook", keys: mac(["Cmd", "6"]) }, - { id: "search", action: "Search", keys: mac(["Cmd", "F"]) }, - { id: "find-text", action: "Find text", keys: mac(["Shift", "Cmd", "F"]) }, - { id: "next-result", action: "Go to the next search result", keys: mac(["Cmd", "G"]) }, - { id: "previous-result", action: "Go to the previous search result", keys: mac(["Shift", "Cmd", "G"]) }, - { id: "navigation-popover", action: "Open the navigation popover", keys: mac(["Shift", "Cmd", "O"]) }, + { id: "search", action: "Search Things", keys: mac(["Cmd", "F"]) }, + { id: "find-text", action: "Find text in an item", keys: mac(["Shift", "Cmd", "F"]) }, + { id: "next-result", action: "Find the next text match", keys: mac(["Cmd", "G"]) }, + { id: "previous-result", action: "Find the previous text match", keys: mac(["Shift", "Cmd", "G"]) }, + { id: "new-window", action: "Open a new window", keys: mac(["Ctrl", "Cmd", "N"]) }, { id: "sidebar", action: "Show or hide the sidebar", keys: mac(["Cmd", "/"]) }, - ], - }, - { - id: "formatting", - title: "Markdown and formatting", - intro: "Markdown and formatting shortcuts style task notes, create lists, insert links or code, and change list indentation.", - shortcuts: [ - { id: "italic", action: "Italicize text", keys: mac(["Cmd", "I"]) }, - { id: "bold", action: "Bold text", keys: mac(["Cmd", "B"]) }, - { id: "bullets", action: "Create a bulleted list", keys: mac(["Shift", "Cmd", "L"]) }, - { id: "numbered", action: "Create a numbered list", keys: mac(["Option", "Cmd", "L"]) }, - { id: "checklist", action: "Create a checklist", keys: mac(["Ctrl", "Cmd", "L"]) }, - { id: "complete-checklist", action: "Complete a checklist item", keys: mac(["Cmd", "K"]) }, - { id: "cancel-checklist", action: "Cancel a checklist item", keys: mac(["Option", "Cmd", "K"]) }, - { id: "quote", action: "Create a quote", keys: mac(["Cmd", "'"]) }, - { id: "highlight", action: "Highlight text", keys: mac(["Shift", "Cmd", "U"]) }, - { id: "link", action: "Add a link", keys: mac(["Shift", "Cmd", "K"]) }, - { id: "strikethrough", action: "Strikethrough text", keys: mac(["Option", "Cmd", "U"]) }, - { id: "code", action: "Format as code", keys: mac(["Shift", "Cmd", "J"]) }, - { id: "indent", action: "Indent a list item", keys: mac(["Cmd", "]"]) }, - { id: "outdent", action: "Outdent a list item", keys: mac(["Cmd", "["]) }, + { id: "toolbar", action: "Show or hide the toolbar", keys: mac(["Option", "Cmd", "T"]) }, ], }, ], diff --git a/lib/shortcuts/apps/tmux.ts b/lib/shortcuts/apps/tmux.ts index d04deb73..3803ceca 100644 --- a/lib/shortcuts/apps/tmux.ts +++ b/lib/shortcuts/apps/tmux.ts @@ -15,8 +15,6 @@ export const tmux: AppShortcuts = { name: "tmux", category: "Terminal", platforms: [...platforms], - intro: - "tmux's default prefix map controls sessions, windows, panes, copy mode, and terminal layout without leaving a shell. The entries use tmux's default Ctrl-B prefix and preserve the distinction between a prefix chord and the command key that follows it.", versionContext: "Default key bindings from the current tmux master manual and Getting Started guide checked September 1, 2026. A user's tmux.conf can replace or remove any binding, and copy-mode or status-line bindings can change when vi mode is enabled.", sourceUrl: "https://github.com/tmux/tmux/blob/master/tmux.1", diff --git a/lib/shortcuts/apps/todoist.ts b/lib/shortcuts/apps/todoist.ts index 02cc01a2..c5220279 100644 --- a/lib/shortcuts/apps/todoist.ts +++ b/lib/shortcuts/apps/todoist.ts @@ -22,8 +22,6 @@ export const todoist: AppShortcuts = { name: "Todoist", category: "Task management", platforms: [...platforms], - intro: - "Todoist's current reference covers general app navigation, quick add, global desktop controls, task editing, projects, sorting, upcoming view, calendar layout, and multi-window workflows. This map keeps web and desktop commands together while showing platform-specific bindings explicitly.", versionContext: "Todoist Help keyboard shortcut reference last updated July 2, 2026 and checked September 1, 2026. Todoist documents QWERTY and QWERTZ layouts, and global Quick Add or Ramble shortcuts do not work on Linux; this record covers Windows 10/11 and macOS.", sourceUrl: "https://todoist.com/help/articles/use-keyboard-shortcuts-in-todoist-Wyovn2", diff --git a/lib/shortcuts/apps/typora.ts b/lib/shortcuts/apps/typora.ts index 950eca37..6e62cf97 100644 --- a/lib/shortcuts/apps/typora.ts +++ b/lib/shortcuts/apps/typora.ts @@ -22,8 +22,6 @@ export const typora: AppShortcuts = { name: "Typora", category: "Writing tool", platforms: [...platforms], - intro: - "Typora's official shortcut table covers file operations, Markdown editing, headings, lists, formatting, search, views, and document navigation. The Windows and Linux defaults are paired, while macOS command and option variants stay explicit.", versionContext: "Typora's Shortcut Keys reference updated July 19, 2026 and checked September 1, 2026. Typora allows menu bindings to be changed in macOS App Shortcuts or Windows/Linux advanced settings, so this record describes the published defaults.", sourceUrl: "https://support.typora.io/Shortcut-Keys/", diff --git a/lib/shortcuts/apps/ulysses.ts b/lib/shortcuts/apps/ulysses.ts index 933ece1f..d5d5af34 100644 --- a/lib/shortcuts/apps/ulysses.ts +++ b/lib/shortcuts/apps/ulysses.ts @@ -15,8 +15,6 @@ export const ulysses: AppShortcuts = { name: "Ulysses", category: "Writing tool", platforms: [...platforms], - intro: - "Ulysses' official Mac reference covers sheets and groups, library navigation, search, editor markup, tables, previews, appearance, and export. The app's iPad and iPhone hardware-keyboard maps are separate, so this record stays Mac-only.", versionContext: "Ulysses Keyboard Shortcuts page checked September 1, 2026. The source publishes the Mac map separately from iPad and iPhone shortcuts; this record uses the Mac defaults and leaves custom macOS App Shortcuts outside the map.", sourceUrl: "https://help.ulysses.app/keyboard-shortcuts-mac-ipad?kb_language=en_US", diff --git a/lib/shortcuts/apps/vim.ts b/lib/shortcuts/apps/vim.ts index ca3332a9..60374c6a 100644 --- a/lib/shortcuts/apps/vim.ts +++ b/lib/shortcuts/apps/vim.ts @@ -8,8 +8,6 @@ export const vim: AppShortcuts = { name: "Vim", category: "Text editor", platforms: [...platforms], - intro: - "Vim is a language of motions, operators, and modes rather than a list of isolated hotkeys. This reference covers the normal, insert, visual, search, window, and command-line paths that make the official quick reference useful at the keyboard.", versionContext: "Core Vim 9.2 behavior from the official Vim quick reference checked in August 2026. Commands are typed inside Vim, so the same keys apply on Windows, macOS, and Linux; terminal or GUI mappings can change them.", sourceUrl: "https://vimhelp.org/quickref.txt.html", diff --git a/lib/shortcuts/apps/visual-studio.ts b/lib/shortcuts/apps/visual-studio.ts index e9c38bf2..cd28468d 100644 --- a/lib/shortcuts/apps/visual-studio.ts +++ b/lib/shortcuts/apps/visual-studio.ts @@ -15,8 +15,6 @@ export const visualStudio: AppShortcuts = { name: "Visual Studio", category: "Code editor", platforms: [...platforms], - intro: - "Visual Studio's General profile includes distinct defaults for building, debugging, editing, files, projects, refactoring, views, and document windows. This Windows reference keeps the common commands and their context notes readable instead of flattening every context-specific command into one list.", versionContext: "Microsoft Learn's Visual Studio default keyboard shortcut reference checked September 1, 2026. The map uses the General profile; Visual C#, Visual Basic, keyboard layout, language settings, extensions, and user changes can assign different bindings.", sourceUrl: "https://learn.microsoft.com/en-us/visualstudio/ide/default-keyboard-shortcuts-in-visual-studio?view=visualstudio", diff --git a/lib/shortcuts/apps/vmware-workstation.ts b/lib/shortcuts/apps/vmware-workstation.ts index d48227c9..76c8337c 100644 --- a/lib/shortcuts/apps/vmware-workstation.ts +++ b/lib/shortcuts/apps/vmware-workstation.ts @@ -15,8 +15,6 @@ export const vmwareWorkstation: AppShortcuts = { name: "VMware Workstation", category: "Virtualization", platforms: [...platforms], - intro: - "VMware Workstation's default hot-key combinations release input, control full-screen guests, switch virtual machines, and manage Unity mode. This reference covers the host shortcuts documented for Workstation Pro on Windows and Linux.", versionContext: "Broadcom's VMware Workstation Pro 17.0 manual default hot-key table checked September 1, 2026. Host operating-system shortcuts and guest operating-system shortcuts can intercept combinations, and Workstation preferences or a different product edition may change the active map.", sourceUrl: "https://techdocs2-prod.adobecqms.net/content/dam/broadcom/techdocs/us/en/pdf/vmware/desktop-hypervisors/workstation/vmware-workstation-pro-17-0.pdf", @@ -37,8 +35,8 @@ export const vmwareWorkstation: AppShortcuts = { }, { id: "full-screen-and-switching", - title: "Full screen and virtual-machine switching", - intro: "Enter full screen, move among virtual machines, and change the active display layout while a guest is running.", + title: "Full screen, switching, and Unity mode", + intro: "Enter full screen or Unity mode, move among virtual machines, and change the active display layout while a guest is running.", shortcuts: [ key("full-screen", "Toggle full-screen mode", ["Ctrl", "Alt", "Enter"]), key("next-tab", "Switch to the next virtual-machine tab", ["Ctrl", "Tab"], "The manual documents this for Windows hosts."), @@ -46,13 +44,6 @@ export const vmwareWorkstation: AppShortcuts = { key("next-full-screen-vm", "Switch to the next powered-on virtual machine in full screen", ["Ctrl", "Alt", "Right Arrow"]), key("previous-full-screen-vm", "Switch to the previous powered-on virtual machine in full screen", ["Ctrl", "Alt", "Left Arrow"]), key("monitor-layout", "Change the monitor layout in full screen", ["Ctrl", "Alt", "M"]), - ], - }, - { - id: "unity-mode", - title: "Unity mode", - intro: "Enter or leave VMware Unity mode and use the host desktop to reach applications from the running guest.", - shortcuts: [ key("unity-mode", "Toggle Unity mode", ["Ctrl", "Shift", "U"]), ], }, diff --git a/lib/shortcuts/apps/vscode.ts b/lib/shortcuts/apps/vscode.ts index dc417140..5e371e27 100644 --- a/lib/shortcuts/apps/vscode.ts +++ b/lib/shortcuts/apps/vscode.ts @@ -18,8 +18,6 @@ export const vscode: AppShortcuts = { name: "Visual Studio Code", category: "Code editor", platforms: [...platforms], - intro: - "VS Code's default shortcuts cover the whole coding loop: edit and navigate code, search and refactor, manage files and panels, run tasks, debug, and use the built-in chat tools. This reference follows Microsoft's current common default list for a standard US keyboard layout.", versionContext: "Common default keybindings from the official VS Code reference checked in August 2026. The full installed list is generated by VS Code and can differ with extensions, profiles, keyboard layout, or user keybindings; open Preferences: Open Default Keyboard Shortcuts (JSON) for the complete runtime list.", sourceUrl: "https://code.visualstudio.com/docs/reference/default-keybindings", diff --git a/lib/shortcuts/apps/warp.ts b/lib/shortcuts/apps/warp.ts index a90e4de3..d8adc9b3 100644 --- a/lib/shortcuts/apps/warp.ts +++ b/lib/shortcuts/apps/warp.ts @@ -15,8 +15,6 @@ export const warp: AppShortcuts = { name: "Warp", category: "Terminal", platforms: [...platforms], - intro: - "Warp's official shortcut reference covers panes, blocks, terminal input, command search, tabs, navigation, and font controls across macOS, Windows, and Linux. The map preserves Warp's platform-specific defaults, including Emacs-style input bindings shared by the terminal editor.", versionContext: "Warp keyboard shortcut reference last updated August 27, 2026 and checked September 1, 2026. Warp lets users remap commands in Settings and warns that macOS system shortcuts may need to be unbound first; this record uses the published defaults.", sourceUrl: "https://docs.warp.dev/getting-started/keyboard-shortcuts", diff --git a/lib/shortcuts/apps/webflow.ts b/lib/shortcuts/apps/webflow.ts index 3c1bfbfa..b47363eb 100644 --- a/lib/shortcuts/apps/webflow.ts +++ b/lib/shortcuts/apps/webflow.ts @@ -22,8 +22,6 @@ export const webflow: AppShortcuts = { name: "Webflow", category: "Design tool", platforms: [...platforms], - intro: - "Webflow's current designer reference covers canvas editing, breakpoints, panels, classes, interactions, element movement, and publishing. Webflow documents Command and Option on Mac with Control and Alt equivalents on Windows, which this map keeps explicit.", versionContext: "Webflow Help Center keyboard shortcuts updated August 24, 2026 and checked September 1, 2026. Some entries are context-sensitive, such as timeline and canvas commands; this record excludes mouse-only gestures while retaining the keyboard part of combined actions.", sourceUrl: "https://help.webflow.com/hc/en-us/articles/33961359609875-Keyboard-shortcuts-in-Webflow", diff --git a/lib/shortcuts/apps/webstorm.ts b/lib/shortcuts/apps/webstorm.ts index 8af58612..b8ac93b3 100644 --- a/lib/shortcuts/apps/webstorm.ts +++ b/lib/shortcuts/apps/webstorm.ts @@ -15,8 +15,6 @@ export const webstorm: AppShortcuts = { name: "WebStorm", category: "Code editor", platforms: [...platforms], - intro: - "WebStorm's default keymap covers search, code completion, editing, navigation, refactoring, files, tabs, debugging, and version control. The reference uses the standard Windows/Linux and macOS keymaps and keeps two-stroke commands labeled as sequences.", versionContext: "JetBrains WebStorm documentation and default reference cards checked September 1, 2026. The current WebStorm 2026.2 keymap is configurable, can be replaced by a plugin or another predefined map, and may vary with keyboard layout or operating-system conflicts.", sourceUrl: "https://www.jetbrains.com/help/webstorm/mastering-keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/whimsical.ts b/lib/shortcuts/apps/whimsical.ts index 0713c3f8..e2c43453 100644 --- a/lib/shortcuts/apps/whimsical.ts +++ b/lib/shortcuts/apps/whimsical.ts @@ -28,8 +28,6 @@ export const whimsical: AppShortcuts = { name: "Whimsical", category: "Visual collaboration", platforms: [...platforms], - intro: - "Whimsical publishes separate current shortcut tables for its Windows and Mac apps. This reference covers workspace navigation, boards, diagrams, mind maps, and notes.", versionContext: "Whimsical shortcut tables checked September 1, 2026. The source lists the Windows and Mac modifiers separately, and some shortcuts depend on the active board or editor.", sourceUrl: "https://whimsical.com/learn/shortcuts", diff --git a/lib/shortcuts/apps/windows-file-explorer.ts b/lib/shortcuts/apps/windows-file-explorer.ts index fc3cd0f8..28f3408f 100644 --- a/lib/shortcuts/apps/windows-file-explorer.ts +++ b/lib/shortcuts/apps/windows-file-explorer.ts @@ -15,8 +15,6 @@ export const windowsFileExplorer: AppShortcuts = { name: "Windows File Explorer", category: "File management", platforms: [...platforms], - intro: - "Microsoft publishes a dedicated File Explorer section in its current Windows keyboard shortcut reference. This map covers navigation, tabs, search, panes, and file actions.", versionContext: "Microsoft Windows keyboard shortcuts checked September 1, 2026. The source applies to Windows 10 and Windows 11, and some commands depend on the focused File Explorer pane.", sourceUrl: "https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec", @@ -29,8 +27,7 @@ export const windowsFileExplorer: AppShortcuts = { intro: "Use these commands to open folders, move through the file tree, and control the current window.", shortcuts: [ shortcut("address-bar", "Focus the address bar", ["Alt", "D"]), - shortcut("search", "Focus search", ["Ctrl", "E"]), - shortcut("search-alt", "Focus search", ["Ctrl", "F"]), + { id: "search", action: "Focus search", keys: [{ platform: "windows", keys: ["Ctrl", "E"], alternatives: [["Ctrl", "F"]] }] }, shortcut("new-window", "Open a new File Explorer window", ["Ctrl", "N"]), shortcut("close-window", "Close the active window", ["Ctrl", "W"]), shortcut("expand-parent-folders", "Display all folders above the selected folder", ["Ctrl", "Shift", "E"]), diff --git a/lib/shortcuts/apps/windows-snipping-tool.ts b/lib/shortcuts/apps/windows-snipping-tool.ts index 3c14bfab..c25ae7cd 100644 --- a/lib/shortcuts/apps/windows-snipping-tool.ts +++ b/lib/shortcuts/apps/windows-snipping-tool.ts @@ -15,8 +15,6 @@ export const windowsSnippingTool: AppShortcuts = { name: "Windows Snipping Tool", category: "Screen capture", platforms: [...platforms], - intro: - "Microsoft documents shortcuts for opening the Snipping Tool capture overlays and for working inside the Snipping Tool editor.", versionContext: "Microsoft Snipping Tool help checked September 1, 2026. The capture overlay supports screenshots and screen recordings on current Windows.", sourceUrl: "https://support.microsoft.com/en-US/Windows/Apps/use-snipping-tool-to-capture-screenshots", diff --git a/lib/shortcuts/apps/windows-terminal.ts b/lib/shortcuts/apps/windows-terminal.ts index e8f86e0c..54b4d886 100644 --- a/lib/shortcuts/apps/windows-terminal.ts +++ b/lib/shortcuts/apps/windows-terminal.ts @@ -6,8 +6,6 @@ export const windowsTerminal: AppShortcuts = { name: "Windows Terminal", category: "Terminal emulator", platforms: ["windows"], - intro: - "Windows Terminal is a workspace for several shells, so its important keys manage the container around the prompt. Open tabs, split panes, search scrollback, copy and paste, zoom, and reach the command palette.", versionContext: "Current Windows Terminal documentation as of August 2026; most bindings listed are defaults from the official Actions reference and can be changed in settings.", sourceUrl: "https://learn.microsoft.com/en-us/windows/terminal/customize-settings/actions", diff --git a/lib/shortcuts/apps/windows.ts b/lib/shortcuts/apps/windows.ts index 19c29469..a78a2935 100644 --- a/lib/shortcuts/apps/windows.ts +++ b/lib/shortcuts/apps/windows.ts @@ -7,8 +7,6 @@ export const windows: AppShortcuts = { name: "Windows", category: "Operating system", platforms: ["windows"], - intro: - "Windows shortcuts span the desktop, text fields, File Explorer, virtual desktops, the taskbar, and the command prompt. This page gathers Microsoft's current Windows 10 and Windows 11 defaults so the same key can be understood in the context where it actually works.", versionContext: "Default Windows 10 and Windows 11 bindings from Microsoft Support checked in August 2026. Individual apps may override general bindings, and some keys depend on a feature, keyboard layout, taskbar focus, or an enabled accessibility setting.", sourceUrl: "https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec", diff --git a/lib/shortcuts/apps/winmerge.ts b/lib/shortcuts/apps/winmerge.ts index 0d23b23a..578a63c2 100644 --- a/lib/shortcuts/apps/winmerge.ts +++ b/lib/shortcuts/apps/winmerge.ts @@ -15,8 +15,6 @@ export const winmerge: AppShortcuts = { name: "WinMerge", category: "File comparison", platforms: [...platforms], - intro: - "WinMerge publishes separate shortcut sections for folder comparison, file comparison, merge mode, search, bookmarks, and zoom.", versionContext: "WinMerge manual shortcut page checked September 1, 2026. Some commands depend on whether a folder comparison, file comparison, or merge view has focus.", sourceUrl: "https://manual.winmerge.org/en/Shortcut_keys.html", diff --git a/lib/shortcuts/apps/wireshark.ts b/lib/shortcuts/apps/wireshark.ts index 235b04c9..dea5c3c3 100644 --- a/lib/shortcuts/apps/wireshark.ts +++ b/lib/shortcuts/apps/wireshark.ts @@ -21,13 +21,11 @@ export const wireshark: AppShortcuts = { name: "Wireshark", category: "Network analysis", platforms: [...platforms], - intro: - "Wireshark's current User's Guide documents keyboard navigation, packet search, marking, references, capture controls, and display actions for its desktop application.", versionContext: - "Wireshark User's Guide 4.7.3 checked September 1, 2026. The guide uses the same menu shortcuts across desktop platforms, with Option replacing Alt for packet-selection history on macOS.", + "Current Wireshark User's Guide 4.7.3 checked October 10, 2026. The guide uses the same menu shortcuts across desktop platforms, with Option replacing Alt for packet-selection history on macOS.", sourceUrl: "https://www.wireshark.org/docs/wsug_html/", sourceLabel: "official Wireshark User's Guide", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "packet-navigation", @@ -38,8 +36,16 @@ export const wireshark: AppShortcuts = { shared("previous-pane", "Move to the previous pane", ["Shift", "Tab"]), shared("next-packet", "Select the next packet", ["Down Arrow"]), shared("previous-packet", "Select the previous packet", ["Up Arrow"]), - shared("next-packet-fast", "Select the next packet", ["Ctrl", "Down Arrow"]), - shared("previous-packet-fast", "Select the previous packet", ["Ctrl", "Up Arrow"]), + { + id: "next-packet-fast", + action: "Select the next packet even if the packet list isn't focused", + keys: combo(platforms, ["Ctrl", "Down Arrow"]).map((entry) => ({ ...entry, alternatives: [["F8"]] })), + }, + { + id: "previous-packet-fast", + action: "Select the previous packet even if the packet list isn't focused", + keys: combo(platforms, ["Ctrl", "Up Arrow"]).map((entry) => ({ ...entry, alternatives: [["F7"]] })), + }, shared("next-conversation-packet", "Select the next packet in the conversation", ["Ctrl", "."]), shared("previous-conversation-packet", "Select the previous packet in the conversation", ["Ctrl", ","]), history("next-selection", "Move forward in packet-selection history", ["Alt", "Right Arrow"], ["Option", "Right Arrow"]), diff --git a/lib/shortcuts/apps/wix.ts b/lib/shortcuts/apps/wix.ts index 6f661d91..37648f65 100644 --- a/lib/shortcuts/apps/wix.ts +++ b/lib/shortcuts/apps/wix.ts @@ -28,8 +28,6 @@ export const wix: AppShortcuts = { name: "Wix", category: "Website builder", platforms: [...platforms], - intro: - "Wix publishes keyboard shortcuts for the Wix Editor, including object editing, panels, page controls, and text formatting.", versionContext: "Wix Editor shortcut article checked September 1, 2026. The source lists Windows and Mac combinations and notes that some commands depend on the editor focus.", sourceUrl: "https://support.wix.com/en/article/wix-editor-keyboard-shortcuts-in-the-editor", diff --git a/lib/shortcuts/apps/wondershare-filmora.ts b/lib/shortcuts/apps/wondershare-filmora.ts index fb4e38de..35bd29c8 100644 --- a/lib/shortcuts/apps/wondershare-filmora.ts +++ b/lib/shortcuts/apps/wondershare-filmora.ts @@ -28,8 +28,6 @@ export const wondershareFilmora: AppShortcuts = { name: "Wondershare Filmora", category: "Video editing", platforms: [...platforms], - intro: - "Filmora publishes complete Windows and Mac shortcut tables for file actions, editing, timeline navigation, markers, playback, and export.", versionContext: "Filmora V15 release notes and current Windows and Mac shortcut lists checked September 1, 2026. Filmora lets users edit or switch shortcut presets.", sourceUrl: "https://filmora.wondershare.com/guide/keyboard-shortcuts-on-windows.html", diff --git a/lib/shortcuts/apps/wordpress-admin.ts b/lib/shortcuts/apps/wordpress-admin.ts index 60f21016..f07a20d0 100644 --- a/lib/shortcuts/apps/wordpress-admin.ts +++ b/lib/shortcuts/apps/wordpress-admin.ts @@ -28,8 +28,6 @@ export const wordpressAdmin: AppShortcuts = { name: "WordPress Admin", category: "Content management", platforms: [...platforms], - intro: - "WordPress publishes keyboard references for the Block Editor, Classic Editor, comments, and Site Editor. This map keeps those admin editing surfaces together and does not claim shortcuts for every plugin screen.", versionContext: "WordPress Block Editor, Classic Editor, and Site Editor references checked September 1, 2026. The Block Editor table and Classic Editor table publish Windows or Linux and Mac variants, while the Site Editor documents its command palette separately.", sourceUrl: "https://wordpress.org/documentation/article/keyboard-shortcuts-block-editor/", diff --git a/lib/shortcuts/apps/wps-office.ts b/lib/shortcuts/apps/wps-office.ts index 4a4c89ec..fa30b8a9 100644 --- a/lib/shortcuts/apps/wps-office.ts +++ b/lib/shortcuts/apps/wps-office.ts @@ -35,8 +35,6 @@ export const wpsOffice: AppShortcuts = { name: "WPS Office", category: "Office suite", platforms: [...platforms], - intro: - "WPS publishes product-specific shortcut tables for Writer, Spreadsheets, Presentation, and the Mac app. This reference keeps the Windows document tools separate from the Mac commands.", versionContext: "Official WPS Help shortcut pages checked September 1, 2026. The published maps are product-specific, and WPS allows shortcut behavior to vary between Writer, Spreadsheets, Presentation, and PDF tools.", sourceUrl: "https://help.wps.com/articles/list-of-keyboard-shortcuts-for-writer", diff --git a/lib/shortcuts/apps/wrike.ts b/lib/shortcuts/apps/wrike.ts index 73134695..a6055ffd 100644 --- a/lib/shortcuts/apps/wrike.ts +++ b/lib/shortcuts/apps/wrike.ts @@ -35,8 +35,6 @@ export const wrike: AppShortcuts = { name: "Wrike", category: "Project management", platforms: [...platforms], - intro: - "Wrike publishes shortcuts for task creation, search, comments, text formatting, table views, and Gantt chart navigation.", versionContext: "Wrike keyboard shortcut and Gantt chart shortcut pages checked September 1, 2026. Some commands depend on the current view, browser, or focus inside a task description.", sourceUrl: "https://help.wrike.com/hc/en-us/articles/210322725-Keyboard-Shortcuts", diff --git a/lib/shortcuts/apps/x-twitter.ts b/lib/shortcuts/apps/x-twitter.ts index 4cacd52d..b7a6bcb7 100644 --- a/lib/shortcuts/apps/x-twitter.ts +++ b/lib/shortcuts/apps/x-twitter.ts @@ -28,13 +28,11 @@ export const xTwitter: AppShortcuts = { name: "X (Twitter)", category: "Social media", platforms: [...platforms], - intro: - "X publishes keyboard shortcuts for posts, timeline navigation, search, direct messages, profile areas, and other common actions on x.com.", versionContext: - "X Help keyboard shortcut reference checked September 1, 2026. These shortcuts apply to the desktop web experience on x.com.", + "X Help Center keyboard shortcut list checked October 10, 2026. These shortcuts apply to the desktop web experience on x.com. The Help Center still lists a Moments destination that is no longer included here.", sourceUrl: "https://help.x.com/en/using-x/how-to-post", - sourceLabel: "official X keyboard shortcuts", - lastVerified: "2026-09-01", + sourceLabel: "official X Help Center keyboard shortcuts", + lastVerified: "2026-10-10", groups: [ { id: "posts", @@ -72,7 +70,6 @@ export const xTwitter: AppShortcuts = { intro: "Press G followed by the listed key to open a common X area.", shortcuts: [ shared("home", "Go to Home", ["G", "then", "H"]), - shared("moments", "Go to Moments", ["G", "then", "O"]), shared("notifications", "Go to Notifications", ["G", "then", "N"]), shared("mentions", "Go to Mentions", ["G", "then", "R"]), shared("profile", "Go to your profile", ["G", "then", "P"]), diff --git a/lib/shortcuts/apps/youtrack.ts b/lib/shortcuts/apps/youtrack.ts index 43caccdf..f3e9239f 100644 --- a/lib/shortcuts/apps/youtrack.ts +++ b/lib/shortcuts/apps/youtrack.ts @@ -28,8 +28,6 @@ export const youtrack: AppShortcuts = { name: "YouTrack", category: "Project management", platforms: [...platforms], - intro: - "YouTrack Cloud publishes keyboard tables for issue lists, single issues, rich text, and whiteboards. This reference keeps those contexts separate.", versionContext: "YouTrack Cloud 2026.2 keyboard shortcuts checked September 1, 2026. The source gives Windows or Linux and macOS variants, and many commands depend on the focused issue list or editor.", sourceUrl: "https://www.jetbrains.com/help/youtrack/cloud/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/youtube.ts b/lib/shortcuts/apps/youtube.ts index 42f20d4d..4df426bf 100644 --- a/lib/shortcuts/apps/youtube.ts +++ b/lib/shortcuts/apps/youtube.ts @@ -16,10 +16,10 @@ const dual = ( ...(note ? { note } : {}), }); -const shared = (id: string, action: string, keys: string[], note?: string): Shortcut => ({ +const shared = (id: string, action: string, keys: string[], note?: string, alternatives?: string[][]): Shortcut => ({ id, action, - keys: perPlatform(platforms, { windows: keys, macos: keys }), + keys: platforms.map((platform) => ({ platform, keys, ...(alternatives ? { alternatives } : {}) })), ...(note ? { note } : {}), }); @@ -28,8 +28,6 @@ export const youtube: AppShortcuts = { name: "YouTube", category: "Video", platforms: [...platforms], - intro: - "YouTube publishes desktop player shortcuts for playback, seeking, captions, chapters, speed, volume, search, and playlist navigation.", versionContext: "YouTube Help keyboard shortcut reference checked September 1, 2026. Some commands require the player or seek bar to have focus, and frame controls work only while playback is paused.", sourceUrl: "https://support.google.com/youtube/answer/7631406?hl=en", @@ -41,9 +39,7 @@ export const youtube: AppShortcuts = { title: "Playback", intro: "Use these keys to play, pause, mute, seek, and change playback speed.", shortcuts: [ - shared("space", "Play or pause", ["Space"], "The seek bar must be selected, or the focused button must support activation."), - shared("media-play", "Play or pause", ["Media Play/Pause"]), - shared("play-pause-k", "Play or pause", ["K"]), + shared("play-pause", "Play or pause", ["K"], "Space works when the seek bar is selected or a player button has focus.", [["Space"], ["Media Play/Pause"]]), shared("mute", "Mute or unmute", ["M"]), shared("media-stop", "Stop playback", ["Media Stop"]), shared("media-next", "Play the next track", ["Media Next Track"]), diff --git a/lib/shortcuts/apps/zbrush.ts b/lib/shortcuts/apps/zbrush.ts index 60e3fed3..6c1df200 100644 --- a/lib/shortcuts/apps/zbrush.ts +++ b/lib/shortcuts/apps/zbrush.ts @@ -28,8 +28,6 @@ export const zbrush: AppShortcuts = { name: "ZBrush", category: "3D sculpting", platforms: [...platforms], - intro: - "Maxon publishes ZBrush's default keyboard shortcuts by category, including project files, palettes, sculpting controls, masking, subtools, and rendering.", versionContext: "Maxon ZBrush keyboard shortcut guide and default hotkeys reference checked September 1, 2026. Maxon documents Ctrl to Cmd and Alt to Option equivalents for Mac, while some popup selections are PC-only.", sourceUrl: "https://help.maxon.net/zbr/en-us/Content/html/user-guide/keyboard-shortcuts/keyboard-shortcuts.html", diff --git a/lib/shortcuts/apps/zed.ts b/lib/shortcuts/apps/zed.ts index 597d7bef..cd5bb10a 100644 --- a/lib/shortcuts/apps/zed.ts +++ b/lib/shortcuts/apps/zed.ts @@ -18,8 +18,6 @@ export const zed: AppShortcuts = { name: "Zed", category: "Code editor", platforms: [...platforms], - intro: - "Zed's default keymap is built around moving quickly through an editor, workspace, terminal, and agent panel. This reference covers the current built-in defaults across macOS, Linux, and Windows, including the context-sensitive keys that are most useful in daily work.", versionContext: "Defaults from Zed's official per-platform keymap files checked in August 2026. Zed is fully customizable: a selected VS Code, Vim, Helix, or other base keymap, user keymap, extension, terminal context, or language-specific context can change the active binding.", sourceUrl: "https://zed.dev/docs/key-bindings", diff --git a/lib/shortcuts/apps/zen-browser.ts b/lib/shortcuts/apps/zen-browser.ts index 6d25decb..12ffe19c 100644 --- a/lib/shortcuts/apps/zen-browser.ts +++ b/lib/shortcuts/apps/zen-browser.ts @@ -1,12 +1,12 @@ import { perPlatform } from "../build.ts"; import type { AppShortcuts, Shortcut } from "../types.ts"; -const platforms = ["windows", "linux"] as const; +const platforms = ["windows", "macos", "linux"] as const; const shared = (id: string, action: string, keys: string[], note?: string): Shortcut => ({ id, action, - keys: perPlatform(platforms, { windows: keys, linux: keys }), + keys: perPlatform(platforms, { windows: keys, macos: keys, linux: keys }), ...(note ? { note } : {}), }); @@ -15,13 +15,11 @@ export const zenBrowser: AppShortcuts = { name: "Zen Browser", category: "Web browser", platforms: [...platforms], - intro: - "Zen Browser publishes a current desktop shortcut reference for compact mode, workspaces, split views, tabs, navigation, search, pages, and developer tools.", versionContext: - "Zen Browser shortcut reference checked September 1, 2026. The published table uses Ctrl and Alt notation and does not provide a separate macOS table, so this record covers Windows and Linux only.", + "Zen Browser shortcut reference checked October 10, 2026. The published table uses Ctrl and Alt notation without operating-system variants, so this record keeps the published notation for Windows, macOS, and Linux.", sourceUrl: "https://docs.zen-browser.app/user-manual/shortcuts", sourceLabel: "official Zen Browser shortcuts", - lastVerified: "2026-09-01", + lastVerified: "2026-10-10", groups: [ { id: "zen-layout", diff --git a/lib/shortcuts/apps/zendesk.ts b/lib/shortcuts/apps/zendesk.ts index 1fe60504..8639d11f 100644 --- a/lib/shortcuts/apps/zendesk.ts +++ b/lib/shortcuts/apps/zendesk.ts @@ -21,8 +21,6 @@ export const zendesk: AppShortcuts = { name: "Zendesk", category: "Customer support", platforms: [...platforms], - intro: - "Zendesk publishes an Agent Workspace keyboard cheat sheet for navigation, ticket actions, status changes, and composing replies or internal notes.", versionContext: "Zendesk Agent Workspace keyboard shortcut cheat sheet and dashboard shortcut article checked September 1, 2026. The cheat sheet uses Ctrl or Cmd notation, and some commands depend on the active ticket or editor.", sourceUrl: "https://static.zdassets.com/agent/assets/keyboard-shortcut-cheatsheet-9bad3e7d4d6f5c2affb9d23e2f23ce22.pdf", diff --git a/lib/shortcuts/apps/zeplin.ts b/lib/shortcuts/apps/zeplin.ts index c7e4faeb..82a5f309 100644 --- a/lib/shortcuts/apps/zeplin.ts +++ b/lib/shortcuts/apps/zeplin.ts @@ -28,8 +28,6 @@ export const zeplin: AppShortcuts = { name: "Zeplin", category: "Design handoff", platforms: [...platforms], - intro: - "Zeplin publishes separate Mac and Windows app shortcuts for projects, styleguides, screens, sections, tags, layers, and zoom.", versionContext: "Zeplin keyboard shortcut article checked September 1, 2026. The article also lists a Web app table, while this record uses the published Mac and Windows app maps.", sourceUrl: "https://support.zeplin.io/en/articles/9685993-keyboard-shortcuts", diff --git a/lib/shortcuts/apps/zoom.ts b/lib/shortcuts/apps/zoom.ts index 6c120731..9d841a83 100644 --- a/lib/shortcuts/apps/zoom.ts +++ b/lib/shortcuts/apps/zoom.ts @@ -22,8 +22,6 @@ export const zoom: AppShortcuts = { name: "Zoom", category: "Video conferencing", platforms: [...platforms], - intro: - "Zoom publishes current desktop shortcuts for meetings, chat, calls, product navigation, and accessibility controls across Windows, macOS, and Linux.", versionContext: "Zoom desktop keyboard shortcut reference checked September 1, 2026. Zoom notes that some shortcuts require a higher app version than the global minimum and that shortcuts can be edited in settings.", sourceUrl: "https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0067050", diff --git a/lib/shortcuts/apps/zulip.ts b/lib/shortcuts/apps/zulip.ts index f9a1e231..6b90eda4 100644 --- a/lib/shortcuts/apps/zulip.ts +++ b/lib/shortcuts/apps/zulip.ts @@ -15,8 +15,6 @@ export const zulip: AppShortcuts = { name: "Zulip", category: "Team chat", platforms: [...platforms], - intro: - "Zulip publishes a current Web and Desktop keyboard reference for streams, topics, direct messages, search, composing, and message actions.", versionContext: "Zulip keyboard shortcut reference checked September 1, 2026. The official Web and Desktop table uses Ctrl notation and includes the same app-level map for the listed desktop platforms.", sourceUrl: "https://zulip.com/help/keyboard-shortcuts", diff --git a/lib/shortcuts/catalog.generated.ts b/lib/shortcuts/catalog.generated.ts index 19c4a7ca..aa90bf9d 100644 --- a/lib/shortcuts/catalog.generated.ts +++ b/lib/shortcuts/catalog.generated.ts @@ -38,7 +38,7 @@ export const shortcutAppCatalog = [ "windows", "macos" ], - "shortcutCount": 240 + "shortcutCount": 239 }, { "slug": "adobe-acrobat-pro", @@ -252,7 +252,7 @@ export const shortcutAppCatalog = [ }, { "slug": "arc-browser", - "name": "Arc Browser", + "name": "Arc", "category": "Web browser", "platforms": [ "windows", @@ -290,6 +290,16 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 75 }, + { + "slug": "fusion-360", + "name": "Autodesk Fusion", + "category": "CAD and engineering", + "platforms": [ + "windows", + "macos" + ], + "shortcutCount": 42 + }, { "slug": "autodesk-maya", "name": "Autodesk Maya", @@ -392,7 +402,7 @@ export const shortcutAppCatalog = [ }, { "slug": "brave", - "name": "Brave Browser", + "name": "Brave", "category": "Web browser", "platforms": [ "windows", @@ -515,6 +525,16 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 76 }, + { + "slug": "cubase", + "name": "Cubase", + "category": "Music production", + "platforms": [ + "windows", + "macos" + ], + "shortcutCount": 38 + }, { "slug": "cursor", "name": "Cursor", @@ -532,19 +552,21 @@ export const shortcutAppCatalog = [ "category": "Video editing", "platforms": [ "windows", - "macos" + "macos", + "linux" ], "shortcutCount": 11 }, { "slug": "davinci-resolve-fusion-page", - "name": "DaVinci Resolve Fusion Page", + "name": "DaVinci Resolve Fusion page", "category": "Compositing and motion graphics", "platforms": [ "windows", - "macos" + "macos", + "linux" ], - "shortcutCount": 8 + "shortcutCount": 10 }, { "slug": "dbeaver", @@ -583,13 +605,14 @@ export const shortcutAppCatalog = [ "category": "Communication", "platforms": [ "windows", - "macos" + "macos", + "linux" ], "shortcutCount": 24 }, { "slug": "draw-io-diagrams-net", - "name": "draw.io (diagrams.net)", + "name": "draw.io", "category": "Diagramming", "platforms": [ "windows", @@ -721,16 +744,6 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 43 }, - { - "slug": "fusion-360", - "name": "Fusion 360", - "category": "CAD and engineering", - "platforms": [ - "windows", - "macos" - ], - "shortcutCount": 42 - }, { "slug": "ghostty", "name": "Ghostty", @@ -747,6 +760,7 @@ export const shortcutAppCatalog = [ "category": "Image editor", "platforms": [ "windows", + "macos", "linux" ], "shortcutCount": 55 @@ -771,7 +785,7 @@ export const shortcutAppCatalog = [ "macos", "linux" ], - "shortcutCount": 8 + "shortcutCount": 6 }, { "slug": "github-desktop", @@ -816,6 +830,15 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 85 }, + { + "slug": "gnome", + "name": "GNOME", + "category": "Desktop environment", + "platforms": [ + "linux" + ], + "shortcutCount": 29 + }, { "slug": "emacs", "name": "GNU Emacs", @@ -975,6 +998,7 @@ export const shortcutAppCatalog = [ "category": "Vector editor", "platforms": [ "windows", + "macos", "linux" ], "shortcutCount": 50 @@ -1051,6 +1075,15 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 6 }, + { + "slug": "linux-kde-plasma", + "name": "KDE Plasma", + "category": "Desktop environment", + "platforms": [ + "linux" + ], + "shortcutCount": 49 + }, { "slug": "keynote", "name": "Keynote", @@ -1103,24 +1136,6 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 18 }, - { - "slug": "linux-kde-plasma", - "name": "Linux (KDE Plasma)", - "category": "Desktop environment", - "platforms": [ - "linux" - ], - "shortcutCount": 49 - }, - { - "slug": "gnome", - "name": "Linux GNOME", - "category": "Desktop environment", - "platforms": [ - "linux" - ], - "shortcutCount": 29 - }, { "slug": "logic-pro", "name": "Logic Pro", @@ -1233,7 +1248,7 @@ export const shortcutAppCatalog = [ { "slug": "microsoft-edge", "name": "Microsoft Edge", - "category": "Web browsers", + "category": "Web browser", "platforms": [ "windows", "macos" @@ -1663,7 +1678,7 @@ export const shortcutAppCatalog = [ "macos", "linux" ], - "shortcutCount": 10 + "shortcutCount": 7 }, { "slug": "rstudio", @@ -1806,16 +1821,6 @@ export const shortcutAppCatalog = [ ], "shortcutCount": 33 }, - { - "slug": "cubase", - "name": "Steinberg Cubase", - "category": "Music production", - "platforms": [ - "windows", - "macos" - ], - "shortcutCount": 38 - }, { "slug": "sublime-text", "name": "Sublime Text", @@ -1825,7 +1830,7 @@ export const shortcutAppCatalog = [ "macos", "linux" ], - "shortcutCount": 40 + "shortcutCount": 39 }, { "slug": "superhuman", @@ -1886,7 +1891,7 @@ export const shortcutAppCatalog = [ "platforms": [ "macos" ], - "shortcutCount": 41 + "shortcutCount": 53 }, { "slug": "tmux", @@ -2027,7 +2032,7 @@ export const shortcutAppCatalog = [ "platforms": [ "windows" ], - "shortcutCount": 29 + "shortcutCount": 28 }, { "slug": "windows-snipping-tool", @@ -2126,7 +2131,7 @@ export const shortcutAppCatalog = [ "windows", "macos" ], - "shortcutCount": 26 + "shortcutCount": 25 }, { "slug": "youtrack", @@ -2147,7 +2152,7 @@ export const shortcutAppCatalog = [ "windows", "macos" ], - "shortcutCount": 36 + "shortcutCount": 34 }, { "slug": "zbrush", @@ -2176,6 +2181,7 @@ export const shortcutAppCatalog = [ "category": "Web browser", "platforms": [ "windows", + "macos", "linux" ], "shortcutCount": 53 diff --git a/lib/shortcuts/types.ts b/lib/shortcuts/types.ts index f4442cc7..c481b802 100644 --- a/lib/shortcuts/types.ts +++ b/lib/shortcuts/types.ts @@ -44,7 +44,6 @@ export type AppShortcuts = { name: string; category: string; platforms: PlatformId[]; - intro: string; /** Version or setup context when it affects accuracy. */ versionContext: string | null; sourceUrl: string; diff --git a/lib/storage/raid.ts b/lib/storage/raid.ts index 17fc8570..f1bd8807 100644 --- a/lib/storage/raid.ts +++ b/lib/storage/raid.ts @@ -390,7 +390,7 @@ export function calculateRaidCapacity(input: RaidCalculatorInput): StorageCalcul driveCount: drives.length, minimumDriveCount: details.minimumDrives, rawCapacityBytes: capacityValue("Raw drive capacity", summary.totalCapacityBytes), - usableCapacityBytes: capacityValue("Theoretical usable capacity", usableCapacityBytes), + usableCapacityBytes: capacityValue("Usable capacity", usableCapacityBytes), redundancyBytes: capacityValue("Redundancy", redundancyBytes), sizeMismatchBytes: capacityValue("Unavailable from size mismatch", sizeMismatchBytes), unavailableCapacityBytes: capacityValue("Total unavailable capacity", unavailableCapacityBytes), diff --git a/lib/tool-catalogs.ts b/lib/tool-catalogs.ts index a5e6f3ba..980f1112 100644 --- a/lib/tool-catalogs.ts +++ b/lib/tool-catalogs.ts @@ -11,8 +11,6 @@ type CatalogContent = { card_description: string; page_id: number | string; title: string; - intro_markdown: string; - content_markdown: string | null; card_icon_key: string; card_art_key: string; display_order: number; @@ -50,7 +48,7 @@ export type PublishedToolCatalog = ToolCatalogSummary & { tools: ToolCatalogCard[]; }; -const catalogColumns = "card_name,card_description,page_id,title,intro_markdown,content_markdown,card_icon_key,card_art_key,display_order"; +const catalogColumns = "card_name,card_description,page_id,title,card_icon_key,card_art_key,display_order"; const pageColumns = "id,slug,page_family,label,meta_title,meta_description,is_published,is_indexable,row_created_at,published_at,updated_at,row_updated_at,cover_image_url,page_type,sitemap_priority"; const membershipColumns = "catalog_page_id,tool_page_id,catalog_rank,display_order"; const cardColumns = "page_id,card_name,card_description,card_icon_key,card_art_key"; @@ -91,7 +89,9 @@ export const getPublishedToolCatalogs = cache(unstable_cache(async (): Promise { const result = await getPool().query(` - select catalog.*, to_jsonb(page.*) as page, page.published_at, page.updated_at, + select catalog.page_id,catalog.title,catalog.card_name,catalog.card_description, + catalog.card_icon_key,catalog.card_art_key,catalog.display_order, + to_jsonb(page.*) as page,page.published_at,page.updated_at, count(tool_page.id)::integer as tool_count from public.stack127_catalog_pages catalog join public.stack127_pages page on page.id = catalog.page_id diff --git a/lib/tool-pages.ts b/lib/tool-pages.ts index 343284e7..d7e7db89 100644 --- a/lib/tool-pages.ts +++ b/lib/tool-pages.ts @@ -12,9 +12,6 @@ export type Stack127ToolPage = { title: string; card_name: string; card_description: string; - intro_markdown: string; - usage_markdown: string | null; - content_markdown: string; tool_version: string; tool_version_updated_at: Date | string; stack127_repo_url: string | null; @@ -32,9 +29,6 @@ const toolContentColumns = [ "title", "card_name", "card_description", - "intro_markdown", - "usage_markdown", - "content_markdown", "tool_version", "tool_version_updated_at", "stack127_repo_url", @@ -70,9 +64,6 @@ export const getPublishedToolPage = cache(async (slug: string) => unstable_cache tool.title, tool.card_name, tool.card_description, - tool.intro_markdown, - tool.usage_markdown, - tool.content_markdown, tool.tool_version, tool.tool_version_updated_at, tool.stack127_repo_url, diff --git a/lib/zigbee-devices/data/devices.json b/lib/zigbee-devices/data/devices.json index 29b91bea..786aba2b 100644 --- a/lib/zigbee-devices/data/devices.json +++ b/lib/zigbee-devices/data/devices.json @@ -19953,7 +19953,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -20009,7 +20009,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -20078,7 +20078,7 @@ "url": "https://zigbee.blakadder.com/Alecto_SMART-DOOR10.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Alecto_SMART-DOOR10.html" }, @@ -20279,7 +20279,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -20335,7 +20335,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -20404,7 +20404,7 @@ "url": "https://zigbee.blakadder.com/Alecto_SMART-MOTION10.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Alecto_SMART-MOTION10.html" }, @@ -20593,7 +20593,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -20649,7 +20649,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -20718,7 +20718,7 @@ "url": "https://zigbee.blakadder.com/Alecto_SMART-TEMP10.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Alecto_SMART-TEMP10.html" }, @@ -81009,7 +81009,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -81065,7 +81065,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -81134,7 +81134,7 @@ "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS8.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS8.html" }, @@ -175650,7 +175650,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -175706,7 +175706,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -175775,7 +175775,7 @@ "url": "https://zigbee.blakadder.com/essentials_120102.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/essentials_120102.html" }, @@ -244055,7 +244055,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -244111,7 +244111,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -244180,7 +244180,7 @@ "url": "https://zigbee.blakadder.com/Hihome_WZB-PIR.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hihome_WZB-PIR.html" }, @@ -244215,7 +244215,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -244275,7 +244275,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -244349,7 +244349,7 @@ "url": "https://zigbee.blakadder.com/Hihome_WZB-SDS.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hihome_WZB-SDS.html" }, @@ -244384,7 +244384,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -244440,7 +244440,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -244509,7 +244509,7 @@ "url": "https://zigbee.blakadder.com/Hihome_WZB-STH.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hihome_WZB-STH.html" }, @@ -256002,7 +256002,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + sz2m" + "value": "ZHA + Unverified platform" }, "facts": [ { @@ -256046,8 +256046,8 @@ "value": "Support record available" }, { - "label": "sz2m", - "value": "Support record available" + "label": "Unverified platform", + "value": "Source platform code could not be mapped" } ], "heading": "Platform compatibility" @@ -256100,7 +256100,7 @@ "url": "https://zigbee.blakadder.com/HomCloud_XH-TVZ.html" }, { - "field": "sz2m", + "field": "Unverified platform", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/HomCloud_XH-TVZ.html" }, @@ -262747,7 +262747,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + 24d" + "value": "Zigbee2MQTT + Unverified platform" }, "facts": [ { @@ -262791,8 +262791,8 @@ "value": "Support record available" }, { - "label": "24d", - "value": "Support record available" + "label": "Unverified platform", + "value": "Source platform code could not be mapped" } ], "heading": "Platform compatibility" @@ -262845,7 +262845,7 @@ "url": "https://zigbee.blakadder.com/iAlarm_SR01.html" }, { - "field": "24d", + "field": "Unverified platform", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/iAlarm_SR01.html" }, @@ -285402,7 +285402,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + ihost + deCONZ" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost + deCONZ" }, "facts": [ { @@ -285450,7 +285450,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" }, { @@ -285513,7 +285513,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED2005R5.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED2005R5.html" }, @@ -374984,7 +374984,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "zigbee2mqtt" + "value": "Zigbee2MQTT" }, "facts": [ { @@ -375024,7 +375024,7 @@ { "facts": [ { - "label": "zigbee2mqtt", + "label": "Zigbee2MQTT", "value": "Support record available" } ], @@ -375073,7 +375073,7 @@ "url": "https://zigbee.blakadder.com/Lidl_HG08130C.html" }, { - "field": "zigbee2mqtt", + "field": "Zigbee2MQTT", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG08130C.html" }, @@ -424358,7 +424358,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -424414,7 +424414,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -424483,7 +424483,7 @@ "url": "https://zigbee.blakadder.com/Moes_ZSS-X-TH-C.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZSS-X-TH-C.html" }, @@ -429150,7 +429150,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -429210,7 +429210,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -429284,7 +429284,7 @@ "url": "https://zigbee.blakadder.com/Moes_ZB-XGM.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZB-XGM.html" }, @@ -439182,7 +439182,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -439242,7 +439242,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -439316,7 +439316,7 @@ "url": "https://zigbee.blakadder.com/Moes_ZSS-X-PIRL-C.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZSS-X-PIRL-C.html" }, @@ -466006,7 +466006,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -466062,7 +466062,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -466131,7 +466131,7 @@ "url": "https://zigbee.blakadder.com/Nedis_ZBSD10WT.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Nedis_ZBSD10WT.html" }, @@ -467219,7 +467219,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + ihost" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -467279,7 +467279,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -467353,7 +467353,7 @@ "url": "https://zigbee.blakadder.com/Neo_NAS-DS07B0.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Neo_NAS-DS07B0.html" }, @@ -670796,7 +670796,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -670852,7 +670852,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -670921,7 +670921,7 @@ "url": "https://zigbee.blakadder.com/Rehent_RH-ZMS1.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Rehent_RH-ZMS1.html" }, @@ -670955,7 +670955,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -671011,7 +671011,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -671080,7 +671080,7 @@ "url": "https://zigbee.blakadder.com/Rehent_RH-ZMS2.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Rehent_RH-ZMS2.html" }, @@ -671114,7 +671114,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -671170,7 +671170,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -671239,7 +671239,7 @@ "url": "https://zigbee.blakadder.com/Rehent_RH-ZTH1.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Rehent_RH-ZTH1.html" }, @@ -760866,7 +760866,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -760918,7 +760918,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -760982,7 +760982,7 @@ "url": "https://zigbee.blakadder.com/Sonoff_S31ZB.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Sonoff_S31ZB.html" }, @@ -761015,7 +761015,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + Tasmota + ihost" + "value": "ZHA + Zigbee2MQTT + Tasmota + SONOFF iHost" }, "facts": [ { @@ -761067,7 +761067,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -761131,7 +761131,7 @@ "url": "https://zigbee.blakadder.com/Sonoff_S40ZBTPB_Lite.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Sonoff_S40ZBTPB_Lite.html" }, @@ -786160,7 +786160,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deconz.zha" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -786208,7 +786208,11 @@ "value": "Support record available" }, { - "label": "deconz.zha", + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ZHA", "value": "Support record available" } ], @@ -786267,7 +786271,12 @@ "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9101SAC-HP-Switch.html" }, { - "field": "deconz.zha", + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9101SAC-HP-Switch.html" + }, + { + "field": "ZHA", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9101SAC-HP-Switch.html" }, @@ -904543,7 +904552,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ihost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -904599,7 +904608,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -904668,7 +904677,7 @@ "url": "https://zigbee.blakadder.com/Tuya_ZXZTH.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_ZXZTH.html" }, @@ -963217,7 +963226,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + ihost" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -963273,7 +963282,7 @@ "value": "Support record available" }, { - "label": "ihost", + "label": "SONOFF iHost", "value": "Support record available" } ], @@ -963342,7 +963351,7 @@ "url": "https://zigbee.blakadder.com/Zemismart_ZXZPIR.html" }, { - "field": "ihost", + "field": "SONOFF iHost", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZXZPIR.html" }, diff --git a/package.json b/package.json index a17fab5b..9247101d 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "stack127:repo:dataset:export": "node scripts/stack127/repos/export-dataset.mjs", "stack127:repo:dataset:sync": "node scripts/stack127/repos/sync-dataset-repo.mjs", "stack127:repo:tool:new": "node scripts/stack127/repos/create-tool-repo.mjs", - "stack127:tool-page:content:update": "node scripts/stack127/tool-pages/update-content.mjs", "stack127:tools:publish": "node scripts/stack127/tool-pages/publish.mjs", "stack127:directories:publish": "node scripts/stack127/directory-pages/publish.mjs", "stack127:tool-page:catalogs:update": "node scripts/stack127/tool-pages/update-catalogs.mjs", diff --git a/scripts/ad-networks/sync-page-copy.mjs b/scripts/ad-networks/sync-page-copy.mjs deleted file mode 100644 index 343cb367..00000000 --- a/scripts/ad-networks/sync-page-copy.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { parseArgs, runMutation, printResult } from '../stack127/tool-pages/lib.mjs'; -import { adNetworkPageCopy, insertDirectoryPageIfMissing } from '../stack127/directory-pages/lib.mjs'; - -printResult(await runMutation(parseArgs(), async client => { - const networks = (await client.query(`select network.name,network.slug,network.summary - from public.ad_networks network join public.stack127_pages page - on page.slug='ad-networks/' || network.slug and page.page_family='directory' - order by network.slug`)).rows; - let changed = 0; - for (const network of networks) changed += await insertDirectoryPageIfMissing(client, adNetworkPageCopy(network)); - return { pages: networks.length, changed }; -})); diff --git a/scripts/arpu-arpa-calculator/preview-local-page.mjs b/scripts/arpu-arpa-calculator/preview-local-page.mjs deleted file mode 100644 index 45d417a6..00000000 --- a/scripts/arpu-arpa-calculator/preview-local-page.mjs +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "arpu-arpa-calculator", - title: "ARPU / ARPA calculator", - metaTitle: "Development preview: ARPU / ARPA calculator", - metaDescription: "Temporary development preview for the ARPU / ARPA calculator.", - intro: "Development preview placeholder. Calculate net revenue per active user for a named reporting window or monthly recurring revenue per paying account at month end.", - content: "Development preview content placeholder. This temporary row exists to review the interactive calculator. The writing stage will replace this text before production publication.", -}; - -function fail(message) { - throw new Error("ARPU / ARPA preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development ARPU / ARPA preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development ARPU / ARPA preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/arpu-arpa-calculator/scripts.json b/scripts/arpu-arpa-calculator/scripts.json deleted file mode 100644 index 8d08f1c9..00000000 --- a/scripts/arpu-arpa-calculator/scripts.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "file": "preview-local-page.mjs", - "purpose": "Creates the guarded managed-development placeholder row for route review." - } -] diff --git a/scripts/arr-calculator/preview-local-page.mjs b/scripts/arr-calculator/preview-local-page.mjs deleted file mode 100644 index 420a8f12..00000000 --- a/scripts/arr-calculator/preview-local-page.mjs +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "arr-calculator", - title: "ARR calculator", - metaTitle: "Development preview: ARR calculator", - metaDescription: "Temporary development preview for the ARR calculator.", - intro: "Development preview placeholder. Enter monthly-normalized MRR to calculate its annualized run rate.", - content: "Development preview content placeholder. This temporary row exists to review the ARR calculator. The writing stage will replace it before production publication.", -}; - -function fail(message) { - throw new Error("ARR calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development ARR calculator preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development ARR calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/arr-calculator/scripts.json b/scripts/arr-calculator/scripts.json deleted file mode 100644 index 8d08f1c9..00000000 --- a/scripts/arr-calculator/scripts.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "file": "preview-local-page.mjs", - "purpose": "Creates the guarded managed-development placeholder row for route review." - } -] diff --git a/scripts/burn-multiple-calculator/preview-local-page.mjs b/scripts/burn-multiple-calculator/preview-local-page.mjs deleted file mode 100644 index 7d824586..00000000 --- a/scripts/burn-multiple-calculator/preview-local-page.mjs +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - slug: "burn-multiple-calculator", - title: "Burn multiple calculator", - metaTitle: "Development preview: Burn multiple calculator", - metaDescription: "Temporary development preview for the burn multiple calculator.", - intro: "Development preview placeholder. Enter net cash burn and net new ARR for one reporting period to calculate the burn multiple.", - content: "Development preview content placeholder. This temporary copy exists to review the Burn Multiple calculator. The writing stage will replace it before publication.", -}; - -function fail(message) { - throw new Error("Burn multiple calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development Burn multiple calculator preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development Burn multiple calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/customer-churn-calculator/preview-local-page.mjs b/scripts/customer-churn-calculator/preview-local-page.mjs deleted file mode 100644 index 410cce8a..00000000 --- a/scripts/customer-churn-calculator/preview-local-page.mjs +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "customer-churn-calculator", - title: "Customer churn calculator", - metaTitle: "Development preview: Customer churn calculator", - metaDescription: "Temporary development preview for the Customer Churn Calculator.", - intro: "Development preview placeholder. Enter the opening paying-account count and the number of those accounts still lost at the end of one reporting period.", - content: "Development preview content placeholder. This temporary copy supports local review of the calculator. Replace it with reviewed page content before production publication.", - artKey: "customer-churn-calculator", -}; - -function fail(message) { - throw new Error("Customer churn preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`) { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== `${DEVELOPMENT_PROJECT_REF}.supabase.co`) { - fail("Refusing a Supabase project other than the managed development project."); - } - - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.usage_markdown === null - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0" - && row.card_art_key === PREVIEW.artKey; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.usage_markdown, tool.content_markdown, tool.tool_version, tool.card_art_key - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development Customer Churn Calculator preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, usage_markdown, content_markdown, - tool_version, tool_version_updated_at, card_art_key - ) values ($1, $2, $3, null, $4, '1.0.0', now(), $5)`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content, PREVIEW.artKey], - ); - await pool.query("commit"); - console.log("Added the managed-development Customer Churn Calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/docker-compose-checker/preview-local-page.mjs b/scripts/docker-compose-checker/preview-local-page.mjs deleted file mode 100644 index 74c93820..00000000 --- a/scripts/docker-compose-checker/preview-local-page.mjs +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "phhrfvmncpqqmmgruktx"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PRODUCTION_DATABASE_HOST = `db.${PRODUCTION_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "docker-compose-checker", - label: "Docker Compose checker", - title: "Docker Compose checker", - description: "Check one pasted Compose file for YAML, Compose structure, and static clues.", - pageType: "WebApplication", - priority: 0.5, - intro: "Check one pasted Compose file locally.", - content: "Preview route for the interactive checker.", -}; -const remove = process.argv.includes("--remove"); - -function fail(message) { - throw new Error(`Docker Compose preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - const database = new URL(process.env.DATABASE_URL); - if (database.hostname === PRODUCTION_DATABASE_HOST || database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -function matchesPage(row) { - return row - && row.slug === PREVIEW.slug - && row.label === PREVIEW.label - && row.meta_title === PREVIEW.title - && row.meta_description === PREVIEW.description - && row.is_published === true - && row.page_type === PREVIEW.pageType; -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15_000, idleTimeoutMillis: 10_000, max: 1, query_timeout: 15_000 }); -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.label, page.meta_title, page.meta_description, page.is_published, page.page_type, - tool.title as tool_title, tool.intro_markdown, tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - if (remove) { - const row = existing.rows[0]; - if (!row || !matchesPage(row) || row.tool_title !== PREVIEW.title || row.intro_markdown !== PREVIEW.intro || row.content_markdown !== PREVIEW.content || row.tool_version !== "1.0.0") fail("the preview row does not match the guarded contract."); - await pool.query("delete from public.stack127_pages where id = $1", [row.id]); - await pool.query("commit"); - console.log("Removed the temporary managed-development Docker Compose checker preview row."); - } else { - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, $5, $6, 'tool') returning id`, - [PREVIEW.slug, PREVIEW.label, PREVIEW.title, PREVIEW.description, PREVIEW.pageType, PREVIEW.priority], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the temporary managed-development Docker Compose checker preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/docker-compose-checker/scripts.json b/scripts/docker-compose-checker/scripts.json deleted file mode 100644 index 01a6a5a7..00000000 --- a/scripts/docker-compose-checker/scripts.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "file": "preview-local-page.mjs", - "purpose": "Adds or removes the guarded managed-development preview row." - } -] diff --git a/scripts/kdp-backend-keywords-builder/preview-local-page.mjs b/scripts/kdp-backend-keywords-builder/preview-local-page.mjs deleted file mode 100644 index e4ab8e8d..00000000 --- a/scripts/kdp-backend-keywords-builder/preview-local-page.mjs +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - "slug": "kdp-backend-keywords-builder", - "title": "KDP backend keywords builder", - "description": "Development preview placeholder for organizing author-supplied phrases into seven KDP keyword fields.", - "intro": "[Development preview placeholder. Final introduction awaits the writing stage.]", - "content": "## Development preview placeholder\nReplace this content during the writing stage." -}; - -function fail(message) { - throw new Error(`kdp-backend-keywords-builder preview: ${message}`); -} - -function databaseUrl() { - const connectionString = process.env.DATABASE_POOLER_URL || process.env.DATABASE_URL; - if (!connectionString) fail("DATABASE_POOLER_URL or DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== `${DEVELOPMENT_PROJECT_REF}.supabase.co`) fail("Refusing a Supabase API outside the managed development project."); - const database = new URL(connectionString); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - const direct = database.hostname === `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; - const pooler = database.hostname.endsWith(".pooler.supabase.com") - && decodeURIComponent(database.username) === `postgres.${DEVELOPMENT_PROJECT_REF}`; - if (!direct && !pooler) fail("Refusing a database outside the managed development project or its project-scoped pooler."); - return connectionString; -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15000, idleTimeoutMillis: 10000, max: 1, query_timeout: 15000 }); -try { - await pool.query("begin"); - const existing = await pool.query("select slug from public.stack127_pages where slug = $1 limit 1", [PREVIEW.slug]); - if (existing.rowCount) fail("a registry row already exists; refusing to overwrite it."); - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development preview row; it contains only marked placeholder copy."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-book-description-formatter/preview-local-page.mjs b/scripts/kdp-book-description-formatter/preview-local-page.mjs deleted file mode 100644 index fddb136c..00000000 --- a/scripts/kdp-book-description-formatter/preview-local-page.mjs +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - "slug": "kdp-book-description-formatter", - "title": "KDP book description formatter", - "description": "Development preview placeholder for formatting description text into KDP HTML.", - "intro": "[Development preview placeholder. Final introduction awaits the writing stage.]", - "content": "## Development preview placeholder\nReplace this content during the writing stage." -}; - -function fail(message) { - throw new Error(`kdp-book-description-formatter preview: ${message}`); -} - -function databaseUrl() { - const connectionString = process.env.DATABASE_POOLER_URL || process.env.DATABASE_URL; - if (!connectionString) fail("DATABASE_POOLER_URL or DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== `${DEVELOPMENT_PROJECT_REF}.supabase.co`) fail("Refusing a Supabase API outside the managed development project."); - const database = new URL(connectionString); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - const direct = database.hostname === `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; - const pooler = database.hostname.endsWith(".pooler.supabase.com") - && decodeURIComponent(database.username) === `postgres.${DEVELOPMENT_PROJECT_REF}`; - if (!direct && !pooler) fail("Refusing a database outside the managed development project or its project-scoped pooler."); - return connectionString; -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15000, idleTimeoutMillis: 10000, max: 1, query_timeout: 15000 }); -try { - await pool.query("begin"); - const existing = await pool.query("select slug from public.stack127_pages where slug = $1 limit 1", [PREVIEW.slug]); - if (existing.rowCount) fail("a registry row already exists; refusing to overwrite it."); - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development preview row; it contains only marked placeholder copy."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-book-title-analyzer/preview-local-page.mjs b/scripts/kdp-book-title-analyzer/preview-local-page.mjs deleted file mode 100644 index 2a105883..00000000 --- a/scripts/kdp-book-title-analyzer/preview-local-page.mjs +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - "slug": "kdp-book-title-analyzer", - "title": "KDP book title analyzer", - "description": "Development preview placeholder for comparing a title draft with author-supplied book context.", - "intro": "[Development preview placeholder. Final introduction awaits the writing stage.]", - "content": "## Development preview placeholder\nReplace this content during the writing stage." -}; - -function fail(message) { - throw new Error(`kdp-book-title-analyzer preview: ${message}`); -} - -function databaseUrl() { - const connectionString = process.env.DATABASE_POOLER_URL || process.env.DATABASE_URL; - if (!connectionString) fail("DATABASE_POOLER_URL or DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== `${DEVELOPMENT_PROJECT_REF}.supabase.co`) fail("Refusing a Supabase API outside the managed development project."); - const database = new URL(connectionString); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - const direct = database.hostname === `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; - const pooler = database.hostname.endsWith(".pooler.supabase.com") - && decodeURIComponent(database.username) === `postgres.${DEVELOPMENT_PROJECT_REF}`; - if (!direct && !pooler) fail("Refusing a database outside the managed development project or its project-scoped pooler."); - return connectionString; -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15000, idleTimeoutMillis: 10000, max: 1, query_timeout: 15000 }); -try { - await pool.query("begin"); - const existing = await pool.query("select slug from public.stack127_pages where slug = $1 limit 1", [PREVIEW.slug]); - if (existing.rowCount) fail("a registry row already exists; refusing to overwrite it."); - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development preview row; it contains only marked placeholder copy."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-break-even-acos-calculator/preview-local-page.mjs b/scripts/kdp-break-even-acos-calculator/preview-local-page.mjs deleted file mode 100644 index b8e84893..00000000 --- a/scripts/kdp-break-even-acos-calculator/preview-local-page.mjs +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "kdp-break-even-acos-calculator", - title: "KDP Break-Even ACoS Calculator", - description: "Development preview placeholder for checking an Amazon Ads CPC against KDP royalty and a per-sale target.", - intro: "[Development preview placeholder. Final introduction awaits the writing stage.]", - content: "## Development preview placeholder\nReplace this content during the writing stage.", -}; - -function fail(message) { - throw new Error(`KDP break-even ACoS calculator preview: ${message}`); -} - -function databaseUrl() { - const connectionString = process.env.DATABASE_POOLER_URL || process.env.DATABASE_URL; - if (!connectionString) fail("DATABASE_URL or DATABASE_POOLER_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(connectionString); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - const isDevelopmentDirect = database.hostname === DEVELOPMENT_DATABASE_HOST; - const isDevelopmentPooler = database.hostname.endsWith(".pooler.supabase.com") - && decodeURIComponent(database.username) === `postgres.${DEVELOPMENT_PROJECT_REF}`; - if (!isDevelopmentDirect && !isDevelopmentPooler) { - fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST} or its project-scoped session pooler.`); - } - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return connectionString; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - "select slug from public.stack127_pages where slug = $1 limit 1", - [PREVIEW.slug], - ); - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development KDP break-even ACoS calculator preview row."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-minimum-list-price-calculator/preview-local-page.mjs b/scripts/kdp-minimum-list-price-calculator/preview-local-page.mjs deleted file mode 100644 index ceabb560..00000000 --- a/scripts/kdp-minimum-list-price-calculator/preview-local-page.mjs +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "kdp-minimum-list-price-calculator", - title: "KDP Minimum List Price Calculator", - description: "Development preview placeholder for a KDP minimum list price estimate.", - intro: "[Development preview placeholder. Final introduction awaits the writing stage.]", - content: "## Development preview placeholder\nReplace this content during the writing stage.", -}; - -function fail(message) { - throw new Error(`KDP minimum list price preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - "select slug from public.stack127_pages where slug = $1 limit 1", - [PREVIEW.slug], - ); - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development KDP minimum list price calculator preview row."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-payment-date-calculator/preview-local-page.mjs b/scripts/kdp-payment-date-calculator/preview-local-page.mjs deleted file mode 100644 index 8f30927f..00000000 --- a/scripts/kdp-payment-date-calculator/preview-local-page.mjs +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "phhrfvmncpqqmmgruktx"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "kdp-payment-date-calculator", - title: "KDP payment date calculator", - description: "Development preview placeholder for a KDP payment month estimate.", - intro: "[Development preview placeholder. Final introduction awaits the writing stage.]", - content: "## Development preview placeholder\nReplace this content during the writing stage.", -}; - -function fail(message) { - throw new Error(`KDP payment date preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - "select slug from public.stack127_pages where slug = $1 limit 1", - [PREVIEW.slug], - ); - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development KDP payment date calculator preview row."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-price-profit-calculator/preview-local-page.mjs b/scripts/kdp-price-profit-calculator/preview-local-page.mjs deleted file mode 100644 index 21282479..00000000 --- a/scripts/kdp-price-profit-calculator/preview-local-page.mjs +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "kdp-price-profit-calculator", - title: "KDP Price & Profit Calculator", - description: "Development preview placeholder for a KDP print price and profit comparison.", - intro: "[Development preview placeholder. Final introduction awaits the writing stage.]", - content: "## Development preview placeholder\nReplace this content during the writing stage.", -}; - -function fail(message) { - throw new Error(`KDP price and profit calculator preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - "select slug from public.stack127_pages where slug = $1 limit 1", - [PREVIEW.slug], - ); - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development KDP price and profit calculator preview row."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kdp-tools/preview-local-pages.mjs b/scripts/kdp-tools/preview-local-pages.mjs deleted file mode 100644 index b8229bb2..00000000 --- a/scripts/kdp-tools/preview-local-pages.mjs +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "phhrfvmncpqqmmgruktx"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PRODUCTION_DATABASE_HOST = `db.${PRODUCTION_PROJECT_REF}.supabase.co`; -const INITIAL_TOOL_VERSION = "1.0.0"; -const CURRENT_TOOL_VERSION = "1.1.0"; -const PREVIEWS = [ - { - slug: "kdp-book-setup-calculator", - title: "KDP book setup calculator", - description: "Calculate trim, bleed, margins, spine, and cover dimensions for a KDP book.", - intro: "Calculate a KDP print setup locally.", - content: "Choose a binding, trim, paper, page count, and bleed setting. The calculator returns the interior page size, margins, spine, and full cover dimensions. Hardcover cover values are estimates and need a final check with KDP.", - }, - { - slug: "kdp-metadata-checker", - title: "KDP metadata checker", - description: "Check KDP title, description, HTML, and keyword fields before upload.", - intro: "Check KDP listing fields locally.", - content: "Paste existing title, subtitle, description, and keyword fields into the checker. It counts the raw fields, checks the documented description tags, and flags patterns that need a human review. It does not write listing copy.", - }, - { - slug: "kdp-royalty-calculator", - title: "KDP royalty calculator", - description: "Estimate KDP print and ebook royalties from current US Amazon.com rules.", - intro: "Estimate KDP royalty per sale.", - content: "Select paperback, hardcover, or Kindle ebook and enter the price and format details. The planner shows cost, effective royalty, a price comparison, break-even ad headroom, and copies for an optional monthly target. It covers US Amazon.com and excludes Expanded Distribution.", - }, - { - slug: "kdp-pdf-preflight-checker", - title: "KDP PDF preflight checker", - description: "Inspect a PDF locally for dimensions, boxes, fonts, and possible KDP issues.", - intro: "Inspect a KDP PDF in this browser.", - content: "Choose the expected interior or cover setup and select a PDF. The first pass checks page dimensions, mixed sizes, page count, box names, fonts, images, and encryption without uploading the file. Findings are possible issues, not an acceptance decision.", - }, - { - slug: "kdp-image-dpi-checker", - title: "KDP image DPI checker", - description: "Check a JPEG or PNG image's effective resolution at its planned print size.", - intro: "Development preview placeholder. Check an image's pixels against its planned print size in this browser.", - content: "Development preview content placeholder. This checker reads one JPEG or PNG locally, reports its oriented pixel dimensions and stored density, and calculates effective DPI from the print size you enter. Final page copy will replace this placeholder before production publication.", - }, - { - slug: "kdp-page-count-estimator", - title: "KDP page count estimator", - description: "Estimate a likely KDP page range from words and layout choices.", - intro: "Estimate a likely KDP page range.", - content: "Enter words, trim, typography, margins, chapter starts, image pages, and front or back matter. The result is an even-page range for planning. A final typeset PDF remains the source for the actual page count.", - }, -]; - -const remove = process.argv.includes("--remove"); -const requestedSlugIndex = process.argv.indexOf("--slug"); -const requestedSlug = requestedSlugIndex >= 0 ? process.argv[requestedSlugIndex + 1] : null; -const selectedPreviews = requestedSlug ? PREVIEWS.filter((preview) => preview.slug === requestedSlug) : PREVIEWS; - -function fail(message) { - throw new Error(`KDP preview: ${message}`); -} - -if (requestedSlug && selectedPreviews.length === 0) fail(`unknown preview slug: ${requestedSlug}`); - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - const database = new URL(process.env.DATABASE_URL); - if (database.hostname === PRODUCTION_DATABASE_HOST || database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -function matchesPage(row, preview) { - return row - && row.slug === preview.slug - && row.label === preview.title - && row.meta_title === preview.title - && row.meta_description === preview.description - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === preview.title - && row.intro_markdown === preview.intro - && row.content_markdown === preview.content - && [INITIAL_TOOL_VERSION, CURRENT_TOOL_VERSION].includes(row.tool_version); -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15_000, idleTimeoutMillis: 10_000, max: 1, query_timeout: 15_000 }); -try { - await pool.query("begin"); - for (const preview of selectedPreviews) { - const existing = await pool.query( - `select page.id, page.slug, page.label, page.meta_title, page.meta_description, page.is_published, page.page_type, - tool.title as tool_title, tool.intro_markdown, tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [preview.slug], - ); - if (remove) { - const row = existing.rows[0]; - if (!matchesPage(row, preview)) fail(`the ${preview.slug} preview row does not match the guarded contract.`); - await pool.query("delete from public.stack127_pages where id = $1", [row.id]); - } else { - if (existing.rows.length) { - if (matchesPage(existing.rows[0], preview)) continue; - fail(`a registry row already exists for ${preview.slug} and does not match this preview; refusing to overwrite it.`); - } - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') returning id`, - [preview.slug, preview.title, preview.title, preview.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, $5, now())`, - [page.rows[0].id, preview.title, preview.intro, preview.content, INITIAL_TOOL_VERSION], - ); - } - } - await pool.query("commit"); - console.log(remove ? "Removed the managed-development KDP preview rows." : "Added the managed-development KDP preview rows."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/kindle-unlimited-kenp-earnings-calculator/preview-local-page.mjs b/scripts/kindle-unlimited-kenp-earnings-calculator/preview-local-page.mjs deleted file mode 100644 index a68c68c6..00000000 --- a/scripts/kindle-unlimited-kenp-earnings-calculator/preview-local-page.mjs +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "kindle-unlimited-kenp-earnings-calculator", - title: "Kindle Unlimited KENP Earnings Calculator", - description: "Development preview placeholder for estimating Kindle Unlimited KENP earnings.", - intro: "[Development preview placeholder. Final introduction awaits the writing stage.]", - content: "## Development preview placeholder\nReplace this content during the writing stage.", -}; - -function fail(message) { - throw new Error(`Kindle Unlimited KENP earnings calculator preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - "select slug from public.stack127_pages where slug = $1 limit 1", - [PREVIEW.slug], - ); - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $2, $3, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.description], - ); - - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development Kindle Unlimited KENP earnings calculator preview row."); -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/mrr-calculator/preview-local-page.mjs b/scripts/mrr-calculator/preview-local-page.mjs deleted file mode 100644 index 9d694c8e..00000000 --- a/scripts/mrr-calculator/preview-local-page.mjs +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "mrr-calculator", - title: "MRR calculator", - metaTitle: "Development preview: MRR calculator", - metaDescription: "Temporary development preview for the MRR calculator.", - intro: "Development preview placeholder. Enter active subscription counts, recurring plan prices, and billing intervals to calculate MRR.", - content: "Development preview content placeholder. This temporary row exists to review the interactive MRR calculator. The writing stage will replace it before production publication.", -}; - -function fail(message) { - throw new Error("MRR calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development MRR calculator preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development MRR calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/mrr-calculator/scripts.json b/scripts/mrr-calculator/scripts.json deleted file mode 100644 index 8d08f1c9..00000000 --- a/scripts/mrr-calculator/scripts.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "file": "preview-local-page.mjs", - "purpose": "Creates the guarded managed-development placeholder row for route review." - } -] diff --git a/scripts/mrr-waterfall-calculator/preview-local-page.mjs b/scripts/mrr-waterfall-calculator/preview-local-page.mjs deleted file mode 100644 index d1671151..00000000 --- a/scripts/mrr-waterfall-calculator/preview-local-page.mjs +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "mrr-waterfall-calculator", - title: "MRR waterfall calculator", - metaTitle: "Development preview: MRR waterfall calculator", - metaDescription: "Temporary development preview for the MRR waterfall calculator.", - intro: "Development preview placeholder. Enter one reporting month's starting MRR and five categorized movements to calculate its ending MRR.", - content: "Development preview content placeholder. This temporary row exists to review the interactive MRR waterfall calculator. The writing stage will replace it before production publication.", - artKey: "mrr-waterfall-calculator", -}; - -function fail(message) { - throw new Error("MRR waterfall calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.usage_markdown === null - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0" - && row.card_art_key === PREVIEW.artKey; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); - -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.usage_markdown, tool.content_markdown, tool.tool_version, tool.card_art_key - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development MRR waterfall calculator preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.metaTitle, PREVIEW.metaDescription], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, usage_markdown, content_markdown, - tool_version, tool_version_updated_at, card_art_key - ) values ($1, $2, $3, null, $4, '1.0.0', now(), $5)`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content, PREVIEW.artKey], - ); - await pool.query("commit"); - console.log("Added the managed-development MRR waterfall calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/net-revenue-retention-calculator/preview-local-page.mjs b/scripts/net-revenue-retention-calculator/preview-local-page.mjs deleted file mode 100644 index 55b98d78..00000000 --- a/scripts/net-revenue-retention-calculator/preview-local-page.mjs +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "net-revenue-retention-calculator", - title: "Net Revenue Retention Calculator", - metaTitle: "Development preview: Net Revenue Retention Calculator", - metaDescription: "Temporary development preview for the Net Revenue Retention Calculator.", - intro: "Development preview placeholder. Enter one completed calendar month's opening cohort MRR and its expansion, reactivation, contraction, and churn to calculate NRR.", - content: "Development preview content placeholder. This temporary row exists to review the cohort retention calculator. The writing stage will replace this text before production publication.", - artKey: "net-revenue-retention-calculator", -}; - -function fail(message) { - throw new Error("Net Revenue Retention Calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.usage_markdown === null - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0" - && row.card_art_key === PREVIEW.artKey; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); -const selectExistingSql = [ - "select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description,", - " page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown,", - " tool.usage_markdown, tool.content_markdown, tool.tool_version, tool.card_art_key", - " from public.stack127_pages page", - " left join public.stack127_tool_pages tool on tool.page_id = page.id", - " where page.slug = $1", - " limit 1", -].join("\n"); -const insertPageSql = [ - "insert into public.stack127_pages (", - " slug, label, meta_title, meta_description, is_published, published_at, updated_at,", - " cover_image_url, page_type, sitemap_priority, page_family", - ") values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool')", - "returning id", -].join("\n"); -const insertToolSql = [ - "insert into public.stack127_tool_pages (", - " page_id, title, intro_markdown, usage_markdown, content_markdown,", - " tool_version, tool_version_updated_at, card_art_key", - ") values ($1, $2, $3, null, $4, '1.0.0', now(), $5)", -].join("\n"); - -try { - await pool.query("begin"); - const existing = await pool.query(selectExistingSql, [PREVIEW.slug]); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development Net Revenue Retention Calculator preview row already exists."); - } else { - const page = await pool.query(insertPageSql, [ - PREVIEW.slug, - PREVIEW.title, - PREVIEW.metaTitle, - PREVIEW.metaDescription, - ]); - await pool.query(insertToolSql, [ - page.rows[0].id, - PREVIEW.title, - PREVIEW.intro, - PREVIEW.content, - PREVIEW.artKey, - ]); - await pool.query("commit"); - console.log("Added the managed-development Net Revenue Retention Calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/platform-fees/sync-records.mjs b/scripts/platform-fees/sync-records.mjs index 5a1e4eca..dd60d02d 100644 --- a/scripts/platform-fees/sync-records.mjs +++ b/scripts/platform-fees/sync-records.mjs @@ -13,7 +13,7 @@ export async function syncPlatformFeeRecords(client,data) { export async function ensurePlatformFeePages(client) { const pages = [{slug:'platform-fees',name:'Platform fees'},...feeGroups.map(group=>({slug:groupPath(group.name).slice(1),name:group.name}))]; - // Initial copy is a starting point. Existing copy and SEO belong to the database. + // Insert missing titles and card fields. Page words live in MDX. for (const page of pages) { await client.query(`insert into public.stack127_pages (slug,page_family,label,meta_title,meta_description,is_published,page_type,sitemap_priority) @@ -22,8 +22,8 @@ export async function ensurePlatformFeePages(client) { const identity = (await client.query('select page_family from public.stack127_pages where slug=$1',[page.slug])).rows[0]; if (identity.page_family!=='directory') throw new Error(`Wrong page family: ${page.slug}`); await client.query(`insert into public.stack127_directory_pages - (page_id,title,intro_markdown,card_name,card_description) - select id,label,meta_description,label,meta_description from public.stack127_pages where slug=$1 + (page_id,title,card_name,card_description) + select id,label,label,meta_description from public.stack127_pages where slug=$1 on conflict(page_id) do nothing`,[page.slug]); } const slugs = pages.slice(1).map(page=>page.slug); diff --git a/scripts/revenue-churn-calculator/preview-local-page.mjs b/scripts/revenue-churn-calculator/preview-local-page.mjs deleted file mode 100644 index 8152f652..00000000 --- a/scripts/revenue-churn-calculator/preview-local-page.mjs +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PREVIEW = { - slug: "revenue-churn-calculator", - title: "Revenue Churn Calculator", - metaTitle: "Development preview: Revenue Churn Calculator", - metaDescription: "Temporary development preview for the Revenue Churn Calculator.", - intro: "Development preview placeholder. Enter one completed month's opening MRR and opening-customer cancellations and reductions to calculate gross revenue churn.", - content: "Development preview content placeholder. This temporary development row supports review of the opening-dollar attribution rule and zero-base behavior. The writing stage will replace it before production publication.", - artKey: "revenue-churn-calculator", -}; - -function fail(message) { - throw new Error("Revenue Churn Calculator preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing a production NODE_ENV."); - - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a database other than the managed development database."); - } - - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.metaTitle - && row.meta_description === PREVIEW.metaDescription - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.usage_markdown === null - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0" - && row.card_art_key === PREVIEW.artKey; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); -const selectExistingSql = [ - "select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description,", - " page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown,", - " tool.usage_markdown, tool.content_markdown, tool.tool_version, tool.card_art_key", - " from public.stack127_pages page", - " left join public.stack127_tool_pages tool on tool.page_id = page.id", - " where page.slug = $1", - " limit 1", -].join("\n"); -const insertPageSql = [ - "insert into public.stack127_pages (", - " slug, label, meta_title, meta_description, is_published, published_at, updated_at,", - " cover_image_url, page_type, sitemap_priority, page_family", - ") values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool')", - "returning id", -].join("\n"); -const insertToolSql = [ - "insert into public.stack127_tool_pages (", - " page_id, title, intro_markdown, usage_markdown, content_markdown,", - " tool_version, tool_version_updated_at, card_art_key", - ") values ($1, $2, $3, null, $4, '1.0.0', now(), $5)", -].join("\n"); - -try { - await pool.query("begin"); - const existing = await pool.query(selectExistingSql, [PREVIEW.slug]); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development Revenue Churn Calculator preview row already exists."); - } else { - const page = await pool.query(insertPageSql, [ - PREVIEW.slug, - PREVIEW.title, - PREVIEW.metaTitle, - PREVIEW.metaDescription, - ]); - await pool.query(insertToolSql, [ - page.rows[0].id, - PREVIEW.title, - PREVIEW.intro, - PREVIEW.content, - PREVIEW.artKey, - ]); - await pool.query("commit"); - console.log("Added the managed-development Revenue Churn Calculator preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/saas-gross-margin-calculator/preview-local-page.mjs b/scripts/saas-gross-margin-calculator/preview-local-page.mjs deleted file mode 100644 index f1e35d8b..00000000 --- a/scripts/saas-gross-margin-calculator/preview-local-page.mjs +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - slug: "saas-gross-margin-calculator", - title: "SaaS gross margin calculator", - description: "Development preview for a calculator that compares recognized SaaS revenue with service delivery costs.", - intro: "Development preview placeholder. Enter recognized revenue and delivery costs for the same reporting period and revenue scope.", - content: "Development preview content placeholder. This temporary development row supports review of the calculator. The writing stage will replace this text before any production publication.", -}; - -function fail(message) { - throw new Error("SaaS gross margin preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - fail("Refusing a database other than the managed development database."); - } - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.title - && row.meta_description === PREVIEW.description - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development SaaS gross margin preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.title, PREVIEW.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development SaaS gross margin preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/saas-metrics-calculator/preview-local-page.mjs b/scripts/saas-metrics-calculator/preview-local-page.mjs deleted file mode 100644 index 6bc0c421..00000000 --- a/scripts/saas-metrics-calculator/preview-local-page.mjs +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "yzasonowwlvritqicatj"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const PREVIEW = { - slug: "saas-metrics-calculator", - title: "SaaS metrics calculator", - description: "Calculate recurring revenue, retention, acquisition cost, margin, and burn efficiency from one month of SaaS figures.", - intro: "Development preview placeholder. Enter one SaaS reporting month to see its recurring-revenue and unit-economics snapshot.", - content: "Development preview content placeholder. This temporary row exists to review the interactive calculator. The writing stage will replace this text before any production publication.", -}; - -function fail(message) { - throw new Error("SaaS metrics preview: " + message); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - const database = new URL(process.env.DATABASE_URL); - if (database.hostname !== "db." + DEVELOPMENT_PROJECT_REF + ".supabase.co") { - if (database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - fail("Refusing a database other than the managed development database."); - } - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_PROJECT_REF + ".supabase.co") { - fail("Refusing a Supabase project other than the managed development project."); - } - return process.env.DATABASE_URL; -} - -function matchesPreview(row) { - return row - && row.slug === PREVIEW.slug - && row.page_family === "tool" - && row.label === PREVIEW.title - && row.meta_title === PREVIEW.title - && row.meta_description === PREVIEW.description - && row.is_published === true - && row.page_type === "WebApplication" - && row.tool_title === PREVIEW.title - && row.intro_markdown === PREVIEW.intro - && row.content_markdown === PREVIEW.content - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ - connectionString: databaseUrl(), - connectionTimeoutMillis: 15_000, - idleTimeoutMillis: 10_000, - max: 1, - query_timeout: 15_000, -}); -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.page_family, page.label, page.meta_title, page.meta_description, - page.is_published, page.page_type, tool.title as tool_title, tool.intro_markdown, - tool.content_markdown, tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - - if (existing.rows.length) { - if (!matchesPreview(existing.rows[0])) { - fail("a registry row already exists and does not match this preview; refusing to overwrite it."); - } - await pool.query("commit"); - console.log("The managed-development SaaS metrics preview row already exists."); - } else { - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, - cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, 'WebApplication', 0.5, 'tool') - returning id`, - [PREVIEW.slug, PREVIEW.title, PREVIEW.title, PREVIEW.description], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, - tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the managed-development SaaS metrics preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/saas-metrics-calculator/scripts.json b/scripts/saas-metrics-calculator/scripts.json deleted file mode 100644 index ac2c0f5a..00000000 --- a/scripts/saas-metrics-calculator/scripts.json +++ /dev/null @@ -1,7 +0,0 @@ - -[ - { - "file": "preview-local-page.mjs", - "purpose": "Creates the guarded managed-development placeholder row for route review." - } -] diff --git a/scripts/self-hosted-app-resource-planner/preview-local-page.mjs b/scripts/self-hosted-app-resource-planner/preview-local-page.mjs deleted file mode 100644 index a98d80e4..00000000 --- a/scripts/self-hosted-app-resource-planner/preview-local-page.mjs +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env node - -import pg from "pg"; - -const DEVELOPMENT_PROJECT_REF = "phhrfvmncpqqmmgruktx"; -const PRODUCTION_PROJECT_REF = "tulgfrqamtcshdtmhvpx"; -const DEVELOPMENT_DATABASE_HOST = `db.${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const DEVELOPMENT_API_HOST = `${DEVELOPMENT_PROJECT_REF}.supabase.co`; -const PRODUCTION_DATABASE_HOST = `db.${PRODUCTION_PROJECT_REF}.supabase.co`; -const PREVIEW = { - slug: "self-hosted-app-resource-planner", - label: "Self-hosted app resource planner", - title: "Self-hosted app resource planner", - description: "Estimate RAM and storage envelopes for a set of self-hosted apps.", - pageType: "WebApplication", - priority: 0.5, - intro: "Plan a self-hosted app mix locally.", - content: "Preview route for the interactive resource planner.", -}; -const remove = process.argv.includes("--remove"); - -function fail(message) { - throw new Error(`Self-hosted app resource planner preview: ${message}`); -} - -function databaseUrl() { - if (!process.env.DATABASE_URL) fail("DATABASE_URL is required. Run with --env-file=.env.local."); - if (process.env.NODE_ENV === "production") fail("Refusing production NODE_ENV."); - const database = new URL(process.env.DATABASE_URL); - if (database.hostname === PRODUCTION_DATABASE_HOST || database.hostname.includes(PRODUCTION_PROJECT_REF)) fail("Refusing the production database."); - if (database.hostname !== DEVELOPMENT_DATABASE_HOST) fail(`Refusing a database other than ${DEVELOPMENT_DATABASE_HOST}.`); - if (!process.env.SUPABASE_URL) fail("SUPABASE_URL is required."); - const api = new URL(process.env.SUPABASE_URL); - if (api.hostname !== DEVELOPMENT_API_HOST) fail(`Refusing a Supabase project other than ${DEVELOPMENT_API_HOST}.`); - return process.env.DATABASE_URL; -} - -function matchesPage(row) { - return row - && row.slug === PREVIEW.slug - && row.label === PREVIEW.label - && row.meta_title === PREVIEW.title - && row.meta_description === PREVIEW.description - && row.is_published === true - && row.page_type === PREVIEW.pageType - && row.tool_version === "1.0.0"; -} - -const pool = new pg.Pool({ connectionString: databaseUrl(), connectionTimeoutMillis: 15_000, idleTimeoutMillis: 10_000, max: 1, query_timeout: 15_000 }); -try { - await pool.query("begin"); - const existing = await pool.query( - `select page.id, page.slug, page.label, page.meta_title, page.meta_description, page.is_published, page.page_type, - tool.tool_version - from public.stack127_pages page - left join public.stack127_tool_pages tool on tool.page_id = page.id - where page.slug = $1 - limit 1`, - [PREVIEW.slug], - ); - if (remove) { - const row = existing.rows[0]; - if (!matchesPage(row)) fail("the preview row does not match the guarded contract."); - await pool.query("delete from public.stack127_pages where id = $1", [row.id]); - await pool.query("commit"); - console.log("Removed the temporary managed-development self-hosted app resource planner preview row."); - } else { - if (existing.rows.length) fail("a registry row already exists; refusing to overwrite it."); - const page = await pool.query( - `insert into public.stack127_pages ( - slug, label, meta_title, meta_description, is_published, published_at, updated_at, cover_image_url, page_type, sitemap_priority, page_family - ) values ($1, $2, $3, $4, true, now(), now(), null, $5, $6, 'tool') returning id`, - [PREVIEW.slug, PREVIEW.label, PREVIEW.title, PREVIEW.description, PREVIEW.pageType, PREVIEW.priority], - ); - await pool.query( - `insert into public.stack127_tool_pages ( - page_id, title, intro_markdown, content_markdown, tool_version, tool_version_updated_at - ) values ($1, $2, $3, $4, '1.0.0', now())`, - [page.rows[0].id, PREVIEW.title, PREVIEW.intro, PREVIEW.content], - ); - await pool.query("commit"); - console.log("Added the temporary managed-development self-hosted app resource planner preview row."); - } -} catch (error) { - await pool.query("rollback").catch(() => undefined); - throw error; -} finally { - await pool.end(); -} diff --git a/scripts/self-hosted-app-resource-planner/scripts.json b/scripts/self-hosted-app-resource-planner/scripts.json deleted file mode 100644 index 01a6a5a7..00000000 --- a/scripts/self-hosted-app-resource-planner/scripts.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "file": "preview-local-page.mjs", - "purpose": "Adds or removes the guarded managed-development preview row." - } -] diff --git a/scripts/stack127/content/export-page-content.mjs b/scripts/stack127/content/export-page-content.mjs index bb1e552c..50b1770f 100644 --- a/scripts/stack127/content/export-page-content.mjs +++ b/scripts/stack127/content/export-page-content.mjs @@ -5,6 +5,7 @@ import { pathToFileURL } from 'node:url'; import pg from 'pg'; import { resolveDatabaseUrl } from '../tool-pages/lib.mjs'; import { pageContentFiles } from './convert-markdown.mjs'; +import { routeMatches } from '../publishing/readiness.mjs'; export function parseExportArgs(argv) { const args = { environment: 'development' }; @@ -21,23 +22,30 @@ export function parseExportArgs(argv) { args[key] = value; } } - if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(args.slug ?? '')) throw new Error('--slug must be a flat page slug'); + if (!/^[a-z0-9]+(?:-[a-z0-9]+)*(?:\/[a-z0-9]+(?:-[a-z0-9]+)*)*$/.test(args.slug ?? '')) throw new Error('--slug must be a page slug'); if (!['development', 'production'].includes(args.environment)) throw new Error('--environment must be development or production'); return args; } -export async function findRouteFolder(slug, root = 'app/(site)') { +export async function findRouteFolder(slug, root = 'app/(site)', family) { const matches = []; + const group = { tool: '(tools)', directory: '(directories)', catalog: '(catalogs)' }[family]; async function walk(directory) { for (const entry of await readdir(directory, { withFileTypes: true })) { const file = path.join(directory, entry.name); if (entry.isDirectory()) await walk(file); - else if (entry.name === 'page.tsx' && path.basename(directory) === slug) matches.push(directory); + else if (entry.name === 'page.tsx') { + const relative = path.relative(root, file).split(path.sep).join('/'); + if ((!group || relative.startsWith(`${group}/`)) && routeMatches(`app/(site)/${relative}`, slug)) matches.push(directory); + } } } await walk(root); - if (matches.length !== 1) throw new Error(`Expected one page.tsx route for ${slug}; found ${matches.length}`); - return matches[0]; + // Next.js serves a literal route before a matching dynamic route. + const literal = matches.filter(directory => !path.relative(root, directory).includes('[')); + const candidates = literal.length ? literal : matches; + if (candidates.length !== 1) throw new Error(`Expected one page.tsx route for ${slug}; found ${candidates.length}`); + return candidates[0]; } export async function readPageContent(pool, slug) { @@ -46,10 +54,18 @@ export async function readPageContent(pool, slug) { await client.query('begin transaction isolation level repeatable read read only'); const page = (await client.query('select id, slug, page_family from public.stack127_pages where slug = $1', [slug])).rows[0]; if (!page) throw new Error(`Page not found in stack127_pages: ${slug}`); - const table = { tool: 'stack127_tool_pages', directory: 'stack127_directory_pages' }[page.page_family]; + const table = { tool: 'stack127_tool_pages', directory: 'stack127_directory_pages', catalog: 'stack127_catalog_pages' }[page.page_family]; if (!table) throw new Error(`Unsupported page family: ${page.page_family}`); const fields = `intro_markdown, content_markdown${page.page_family === 'tool' ? ', usage_markdown' : ''}`; - const content = (await client.query(`select ${fields} from public.${table} where page_id = $1`, [page.id])).rows[0]; + const hasLiveContent = (await client.query(`select exists ( + select 1 from information_schema.columns where table_schema='public' + and table_name=$1 and column_name='intro_markdown' + ) as present`, [table])).rows[0].present; + const content = hasLiveContent + ? (await client.query(`select ${fields} from public.${table} where page_id = $1`, [page.id])).rows[0] + : await client.query(`select column_name,value from public.stack127_retired_page_content + where page_id=$1 and table_name=$2`, [page.id, table]).then(({ rows }) => + rows.length ? Object.fromEntries(rows.map(row => [row.column_name, row.value])) : undefined); if (!content) throw new Error(`Content row not found for ${slug}`); await client.query('rollback'); return { ...page, ...content }; @@ -74,13 +90,14 @@ export async function writeContentFiles(files, directory, { force = false } = {} } export async function exportPageContent(args) { - const route = await findRouteFolder(args.slug); const pool = new pg.Pool({ connectionString: resolveDatabaseUrl(args), max: 1, connectionTimeoutMillis: 15000, query_timeout: 60000 }); let page; try { page = await readPageContent(pool, args.slug); } finally { await pool.end(); } + const route = await findRouteFolder(args.slug, 'app/(site)', page.page_family); const files = pageContentFiles(page); - const directory = args.out ? path.resolve(args.out) : path.join(route, 'content'); + const directory = args.out ? path.resolve(args.out) : path.join(route, 'content', + route.includes('[') ? args.slug.split('/').at(-1) : ''); return { slug: page.slug, family: page.page_family, environment: args.environment, files: await writeContentFiles(files, directory, args) }; } diff --git a/scripts/stack127/database/rebuild-development.mjs b/scripts/stack127/database/rebuild-development.mjs index 2fe84149..8449c528 100644 --- a/scripts/stack127/database/rebuild-development.mjs +++ b/scripts/stack127/database/rebuild-development.mjs @@ -7,17 +7,18 @@ import { isDeepStrictEqual, parseArgs, parseEnv } from 'node:util'; import pg from 'pg'; import { parse as parseConnectionString } from 'pg-connection-string'; -// Production may still have Release A columns while development has Release C. -// Require the current schema; never reconstruct missing content from retired fields. +// Development can contract columns before production. Keep titles and cards, +// and leave retired page words in each database's archive. const retiredPageColumns = { stack127_catalog_pages: { heading_before: 'text', heading_mark: 'text', heading_after: 'text', intro: 'text', section_heading: 'text', hero_art_key: 'text', home_order: 'int4', + intro_markdown: 'text', content_markdown: 'text', }, - stack127_tool_pages: { content_revision: 'int4' }, - stack127_directory_pages: { content_revision: 'int4' }, + stack127_tool_pages: { content_revision: 'int4', intro_markdown: 'text', usage_markdown: 'text', content_markdown: 'text' }, + stack127_directory_pages: { content_revision: 'int4', intro_markdown: 'text', content_markdown: 'text' }, }; -const catalogContentColumns = ['title', 'intro_markdown', 'content_markdown', +const catalogContentColumns = ['title', 'display_order', 'card_icon_key', 'card_art_key']; export function normalizeCardSnapshot(name, rows) { diff --git a/scripts/stack127/database/rebuild-development.test.mjs b/scripts/stack127/database/rebuild-development.test.mjs index 3e424736..945167a6 100644 --- a/scripts/stack127/database/rebuild-development.test.mjs +++ b/scripts/stack127/database/rebuild-development.test.mjs @@ -9,8 +9,8 @@ const rowsByTable = overrides => new Map(pageTables.map(name => [name, overrides function directoryRestore() { const sourcePage = { id: 1, slug: 'self-host-apps', page_family: 'directory', is_indexable: true, is_published: true }; const developmentPage = { id: 2, slug: 'development-directory', page_family: 'directory', is_indexable: true, is_published: true }; - const sourceCopy = { page_id: 1, title: 'Source directory', content_markdown: null, card_name: 'Source card', card_icon_key: 'self-host-apps', card_art_key: 'self-host-apps' }; - const savedCopy = { page_id: 2, title: 'Edited directory', content_markdown: 'Saved content.', card_name: 'Edited card', card_icon_key: 'terminal', card_art_key: 'labs' }; + const sourceCopy = { page_id: 1, title: 'Source directory', card_name: 'Source card', card_icon_key: 'self-host-apps', card_art_key: 'self-host-apps' }; + const savedCopy = { page_id: 2, title: 'Edited directory', card_name: 'Edited card', card_icon_key: 'terminal', card_art_key: 'labs' }; return { production: rowsByTable({ stack127_pages: [sourcePage], stack127_directory_pages: [sourceCopy] }), restored: rowsByTable({ stack127_pages: [{ ...sourcePage }, { ...developmentPage, id: 4 }], @@ -52,7 +52,7 @@ test('verification remaps tool, catalog, and mixed membership IDs through their const sourcePages = [{ id: 1, slug: 'source-tool', is_indexable: true }, { id: 2, slug: 'source-catalog', is_indexable: true }]; const extraPages = [{ id: 3, slug: 'development-tool', is_indexable: true }, { id: 4, slug: 'development-catalog', is_indexable: true }]; const tool = { page_id: 3, title: 'Saved tool', tool_version: '1.0.0' }; - const catalog = { page_id: 4, card_name: 'Saved catalog', content_markdown: null }; + const catalog = { page_id: 4, card_name: 'Saved catalog' }; const memberships = [ { catalog_page_id: 2, tool_page_id: 3, display_order: 1 }, { catalog_page_id: 4, tool_page_id: 1, display_order: 2 }, @@ -60,7 +60,7 @@ test('verification remaps tool, catalog, and mixed membership IDs through their ]; const production = rowsByTable({ stack127_pages: sourcePages, stack127_tool_pages: [{ page_id: 1, title: 'Source tool' }], - stack127_catalog_pages: [{ page_id: 2, card_name: 'Source catalog', content_markdown: null }], + stack127_catalog_pages: [{ page_id: 2, card_name: 'Source catalog' }], stack127_tool_catalog_memberships: [{ catalog_page_id: 2, tool_page_id: 1, display_order: 1 }], }); const restored = new Map([...production].map(([name, rows]) => [name, structuredClone(rows)])); @@ -150,10 +150,10 @@ test('restore verification detects a changed card icon or art after ID remapping const column = (column_name, udt_name = 'text') => ({ column_name, udt_name, data_type: udt_name === 'int4' ? 'integer' : udt_name === 'bool' ? 'boolean' : 'text' }); -const catalog = {page_id: 2, title: 'DNS tools', intro_markdown: 'Choose a tool.', - content_markdown: null, display_order: 10, card_icon_key: 'network', card_art_key: 'dns-tools', row_updated_at: 'original'}; +const catalog = {page_id: 2, title: 'DNS tools', + display_order: 10, card_icon_key: 'network', card_art_key: 'dns-tools', row_updated_at: 'original'}; const legacy = {heading_before: 'DNS ', heading_mark: 'tools', heading_after: '', intro: 'Choose a tool.', - section_heading: 'Choose a DNS check', home_order: 10, hero_art_key: 'dns-tools'}; + section_heading: 'Choose a DNS check', home_order: 10, hero_art_key: 'dns-tools', intro_markdown: 'Choose a tool.', content_markdown: null}; const columnsFor = row => Object.keys(row).map(key => column(key, ['page_id', 'display_order', 'home_order', 'content_revision'].includes(key) ? 'int4' : 'text')); test('recovery copies current production before and after the contract without changing copy or dates', () => { diff --git a/scripts/stack127/directory-pages/lib.mjs b/scripts/stack127/directory-pages/lib.mjs index 1f54d509..03494eec 100644 --- a/scripts/stack127/directory-pages/lib.mjs +++ b/scripts/stack127/directory-pages/lib.mjs @@ -1,42 +1,18 @@ export async function insertDirectoryPageIfMissing(client, row) { const result = await client.query(` insert into public.stack127_directory_pages - (page_id,title,intro_markdown,content_markdown,card_name,card_description) - select page.id,$2,$3,$4,coalesce($5,page.label),coalesce($6,page.meta_description) + (page_id,title,card_name,card_description) + select page.id,$2,coalesce($3,page.label),coalesce($4,page.meta_description) from public.stack127_pages page where page.slug=$1 and page.page_family='directory' on conflict (page_id) do nothing returning page_id - `, [row.slug, row.title, row.intro_markdown, row.content_markdown ?? null, - row.card_name ?? null, row.card_description ?? null]); - return result.rowCount; -} - -export async function upsertDirectoryPage(client, row) { - const result = await client.query(` - insert into public.stack127_directory_pages - (page_id,title,intro_markdown,content_markdown,card_name,card_description) - select page.id,$2,$3,$4,coalesce($5,current.card_name,page.label),coalesce($6,current.card_description,page.meta_description) - from public.stack127_pages page - left join public.stack127_directory_pages current on current.page_id=page.id - where page.slug=$1 and page.page_family='directory' - on conflict (page_id) do update set - title=excluded.title, intro_markdown=excluded.intro_markdown, - content_markdown=excluded.content_markdown, card_name=excluded.card_name, - card_description=excluded.card_description - where (stack127_directory_pages.title,stack127_directory_pages.intro_markdown, - stack127_directory_pages.content_markdown,stack127_directory_pages.card_name, - stack127_directory_pages.card_description) is distinct from - (excluded.title,excluded.intro_markdown,excluded.content_markdown, - excluded.card_name,excluded.card_description) - returning page_id - `, [row.slug, row.title, row.intro_markdown, row.content_markdown ?? null, - row.card_name ?? null, row.card_description ?? null]); + `, [row.slug, row.title, row.card_name ?? null, row.card_description ?? null]); return result.rowCount; } export async function previewDirectoryPages(pool, pages, { remove = false, refresh = false, dryRun = false, matchesRemoval } = {}) { - if (refresh) throw new Error('--refresh is retired; edit reviewed development fields with scripts/stack127/directory-pages/update-content.mjs'); + if (refresh) throw new Error('--refresh is retired; edit reviewed development fields with scripts/stack127/directory-pages/update-fields.mjs'); const client = await pool.connect(); try { await client.query('begin'); @@ -72,7 +48,7 @@ export async function previewDirectoryPages(pool, pages, { remove = false, refre } if (!row.has_directory_copy) { await insertDirectoryPageIfMissing(client, { - slug: page.slug, title: row.label, intro_markdown: row.meta_description, content_markdown: null, + slug: page.slug, title: row.label, }); } if (!row.is_published) await client.query(`update public.stack127_pages @@ -93,16 +69,5 @@ export function keyboardShortcutPageCopy(app) { return { slug: `keyboard-shortcuts/${app.slug}`, title: `${app.name} keyboard shortcuts`, - intro_markdown: `Find keyboard shortcuts for ${app.name}.`, - content_markdown: null, - }; -} - -export function adNetworkPageCopy(network) { - return { - slug: `ad-networks/${network.slug}`, - title: `${network.name} publisher websites`, - intro_markdown: `${network.summary ?? `Browse publisher websites with a verified ${network.name} relationship.`} A site can use more than one ad network.`, - content_markdown: 'A site appears here only when its current ads.txt or live configuration supports the stated relationship. A seller authorization alone does not establish active use.', }; } diff --git a/scripts/stack127/directory-pages/update-content.mjs b/scripts/stack127/directory-pages/update-fields.mjs similarity index 72% rename from scripts/stack127/directory-pages/update-content.mjs rename to scripts/stack127/directory-pages/update-fields.mjs index 952cf393..02264051 100644 --- a/scripts/stack127/directory-pages/update-content.mjs +++ b/scripts/stack127/directory-pages/update-fields.mjs @@ -1,7 +1,11 @@ -import { parseArgs, requireArg, readRequiredText, runMutation, printResult } from '../tool-pages/lib.mjs'; +import { parseArgs, requireArg, runMutation, printResult } from '../tool-pages/lib.mjs'; import { validateCardKey } from '../card-keys.mjs'; const args = parseArgs(); +const allowed = new Set(['slug', 'environment', 'apply', 'confirm', 'title', 'meta-title', 'meta-description', 'card-name', 'card-description', 'card-icon-key', 'card-art-key']); +for (const key of Object.keys(args)) { + if (!allowed.has(key)) throw new Error(`Unsupported argument: --${key}. Edit page words in MDX.`); +} const slug = requireArg(args, 'slug'); const fields = {}; const seo = {}; @@ -9,10 +13,6 @@ for (const flag of ['meta-title','meta-description']) { if (args[flag] !== undefined) seo[flag.replaceAll('-', '_')] = requireArg(args,flag).trim(); } if (args.title !== undefined) fields.title = requireArg(args, 'title').trim(); -if (args['intro-file']) fields.intro_markdown = readRequiredText(args['intro-file'], 'Intro'); -if (args['content-file']) fields.content_markdown = readRequiredText(args['content-file'], 'Content'); -if (args['clear-content']) fields.content_markdown = null; -if (args['content-file'] && args['clear-content']) throw new Error('Choose --content-file or --clear-content'); for (const field of ['card-name', 'card-description']) { if (args[field] !== undefined) fields[field.replace('-', '_')] = requireArg(args, field).trim(); } @@ -22,10 +22,11 @@ for (const flag of ['card-icon-key', 'card-art-key']) { fields[field] = validateCardKey(field, requireArg(args, flag).trim()); } } -if ((!Object.keys(fields).length && !Object.keys(seo).length) || [...Object.values(fields),...Object.values(seo)].some(value => value === '')) throw new Error('Provide nonempty page copy to update'); +if ((!Object.keys(fields).length && !Object.keys(seo).length) || [...Object.values(fields),...Object.values(seo)].some(value => value === '')) throw new Error('Provide nonempty title, search metadata, or card fields to update'); printResult(await runMutation(args, async client => { - const current = (await client.query(`select content.*,page.meta_title,page.meta_description from public.stack127_directory_pages content + const current = (await client.query(`select content.page_id,content.title,content.card_name,content.card_description, + content.card_icon_key,content.card_art_key,page.meta_title,page.meta_description from public.stack127_directory_pages content join public.stack127_pages page on page.id=content.page_id where page.slug=$1 and page.page_family='directory' for update of page,content`, [slug])).rows[0]; if (!current) throw new Error(`Directory page not found: ${slug}`); diff --git a/scripts/stack127/publishing/cli.mjs b/scripts/stack127/publishing/cli.mjs index 391af919..4957e1c6 100644 --- a/scripts/stack127/publishing/cli.mjs +++ b/scripts/stack127/publishing/cli.mjs @@ -104,7 +104,7 @@ export async function preparePlan(pool, manifest, { kind, environment, base = pr const current = before[index]; const source = page.source ? development.get(page.slug) : current; if (page.source && (!source || !hasRequiredContent(source))) throw new Error(`Reviewed development page is missing: ${page.slug}`); - const defaults = page.family === 'tool' ? { usage_markdown: null, tool_version: '1.0.0', stack127_repo_url: null, stack127_repo_version: null, stack127_repo_commit_sha: null } : ['directory','course'].includes(page.family) ? { content_markdown: null, card_icon_key: null, card_art_key: null } : { content_markdown: null, card_icon_key: 'layers', display_order: 100 }; + const defaults = page.family === 'tool' ? { tool_version: '1.0.0', stack127_repo_url: null, stack127_repo_version: null, stack127_repo_commit_sha: null } : page.family === 'course' ? { content_markdown: null, card_icon_key: null, card_art_key: null } : page.family === 'directory' ? { card_icon_key: null, card_art_key: null } : { card_icon_key: 'layers', display_order: 100 }; const after = validateState({ slug: page.slug, family: page.family, registry: { is_published: false, is_indexable: true, cover_image_url: null, page_type: page.family === 'tool' ? 'SoftwareApplication' : 'CollectionPage', sitemap_priority: 0.5, ...source?.registry, ...page.registry }, content: page.family === 'course' && page.slug.includes('/') ? null : { ...defaults, ...source?.content, ...await resolveCopy(page.content, base) }, ...(page.family === 'course' ? { lesson: page.lesson || source?.lesson ? { ...source?.lesson, ...page.lesson } : null } : {}), ...(page.family === 'tool' ? { catalogs: page.catalogs ?? source?.catalogs ?? [] } : {}) }); const requirements = await freezeRequirements(page.requirements, after, root); pages.push({ slug: page.slug, family: page.family, before: current, after, requirements, @@ -199,10 +199,8 @@ export async function publishingMain(kind, argv = process.argv.slice(2), { after if (!restore) await checkDatabaseRequirements(pool, plan.pages); if (args.command === 'dispatch') { productionCodeGate(plan, args['release-sha']); - const payload = { ref: args['release-sha'], task: 'page-publication', environment: 'stack127-page-publication', auto_merge: false, required_contexts: [], production_environment: true, payload: { release_sha: args['release-sha'], plan } }; - const response = JSON.parse(execFileSync('gh', ['api', 'repos/stack127labs/stack127/deployments', '--method', 'POST', '--input', '-'], { input: JSON.stringify(payload), encoding: 'utf8', maxBuffer: 10 * 1024 * 1024 })); - if (!response.id || response.sha !== args['release-sha']) throw new Error('GitHub did not accept the expected publication deployment'); - console.log(JSON.stringify({ dispatched: true, deployment_id: response.id, url: `https://github.com/stack127labs/stack127/deployments`, complete: false })); + const { dispatchPublication } = await import('./github.mjs'); + console.log(JSON.stringify(await dispatchPublication(plan, args['release-sha']))); return; } if (args.environment === 'production' && args.command !== 'preview') { diff --git a/scripts/stack127/publishing/github.mjs b/scripts/stack127/publishing/github.mjs index 0c88cbe4..76301a0a 100644 --- a/scripts/stack127/publishing/github.mjs +++ b/scripts/stack127/publishing/github.mjs @@ -2,40 +2,66 @@ import { readFile, writeFile } from 'node:fs/promises'; import { execFileSync } from 'node:child_process'; import { pathToFileURL } from 'node:url'; import { validatePlan } from './cli.mjs'; +import { onlyKeys } from './readiness.mjs'; +import { loadPlan, storePlan, validatePlanBlob, MAX_PLAN_BYTES, PUBLICATION_REPOSITORY } from './plan-storage.mjs'; -export function publicationEvent(event, repository = 'stack127labs/stack127') { +export function publicationEvent(event, repository = PUBLICATION_REPOSITORY) { const deployment = event.deployment; if (event.repository?.full_name !== repository || deployment?.environment !== 'stack127-page-publication' || deployment.task !== 'page-publication') throw new Error('This is not a stack127 page publication deployment'); const payload = typeof deployment.payload === 'string' ? JSON.parse(deployment.payload) : deployment.payload; if (!/^[a-f0-9]{40}$/.test(payload?.release_sha ?? '') || deployment.sha !== payload.release_sha || deployment.ref !== payload.release_sha || !Number.isSafeInteger(deployment.id)) throw new Error('Deployment ref, SHA, and publication payload must agree'); - const plan = validatePlan(payload.plan, payload.plan?.kind, 'production'); - if (!['tools', 'directories', 'courses'].includes(plan.kind)) throw new Error('Unknown publication kind'); - return { deploymentId: deployment.id, releaseSha: deployment.sha, plan }; + onlyKeys(payload, ['schema_version', 'release_sha', 'plan_blob'], 'Publication payload'); + if (payload.schema_version !== 2) throw new Error('Regenerate and dispatch the plan with the current publisher'); + return { deploymentId: deployment.id, releaseSha: deployment.sha, planBlob: validatePlanBlob(payload.plan_blob) }; } -function gh(args, input) { - return JSON.parse(execFileSync('gh', ['api', ...args], { encoding: 'utf8', input: input && JSON.stringify(input), maxBuffer: 10 * 1024 * 1024 })); +export function gh(args, input) { + return JSON.parse(execFileSync('gh', ['api', '-H', 'Accept: application/vnd.github+json', ...args], { + encoding: 'utf8', input: input && JSON.stringify(input), maxBuffer: MAX_PLAN_BYTES * 1.5 + 1024 * 1024, + })); +} + +export async function dispatchPublication(plan, releaseSha, { github = gh } = {}) { + validatePlan(plan, plan.kind, 'production'); + if (!/^[a-f0-9]{40}$/.test(releaseSha)) throw new Error('Dispatch requires a full release SHA'); + const planBlob = await storePlan(plan, github); + const response = await github([`repos/${PUBLICATION_REPOSITORY}/deployments`, '--method', 'POST', '--input', '-'], { + ref: releaseSha, task: 'page-publication', environment: 'stack127-page-publication', + auto_merge: false, required_contexts: [], production_environment: true, + payload: { schema_version: 2, release_sha: releaseSha, plan_blob: planBlob }, + }); + if (!Number.isSafeInteger(response.id) || response.sha !== releaseSha) throw new Error('GitHub did not accept the expected publication deployment'); + return { dispatched: true, deployment_id: response.id, + url: `https://github.com/${PUBLICATION_REPOSITORY}/deployments`, complete: false }; +} + +export async function extractPublication(event, file, { github = gh } = {}) { + const publication = publicationEvent(event); + if (typeof event.sender?.login !== 'string' || !event.sender.login) throw new Error('Publication needs a repository writer'); + const permission = await github([`repos/${PUBLICATION_REPOSITORY}/collaborators/${encodeURIComponent(event.sender.login)}/permission`]); + if (!['admin', 'maintain', 'write'].includes(permission.permission)) throw new Error('Publication requires a repository writer'); + const main = await github([`repos/${PUBLICATION_REPOSITORY}/commits/main`]); + if (main.sha !== publication.releaseSha) throw new Error('Publication deployment must use the current main SHA'); + if (!file) throw new Error('Provide an output plan file'); + const plan = validatePlan(await loadPlan(publication.planBlob, github), publication.planBlob.kind, 'production'); + await writeFile(file, JSON.stringify(plan), { mode: 0o600, flag: 'wx' }); + return { ...publication, plan }; } export async function githubMain(argv = process.argv.slice(2)) { const [command, file] = argv; const event = await readFile(process.env.GITHUB_EVENT_PATH, 'utf8').then(JSON.parse); - const { deploymentId, releaseSha, plan } = publicationEvent(event); - const endpoint = `repos/stack127labs/stack127/deployments/${deploymentId}/statuses`; + const { deploymentId } = publicationEvent(event); + const endpoint = `repos/${PUBLICATION_REPOSITORY}/deployments/${deploymentId}/statuses`; if (command === 'extract') { - const permission = gh([`repos/stack127labs/stack127/collaborators/${encodeURIComponent(event.sender.login)}/permission`]); - if (!['admin', 'maintain', 'write'].includes(permission.permission)) throw new Error('Publication requires a repository writer'); - const main = gh(['repos/stack127labs/stack127/commits/main']); - if (main.sha !== releaseSha) throw new Error('Publication deployment must use the current main SHA'); - if (!file) throw new Error('Provide an output plan file'); - await writeFile(file, JSON.stringify(plan), { mode: 0o600, flag: 'wx' }); + await extractPublication(event, file); gh([endpoint, '--method', 'POST', '--input', '-'], { state: 'in_progress', description: 'Checking deployment and publishing the reviewed page batch', auto_inactive: false }); return; } if (!['success', 'failure', 'error'].includes(command)) throw new Error('Use extract, success, failure, or error'); gh([endpoint, '--method', 'POST', '--input', '-'], { state: command, auto_inactive: false, environment_url: 'https://stack127.com', - log_url: `https://github.com/stack127labs/stack127/actions/runs/${process.env.GITHUB_RUN_ID}`, + log_url: `https://github.com/${PUBLICATION_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`, description: command === 'success' ? 'Database and public page verification passed' : 'Publication is incomplete; check the workflow before retrying', }); } diff --git a/scripts/stack127/publishing/model.mjs b/scripts/stack127/publishing/model.mjs index b9c40f75..64246129 100644 --- a/scripts/stack127/publishing/model.mjs +++ b/scripts/stack127/publishing/model.mjs @@ -5,12 +5,12 @@ export const REGISTRY_FIELDS = Object.freeze([ export const CONTENT_FIELDS = Object.freeze({ tool: Object.freeze([ - "title", "intro_markdown", "usage_markdown", "content_markdown", "tool_version", + "title", "tool_version", "stack127_repo_url", "stack127_repo_version", "stack127_repo_commit_sha", "card_name", "card_description", "card_icon_key", "card_art_key", ]), directory: Object.freeze([ - "title", "intro_markdown", "content_markdown", "card_name", "card_description", + "title", "card_name", "card_description", "card_icon_key", "card_art_key", ]), course: Object.freeze([ @@ -18,7 +18,7 @@ export const CONTENT_FIELDS = Object.freeze({ "card_icon_key", "card_art_key", "author_name", "author_avatar_url", "navigation_label", ]), catalog: Object.freeze([ - "title", "intro_markdown", "content_markdown", "card_name", "card_description", + "title", "card_name", "card_description", "card_icon_key", "card_art_key", "display_order", ]), }); @@ -102,8 +102,8 @@ export function validateState(state, family = state?.family) { content[field] = field === "display_order" ? integer(state.content[field], `content.${field}`) : textField(state.content[field], `content.${field}`, { - nullable: field.startsWith("stack127_repo_") || field === "usage_markdown" - || (family !== "tool" && field === "content_markdown") + nullable: field.startsWith("stack127_repo_") + || (family === "course" && field === "content_markdown") || (["directory", "course"].includes(family) && ["card_icon_key", "card_art_key"].includes(field)), trimmed: !(family === "tool" && ["card_name", "card_description"].includes(field)), }); diff --git a/scripts/stack127/publishing/plan-storage.mjs b/scripts/stack127/publishing/plan-storage.mjs new file mode 100644 index 00000000..177d6104 --- /dev/null +++ b/scripts/stack127/publishing/plan-storage.mjs @@ -0,0 +1,43 @@ +import { createHash } from 'node:crypto'; +import { onlyKeys } from './readiness.mjs'; + +// GitHub's Git blob API accepts files up to 100 MB. This leaves space below it. +export const MAX_PLAN_BYTES = 90 * 1024 * 1024; +export const PUBLICATION_REPOSITORY = 'stack127labs/stack127'; +const sha256 = bytes => createHash('sha256').update(bytes).digest('hex'); +const blobSha = bytes => createHash('sha1').update(`blob ${bytes.length}\0`).update(bytes).digest('hex'); + +export function validatePlanBlob(reference) { + onlyKeys(reference, ['sha', 'sha256', 'size', 'kind'], 'Frozen plan blob'); + if (!/^[a-f0-9]{40}$/.test(reference.sha ?? '') || !/^[a-f0-9]{64}$/.test(reference.sha256 ?? '') + || !Number.isSafeInteger(reference.size) || reference.size < 1 || reference.size > MAX_PLAN_BYTES + || !['tools', 'directories', 'courses'].includes(reference.kind)) { + throw new Error('Frozen plan blob needs its SHA, SHA-256, size, and publication kind'); + } + return { ...reference }; +} + +export async function storePlan(plan, github) { + const bytes = Buffer.from(JSON.stringify(plan)); + if (bytes.length > MAX_PLAN_BYTES) throw new Error('Publication plan exceeds the 90 MiB Git blob limit'); + const expected = blobSha(bytes); + const response = await github([`repos/${PUBLICATION_REPOSITORY}/git/blobs`, '--method', 'POST', '--input', '-'], { + encoding: 'base64', content: bytes.toString('base64'), + }); + if (response.sha !== expected) throw new Error('GitHub did not store the exact frozen publication plan'); + return validatePlanBlob({ sha: response.sha, sha256: sha256(bytes), size: bytes.length, kind: plan.kind }); +} + +export async function loadPlan(reference, github) { + validatePlanBlob(reference); + const response = await github([`repos/${PUBLICATION_REPOSITORY}/git/blobs/${reference.sha}`]); + if (response.sha !== reference.sha || response.encoding !== 'base64' || response.size !== reference.size + || typeof response.content !== 'string' || response.content.length > Math.ceil(reference.size / 3) * 4 * 1.1 + 100) { + throw new Error('GitHub plan blob metadata differs from the frozen request'); + } + const bytes = Buffer.from(response.content, 'base64'); + if (bytes.length !== reference.size || sha256(bytes) !== reference.sha256 || blobSha(bytes) !== reference.sha) { + throw new Error('GitHub plan blob failed its frozen-plan integrity check'); + } + return JSON.parse(bytes.toString('utf8')); +} diff --git a/scripts/stack127/publishing/readiness.mjs b/scripts/stack127/publishing/readiness.mjs index f57d2495..7f90bdca 100644 --- a/scripts/stack127/publishing/readiness.mjs +++ b/scripts/stack127/publishing/readiness.mjs @@ -93,8 +93,10 @@ export async function checkRepositoryRequirements(requirements, state, root = pr } if (state.family === 'course' && !state.lesson) throw new Error(`Course lesson definition is missing: ${state.slug}`); if (state.content) { - const markdown = Object.fromEntries(Object.entries(state.content).filter(([key, value]) => key.endsWith('_markdown') && typeof value === 'string')); - validateToolMarkdown(markdown, { repositoryRoot: root }); + if (state.family === 'course') { + const markdown = Object.fromEntries(Object.entries(state.content).filter(([key, value]) => key.endsWith('_markdown') && typeof value === 'string')); + validateToolMarkdown(markdown, { repositoryRoot: root }); + } const keys = async (file, name) => { const source = await readFile(await repositoryFile(file, root), 'utf8'); const entries = source.match(new RegExp(`\\bconst ${name}\\s*:[^=]+=[ \\t\\r\\n]*\\{([\\s\\S]*?)^\\s*\\};`, 'm'))?.[1]; diff --git a/scripts/stack127/tool-pages/lib.mjs b/scripts/stack127/tool-pages/lib.mjs index e16c8479..03aa0b12 100644 --- a/scripts/stack127/tool-pages/lib.mjs +++ b/scripts/stack127/tool-pages/lib.mjs @@ -35,13 +35,6 @@ export function requireArg(args, key) { return value; } -export function readRequiredText(filePath, label) { - if (!existsSync(filePath)) throw new Error(`${label} file does not exist: ${filePath}`); - const value = readFileSync(filePath, "utf8").trim(); - if (!value) throw new Error(`${label} must not be empty`); - return value; -} - function envFileValue(filePath, requestedKey) { if (!existsSync(filePath)) return null; @@ -133,9 +126,6 @@ export async function lockToolPage(client, slug) { page.meta_title, page.meta_description, tool.title, - tool.intro_markdown, - tool.usage_markdown, - tool.content_markdown, tool.tool_version, tool.stack127_repo_url, tool.stack127_repo_version, diff --git a/scripts/stack127/tool-pages/update-content.mjs b/scripts/stack127/tool-pages/update-content.mjs deleted file mode 100644 index 4ee81c42..00000000 --- a/scripts/stack127/tool-pages/update-content.mjs +++ /dev/null @@ -1,86 +0,0 @@ -import { - lockToolPage, - parseArgs, - printResult, - readRequiredText, - requireArg, - runMutation, -} from "./lib.mjs"; -import { validateToolMarkdown } from "./validate-markdown.mjs"; - -const args = parseArgs(); -const slug = requireArg(args, "slug"); -const introMarkdown = readRequiredText(requireArg(args, "intro-file"), "Introduction Markdown"); -const contentMarkdown = readRequiredText(requireArg(args, "content-file"), "Content Markdown"); -const usageFile = args["usage-file"] === true ? requireArg(args, "usage-file") : args["usage-file"]; -const usageMarkdown = usageFile - ? readRequiredText(usageFile, "Usage Markdown") - : null; -const metaTitle = args["meta-title"] === undefined ? null : requireArg(args, "meta-title").trim(); -const metaDescription = args["meta-description"] === undefined ? null : requireArg(args, "meta-description").trim(); -if ((metaTitle === null) !== (metaDescription === null)) { - throw new Error("Pass --meta-title and --meta-description together"); -} -if (metaTitle !== null && (!metaTitle || !metaDescription)) { - throw new Error("SEO title and description must not be empty"); -} -const requestedTitle = args.title === true ? null : args.title; - -validateToolMarkdown({ - intro_markdown: introMarkdown, - usage_markdown: usageMarkdown ?? "", - content_markdown: contentMarkdown, -}); - -const result = await runMutation(args, async (client) => { - const page = await lockToolPage(client, slug); - const title = requestedTitle?.trim() || page.title; - const contentChanged = title !== page.title - || introMarkdown !== page.intro_markdown - || (usageMarkdown !== null && usageMarkdown !== page.usage_markdown) - || contentMarkdown !== page.content_markdown; - const metadataChanged = metaTitle !== null && (metaTitle !== page.meta_title || metaDescription !== page.meta_description); - const changed = contentChanged || metadataChanged; - - if (!changed) { - return { - slug, - changed: false, - tool_version: page.tool_version, - meta_title: page.meta_title, - meta_description: page.meta_description, - }; - } - - if (contentChanged) { - await client.query( - usageMarkdown === null - ? `update public.stack127_tool_pages set title = $2, intro_markdown = $3, content_markdown = $4 where page_id = $1` - : `update public.stack127_tool_pages set title = $2, intro_markdown = $3, usage_markdown = $4, content_markdown = $5 where page_id = $1`, - usageMarkdown === null - ? [page.id, title, introMarkdown, contentMarkdown] - : [page.id, title, introMarkdown, usageMarkdown, contentMarkdown], - ); - } - if (metadataChanged) { - await client.query(` - update public.stack127_pages - set meta_title = $2, - meta_description = $3, - updated_at = case when is_published then now() else null end - where id = $1 - `, [page.id, metaTitle, metaDescription]); - } - - return { - slug, - changed: true, - content_changed: contentChanged, - metadata_changed: metadataChanged, - tool_version: page.tool_version, - meta_title: metaTitle ?? page.meta_title, - meta_description: metaDescription ?? page.meta_description, - }; -}); - -printResult(result); diff --git a/scripts/zigbee-devices/lib/catalog.mjs b/scripts/zigbee-devices/lib/catalog.mjs index dfa2010d..a6fb3e95 100644 --- a/scripts/zigbee-devices/lib/catalog.mjs +++ b/scripts/zigbee-devices/lib/catalog.mjs @@ -174,6 +174,30 @@ function groupBy(values, keyFor) { return groups; } +const compatibilityLabels = { + "24d": "Unverified platform", + deconz: "deCONZ", + "deconz.zha": ["deCONZ", "ZHA"], + ihost: "SONOFF iHost", + iob: "ioBroker", + iobroker: "ioBroker", + sz2m: "Unverified platform", + tasmota: "Tasmota", + z2m: "Zigbee2MQTT", + z4d: "Zigbee4Domoticz", + zha: "ZHA", + zigbee2mqtt: "Zigbee2MQTT", +}; + +export function normalizeCompatibilityCodes(codes) { + return [...new Set((Array.isArray(codes) ? codes : []).flatMap((rawCode) => { + const code = String(rawCode ?? "").trim().toLowerCase(); + if (!code) return []; + const label = compatibilityLabels[code]; + return label ? (Array.isArray(label) ? label : [label]) : [String(rawCode).trim()]; + }))]; +} + export function expandZigbee2mqttDefinitions(definitions) { const definitionMap = new Map(definitions.map((definition) => [definition.model, definition])); const pageDefinitions = []; @@ -256,7 +280,10 @@ function uniqueSlug(used, value) { function compatibilitySection(values) { return values.length > 0 - ? values.map((value) => ({ label: value, value: "Support record available" })) + ? values.map((value) => ({ + label: value, + value: value === "Unverified platform" ? "Source platform code could not be mapped" : "Support record available", + })) : [{ label: "Controller listings", value: "None listed in source record" }]; } @@ -313,7 +340,10 @@ export function buildCatalog({ const imageFile = availableImages.size === 0 || availableImages.has(ownImage) ? ownImage : availableImages.has(fallbackImage) ? fallbackImage : null; const slug = uniqueSlug(usedSlugs, `${vendor}-${model}`); if (!imageFile) failures.push({ model, reason: "Official Zigbee2MQTT product image is missing", vendor }); - const compatibility = ["Zigbee2MQTT", ...(record?.compatible.includes("zha") ? ["ZHA"] : [])]; + const compatibility = [...new Set([ + "Zigbee2MQTT", + ...normalizeCompatibilityCodes(record?.compatible ?? []), + ])]; const category = record ? normalizeCategory(record.category) : inferCategory(capabilities, official.description); const categoryValue = category.replace(/^./, (letter) => letter.toUpperCase()); const capabilityValue = capabilities.length > 0 ? capabilities.slice(0, 4).join(", ") : "Support definition has no exposed fields"; @@ -331,9 +361,10 @@ export function buildCatalog({ { label: "Zigbee model IDs", value: (definition.zigbeeModel ?? []).join(", ") || "Fingerprint matching used" }, ]; const sourceUrl = `https://www.zigbee2mqtt.io/devices/${z2mDeviceSlug(official.baseModel)}.html`; + const recordUrl = record ? `https://zigbee.blakadder.com/${record.fileName.replace(/\.md$/i, ".html")}` : ""; devices.push({ battery_reporting: capabilities.includes("battery"), - blakadder_url: record ? `https://zigbee.blakadder.com/${record.fileName.replace(/\.md$/i, ".html")}` : "", + blakadder_url: recordUrl, card: { compatibility: { label: "Works with", status: "confirmed", value: compatibility.join(" + ") }, facts: [{ label: "Type", value: categoryValue }, { label: "Capabilities", value: capabilityValue }], @@ -353,7 +384,13 @@ export function buildCatalog({ model, name: String(official.description ?? record?.title ?? model).trim(), ota: Boolean(definition.ota), - provenance: [...identityFacts, ...compatibilityFacts, ...featureFacts].map((fact) => ({ field: fact.label, source: "Zigbee2MQTT", url: sourceUrl })), + provenance: [ + ...identityFacts.map((fact) => ({ field: fact.label, source: "Zigbee2MQTT", url: sourceUrl })), + ...compatibilityFacts.map((fact) => fact.label === "Zigbee2MQTT" || !record + ? { field: fact.label, source: "Zigbee2MQTT", url: sourceUrl } + : { field: fact.label, source: "Blakadder Zigbee record", url: recordUrl }), + ...featureFacts.map((fact) => ({ field: fact.label, source: "Zigbee2MQTT", url: sourceUrl })), + ], slug, vendor, zha_reported_capabilities: [...new Set((record?.supports ?? []).map((value) => value.trim()).filter(Boolean))] @@ -368,9 +405,7 @@ export function buildCatalog({ const communityGroups = groupBy(communityRecords.filter((record) => !matchedCommunity.has(record)), (record) => identityKey(record.vendor, record.model)); for (const records of communityGroups.values()) { const record = records[0]; - const compatibleCodes = [...new Set(records.flatMap((item) => item.compatible))]; - const compatibilityLabels = { deconz: "deCONZ", iob: "ioBroker", iobroker: "ioBroker", tasmota: "Tasmota", z2m: "Zigbee2MQTT", z4d: "deCONZ", zha: "ZHA" }; - const compatibility = [...new Set(compatibleCodes.map((value) => compatibilityLabels[value] ?? value))]; + const compatibility = normalizeCompatibilityCodes(records.flatMap((item) => item.compatible)); const supports = [...new Set(records.flatMap((item) => item.supports))].sort((left, right) => left.localeCompare(right)); const category = normalizeCategory(record.category); const categoryValue = category.replace(/^./, (letter) => letter.toUpperCase()); diff --git a/skills/stack127/page-build/SKILL.md b/skills/stack127/page-build/SKILL.md index a81b6ad1..8fc94774 100644 --- a/skills/stack127/page-build/SKILL.md +++ b/skills/stack127/page-build/SKILL.md @@ -10,7 +10,7 @@ Read `AGENTS.md`, `stack127_docs/writing-style.md`, `stack127_docs/page-content. ## Work 1. Confirm the route family, flat public URL, publication state, indexing setting, and data source. Use `registry.is_indexable: false` for thin child pages, filtered views with their own paths, or public pages still being improved. Keep them published when people should be able to use them. -2. Check the shared components and `/components-ui` gallery in development before creating local UI. Implement the page with the shared shell, `PageCanvas`, tokens, components, metadata system, and server-rendered content. Write the page's content as MDX in `content/` beside the route and import it, as `stack127_docs/page-content.md` describes. A page that still renders content from the database moves to MDX before its content changes. +2. Check the shared components and `/components-ui` gallery in development before creating local UI. Implement the page with the shared shell, `PageCanvas`, tokens, components, metadata system, and server-rendered content. Write the page's content as MDX in `content/` beside the route and import it, as `stack127_docs/page-content.md` describes. Tools, directories, and catalogs have no database-content fallback. 3. Keep the page static and on-demand revalidated, as `stack127_docs/caching.md` describes. No `force-dynamic`, no timed `revalidate`, and no server `searchParams`, `headers()`, or `cookies()`. URL-dependent parts are client components. A new data source gets a cache tag and pipeline coverage. 4. Keep page styles beside the page or component. Do not add page selectors to `app/globals.css`. 5. Add a focused test only for calculations, parsers, data transforms, or a failure that could return a wrong answer. Do not test prose, documentation, skill wording, hashes, file inventories, or incidental markup. diff --git a/skills/stack127/stack127-directory-writing/SKILL.md b/skills/stack127/stack127-directory-writing/SKILL.md index 8037b740..c1c0d682 100644 --- a/skills/stack127/stack127-directory-writing/SKILL.md +++ b/skills/stack127/stack127-directory-writing/SKILL.md @@ -13,7 +13,7 @@ This skill covers words. Each directory gathers and shows its data differently, The intro and the page's sections live in `content/*.mdx` beside the route. The title and card text are in the page's `public.stack127_directory_pages` row. The SEO title and description are on its `public.stack127_pages` row. -If the page still renders its content from the database, move it to MDX first with the steps in `page-content.md`, and commit the move before rewriting. +Read and edit its MDX files. Tools, directories, and catalogs have no database-content fallback. Each child page has its own `content/` files: beside its own `page.tsx`, such as `keyboard-shortcuts/figma/content/`, or in a folder named for its slug under a shared route, such as `platform-fees/[section]/content//`. See `page-content.md`. @@ -96,7 +96,7 @@ Each child page gets its own title and search metadata too, written for what peo Write the intro and sections into the route's `content/*.mdx` files, and import any new section file where it goes on the page. Run `node scripts/stack127/content/check-mdx.mjs` and fix what it reports. The content ships with a code release. -Apply the title, SEO fields, and card text to development with `scripts/stack127/directory-pages/update-content.mjs --environment development`. It previews and rolls back unless you add `--apply`. Use `--title`, `--meta-title`, `--meta-description`, `--card-name`, and `--card-description`. Don't rerun a directory's full sync just to change copy, because it may reload records in the shared development database. Don't run a record sync to change child page words or titles. +Apply the title, SEO fields, and card text to development with `scripts/stack127/directory-pages/update-fields.mjs --environment development`. It previews and rolls back unless you add `--apply`. Use `--title`, `--meta-title`, `--meta-description`, `--card-name`, and `--card-description`. Don't rerun a directory's full sync just to change copy, because it may reload records in the shared development database. Don't run a record sync to change child page words or titles. A changed title, SEO field, or card text moves the public date and queues a cache refresh. A child edit also moves its directory ancestors' dates. Record imports do this automatically where covered. An MDX content change doesn't. For a meaningful content or code record change, use the development touch command, and give the coordinator a `touch_reason` for the release manifest. Skip explicit touches for typo fixes. See `directory-pages.md`. A worktree preview needs the local cache watcher pointed at its port; see `homelab-development.md`. The watcher clears the events it handles from the shared queue, so run it only for as long as you need. diff --git a/skills/stack127/tools/stack127-tool-backend/SKILL.md b/skills/stack127/tools/stack127-tool-backend/SKILL.md index 91f7c526..826d29c7 100644 --- a/skills/stack127/tools/stack127-tool-backend/SKILL.md +++ b/skills/stack127/tools/stack127-tool-backend/SKILL.md @@ -13,7 +13,7 @@ Build exactly what the spec's Backend contract describes: the same function name 2. Build any API routes, server data loaders, external lookups, timeouts, and caching the contract lists. 3. Build any data scripts, migrations, or maintained datasets the contract lists. Keep migrations, scripts, and docs aligned. 4. Add one focused unit test file for independently known normal, boundary, and invalid examples from the spec. Add more only for a real high-risk calculation or recovery path. Run it. -5. For a new route that needs a database row to render, create a development-only preview row with a plainly marked placeholder title, and placeholder text in the Markdown fields the table still requires. Guard the development database and preserve any existing row. The placeholder is preview scaffolding. The page content itself is MDX beside the route. +5. For a new route that needs a database row to render, use the publisher against development with the reviewed title, search metadata, cards, and catalog memberships. Page words live in MDX beside the route. Do not fill retired Markdown fields or create another temporary content-writing script. 6. Check one correct and one invalid example directly against the backend, such as through the test or a request to the API route. Do not build the page, client components, styles, or card art. Do not write page content, create manifests or evidence files, or run the whole repository test collection. This backend task does not authorize production data, commits, pushes, or deployment. A separate coordinator-approved production task follows the approval rules in `AGENTS.md` and the release skill. diff --git a/skills/stack127/tools/stack127-tool-content-integration/SKILL.md b/skills/stack127/tools/stack127-tool-content-integration/SKILL.md index 171c84c9..376c0b04 100644 --- a/skills/stack127/tools/stack127-tool-content-integration/SKILL.md +++ b/skills/stack127/tools/stack127-tool-content-integration/SKILL.md @@ -7,7 +7,7 @@ description: Integrate drafted or user-supplied tool copy and SEO text into the Use this skill after `$stack127-tool-writing` in the normal pipeline, or when a user supplies replacement copy. Read the draft files or supplied words, the spec, `stack127_docs/page-content.md`, `stack127_docs/page-publishing.md`, `stack127_docs/tool-pages.md`, `stack127_docs/tool-catalogs.md`, `stack127_docs/seo.md`, the route, and current development rows. The introduction, usage, and article go in the route's `content/*.mdx` files. The visible title, search title and description, and shared catalog card copy go to the database through the publisher. Interface words live in frontend code, which the Opus writing session updates; do not edit UI code. Use `stack127_docs/writing-style.md` for any wording edits. If a required field is missing or a claim conflicts with the tool or sources, return it to the main agent for the writing session or resolve it with the user; do not invent replacement copy. -1. Put the content in the route's `content/` folder: `intro.mdx`, `usage.mdx` when there is usage, and `article.mdx`. The writing session usually writes them. For supplied words, write them yourself with the blocks and rules in `page-content.md`. If the page still renders its content from the database, move it to MDX first with the steps there. +1. Put the content in the route's `content/` folder: `intro.mdx`, `usage.mdx` when there is usage, and `article.mdx`. The writing session usually writes them. For supplied words, write them yourself with the blocks and rules in `page-content.md`. The page must import its MDX content before publishing. 2. Wire the route as `/cac-payback-calculator` does: pass `` to `ToolPageHeader`'s `intro`, and put `` and `
    ` inside `ToolPageArticle`. Run `node scripts/stack127/content/check-mdx.mjs` and fix what it reports. 3. Write the tool's publish manifest in `tmp/page-publishing//`. Put the visible title in `content.title` and `meta_title` and `meta_description` in the registry patch when the draft changes them. A new tool also needs the content fields the publisher still requires; see "Content fields" in `page-publishing.md`. An unpublished page returns 404, and the publisher's check expects that 404. For a new tool in the pipeline, set `registry.is_published` to `true` explicitly so the development page can be previewed. Its catalogs must be published too. The same value carries to production at release. For other edits, leave publication fields alone unless the main agent asks. 4. Read the spec's Catalog placement and the current catalog memberships. Confirm that the primary and every secondary catalog exist. Choose an unused display order for each new placement and the approved card icon and registered tool-specific art key. A new tool cannot use the `icon` art fallback. Put the card fields and the complete ordered catalog list in the manifest. Do not put cards in route code. If a new catalog is required and the main agent has not supplied it, return that work before using a substitute placement. diff --git a/skills/stack127/tools/stack127-tool-writing/SKILL.md b/skills/stack127/tools/stack127-tool-writing/SKILL.md index 2b6ab343..28d6338c 100644 --- a/skills/stack127/tools/stack127-tool-writing/SKILL.md +++ b/skills/stack127/tools/stack127-tool-writing/SKILL.md @@ -11,7 +11,7 @@ Read `stack127_docs/writing-style.md` for how to write and search wording, and ` In the tool pipeline, Opus runs this skill in its own Claude Code writing session after the tool is built. Plan the Content section first, then write in the same session. -It also handles rewrites of live tool pages. Read the current content in the route's `content/*.mdx` files, and the title and search text on the page. If the page still renders its content from the database, move it to MDX first with the steps in `page-content.md`, and commit the move before rewriting. Use the tool once and read its code for the exact rules and messages. Keep the facts, limits, and sources a reader needs, and cut what goes beyond the core of the tool. Skip the spec step for a rewrite. +It also handles rewrites of live tool pages. Read the current content in the route's `content/*.mdx` files, and the title and search text on the page. Read and edit its MDX files. Tools, directories, and catalogs have no database-content fallback. Use the tool once and read its code for the exact rules and messages. Keep the facts, limits, and sources a reader needs, and cut what goes beyond the core of the tool. Skip the spec step for a rewrite. It also covers catalog pages, such as `/dns-tools`: the title, the intro above the cards, the article below them, and the search text. A catalog's content lives in a folder named for its slug under `app/(site)/(catalogs)/[slug]/content/`. See `page-content.md`. diff --git a/stack127_docs/directory-pages.md b/stack127_docs/directory-pages.md index 30145c82..dc303008 100644 --- a/stack127_docs/directory-pages.md +++ b/stack127_docs/directory-pages.md @@ -14,7 +14,6 @@ Read [page-content.md](page-content.md) for the content files and how to move a | --- | --- | | `page_id` | Primary key and foreign key to `stack127_pages.id`. | | `title` | Visible h1. Wrap the accent phrase in ``. | -| `intro_markdown`, `content_markdown` | Content for pages that haven't moved to MDX. A moved page ignores them, but the publisher still requires `intro_markdown` for a new directory. See [page-publishing.md](page-publishing.md). | | `card_name` | Short name on homepage cards and sidebars. | | `card_description` | Short summary on homepage cards. | | `card_icon_key` | Optional icon key from `lib/card-icons.ts`. The h1, the homepage sidebar row, and the homepage card all use it. | @@ -34,10 +33,9 @@ Record sync scripts own the records and the generated route files. They leave ex | Directory | Record script | Page fields | | --- | --- | --- | | Keyboard shortcuts | `scripts/keyboard-shortcuts/sync-pages.mjs` | `--apply` inserts missing child rows, then syncs app records and the hub snapshot. Existing page fields stay as written. | -| Ad networks | `scripts/ad-networks/sync-page-copy.mjs` | Inserts missing child rows only. Existing page fields stay as written. | | Platform fees | `scripts/platform-fees/sync-development.mjs`, `sync-records.mjs`, then `prepare-category-manifest.mjs` | Syncs records and inserts missing page rows. The manifest takes reviewed page fields from development. | -The managed-development hardware preview scripts, `scripts/stack127/preview-hardware-directories.mjs` and `scripts/zigbee-devices/preview-local-page.mjs`, insert starting rows only when missing. Existing titles, words, cards, and search fields stay as written. Normal runs publish drafts; published pages stay unchanged. `--remove` unpublishes without deleting rows. Zigbee removal still requires the original preview metadata. Add `--dry-run` to preview either operation and roll back. The old hardware `--refresh` flag overwrote search fields; both scripts now reject it. Use the single-page editor below for reviewed changes. +The managed-development hardware preview scripts, `scripts/stack127/preview-hardware-directories.mjs` and `scripts/zigbee-devices/preview-local-page.mjs`, insert starting rows only when missing. Existing titles, cards, and search fields stay as written. MDX owns the page words. Normal runs publish drafts; published pages stay unchanged. `--remove` unpublishes without deleting rows. Zigbee removal still requires the original preview metadata. Add `--dry-run` to preview either operation and roll back. The old hardware `--refresh` flag overwrote search fields; both scripts now reject it. Use the single-page editor below for reviewed changes. ## Public dates @@ -100,20 +98,20 @@ Decide which in the directory's brief when you create it. The publish manifest m Pages read their row with `getRequiredDirectoryPage(slug)` from `lib/directory-pages.ts` for the title, date, and card icon. The route imports `content/intro.mdx` under the title and each section file where that section goes. `/epp-status-codes` shows the pattern. Don't hard-code the title in the page file. -A page that hasn't moved yet renders its database Markdown through `ContentMarkdown` and `app/ui/directories/directory-page-content.tsx`. Move it before editing its content. +Every directory renders MDX, including ad-network children. `directory-page-content.tsx` handles title accents only. A shared route must include each slug in its MDX content map. ## Editing | Change | How | | --- | --- | -| Introduction or sections | Move the page first if it hasn't moved, then edit its `content/*.mdx` files. The change ships with a code release. See [page-content.md](page-content.md). | +| Introduction or sections | Edit its `content/*.mdx` files. The change ships with a code release. See [page-content.md](page-content.md). | | Title, search metadata, or card fields | The directory publisher. For a quick development check, the single-page command below. | | A new directory, or child pages going public | The directory publisher. See [page-publishing.md](page-publishing.md). | -The single-page command previews and rolls back by default. Add `--apply` to save. +The single-page fields command previews and rolls back by default. It rejects the retired `--intro-file`, `--content-file`, and `--clear-content` flags. Add `--apply` to save. ```bash -node scripts/stack127/directory-pages/update-content.mjs \ +node scripts/stack127/directory-pages/update-fields.mjs \ --environment development \ --slug tld-directory \ --meta-title "" \ @@ -122,4 +120,4 @@ node scripts/stack127/directory-pages/update-content.mjs \ Its flags are `--title`, `--meta-title`, `--meta-description`, `--card-name`, `--card-description`, `--card-icon-key`, and `--card-art-key`. It rejects keys that aren't in the registries. A saved edit queues revalidation for that page's `stack127-directory-page:` tag and its path. -For launch directories, `evidence.public_submission` holds checked free-plan requirements, backlink status, approval time, launch queue text, and dated observations. The server projects only validated public fields from that object. Signed-in and email observations describe our submission attempt, and stay separate from public rules. Unknown backlink requirements do not qualify for the free-without-required-backlink filter. Existing research notes remain private. Update these records through `scripts/stack127/database/update-launch-directories.mjs`, which checks the reviewed row version. +For launch directories, `evidence.public_submission` holds checked free-plan requirements, backlink status, approval time, launch queue text, and dated observations. The server projects only validated public fields from that object. Signed-in and email observations describe our submission attempt, and stay separate from public rules. The free-without-required-backlink filter accepts a free record only when its backlink check says optional or not required. A record with no check, or a check that says required or unknown, stays out. Existing research notes remain private. Update these records through `scripts/stack127/database/update-launch-directories.mjs`, which checks the reviewed row version. diff --git a/stack127_docs/page-content.md b/stack127_docs/page-content.md index b6eab1b0..e5a42d02 100644 --- a/stack127_docs/page-content.md +++ b/stack127_docs/page-content.md @@ -15,7 +15,7 @@ Large record sets that a pipeline grows on its own, such as self-host apps, keep A content change ships with a code release, through a pull request. The publisher still writes the database side: registry, search metadata, cards, catalogs, versions, and publication. See [page-publishing.md](page-publishing.md). -Most pages haven't moved yet and still render content stored in the database. Before you edit the content of one, move it with the steps in [Move a page to MDX](#move-a-page-to-mdx), then edit the MDX. Never edit page content in the database. +Tools, directories, and catalogs render only MDX. Their old database content columns have retired into `public.stack127_retired_page_content`. Never write page words to the database. Courses still use their own database Markdown until their content move. ## Files @@ -45,11 +45,11 @@ A child page with its own route folder, such as `/keyboard-shortcuts/figma`, kee ### Pages that share one route -Catalogs share `app/(site)/(catalogs)/[slug]/`, and platform fee categories share `platform-fees/[section]/`. Each page there gets its own folder under the route's `content/`, named for its slug, such as `content/dns-tools/intro.mdx` and `content/dns-tools/article.mdx`. One `content/index.ts` imports every folder into a map keyed by slug, and the route renders the entry for its slug. A published slug with no entry is an error, not an empty page. +Catalogs share `app/(site)/(catalogs)/[slug]/`, and platform fee categories share `platform-fees/[section]/`. Each page there gets its own folder under the route's `content/`, named for its slug, such as `content/dns-tools/intro.mdx` and `content/dns-tools/article.mdx`. One `content/index.ts` imports every folder into a map keyed by slug, and the route renders the entry for its slug. A slug with no content entry fails when it renders. Static imports and TypeScript catch missing MDX files during checks and builds. MDX renders on the server, so pages stay static and send no extra script. -`mdx-components.tsx` and `ContentMarkdown` render elements through the same functions in `app/ui/content-elements.tsx`, so moved and unmoved pages look the same. When one file needs a page-specific element, the route passes it, such as `` in `/epp-status-codes`. +`mdx-components.tsx` and the course-only `ContentMarkdown` use the same functions in `app/ui/content-elements.tsx`. When one file needs a page-specific element, the route passes it, such as `` in `/epp-status-codes`. ## Writing in MDX @@ -115,17 +115,26 @@ Copy fixes, such as a typo, leave the date alone. Move a page before you change its content. Make the move and the content change as separate commits, so the text check below stays easy. -1. Export its content: `npm run stack127:content:export -- --slug `. It writes the `content/` files and turns callouts, terms, and marker art into components. A directory with section markers gets one file per section, named for the marker. The export reads development by default; add `--environment production` to read the live text. It never writes to the database, and it won't overwrite files unless you add `--force`. +1. Recover its archived content when needed: `npm run stack127:content:export -- --slug `. It reads `stack127_retired_page_content` after column retirement and writes the `content/` files and turns callouts, terms, and marker art into components. A directory with section markers gets one file per section, named for the marker. The export reads development by default; add `--environment production` to read the live text. It never writes to the database, and it won't overwrite files unless you add `--force`. 2. If the export stops on a chart fence or raw HTML, it names the line. Those need a manual conversion, such as a chart to ``. 3. Read every file and clean it to the rules above. Keep the reader's text the same unless a sentence breaks a rule. 4. Change the route to import the files, as the pilot pages do. 5. Check the page at desktop and mobile width in both themes. Compare its visible text with the live page; only intended edits may differ. Check that the title, description, and SEO tags are unchanged. 6. Run `npm run quality`. -The export handles tool and directory pages with a flat slug and their own route folder. For a child page or a page on a shared route, copy the live text into the files by hand. +The export handles tool, directory, and catalog pages, including child slugs. A shared route gets `content//`; add the exported files to its content map before publishing. When you rewrite a page from scratch, you can skip the move: read the live page, write the new files, and check the new text against the facts on the live page and in the records instead of matching it word for word. Site pages keep their words in TSX, and courses keep their lessons in JSX. Both move to MDX later. -The database content columns stay in place until every page has moved, then retire in one migration. Don't edit them for a moved page. +The retirement migration archives every original field, including null values, before dropping the seven tool, directory, and catalog content columns. It verifies every archived value and preserves public dates. The archive has no public read grants. Course content columns stay in place. + +## Retiring the database columns + +Ship this cleanup in two releases because the release workflow migrates the database before switching the image. + +1. Release 1 ships the MDX readers, publisher and script cleanup, plus `20261010064142_prepare_page_content_retirement.sql`. This migration allows null values in the old required columns and updates the tool-date trigger. It preserves existing words, columns, and public dates, so the old image can keep reading during rollout. The new publisher works with the old columns present or absent. +2. After Release 1 is live, Release 2 ships `20261010063116_retire_page_content_columns.sql` only. It verifies the archive, then drops the columns. This file has an earlier version because development applied it before the rollout split. The production release workflow already uses `supabase db push --include-all`, which applies the missing version. + +Do not include the archive-and-drop file in Release 1. Keep courses on their current content tables. Keep each database's archive during a development rebuild. diff --git a/stack127_docs/page-publishing.md b/stack127_docs/page-publishing.md index 919b4ce8..5366b722 100644 --- a/stack127_docs/page-publishing.md +++ b/stack127_docs/page-publishing.md @@ -28,12 +28,12 @@ The tools command takes tool and catalog pages. The directories command takes di | Command | Flags | What it does | Writes | | --- | --- | --- | --- | -| `prepare` | `--manifest`, `--out`, `--environment` | Reads the manifest and any Markdown files it names, checks readiness, reads the current rows from the target database, and writes a plan file. | Only the plan file | +| `prepare` | `--manifest`, `--out`, `--environment` | Reads the manifest and any course Markdown files it names, checks readiness, reads the current rows from the target database, and writes a plan file. | Only the plan file | | `preview` | `--plan`, `--environment` | Runs the whole plan in one transaction, prints the result, and rolls back. | Nothing | | `apply` | `--plan`, `--environment`, `--confirm`, `--release-sha`, `--site`, `--wait-seconds` | Commits the plan in one transaction, then checks the database and the public pages. | The database | | `verify` | `--plan`, `--environment`, `--release-sha`, `--site`, `--wait-seconds`, `--restored` | Checks the database and public pages against the plan without writing. | Nothing | | `restore` | `--plan`, `--environment`, `--confirm`, `--release-sha`, `--site`, `--wait-seconds` | Puts back the plan's before values, then checks them. | The database | -| `dispatch` | `--plan`, `--environment production`, `--confirm`, `--release-sha` | Sends a reviewed production plan to the page publication workflow on GitHub. | A GitHub deployment | +| `dispatch` | `--plan`, `--environment production`, `--confirm`, `--release-sha` | Sends a reviewed production plan to the page publication workflow on GitHub. | A GitHub plan blob and deployment | There are no force or skip flags. Every gate below always runs. @@ -44,7 +44,7 @@ There are no force or skip flags. Every gate below always runs. ## Manifest -A manifest describes one batch of pages. All pages in a batch succeed or fail together. This one updates an existing tool. A new tool also needs the fields in [Content fields](#content-fields). +A manifest describes one batch of pages. All pages in a batch succeed or fail together. This one updates an existing tool. A new tool needs its title, cards, search fields, and MDX imports. ```json { @@ -93,24 +93,18 @@ Each page takes only these keys: | Family | Content fields | | --- | --- | -| `tool` | `title`, `intro_markdown`, `usage_markdown`, `content_markdown`, `tool_version`, `stack127_repo_url`, `stack127_repo_version`, `stack127_repo_commit_sha`, `card_name`, `card_description`, `card_icon_key`, `card_art_key` | -| `catalog` | `title`, `intro_markdown`, `content_markdown`, `card_name`, `card_description`, `card_icon_key`, `card_art_key`, `display_order` | +| `tool` | `title`, `tool_version`, `stack127_repo_url`, `stack127_repo_version`, `stack127_repo_commit_sha`, `card_name`, `card_description`, `card_icon_key`, `card_art_key` | +| `catalog` | `title`, `card_name`, `card_description`, `card_icon_key`, `card_art_key`, `display_order` | | `course` root | `title`, `intro_markdown`, `content_markdown`, `card_name`, `card_description`, `card_icon_key`, `card_art_key`, `author_name`, `author_avatar_url`, `navigation_label` | -| `directory` | `title`, `intro_markdown`, `content_markdown`, `card_name`, `card_description`, `card_icon_key`, `card_art_key` | +| `directory` | `title`, `card_name`, `card_description`, `card_icon_key`, `card_art_key` | -These are the plan's field names, and they stay the same across schema versions. +Regenerate plans prepared before the content-column retirement. Their snapshots contain fields the current publisher rejects. ### Content fields -The `*_markdown` fields are database content columns. Tool and directory pages with MDX content don't show them. See [page-content.md](page-content.md). The publisher still requires some of them: +Tool, directory, and catalog manifests accept only title, card, version, repository, and order fields for their family rows. They reject the retired `intro_markdown`, `usage_markdown`, and `content_markdown` fields. Keep page words in MDX and run `npm run quality` before preparing a plan. -- A new tool needs nonempty `intro_markdown` and `content_markdown`. A new directory, catalog, or course needs a nonempty `intro_markdown`. The rest may be `null`. -- For a new tool or directory, put one plain sentence that sums up the page in each required field, such as the first sentence of its `intro.mdx`. -- For an existing page, leave them out of the manifest. They keep their current values. - -Catalogs and courses still show these fields until they move to MDX. See [tool-catalogs.md](tool-catalogs.md) and [page-families.md](page-families.md). - -These fields retire with the database content columns. +A new course root still needs nonempty `intro_markdown`. Its optional `content_markdown` may be `null`. Courses keep database Markdown until their content move. Course plans freeze the course content and selected lesson rows together. Root pages need both rows. Child pages need their lesson row and published parent course. Course readiness checks the registry layout, JSX route, Markdown, card assets, and declared smoke checks. Public verification compares the H1 against `lesson.title`, since the root's course title names the whole course. @@ -148,13 +142,13 @@ A new page needs every required field, because there is nothing to merge into. T | `is_indexable` | `true` | | `page_type` | `SoftwareApplication` for tools, `CollectionPage` otherwise | | `sitemap_priority` | `0.5` | -| `cover_image_url`, `usage_markdown`, repository fields | `null` | +| `cover_image_url`, repository fields | `null` | | `tool_version` | `1.0.0` | -| Directory `content_markdown`, `card_icon_key`, `card_art_key` | `null` | -| Catalog `content_markdown` | `null` | +| Directory `card_icon_key`, `card_art_key` | `null` | +| Course `content_markdown`, `card_icon_key`, `card_art_key` | `null` | | Catalog `card_icon_key`, `display_order` | `layers`, `100` | -A new catalog must set `card_art_key` to a key registered in `lib/card-art.ts`. There is no default art. The hero uses this key too. Catalog titles use `` for an optional accent. Catalog `content_markdown` follows the directory rules: `null` or trimmed, nonempty Markdown. +A new catalog must set `card_art_key` to a key registered in `lib/card-art.ts`. There is no default art. The hero uses this key too. Catalog titles use `` for an optional accent. The batch must also make sense as a whole, or nothing is written: @@ -185,7 +179,7 @@ A page whose rows already match the plan is left alone, unless its pending recor A child page's words ship in its MDX files with the code release. Its title and search metadata go through the publisher like any directory page: -1. Write them to the development rows with `scripts/stack127/directory-pages/update-content.mjs`, and review the child pages there. +1. Write them to the development rows with `scripts/stack127/directory-pages/update-fields.mjs`, and review the child pages there. 2. List each child page in the directories manifest with `"source": "development"` and an explicit `registry.is_published`. 3. In production, run only the directory's reviewed dataset import, if its records live in the database. The plan already holds the reviewed titles and search metadata. @@ -198,7 +192,7 @@ A child page's words ship in its MDX files with the code release. Its title and | `route` | Required. A `page.tsx` under the family's route group, such as `app/(site)/(tools)/`. Its path must match the slug, and dynamic segments are allowed for directory children. The `layout.tsx` beside it must use `registryLayout`. | | `assets` | Each listed repository file must exist. | | Icon and art keys | Tool and catalog keys, and any directory key that isn't `null`, must be registered in `lib/card-icons.ts` and `lib/card-art.ts`. Homepage directories need both keys. | -| Markdown | Every `*_markdown` field must pass the shared Markdown validator. MDX content is checked by `npm run quality` instead. | +| Content | Course Markdown passes the shared validator. Tool, directory, and catalog content lives in MDX and passes `npm run quality`. | | `checks` | Each `{ "name", "sql_file", "params" }` points to a repository SQL file holding one `SELECT` or `WITH` query. It runs in a read-only transaction and must return exactly one row, `{ "ready": true }`. | | `smoke` | Each `{ "path", "text" }` is a path under the page's own slug and text that must appear on it. The public check uses these. | @@ -277,11 +271,11 @@ Production `apply`, `verify`, `restore`, and `dispatch` also need a full `--rele --release-sha ``` -`dispatch` creates a GitHub deployment with task `page-publication` in the `stack127-page-publication` environment. The reviewed plan travels in the deployment payload. Don't commit it. +`dispatch` creates a GitHub deployment with task `page-publication` in the `stack127-page-publication` environment. It first uploads the frozen plan as an immutable Git blob in the same repository. The deployment carries only the blob SHA, SHA-256, byte length, kind, and release SHA. Plans up to 90 MiB dispatch as one batch. Keep the local plan file. Do not commit it. The page publication workflow, `.github/workflows/stack127-publish-pages.yml`: -1. Checks that the sender has write, maintain, or admin access to the repository, and that the release SHA is still the current `main` commit. +1. Checks that the sender has write, maintain, or admin access and the release SHA is the current `main`. It downloads the repository blob and verifies its Git SHA, SHA-256, byte length, kind, and plan schema before writing the runner plan file. Both workflow jobs repeat this check. 2. Waits up to 10 minutes for the live health SHA to match the release SHA. It stops without writing if the release never goes live. 3. Joins the shared `stack127-production` concurrency group. Release and publication jobs queue there in order and never cancel each other. GitHub holds up to 100 pending jobs in the group. 4. Runs `apply` with the plan. It repeats the SQL readiness checks after the live release wait, commits the batch, and runs the public check. @@ -325,6 +319,6 @@ These commands each write one kind of database field: | `npm run stack127:tool-page:catalogs:update` | A tool's card fields and catalog memberships | | `npm run stack127:tool-page:version:update` | A tool's version | | `npm run stack127:tool-page:repo:sync` | A tool's repository fields | -| `node scripts/stack127/directory-pages/update-content.mjs` | A directory's title, search metadata, and card fields | +| `node scripts/stack127/directory-pages/update-fields.mjs` | A directory's title, search metadata, and card fields | Use them in development and for a small fix to one live page. Use the publisher for a new page, a page going public, and any change that touches several tables at once. Page content changes go through a code release instead. diff --git a/stack127_docs/seo.md b/stack127_docs/seo.md index fefac8b8..11677dba 100644 --- a/stack127_docs/seo.md +++ b/stack127_docs/seo.md @@ -84,7 +84,11 @@ The storage collection and its calculators, including the RAIDZ Expansion Planne Sitewide JSON-LD describes stack127 as a `WebSite` and `Organization`. -Exact published, indexable registry pages get JSON-LD through the shared SEO layout. `datePublished`, `dateModified`, description, URL, and page type come from `stack127_pages`. Public noindex pages emit no JSON-LD, including sitewide data and course breadcrumbs. +Exact published, indexable registry pages get JSON-LD through the shared SEO layout. `datePublished`, `dateModified`, description, URL, and page type come from `stack127_pages`. Public noindex pages emit no JSON-LD, including sitewide data and breadcrumbs. + +Every indexable page with a visible trail gets one `BreadcrumbList` through `getRegistryPageStructuredData`. Home has no trail. The shared breadcrumb helpers keep names and links the same as the page header. Tools use their primary catalog and card name. Shortcut child pages use the app name. Courses use the course title and lesson sidebar label. Section names keep their original case in JSON-LD; CSS displays them in lowercase. + +A parent layout with child routes uses `registryLayout(path, { structuredData: "page" })`. Its index page renders `RegistryStructuredData` for its exact path. Each child uses its own registry layout. This keeps the parent's JSON-LD out of child HTML in both the server render and static export. ## Robots diff --git a/stack127_docs/tool-catalogs.md b/stack127_docs/tool-catalogs.md index fa5f7b95..4d77be81 100644 --- a/stack127_docs/tool-catalogs.md +++ b/stack127_docs/tool-catalogs.md @@ -9,7 +9,7 @@ Notion is only a planning space. The site never reads or syncs Notion for catalo | Table | Owns | | --- | --- | | `public.stack127_pages` | The only registry for URL, publication, SEO, social image, and public dates. Set `page_family = 'catalog'` for a tool catalog. A catalog is public only when `is_published = true`. | -| `public.stack127_catalog_pages` | The visible `title`, `intro_markdown`, optional `content_markdown`, `display_order`, and the catalog's card: `card_name`, `card_description`, `card_icon_key`, and `card_art_key`. Its `page_id` points to a registry row whose family is `catalog`. A catalog that has moved to MDX ignores `intro_markdown` and `content_markdown`. | +| `public.stack127_catalog_pages` | The visible `title`, `display_order`, and the catalog's card: `card_name`, `card_description`, `card_icon_key`, and `card_art_key`. Its `page_id` points to a registry row whose family is `catalog`. | | `public.stack127_tool_pages` | Each tool's short card name and description, plus icon and marker art keys. These fields apply in every catalog that includes the tool. | | `public.stack127_tool_catalog_memberships` | Links tools to any number of catalogs. | @@ -23,9 +23,9 @@ Keep each published catalog populated with at least one published tool. Catalogs share one route, `app/(site)/(catalogs)/[slug]/page.tsx`. Each catalog's intro and article live in `content//intro.mdx` and `content//article.mdx` under that route, as [page-content.md](page-content.md) describes. Use the [tool writing skill](../skills/stack127/tools/stack127-tool-writing/SKILL.md) to write them. -`title` and `intro_markdown` must be trimmed, nonempty text. `content_markdown` is optional. Use `null` when there is no prose, or trimmed, nonempty Markdown when there is. These rules match directory pages. +`title` must be trimmed, nonempty text. The intro and article live in MDX, and the database has no catalog content columns. -The route renders the title's `` accent, the Markdown intro, and a fixed "Tools" heading above the cards. Optional `content_markdown` renders below the cards with shared prose styles. The hero and homepage card both use `card_art_key`. +The route renders the title's `` accent, the MDX intro, and a fixed "Tools" heading above the cards. Its MDX article renders below the cards with shared prose styles. The hero and homepage card both use `card_art_key`. `getPublishedToolCatalogs` and `getPublishedToolCatalog` return the registry's `published_at` and `updated_at` with each catalog. Internal row timestamps are not public page dates. A published tool's card or catalog membership change moves the affected catalog dates. Draft cards and memberships leave those dates alone. Publishing or retiring a member still moves them. A primary-catalog rank change refreshes navigation without moving catalog dates. @@ -50,7 +50,7 @@ The tools publisher creates and publishes catalogs. Add a new catalog to the sam 1. Create the `stack127_pages` row first. Use a flat unique slug, `page_family = 'catalog'`, a short `label`, reviewed `meta_title` and `meta_description`, a fitting `page_type` such as `CollectionPage`, and public dates when publishing. Don't put SEO metadata in route files. 2. Add a `stack127_catalog_pages` row for that page ID, with its card name and description. - Write one `title`, with `` around the accent phrase, like directory titles. - - Add `intro_markdown`, optional `content_markdown`, `display_order`, and approved card icon and art keys. Use `card_icon_key` and `card_art_key` in publisher manifests too. Supported keys are in `lib/card-icons.ts` and `lib/card-art.ts`. + - Add the MDX content folder and map entry, `display_order`, and approved card icon and art keys. Use `card_icon_key` and `card_art_key` in publisher manifests too. Supported keys are in `lib/card-icons.ts` and `lib/card-art.ts`. - The writers reject keys that aren't registered. A card with no drawing shows its icon large instead. - The homepage lists every published catalog first, in `display_order`, then other resource cards. The catalog sidebar uses the same order. The homepage's mixed resource sidebar uses the registry's `sitemap_priority`. 3. Add at least one `stack127_tool_catalog_memberships` row. Pick the tool's `page_id` from `stack127_tool_pages`, set its next catalog rank, and choose its display order. To move a tool, edit its membership rows. Don't add tool cards to the route code. @@ -104,14 +104,14 @@ The domain catalog has a separate reference article that explains it. EPP status These changes call the shared `stack127_touch_page` function through `stack127_touch_catalog_page` and move the catalog's public `updated_at`: -- Catalog content edits. +- Catalog title, card, and display-order edits. - Membership changes. - Tool card edits. - Tool publication changes. Identical catalog copy and membership updates leave public dates and refresh events alone. Unpublished catalogs keep public dates null. -The database revalidation queue gets the catalog slug as a page event. The cache worker then invalidates the catalog page, catalog data tags, homepage, and sitemap. A new catalog needs no route or homepage code change. +The database revalidation queue gets the catalog slug as a page event. The cache worker then invalidates the catalog page, catalog data tags, homepage, and sitemap. A new catalog needs an MDX content folder and map entry in the shared route. Homepage cards come from its database row. Catalog page events also invalidate the primary catalog lookup and every published tool page. That's because one catalog change can change many tool sidebars. Tool pages are invalidated without warming them all at once. The revalidation endpoint takes paths in batches of at most 200. diff --git a/stack127_docs/tool-pages.md b/stack127_docs/tool-pages.md index bd119fb9..f8ffade8 100644 --- a/stack127_docs/tool-pages.md +++ b/stack127_docs/tool-pages.md @@ -4,7 +4,7 @@ A tool page has three owners. The Next.js route owns the interactive tool. The r Read [page-content.md](page-content.md) for the content files and how to move a page to them. Follow [writing-style.md](writing-style.md) when writing. This document covers the database side, rendering, and updates. -New tools, tools going public, and changes that touch several tables go through the tool publisher. See [page-publishing.md](page-publishing.md). The single-purpose commands below stay for development and small edits. +New tools, tools going public, and changes that touch several tables go through the tool publisher. See [page-publishing.md](page-publishing.md). The card, version, and repository commands below stay for development and small edits. The database content-update command and temporary tool previews have retired. Use the publisher for reviewed development previews too. This split applies only to interactive tools. Directories such as `/epp-status-codes` and `/tld-directory` use `stack127_directory_pages` instead. See [directory-pages.md](directory-pages.md). @@ -38,7 +38,6 @@ This split applies only to interactive tools. Directories such as `/epp-status-c | --- | --- | | `page_id` | Primary key and foreign key to `stack127_pages.id`. | | `title` | Visible tool-page heading. | -| `intro_markdown`, `usage_markdown`, `content_markdown` | Content for pages that haven't moved to MDX. A moved page ignores them, but the publisher still requires `intro_markdown` and `content_markdown` for a new tool. See [page-publishing.md](page-publishing.md). They retire once every page has moved. | | `tool_version` | Semantic version of the hosted tool behavior. Content-only edits do not change it. | | `tool_version_updated_at` | Time the hosted tool version last changed. | | `stack127_repo_url` | Optional URL for the stack127-owned repository that contains the related public tool. | @@ -66,7 +65,7 @@ Every tool route loads its row with `getRequiredToolPage` and renders through `a - The interactive tool comes next. - `ToolPageArticle` holds `content/usage.mdx`, when there is one, then `content/article.mdx`, in one server-rendered prose region. -`/cac-payback-calculator` shows the whole pattern. A page that hasn't moved yet omits `intro` and uses `ToolPageMarkdown`, which renders the database Markdown through `ContentMarkdown`. Move it before editing its content. +`/cac-payback-calculator` shows the whole pattern. `intro` is required. Tool pages have no database-content fallback. Missing MDX imports fail the build or TypeScript check. Keep controls, live results, accessibility behavior, and operational states in the tool's code. Formulas, worked examples, callouts, and charts that explain the tool go in the MDX content. See [page-content.md](page-content.md) for the blocks content can use. @@ -76,7 +75,7 @@ Content tables use the reading column's width and wrap explanations, links, and A content change edits the introduction, usage, or article. It leaves the tool's inputs, calculations, data sources, results, and behavior unchanged. -1. Move the page to MDX first if it hasn't moved. See [page-content.md](page-content.md). +1. Read the current files and [page-content.md](page-content.md). 2. Edit the files in the route's `content/` folder. 3. Run `npm run quality` and check the page at desktop and mobile width. 4. The change ships with the next code release, through a pull request. diff --git a/stack127_docs/tool-pipeline.md b/stack127_docs/tool-pipeline.md index cdb506eb..90b9cc8b 100644 --- a/stack127_docs/tool-pipeline.md +++ b/stack127_docs/tool-pipeline.md @@ -130,7 +130,7 @@ The frontend step also makes the card art. It uses `$marker-art-draw` to create When the in-app browser isn't available over SSH, use the local headless browser in `skills/stack127/references/homelab-browser-and-search.md`. That applies to these checks and the later audit. -A new database-backed route needs a development preview row to render. Until writing supplies the final title, give it a clearly marked placeholder title and the placeholder Markdown fields the table requires. Keep any existing row, and don't treat the placeholder as finished writing. +A new database-backed route needs reviewed development rows to render. Use the publisher for its title, search metadata, cards, catalog memberships, and version. Page words live in MDX. Do not fill retired Markdown fields or use old placeholder preview scripts. After the backend and frontend are both done, the main agent runs `npm run quality`. The full build runs in pull request CI on GitHub when the user asks to push to prod. Don't build on the homelab. diff --git a/supabase/migrations/20261010064142_prepare_page_content_retirement.sql b/supabase/migrations/20261010064142_prepare_page_content_retirement.sql new file mode 100644 index 00000000..2fafd8b7 --- /dev/null +++ b/supabase/migrations/20261010064142_prepare_page_content_retirement.sql @@ -0,0 +1,37 @@ +begin; +set local lock_timeout = '10s'; + +-- Release 1 keeps the old columns readable by the currently deployed image. +-- New publishers omit page words, so allow NULL until Release 2 archives them. +do $$ +declare field record; +begin + for field in + select table_name, column_name from information_schema.columns + where table_schema = 'public' + and table_name in ('stack127_tool_pages', 'stack127_directory_pages', 'stack127_catalog_pages') + and column_name in ('intro_markdown', 'usage_markdown', 'content_markdown') + and is_nullable = 'NO' + loop + execute format('alter table public.%I alter column %I drop not null', field.table_name, field.column_name); + end loop; +end; +$$; + +create or replace function public.touch_stack127_tool_page_public_date() +returns trigger language plpgsql set search_path = pg_catalog as $$ +begin + if (new.title, new.tool_version) is distinct from (old.title, old.tool_version) then + perform public.stack127_touch_page( + (select slug from public.stack127_pages where id = new.page_id), 'tool_content' + ); + elsif (new.card_name, new.card_description, new.card_icon_key, new.card_art_key) + is distinct from (old.card_name, old.card_description, old.card_icon_key, old.card_art_key) then + update public.stack127_pages set row_updated_at = now() where id = new.page_id; + end if; + return new; +end; +$$; + +notify pgrst, 'reload schema'; +commit; diff --git a/tests/pages/dns-lookup/dns-lookup.test.mjs b/tests/pages/dns-lookup/dns-lookup.test.mjs index ea5ec75a..bca692ab 100644 --- a/tests/pages/dns-lookup/dns-lookup.test.mjs +++ b/tests/pages/dns-lookup/dns-lookup.test.mjs @@ -2,6 +2,7 @@ import assert from "node:assert/strict"; import { readFileSync } from "node:fs"; import test from "node:test"; import dnsPacket from "dns-packet"; +import { encodeDnsQuery } from "../../../lib/dns/dns-wire.ts"; import { buildUnifiedAliasChain, @@ -274,10 +275,36 @@ test("All records uses every offered type as separate queries with fixed DO/CD v assert.ok(calls.every((call) => call.url.href === "https://cloudflare-dns.com/dns-query")); assert.ok(calls.every((call) => call.init.method === "POST")); assert.ok(calls.every((call) => call.query.flag_cd === false)); + assert.ok(calls.every((call) => call.query.flag_ad === true)); assert.ok(calls.every((call) => call.query.additionals.length === 0)); assert.ok(result.queryResults.every((query) => query.flags.authenticatedData === true)); }); +test("recursive lookups request the resolver's AD flag and preserve its reply", async () => { + for (const authenticated of [true, false]) { + const result = await lookupDns( + { name: "example.com", selection: "A", resolver: "cloudflare" }, + { fetchImpl: async (_url, init) => { + const query = dnsPacket.decode(Buffer.from(init.body)); + const flags = dnsPacket.RECURSION_AVAILABLE + | (authenticated && query.flag_ad ? dnsPacket.AUTHENTIC_DATA : 0); + return wireResponse(init.body, [{ name: "example.com", type: "A", ttl: 60, data: "192.0.2.1" }], flags); + } }, + ); + assert.equal(result.queryResults[0].flags.authenticatedData, authenticated); + } +}); + +test("authoritative queries leave AD, RD, CD, and EDNS unset", () => { + const query = dnsPacket.decode(encodeDnsQuery("example.com", "A", { recursive: false, id: 42 })); + assert.equal(query.id, 42); + assert.equal(query.flag_ad, false); + assert.equal(query.flag_rd, false); + assert.equal(query.flag_cd, false); + assert.deepEqual(query.additionals, []); + assert.deepEqual(query.questions, [{ name: "example.com", type: "A", class: "IN" }]); +}); + test("PTR accepts an IP address, sends one reverse-DNS query, and stays out of All", async () => { const calls = []; const fetchImpl = async (_url, init) => { diff --git a/tests/pages/keyboard-shortcuts/shared/data.test.mjs b/tests/pages/keyboard-shortcuts/shared/data.test.mjs index 37323dd3..3b58f551 100644 --- a/tests/pages/keyboard-shortcuts/shared/data.test.mjs +++ b/tests/pages/keyboard-shortcuts/shared/data.test.mjs @@ -94,7 +94,6 @@ test("every app has a source and documented data", () => { `${app.slug} needs a real calendar date`, ); assert.ok(app.groups.length > 0); - assert.ok(app.intro.length >= 120, `${app.slug} needs a specific intro`); assert.ok(shortcutCount(app) > 0, `${app.slug} has no documented shortcut coverage`); const groupIds = new Set(); const ids = new Set(); diff --git a/tests/pages/launch-directories/query.test.mjs b/tests/pages/launch-directories/query.test.mjs index 0b471bc6..8facb84a 100644 --- a/tests/pages/launch-directories/query.test.mjs +++ b/tests/pages/launch-directories/query.test.mjs @@ -10,9 +10,9 @@ const row = (slug, changes = {}) => ({ cost_kind: "free", link_type_kind: "dofollow", ...changes, }); -test("free includes mixed plans while backlink-free excludes unknown and required conditions", () => { - const rows = [row("free"), row("mixed", { cost_kind: "free_and_paid", submission_details: { backlink: "not_required" } }), - row("optional", { submission_details: { backlink: "optional" } }), row("required", { submission_details: { backlink: "required" } }), +test("free includes mixed plans while backlink-free excludes required backlink conditions", () => { + const rows = [row("free", { cost_label: "Free" }), row("mixed", { cost_kind: "free_and_paid", submission_details: { backlink: "not_required" } }), + row("optional", { submission_details: { backlink: "optional" } }), row("required", { cost_label: "Free", submission_details: { backlink: "required" } }), row("paid", { cost_kind: "paid", submission_details: { backlink: "not_required" } }), row("unknown", { cost_kind: "unknown" })]; assert.equal(queryLaunchDirectories(rows, { costs: ["free"] }).total, 4); assert.deepEqual(queryLaunchDirectories(rows, { backlink: "not_required", sort: "name" }).items.map(item => item.slug), ["mixed", "optional"]); @@ -22,6 +22,17 @@ test("free includes mixed plans while backlink-free excludes unknown and require assert.equal(queryLaunchDirectories(rows, { costs: ["free", "paid"] }).total, 5); }); +test("backlink-free needs a checked free flow, whatever the cost text says", () => { + const rows = [ + row("badge", { cost_label: "Free with badge; paid from $19" }), + row("plain", { cost_kind: "free_and_paid", cost_label: "Free; Premium $39 per launch", cost_tag: "Free" }), + row("unknown-check", { cost_label: "Free", submission_details: { backlink: "unknown" } }), + row("checked", { cost_label: "Free with badge", submission_details: { backlink: "optional" } }), + row("not-required", { cost_kind: "free_and_paid", submission_details: { backlink: "not_required" } }), + ]; + assert.deepEqual(queryLaunchDirectories(rows, { backlink: "not_required", sort: "name" }).items.map(item => item.slug), ["checked", "not-required"]); +}); + test("public submission projection rejects unchecked conditions and never copies private notes", () => { const public_submission = { backlink: "not_required", requirements: ["DNS verification"], review_time: null, launch_queue: "Choose an available week", observations: [{ text: "Our checked flow required a DNS TXT record.", checked_at: "2026-10-07", source_url: null, method: "signed_in_flow" }] }; diff --git a/tests/pages/zigbee-devices/data-pipeline.test.mjs b/tests/pages/zigbee-devices/data-pipeline.test.mjs index a72aaabd..382a59f7 100644 --- a/tests/pages/zigbee-devices/data-pipeline.test.mjs +++ b/tests/pages/zigbee-devices/data-pipeline.test.mjs @@ -3,6 +3,7 @@ import test from "node:test"; import { buildCatalog, flattenExposes, + normalizeCompatibilityCodes, parseCompatibilityRecord, } from "../../../scripts/zigbee-devices/lib/catalog.mjs"; @@ -14,14 +15,14 @@ title: Temperature and Humidity Sensor category: sensor supports: temperature, humidity zigbeemodel: ['SNZB-02P'] -compatible: [z2m, zha] +compatible: [z2m, zha, ihost, deconz.zha] --- `; test("compatibility front matter keeps exact support evidence", () => { assert.deepEqual(parseCompatibilityRecord(zhaAndZ2mRecord, "Sonoff_SNZB-02P.md"), { category: "sensor", - compatible: ["z2m", "zha"], + compatible: ["z2m", "zha", "ihost", "deconz.zha"], dateAdded: "2023-06-08", fileName: "Sonoff_SNZB-02P.md", model: "SNZB-02P", @@ -48,6 +49,13 @@ test("exposes flatten nested features without duplicate labels", () => { ); }); +test("compatibility codes use readable platform names and expand compound labels", () => { + assert.deepEqual( + normalizeCompatibilityCodes(["ihost", "sz2m", "24d", "deconz.zha", "zigbee2mqtt", "z4d"]), + ["SONOFF iHost", "Unverified platform", "deCONZ", "ZHA", "Zigbee2MQTT", "Zigbee4Domoticz"], + ); +}); + test("catalog keeps the official marketed universe and adds unmatched community records", () => { const result = buildCatalog({ blakadderCommit: "abc123", @@ -88,6 +96,15 @@ test("catalog keeps the official marketed universe and adds unmatched community ); assert.equal(joined.battery_reporting, true); assert.equal(joined.ota, true); + assert.equal(joined.card.compatibility.value, "Zigbee2MQTT + ZHA + SONOFF iHost + deCONZ"); + assert.deepEqual( + joined.detail_sections.find((section) => section.heading === "Platform compatibility").facts.map((fact) => fact.label), + ["Zigbee2MQTT", "ZHA", "SONOFF iHost", "deCONZ"], + ); + assert.deepEqual( + joined.provenance.filter((record) => record.field === "SONOFF iHost").map((record) => record.source), + ["Blakadder Zigbee record"], + ); assert.equal(result.devices.some((device) => device.model === "ZHA-ONLY"), true); assert.equal(result.meta.coverage.zigbee2mqtt_marketed_total, 2); assert.equal(result.meta.coverage.record_total, 3); diff --git a/tests/pages/zigbee-devices/filters.test.mjs b/tests/pages/zigbee-devices/filters.test.mjs index d4c2a6fc..b967978d 100644 --- a/tests/pages/zigbee-devices/filters.test.mjs +++ b/tests/pages/zigbee-devices/filters.test.mjs @@ -76,3 +76,20 @@ test("sort and pagination helpers stay deterministic", () => { assert.equal(getPage({ page: "3" }), 3); assert.deepEqual(paginationPages(5, 10), [1, null, 4, 5, 6, null, 10]); }); + +test("capability filter and feature sort include Blakadder-only records", () => { + const blakadderOnly = device({ + slug: "acme-th1", + vendor: "Acme", + name: "Climate sensor", + model: "TH1", + zigbee2mqtt_capabilities: [], + zha_reported_capabilities: ["Temperature", "humidity", "batterypct", "occupancy"], + zigbee2mqtt_url: "", + }); + const withBlakadder = [...devices, blakadderOnly]; + assert.deepEqual(filterDevices(withBlakadder, { capability: ["temperature"] }).map((d) => d.slug), ["sonoff-snzb-02p", "acme-th1"]); + assert.deepEqual(filterDevices(withBlakadder, { capability: ["occupancy"] }).map((d) => d.slug), ["acme-th1"]); + assert.deepEqual(filterDevices(withBlakadder, { capability: ["power"] }).map((d) => d.slug), ["innr-sp-240"]); + assert.equal(sortDevices(withBlakadder, "capabilities")[0].slug, "acme-th1"); +}); diff --git a/tests/stack127/breadcrumbs.test.mjs b/tests/stack127/breadcrumbs.test.mjs new file mode 100644 index 00000000..efdfcd41 --- /dev/null +++ b/tests/stack127/breadcrumbs.test.mjs @@ -0,0 +1,133 @@ +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import vm from "node:vm"; +import test from "node:test"; +import ts from "typescript"; +import * as seo from "../../lib/seo.ts"; +import * as courses from "../../lib/courses.ts"; +import * as titles from "../../lib/directory-page-content.ts"; + +function load(file, imports) { + const exports = {}; + const code = ts.transpileModule(readFileSync(new URL(`../../${file}`, import.meta.url), "utf8"), { + compilerOptions: { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.CommonJS, jsx: ts.JsxEmit.ReactJSX }, + }).outputText; + vm.runInNewContext(code, { exports, URL, Date, process, require(name) { + if (Object.hasOwn(imports, name)) return imports[name]; + throw new Error(`Unexpected import: ${name}`); + } }); + return exports; +} +const plain = value => JSON.parse(JSON.stringify(value)); +const page = (slug, page_family = "directory", label = slug) => ({ + id: slug, slug, page_family, label, is_published: true, is_indexable: true, + page_type: "WebPage", meta_title: label, meta_description: "Description", + updated_at: "2026-10-10T00:00:00Z", published_at: "2026-10-01T00:00:00Z", +}); +const course = { + registrySlug: "course", basePath: "/course", title: "Self-hosting for beginners", + lessons: [{ slug: "", published: true, sidebarLabel: "Start here" }, + { slug: "install", published: true, sidebarLabel: "Install Docker" }], +}; +const pages = new Map([ + page("about", "site", "About"), + page("directory", "directory", "Useful directory"), + page("directory/child", "directory", "Child page"), + page("keyboard-shortcuts", "directory", "Keyboard shortcuts"), + page("keyboard-shortcuts/claude-code", "directory", "Claude Code keyboard shortcuts"), +].map(entry => [entry.slug, entry])); +function breadcrumbs() { + return load("lib/breadcrumbs.ts", { + react: { cache: fn => fn }, + "./page-registry": { getExactPublishedPage: async slug => pages.get(slug), pathFromSlug: slug => slug ? `/${slug}` : "/" }, + "./tool-catalogs": { getPrimaryToolCatalog: async () => ({ page: page("dns-tools", "catalog", "DNS tools") }) }, + "./courses": courses, "./directory-page-content": titles, + "./tool-pages": { getRequiredToolPage: async () => ({ card_name: "DNS lookup" }) }, + "./course-pages": { getRequiredCourse: async () => course }, + "./shortcuts/index": { loadShortcutApp: async () => ({ name: "Claude Code" }) }, + }); +} +function registry(crumbs) { + return load("lib/page-registry.ts", { + react: { cache: fn => fn }, "next/cache": { unstable_cache: fn => fn }, + "next/navigation": { notFound() { throw new Error("404"); } }, + "./page-cards": {}, "./db": {}, "./public-data-api": {}, + "./seo": seo, "./page-registry-helpers": {}, "./cache-tags": {}, "./breadcrumbs": crumbs, + "./platform-fees/queries": { getFeeDirectory: async () => ({ sections: [{ id: 1, group_name: "Creators" }], + entries: [{ id: "one", section_id: 1, name: "Service", website_url: "https://example.com" }] }) }, + "./platform-fees/groups": { getFeeGroup: () => ({ name: "Creators" }), groupPath: () => "/platform-fees/creators" }, + }); +} + +test("registry breadcrumbs use the page header's labels and links for each family", async () => { + const crumbs = breadcrumbs(); + const { getRegistryPageStructuredData } = registry(crumbs); + for (const [entry, names, paths] of [ + [page("about", "site", "About"), ["stack127", "About"], ["/", "/about"]], + [pages.get("directory"), ["stack127", "Useful directory"], ["/", "/directory"]], + [pages.get("directory/child"), ["stack127", "Useful directory", "Child page"], ["/", "/directory", "/directory/child"]], + [page("dns-lookup", "tool", "DNS lookup tool"), ["stack127", "DNS tools", "DNS lookup"], ["/", "/dns-tools", "/dns-lookup"]], + [pages.get("keyboard-shortcuts/claude-code"), ["stack127", "Keyboard shortcuts", "Claude Code"], ["/", "/keyboard-shortcuts", "/keyboard-shortcuts/claude-code"]], + [page("course", "course"), ["stack127", "Self-hosting for beginners"], ["/", "/course"]], + [page("course/install", "course"), ["stack127", "Self-hosting for beginners", "Install Docker"], ["/", "/course", "/course/install"]], + ]) { + const data = await getRegistryPageStructuredData({ kind: "exact", index: true, page: entry }); + const lists = data.filter(item => item["@type"] === "BreadcrumbList"); + assert.equal(lists.length, 1, entry.slug); + assert.deepEqual(plain(lists[0].itemListElement), names.map((name, index) => ({ + "@type": "ListItem", name, position: index + 1, item: seo.absoluteUrl(paths[index]), + }))); + } + assert.deepEqual(plain(await crumbs.getBreadcrumbs("")), []); + const landing = await crumbs.getPageBreadcrumbs(page("course", "course")); + assert.deepEqual(plain(landing.map(item => ({ name: item.name, path: item.href }))), plain(crumbs.buildCourseBreadcrumbs(course, course.lessons[0]))); +}); + +test("noindex, inherited children, and missing pages emit no structured data or breadcrumb reads", async () => { + const { getRegistryPageStructuredData } = registry({ getPageBreadcrumbs() { throw new Error("Must not read breadcrumbs"); } }); + for (const state of [ + { kind: "exact", index: false, page: page("noindex") }, + { kind: "child", index: false, page: page("directory"), parentSlug: "directory" }, + { kind: "missing" }, + ]) assert.equal(await getRegistryPageStructuredData(state), null); +}); + +test("home emits its page entity without an empty BreadcrumbList", async () => { + const { getRegistryPageStructuredData } = registry(breadcrumbs()); + const data = await getRegistryPageStructuredData({ kind: "exact", index: true, page: page("", "site") }); + assert.equal(data.length, 1); + assert.equal(data[0].url, seo.absoluteUrl("/")); +}); + +test("directory ItemList survives the addition of breadcrumbs", async () => { + const { getRegistryPageStructuredData } = registry(breadcrumbs()); + const data = await getRegistryPageStructuredData({ kind: "exact", index: true, page: page("platform-fees/creators") }); + assert.equal(data[0].mainEntity["@type"], "ItemList"); + assert.equal(data[0].mainEntity.numberOfItems, 1); + assert.equal(data[1]["@type"], "BreadcrumbList"); +}); + +test("parent layouts using page mode do not leak JSON-LD into child HTML", async () => { + const calls = []; + const entry = page("directory"); + const jsx = (type, props) => ({ type, props }); + const { registryLayout, RegistryStructuredData } = load("lib/registry-layout.tsx", { + react: { cache: fn => fn }, "react/jsx-runtime": { jsx, jsxs: jsx, Fragment: "fragment" }, + "next/navigation": { notFound() { throw new Error("404"); } }, + "./page-registry": { + buildRegistryMetadata: () => ({}), + getPagePublicationState: async path => path === "/directory" ? { kind: "exact", index: true, page: entry } + : { kind: "child", index: false, page: entry }, + getRegistryPageStructuredData: async state => { calls.push(state); return state.index ? [{ "@type": "BreadcrumbList" }] : null; }, + }, + "@/app/ui/site/json-ld": { JsonLd: "json-ld" }, "./seo": seo, + }); + const children = { childHtml: true }; + assert.equal(await registryLayout("/directory", { structuredData: "page" }).Layout({ children }), children); + assert.equal(calls.length, 0); + assert.equal(await RegistryStructuredData({ path: "/directory/unregistered" }), null); + assert.ok(await RegistryStructuredData({ path: "/directory" })); + const rendered = await registryLayout("/directory").Layout({ children }); + assert.ok(rendered.props.children[0]); + assert.equal(rendered.props.children[1], children); +}); diff --git a/tests/stack127/directory-pages.test.mjs b/tests/stack127/directory-pages.test.mjs index 8e927d5b..1572a364 100644 --- a/tests/stack127/directory-pages.test.mjs +++ b/tests/stack127/directory-pages.test.mjs @@ -1,17 +1,9 @@ import assert from 'node:assert/strict'; import test from 'node:test'; -import { directoryContentSection, directoryTitleParts } from '../../lib/directory-page-content.ts'; -import { keyboardShortcutPageCopy, adNetworkPageCopy } from '../../scripts/stack127/directory-pages/lib.mjs'; +import { directoryTitleParts } from '../../lib/directory-page-content.ts'; +import { keyboardShortcutPageCopy } from '../../scripts/stack127/directory-pages/lib.mjs'; import { remapDevelopmentPageIds } from '../../scripts/stack127/database/rebuild-development.mjs'; -test('named prose sections cannot include the neighboring record explanation', () => { - const content = '\nBefore the table\n\n\nAfter the table'; - assert.equal(directoryContentSection(content, 'first'), 'Before the table'); - assert.equal(directoryContentSection(content, 'second'), 'After the table'); - assert.throws(() => directoryContentSection(content, 'missing'), /section is missing/); - assert.equal(directoryContentSection(null, 'missing'), ''); -}); - test('titles preserve their marked phrase and treat other HTML as text', () => { assert.deepEqual(directoryTitleParts('Check apps today'), [ { text: 'Check ', marked: false }, { text: 'apps', marked: true }, { text: ' today', marked: false }, @@ -19,16 +11,10 @@ test('titles preserve their marked phrase and treat other HTML as text', () => { assert.deepEqual(directoryTitleParts(''), [{ text: '', marked: false }]); }); -test('new child rows use record identity and keyboard rows leave the print section to the route', () => { - const shortcut = keyboardShortcutPageCopy({ slug: 'demo', name: 'Demo', intro: 'Current record intro.' }); - assert.equal(shortcut.slug, 'keyboard-shortcuts/demo'); - assert.equal(shortcut.title, 'Demo keyboard shortcuts'); - assert.equal(shortcut.content_markdown, null); - const network = adNetworkPageCopy({ slug: 'demo', name: 'Demo', summary: null }); - assert.equal(network.slug, 'ad-networks/demo'); - assert.match(network.intro_markdown, /verified Demo relationship/); - assert.ok(adNetworkPageCopy({ slug: 'demo', name: 'Demo', summary: 'Updated summary.' }).intro_markdown.startsWith('Updated summary.')); - +test('new keyboard child rows use record identity and leave words in MDX', () => { + assert.deepEqual(keyboardShortcutPageCopy({ slug: 'demo', name: 'Demo' }), { + slug: 'keyboard-shortcuts/demo', title: 'Demo keyboard shortcuts', + }); }); test('development rebuild keeps child copy and memberships when page IDs change', () => { diff --git a/tests/stack127/directory-previews.test.mjs b/tests/stack127/directory-previews.test.mjs index d38b9c95..4da914d6 100644 --- a/tests/stack127/directory-previews.test.mjs +++ b/tests/stack127/directory-previews.test.mjs @@ -20,8 +20,7 @@ function database(slugs) { published_at: '2026-10-01', updated_at: '2026-10-01', })); const copies = rows.map(row => ({ - page_id: row.id, title: `Edited ${row.slug}`, intro_markdown: 'Edited intro.', - content_markdown: 'Edited page content.', card_name: 'Edited card name', + page_id: row.id, title: `Edited ${row.slug}`, card_name: 'Edited card name', card_description: 'Edited card description.', card_icon_key: 'layers', card_art_key: 'catalog/test', row_updated_at: '2026-10-02', })); const state = { rows, copies, failUpdate: null }; @@ -57,8 +56,8 @@ function database(slugs) { if (query.startsWith('insert into public.stack127_directory_pages')) { const row = state.rows.find(row => row.slug === args[0] && row.page_family === 'directory'); if (!row || state.copies.some(copy => copy.page_id === row.id)) return { rows: [], rowCount: 0 }; - state.copies.push({ page_id: row.id, title: args[1], intro_markdown: args[2], content_markdown: args[3], - card_name: args[4] ?? row.label, card_description: args[5] ?? row.meta_description, row_updated_at: 'now' }); + state.copies.push({ page_id: row.id, title: args[1], + card_name: args[2] ?? row.label, card_description: args[3] ?? row.meta_description, row_updated_at: 'now' }); return { rows: [{ page_id: row.id }], rowCount: 1 }; } if (query.startsWith('update')) { @@ -129,8 +128,7 @@ for (const preview of cases) { assert.equal(state.copies.length, preview.slugs.length); assert.deepEqual(state.rows.map(row => [row.label, row.meta_title, row.meta_description]), searchBefore); const initialized = state.copies.at(-1); - assert.equal(initialized.intro_markdown, state.rows.at(-1).meta_description); - assert.equal(initialized.content_markdown, null); + assert.equal(initialized.card_description, state.rows.at(-1).meta_description); }); test(`${preview.name} preview leaves published rows and their dates unchanged`, async () => { diff --git a/tests/stack127/page-content.test.mjs b/tests/stack127/page-content.test.mjs index 567a23a0..99f2e754 100644 --- a/tests/stack127/page-content.test.mjs +++ b/tests/stack127/page-content.test.mjs @@ -241,10 +241,15 @@ test('finds one route and rejects missing or ambiguous routes', async () => { await mkdir(path.join(root, '(tools)/pilot'), { recursive: true }); await writeFile(path.join(root, '(tools)/pilot/page.tsx'), ''); assert.equal(await findRouteFolder('pilot', root), path.join(root, '(tools)/pilot')); - await assert.rejects(findRouteFolder('missing', root), /found 0/); + await mkdir(path.join(root, '(catalogs)/[slug]'), { recursive: true }); + await writeFile(path.join(root, '(catalogs)/[slug]/page.tsx'), ''); + assert.equal(await findRouteFolder('pilot', root), path.join(root, '(tools)/pilot')); + assert.equal(await findRouteFolder('pilot', root, 'catalog'), path.join(root, '(catalogs)/[slug]')); + await assert.rejects(findRouteFolder('missing', root, 'tool'), /found 0/); await mkdir(path.join(root, '(directories)/pilot'), { recursive: true }); await writeFile(path.join(root, '(directories)/pilot/page.tsx'), ''); await assert.rejects(findRouteFolder('pilot', root), /found 2/); + assert.equal(await findRouteFolder('pilot', root, 'directory'), path.join(root, '(directories)/pilot')); } finally { await rm(root, { recursive: true, force: true }); } }); @@ -268,6 +273,7 @@ test('database exports use a read-only transaction and roll back on success and assert.ok(readOnly); assert.ok(sql.startsWith('select ')); if (sql.includes('stack127_pages')) { assert.deepEqual(values, ['pilot']); return { rows: [{ id: 1, slug: 'pilot', page_family: 'tool' }] }; } + if (sql.includes('information_schema.columns')) return { rows: [{ present: true }] }; if (fail) throw new Error('Read failed'); return { rows: [{ intro_markdown: 'Intro', content_markdown: 'Article' }] }; }, @@ -280,3 +286,30 @@ test('database exports use a read-only transaction and roll back on success and assert.ok(released); } }); + +test('exports archived tool words after the live columns have been removed', async () => { + let rolledBack = false; + let released = false; + const client = { + async query(sql, values) { + if (sql.startsWith('begin')) { assert.match(sql, /read only$/); return {}; } + if (sql === 'rollback') { rolledBack = true; return {}; } + if (sql.includes('stack127_pages')) return { rows: [{ id: 12, slug: 'pilot', page_family: 'tool' }] }; + if (sql.includes('information_schema.columns')) return { rows: [{ present: false }] }; + assert.match(sql, /from public.stack127_retired_page_content/); + assert.deepEqual(values, [12, 'stack127_tool_pages']); + return { rows: [ + { column_name: 'intro_markdown', value: 'Original intro' }, + { column_name: 'content_markdown', value: 'Original article' }, + { column_name: 'usage_markdown', value: null }, + ] }; + }, + release() { released = true; }, + }; + assert.deepEqual(await readPageContent({ connect: async () => client }, 'pilot'), { + id: 12, slug: 'pilot', page_family: 'tool', intro_markdown: 'Original intro', + content_markdown: 'Original article', usage_markdown: null, + }); + assert.ok(rolledBack); + assert.ok(released); +}); diff --git a/tests/stack127/page-dates-development.test.mjs b/tests/stack127/page-dates-development.test.mjs index 54f26de3..3a084bd4 100644 --- a/tests/stack127/page-dates-development.test.mjs +++ b/tests/stack127/page-dates-development.test.mjs @@ -58,12 +58,11 @@ test('development public dates follow real content changes and identical imports }); await scenario('catalog no-op copy and membership updates keep public dates and refresh events',async()=>{ const before=await dates();const events=await queues(); - await client.query('update public.stack127_catalog_pages set title=title,content_markdown=content_markdown'); + await client.query('update public.stack127_catalog_pages set title=title'); await client.query('update public.stack127_tool_catalog_memberships set display_order=display_order'); assert.deepEqual(await dates(),before);assert.deepEqual(await queues(),events); }); - for (const [field,expression] of [['title',"title || ' Test'"],['intro_markdown',"intro_markdown || ' Test.'"], - ['content_markdown',"'## Catalog check'"],['display_order','display_order+1'],['card_description',"card_description || ' Test.'"]]) { + for (const [field,expression] of [['title',"title || ' Test'"],['display_order','display_order+1'],['card_description',"card_description || ' Test.'"]]) { await scenario(`catalog ${field} updates the registry date, refresh event, and source fingerprint`,async()=>{ const before=await dates(); const fingerprint=async()=> (await client.query("select fingerprint from public.stack127_cache_source_revisions(array['page'],array['dns-tools'])")).rows[0].fingerprint; @@ -82,7 +81,7 @@ test('development public dates follow real content changes and identical imports }); await scenario('unpublished catalog copy keeps null public dates',async()=>{ await client.query("update public.stack127_pages set is_published=false,published_at=null,updated_at=null where slug='dns-tools'"); - await client.query("update public.stack127_catalog_pages set content_markdown='## Catalog check' where page_id=(select id from public.stack127_pages where slug='dns-tools')"); + await client.query("update public.stack127_catalog_pages set title=title || ' Test' where page_id=(select id from public.stack127_pages where slug='dns-tools')"); assert.deepEqual((await client.query("select published_at,updated_at from public.stack127_pages where slug='dns-tools'")).rows[0],{published_at:null,updated_at:null}); }); await scenario('tool cards keep tool dates and still update their catalogs',async()=>{ @@ -161,7 +160,7 @@ test('development public dates follow real content changes and identical imports await scenario('tool copy updates its page date',async()=>{ await client.query("update public.stack127_pages set is_published=true,published_at='2026-01-01',updated_at='2026-01-01' where slug='dns-lookup'"); const before=await dates(); - await client.query("update public.stack127_tool_pages set intro_markdown=intro_markdown || ' Copy test.' where page_id=(select id from public.stack127_pages where slug='dns-lookup')"); + await client.query("update public.stack127_tool_pages set title=title || ' Title test.' where page_id=(select id from public.stack127_pages where slug='dns-lookup')"); assert.deepEqual(await changedSlugs(before),['dns-lookup']); }); await scenario('tool versions update the public and version dates',async()=>{ @@ -173,7 +172,7 @@ test('development public dates follow real content changes and identical imports }); await scenario('directory child copy updates child and hub',async()=>{ const before=await dates(); - await client.query("update public.stack127_directory_pages set intro_markdown=intro_markdown || ' Copy test.' where page_id=(select id from public.stack127_pages where slug='keyboard-shortcuts/vscode')"); + await client.query("update public.stack127_directory_pages set title=title || ' Title test.' where page_id=(select id from public.stack127_pages where slug='keyboard-shortcuts/vscode')"); assert.deepEqual(await changedSlugs(before),['keyboard-shortcuts','keyboard-shortcuts/vscode']); }); await scenario('directory child SEO and retirement update the registered hub',async()=>{ diff --git a/tests/stack127/page-publishing-database.test.mjs b/tests/stack127/page-publishing-database.test.mjs index 4c95b5fa..09bf67a2 100644 --- a/tests/stack127/page-publishing-database.test.mjs +++ b/tests/stack127/page-publishing-database.test.mjs @@ -10,14 +10,11 @@ import { CONTENT_FIELDS, REGISTRY_FIELDS, desiredStates, validateState } from ". function state(slug, family = "directory", published = false) { const content = { - directory: { title: "Page title", intro_markdown: "Page introduction", content_markdown: null, - card_name: "Page", card_description: "Page description", card_icon_key: null, card_art_key: null }, - tool: { title: "Tool title", intro_markdown: "Tool introduction", usage_markdown: null, - content_markdown: "Tool instructions", tool_version: "1.0.0", stack127_repo_url: null, + directory: { title: "Page title", card_name: "Page", card_description: "Page description", card_icon_key: null, card_art_key: null }, + tool: { title: "Tool title", tool_version: "1.0.0", stack127_repo_url: null, stack127_repo_version: null, stack127_repo_commit_sha: null, card_name: "Tool", card_description: "Tool description", card_icon_key: "calculator", card_art_key: "icon" }, - catalog: { title: "Tools", intro_markdown: "Find a tool", content_markdown: null, - card_icon_key: "layers", card_art_key: "icon", display_order: 10, + catalog: { title: "Tools", card_icon_key: "layers", card_art_key: "icon", display_order: 10, card_name: "Tools", card_description: "Choose a tool" }, }[family]; return { slug, family, registry: { label: "Page", meta_title: "Page | stack127", @@ -232,7 +229,7 @@ test("full states require all managed fields and reject unknown or schema-invali assert.throws(() => validateState({ ...tool, extra: true }), /Unknown state field/); assert.throws(() => validateState({ ...tool, content: { ...tool.content, unexpected: 1 } }), /Unknown tool content field/); assert.throws(() => validateState({ ...tool, registry: { ...tool.registry, sitemap_priority: 0.555 } }), /two decimal places/); - assert.throws(() => validateState({ ...tool, content: { ...tool.content, content_markdown: null } }), /nonempty text/); + assert.throws(() => validateState({ ...tool, content: { ...tool.content, content_markdown: null } }), /Unknown tool content field/); assert.throws(() => validateState({ ...tool, catalogs: [{ slug: "tools", display_order: 2147483648 }] }), /integer range/); }); @@ -438,13 +435,13 @@ test("restore can return an unfinished registry draft to its exact content:null assert.deepEqual(await readStates(db.client, [{ slug: before.slug, family: before.family }]), [before]); }); -test("query values remain parameters even when Markdown contains SQL syntax", async () => { +test("query values remain parameters even when card text contains SQL syntax", async () => { const page = state("directory"); - page.content.content_markdown = "Text'); drop table public.stack127_pages; --"; + page.content.card_description = "Text'); drop table public.stack127_pages; --"; const db = database(); await executeBatch(db.pool, [create(page)], { apply: true }); - assert.ok(db.calls.some(call => call.values.includes(page.content.content_markdown))); - assert.ok(db.calls.every(call => !call.sql.includes(page.content.content_markdown))); + assert.ok(db.calls.some(call => call.values.includes(page.content.card_description))); + assert.ok(db.calls.every(call => !call.sql.includes(page.content.card_description))); }); test("repo URLs alone do not claim a sync, and copy changes preserve an existing verified sync", async () => { @@ -500,15 +497,13 @@ test("catalog copy, order, and shared card fields round-trip and restore without const catalog = state("tools", "catalog"); catalog.content.card_icon_key = "network"; catalog.content.card_art_key = "dns-tools"; - catalog.content.content_markdown = "## DNS checks\n\nChoose the records you need."; const db = database(); const refs = [{ slug: catalog.slug, family: catalog.family }]; await executeBatch(db.pool, [create(catalog)], { apply: true }); assert.deepEqual(await readStates(db.client, refs), [catalog]); const updated = change(catalog, after => { after.content.title = "Domain tools"; - after.content.intro_markdown = "Find a **domain** check."; - after.content.content_markdown = null; + after.content.card_description = "Find a domain check."; after.content.card_icon_key = "globe"; after.content.card_art_key = "domain-tools"; after.content.display_order = 20; @@ -522,15 +517,13 @@ test("catalog copy, order, and shared card fields round-trip and restore without assert.deepEqual(await readStates(db.client, refs), [catalog]); }); -test("catalog Markdown is optional, trimmed when present, and uses the shared fields", () => { +test("catalog metadata is complete and retired Markdown fields are rejected", () => { const catalog = state("tools", "catalog"); assert.deepEqual(validateState(catalog), catalog); - for (const value of ["", " ", " Content", "Content "]) { - assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, content_markdown: value } }), /nonempty text/); - } - for (const field of ["title", "intro_markdown"]) { - assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, [field]: "" } }), /nonempty text/); + for (const field of ["intro_markdown", "content_markdown"]) { + assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, [field]: "Retired words" } }), /Unknown catalog content field/); } + assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, title: "" } }), /nonempty text/); assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, display_order: 1.5 } }), /integer/); assert.throws(() => validateState({ ...catalog, content: { ...catalog.content, hero_art_key: "icon" } }), /Unknown catalog content field/); }); @@ -805,7 +798,7 @@ test("prepare defaults new pages to indexable and preserves existing noindex set existing.registry.is_indexable = false; const db = database([existing]); const unchanged = await preparePlan(db.pool, - directoryManifest({ slug: existing.slug, content: { intro_markdown: "Reviewed copy" } }, fixture.requirements()), prepareOptions(fixture.root)); + directoryManifest({ slug: existing.slug, content: { card_description: "Reviewed copy" } }, fixture.requirements()), prepareOptions(fixture.root)); assert.equal(unchanged.pages[0].after.registry.is_indexable, false); for (const invalid of ["false", null, 0]) { await assert.rejects(preparePlan(db.pool, @@ -836,7 +829,7 @@ test("prepare freezes directory assets, preserves omitted values and supports ex before.content.card_icon_key = "book"; before.content.card_art_key = "cli-apps"; const db = database([before]); - const manifest = directoryManifest({ slug: before.slug, content: { intro_markdown: "Reviewed introduction" } }, fixture.requirements()); + const manifest = directoryManifest({ slug: before.slug, content: { card_description: "Reviewed description" } }, fixture.requirements()); const plan = await preparePlan(db.pool, manifest, prepareOptions(fixture.root)); assert.deepEqual(plan.pages[0].before, before); assert.equal(plan.pages[0].after.content.card_icon_key, "book"); diff --git a/tests/stack127/page-publishing.test.mjs b/tests/stack127/page-publishing.test.mjs index 8ddf0134..ac52df6c 100644 --- a/tests/stack127/page-publishing.test.mjs +++ b/tests/stack127/page-publishing.test.mjs @@ -1,18 +1,19 @@ import assert from 'node:assert/strict'; import test from 'node:test'; +import { createHash } from 'node:crypto'; import { mkdtemp, writeFile, symlink, rm } from 'node:fs/promises'; import os from 'node:os'; import path from 'node:path'; import { publishingArgs, resolveCopy, validatePlan, verifyPublication } from '../../scripts/stack127/publishing/cli.mjs'; import { checkDatabaseRequirements, readinessSql, routeMatches } from '../../scripts/stack127/publishing/readiness.mjs'; import { checkLiveRelease, inspectIndexingHtml, inspectPublishedHtml, verifyPublicPages } from '../../scripts/stack127/publishing/verify.mjs'; -import { publicationEvent } from '../../scripts/stack127/publishing/github.mjs'; +import { publicationEvent, dispatchPublication, extractPublication } from '../../scripts/stack127/publishing/github.mjs'; const sha = 'a'.repeat(40); const state = { slug: 'example', family: 'directory', registry: { label: 'Example', meta_title: 'Example directory', meta_description: 'Compare examples & choices.', is_published: true, is_indexable: true, cover_image_url: null, page_type: 'CollectionPage', sitemap_priority: 0.5 }, - content: { title: 'Find examples', intro_markdown: 'Choose an example.', content_markdown: null, card_name: 'Examples', card_description: 'Compare examples.', card_icon_key: null, card_art_key: null }, + content: { title: 'Find examples', card_name: 'Examples', card_description: 'Compare examples.', card_icon_key: null, card_art_key: null }, }; const revision = '2026-10-04T00:00:00.000Z'; const requirements = { route: 'app/(site)/(directories)/example/page.tsx', assets: [], checks: [], smoke: [], records: { kind: 'code', files: ['lib/examples.ts'] } }; @@ -103,7 +104,8 @@ test('frozen plans cannot be applied to another family or environment', () => { }); test('GitHub publication events must agree on repository, task, commit and environment', () => { - const event = { repository: { full_name: 'stack127labs/stack127' }, deployment: { id: 42, environment: 'stack127-page-publication', task: 'page-publication', sha, ref: sha, payload: { release_sha: sha, plan: plan() } } }; + const planBlob = { sha: 'b'.repeat(40), sha256: 'c'.repeat(64), size: 1000, kind: 'directories' }; + const event = { repository: { full_name: 'stack127labs/stack127' }, deployment: { id: 42, environment: 'stack127-page-publication', task: 'page-publication', sha, ref: sha, payload: { schema_version: 2, release_sha: sha, plan_blob: planBlob } } }; assert.equal(publicationEvent(event).deploymentId, 42); assert.throws(() => publicationEvent({ ...event, repository: { full_name: 'elsewhere/repo' } }), /not a stack127/); assert.throws(() => publicationEvent({ ...event, deployment: { ...event.deployment, sha: 'b'.repeat(40) } }), /agree/); @@ -271,3 +273,73 @@ test('the root canonical passes with or without a trailing slash, and wrong path assert.throws(() => inspectIndexingHtml(page('https://stack127.com/about'), { slug: '' }, site), /indexing metadata/); assert.throws(() => inspectIndexingHtml(page('not a url'), { slug: '' }, site), /indexing metadata/); }); + +function githubStorage() { + let stored, deployment; + const calls = []; + const github = async (args, input) => { + calls.push(args[0]); + if (args[0].endsWith('/git/blobs')) { + const bytes = Buffer.from(input.content, input.encoding); + const blobSha = createHash('sha1').update(`blob ${bytes.length}\0`).update(bytes).digest('hex'); + stored = { sha: blobSha, size: bytes.length, content: input.content, encoding: input.encoding }; + return { sha: blobSha }; + } + if (args[0].endsWith('/deployments')) { deployment = input; return { id: 42, sha: input.ref }; } + if (args[0].includes('/collaborators/')) return { permission: 'write' }; + if (args[0].endsWith('/commits/main')) return { sha }; + if (args[0].includes('/git/blobs/')) return stored; + throw new Error(`Unexpected GitHub endpoint: ${args[0]}`); + }; + return { github, calls, get stored() { return stored; }, get deployment() { return deployment; } }; +} + +const deploymentEvent = input => ({ repository: { full_name: 'stack127labs/stack127' }, sender: { login: 'ravitejaknts' }, deployment: { ...input, id: 42, sha, ref: sha } }); + +test('a large frozen plan dispatches once and arrives intact without filling the deployment payload', async () => { + const large = plan(); + large.pages[0].after.content.card_description = 'Reviewed café content. '.repeat(100000).trim(); + const storage = githubStorage(); + const result = await dispatchPublication(large, sha, { github: storage.github }); + assert.equal(result.dispatched, true); + assert.ok(storage.stored.size > 2 * 1024 * 1024); + assert.ok(JSON.stringify(storage.deployment).length < 1000); + assert.equal(storage.calls.filter(call => call.endsWith('/deployments')).length, 1); + const directory = await mkdtemp(path.join(os.tmpdir(), 'publication-plan-')); + try { + const file = path.join(directory, 'plan.json'); + const extracted = await extractPublication(deploymentEvent(storage.deployment), file, { github: storage.github }); + assert.deepEqual(extracted.plan, large); + const { readFile } = await import('node:fs/promises'); + assert.deepEqual(JSON.parse(await readFile(file, 'utf8')), large); + } finally { await rm(directory, { recursive: true, force: true }); } +}); + +test('changed plan data, length, and kind stop extraction before a plan can be applied', async () => { + const directory = await mkdtemp(path.join(os.tmpdir(), 'publication-corrupt-')); + try { + for (const change of ['data', 'length', 'kind']) { + const storage = githubStorage(); + await dispatchPublication(plan(), sha, { github: storage.github }); + if (change === 'data') storage.stored.content = Buffer.from(JSON.stringify({ ...plan(), source_commit: 'b'.repeat(40) })).toString('base64'); + if (change === 'length') storage.deployment.payload.plan_blob.size++; + if (change === 'kind') storage.deployment.payload.plan_blob.kind = 'tools'; + const file = path.join(directory, `${change}.json`); + await assert.rejects(extractPublication(deploymentEvent(storage.deployment), file, { github: storage.github }), /integrity|metadata|invalid/); + const { access } = await import('node:fs/promises'); + await assert.rejects(access(file), { code: 'ENOENT' }); + } + } finally { await rm(directory, { recursive: true, force: true }); } +}); + +test('publication authorization and current-main checks run before downloading the stored plan', async () => { + for (const gate of ['permission', 'main']) { + const storage = githubStorage(); + await dispatchPublication(plan(), sha, { github: storage.github }); + const github = async (args, input) => args[0].includes('/collaborators/') && gate === 'permission' + ? { permission: 'read' } : args[0].endsWith('/commits/main') && gate === 'main' + ? { sha: 'b'.repeat(40) } : storage.github(args, input); + await assert.rejects(extractPublication(deploymentEvent(storage.deployment), '/unused.json', { github }), /writer|current main/); + assert.ok(!storage.calls.some(call => call.includes('/git/blobs/'))); + } +}); diff --git a/tests/stack127/page-schema-contract-development.test.mjs b/tests/stack127/page-schema-contract-development.test.mjs index b9ed2ec2..8330d03d 100644 --- a/tests/stack127/page-schema-contract-development.test.mjs +++ b/tests/stack127/page-schema-contract-development.test.mjs @@ -3,13 +3,14 @@ import test from 'node:test'; import {readFile} from 'node:fs/promises'; import pg from 'pg'; import {resolveDatabaseUrl} from '../../scripts/stack127/tool-pages/lib.mjs'; +import {executeBatch,readStates} from '../../scripts/stack127/publishing/database.mjs'; const enabled=process.env.STACK127_TEST_DEVELOPMENT_DATABASE==='1'; const withoutTransaction=sql=>sql.replace(/^begin;\s*$/gim,'').replace(/^commit;\s*$/gim,''); -const retired=['heading_before','heading_mark','heading_after','intro','section_heading','hero_art_key','home_order','content_revision']; -const catalogColumns='card_name,card_description,page_id,title,intro_markdown,content_markdown,card_icon_key,card_art_key,display_order'; -const toolColumns='page_id,title,card_name,card_description,intro_markdown,usage_markdown,content_markdown,tool_version,tool_version_updated_at,stack127_repo_url,stack127_repo_version,stack127_repo_commit_sha,stack127_repo_synced_at'; -const directoryColumns='page_id,title,intro_markdown,content_markdown,card_name,card_description,card_icon_key,card_art_key,row_updated_at'; +const retired=['heading_before','heading_mark','heading_after','intro','section_heading','hero_art_key','home_order','content_revision','intro_markdown','usage_markdown','content_markdown']; +const catalogColumns='card_name,card_description,page_id,title,card_icon_key,card_art_key,display_order'; +const toolColumns='page_id,title,card_name,card_description,tool_version,tool_version_updated_at,stack127_repo_url,stack127_repo_version,stack127_repo_commit_sha,stack127_repo_synced_at'; +const directoryColumns='page_id,title,card_name,card_description,card_icon_key,card_art_key,row_updated_at'; test('development contract preserves content and dates, supports current readers, and guards writes',{skip:!enabled},async()=>{ const client=new pg.Client({connectionString:resolveDatabaseUrl({environment:'development'}),connectionTimeoutMillis:15000}); @@ -41,9 +42,9 @@ test('development contract preserves content and dates, supports current readers assert.ok((await client.query('select * from public.stack127_course_lessons order by display_order')).rowCount>0); await client.query('reset role'); } - await client.query('update public.stack127_catalog_pages set title=title,intro_markdown=intro_markdown,display_order=display_order'); - await client.query('update public.stack127_tool_pages set title=title,intro_markdown=intro_markdown,tool_version=tool_version'); - await client.query('update public.stack127_directory_pages set title=title,intro_markdown=intro_markdown'); + await client.query('update public.stack127_catalog_pages set title=title,display_order=display_order'); + await client.query('update public.stack127_tool_pages set title=title,tool_version=tool_version'); + await client.query('update public.stack127_directory_pages set title=title'); assert.deepEqual(await dates(),beforeDates); const tool=(await client.query('select page_id,tool_version_updated_at from public.stack127_tool_pages order by page_id limit 1')).rows[0]; await rejected(`update public.stack127_tool_pages set tool_version_updated_at=tool_version_updated_at+interval '1 second' where page_id=${tool.page_id}`,/changes only with tool_version/); @@ -51,13 +52,79 @@ test('development contract preserves content and dates, supports current readers assert.equal(updated.refreshed,true); await rejected("update public.stack127_catalog_pages set card_art_key='Bad key'",/asset_check/); await rejected("update public.stack127_catalog_pages set title=' '",/title_check/); - await rejected("update public.stack127_catalog_pages set intro_markdown=' '",/intro_check/); await client.query(`insert into public.stack127_pages(id,slug,label,meta_title,meta_description,page_family,is_published) overriding system value values(-90002,'catalog-contract-test','Test catalog','Test catalog','Test catalog description','catalog',false)`); - const inserted=(await client.query(`insert into public.stack127_catalog_pages(page_id,title,intro_markdown,card_name,card_description,card_icon_key,card_art_key) - values(-90002,'New catalog','Choose a tool.','New catalog','New description','network','dns-tools') returning display_order`)).rows[0]; + const inserted=(await client.query(`insert into public.stack127_catalog_pages(page_id,title,card_name,card_description,card_icon_key,card_art_key) + values(-90002,'New catalog','New catalog','New description','network','dns-tools') returning display_order`)).rows[0]; assert.equal(inserted.display_order,100); assert.deepEqual((await client.query('select published_at,updated_at from public.stack127_pages where id=-90002')).rows[0],{published_at:null,updated_at:null}); assert.ok((await client.query("select * from public.stack127_cache_source_revisions(array['page'],array['dns-tools'])")).rowCount>0); } finally {await client.query('rollback');await client.end();} }); + +test('release preparation preserves old words and lets the publisher create metadata with columns present or absent',{skip:!enabled},async()=>{ + const client=new pg.Client({connectionString:resolveDatabaseUrl({environment:'development'}),connectionTimeoutMillis:15000}); + await client.connect(); + const preparation=withoutTransaction(await readFile(new URL('../../supabase/migrations/20261010064142_prepare_page_content_retirement.sql',import.meta.url),'utf8')); + const dates=async()=> (await client.query('select slug,published_at::text,updated_at::text from public.stack127_pages order by slug')).rows; + const tables={tool:['intro_markdown','usage_markdown','content_markdown'],directory:['intro_markdown','content_markdown'],catalog:['intro_markdown','content_markdown']}; + const transactionalPool={connect:async()=>({query:async(sql,args)=>{ + if(sql.startsWith('begin')) return client.query('savepoint publishing_compatibility_test'); + if(sql==='commit') return client.query('release savepoint publishing_compatibility_test'); + if(sql==='rollback') return client.query('rollback to savepoint publishing_compatibility_test'); + return client.query(sql,args); + },release(){}})}; + try { + await client.query('begin'); + // Restore the original schema and archived values only inside this rollback. + for(const [family,fields] of Object.entries(tables)){ + const table=`stack127_${family}_pages`; + for(const field of fields){ + await client.query(`alter table public.${table} add column ${field} text`); + await client.query(`update public.${table} live set ${field}=archive.value + from public.stack127_retired_page_content archive + where archive.page_id=live.page_id and archive.table_name=$1 and archive.column_name=$2`,[table,field]); + await client.query(`alter table public.${table} add constraint compatibility_${field}_check + check (${field}=btrim(${field}) and length(${field})>0)`); + if(field==='intro_markdown' || family==='tool' && field==='content_markdown'){ + await client.query(`alter table public.${table} alter column ${field} set not null`); + } + } + } + const words=async()=> (await client.query(`select * from ( + select 'tool' family,page_id,intro_markdown,content_markdown,usage_markdown from public.stack127_tool_pages + union all select 'directory',page_id,intro_markdown,content_markdown,null from public.stack127_directory_pages + union all select 'catalog',page_id,intro_markdown,content_markdown,null from public.stack127_catalog_pages + ) content order by family,page_id`)).rows; + const originalWords=await words();const originalDates=await dates(); + await client.query(preparation); + assert.deepEqual(await words(),originalWords); + assert.deepEqual(await dates(),originalDates); + assert.equal((await client.query(`select * from information_schema.columns where table_schema='public' + and table_name=any($1) and column_name=any($2) and is_nullable='NO'`,[ + Object.keys(tables).map(family=>`stack127_${family}_pages`),['intro_markdown','usage_markdown','content_markdown'], + ])).rowCount,0); + for(const present of [true,false]){ + if(!present){ + for(const [family,fields] of Object.entries(tables)){ + await client.query(`alter table public.stack127_${family}_pages ${fields.map(field=>`drop column ${field}`).join(',')}`); + } + } + for(const [family,source] of [['tool','dns-lookup'],['directory','tld-directory'],['catalog','dns-tools']]){ + const [original]=await readStates(client,[{slug:source,family}]); + const after={...original,slug:`compatibility-${family}-${present?'present':'absent'}`, + registry:{...original.registry,is_published:false},...(family==='tool'?{catalogs:[]}:{}), + }; + await executeBatch(transactionalPool,[{slug:after.slug,family,before:null,after}],{apply:true}); + assert.deepEqual(await readStates(client,[{slug:after.slug,family}]),[after]); + if(present){ + const fields=tables[family]; + const row=(await client.query(`select ${fields.join(',')} from public.stack127_${family}_pages + where page_id=(select id from public.stack127_pages where slug=$1)`,[after.slug])).rows[0]; + assert.ok(fields.every(field=>row[field]===null)); + } + } + } + const afterDates=await dates();await client.query(preparation);assert.deepEqual(await dates(),afterDates); + } finally {await client.query('rollback');await client.end();} +}); From fa4fca77982faf46c9c320c582bc93ff1078925b Mon Sep 17 00:00:00 2001 From: Ravi Teja KNTS Date: Sat, 10 Oct 2026 15:07:49 +0530 Subject: [PATCH 2/3] Fix review findings: chmod others wording, tilt sensors as covers, retired script references Co-Authored-By: Claude Opus 5.5 --- app/(site)/(directories)/zigbee-devices/filters.ts | 4 +++- .../chmod-calculator/chmod-calculator-engine.ts | 2 +- scripts/scripts.json | 12 ------------ tests/pages/zigbee-devices/filters.test.mjs | 8 ++++++++ tests/stack127/page-cards.test.mjs | 4 ++-- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/app/(site)/(directories)/zigbee-devices/filters.ts b/app/(site)/(directories)/zigbee-devices/filters.ts index ba4ca905..0993fd7e 100644 --- a/app/(site)/(directories)/zigbee-devices/filters.ts +++ b/app/(site)/(directories)/zigbee-devices/filters.ts @@ -13,7 +13,7 @@ type FilterableDevice = Pick; type SortableDevice = Pick; -type CapabilityDevice = Pick; +type CapabilityDevice = Pick & { category?: string }; // Zigbee2MQTT field names match the featured capabilities directly. Blakadder // writes free-text feature names, so each featured capability lists the @@ -42,6 +42,8 @@ export function deviceCapabilities(device: CapabilityDevice) { for (const reported of device.zha_reported_capabilities) { const value = reported.trim().toLowerCase(); for (const [capability, pattern] of Object.entries(reportedCapabilityPatterns)) { + // A tilt or position sensor reports the same words as a blind motor. Only covers move. + if (capability === "cover" && device.category === "sensor") continue; if (pattern.test(value)) capabilities.add(capability); } } diff --git a/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts b/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts index ad5a21a8..6d8896ca 100644 --- a/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts +++ b/app/(site)/(tools)/chmod-calculator/chmod-calculator-engine.ts @@ -187,7 +187,7 @@ function resultForMode(mode: number): ChmodValidResult { bits.sticky ? "Sticky" : null, ].filter((value): value is string => Boolean(value)); const context = bits.othersWrite - ? ["Every other user on the system can write to this. Real access also depends on folder permissions, ACLs, and mount options."] + ? ["Others can write to this: any user who isn't the owner and isn't in the file's group. Real access also depends on folder permissions, ACLs, and mount options."] : []; const octal = formatOctalMode(mode); return { diff --git a/scripts/scripts.json b/scripts/scripts.json index 458df13e..b4dba0e5 100644 --- a/scripts/scripts.json +++ b/scripts/scripts.json @@ -35,18 +35,6 @@ "manifest": "scripts/dockerignore-tester/scripts.json", "purpose": "Verifies matcher fixtures, current BuildKit behavior, and the published /dockerignore-tester route." }, - { - "surface": "docker-compose-checker", - "folder": "scripts/docker-compose-checker", - "manifest": "scripts/docker-compose-checker/scripts.json", - "purpose": "Owns the guarded managed-development preview helper for /docker-compose-checker." - }, - { - "surface": "self-hosted-app-resource-planner", - "folder": "scripts/self-hosted-app-resource-planner", - "manifest": "scripts/self-hosted-app-resource-planner/scripts.json", - "purpose": "Owns the guarded managed-development preview helper for /self-hosted-app-resource-planner." - }, { "surface": "nginx-proxy-pass-calculator", "folder": "scripts/nginx-proxy-pass-calculator", diff --git a/tests/pages/zigbee-devices/filters.test.mjs b/tests/pages/zigbee-devices/filters.test.mjs index b967978d..f3f4e23d 100644 --- a/tests/pages/zigbee-devices/filters.test.mjs +++ b/tests/pages/zigbee-devices/filters.test.mjs @@ -93,3 +93,11 @@ test("capability filter and feature sort include Blakadder-only records", () => assert.deepEqual(filterDevices(withBlakadder, { capability: ["power"] }).map((d) => d.slug), ["innr-sp-240"]); assert.equal(sortDevices(withBlakadder, "capabilities")[0].slug, "acme-th1"); }); + +test("a tilt sensor doesn't count as a cover, but a tilt-only blind motor does", () => { + const sensor = device({ slug: "nyce-tilt", vendor: "Nyce", model: "NCZ-3014-HA", category: "sensor", + zigbee2mqtt_capabilities: [], zha_reported_capabilities: ["tilt"], zigbee2mqtt_url: "" }); + const motor = device({ slug: "current-am25", vendor: "Current Products Corp", model: "AM25", category: "cover", + zigbee2mqtt_capabilities: [], zha_reported_capabilities: ["tilt"], zigbee2mqtt_url: "" }); + assert.deepEqual(filterDevices([sensor, motor], { capability: ["cover"] }).map((d) => d.slug), ["current-am25"]); +}); diff --git a/tests/stack127/page-cards.test.mjs b/tests/stack127/page-cards.test.mjs index 00bbe4c2..1656ace3 100644 --- a/tests/stack127/page-cards.test.mjs +++ b/tests/stack127/page-cards.test.mjs @@ -84,8 +84,8 @@ test('directory, course, and labs keys resolve in both registries and existing t test('writers reject unknown card keys before opening a database connection', () => { for (const [script, args, error] of [ - ['directory-pages/update-content.mjs', ['--slug', 'self-host-apps', '--card-icon-key', 'missing-icon'], /Unknown card_icon_key/], - ['directory-pages/update-content.mjs', ['--slug', 'self-host-apps', '--card-art-key', 'missing-art'], /Unknown card_art_key/], + ['directory-pages/update-fields.mjs', ['--slug', 'self-host-apps', '--card-icon-key', 'missing-icon'], /Unknown card_icon_key/], + ['directory-pages/update-fields.mjs', ['--slug', 'self-host-apps', '--card-art-key', 'missing-art'], /Unknown card_art_key/], ['tool-pages/update-catalogs.mjs', ['--slug', 'dns-lookup', '--card-name', 'DNS', '--card-description', 'Lookup', '--card-icon-key', 'network', '--card-art-key', 'missing-art', '--catalogs', 'dns-tools'], /Unknown card_art_key/], ]) { From b3debb384910f729275feb849fdb760a5991f176 Mon Sep 17 00:00:00 2001 From: Ravi Teja KNTS Date: Sat, 10 Oct 2026 15:22:22 +0530 Subject: [PATCH 3/3] Regenerate the Zigbee snapshot with the new Blakadder platform mapping 1,395 matched records get Blakadder platform compatibility and provenance, from the same pinned sources. Co-Authored-By: Claude Opus 5.5 --- lib/zigbee-devices/data/devices.json | 21225 +++++++++++++++++++++---- 1 file changed, 18195 insertions(+), 3030 deletions(-) diff --git a/lib/zigbee-devices/data/devices.json b/lib/zigbee-devices/data/devices.json index 786aba2b..801f483b 100644 --- a/lib/zigbee-devices/data/devices.json +++ b/lib/zigbee-devices/data/devices.json @@ -47,7 +47,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + ioBroker + deCONZ" + "value": "ZHA + Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -99,7 +99,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -163,7 +163,7 @@ "url": "https://zigbee.blakadder.com/3A_HGZB-41-DE.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/3A_HGZB-41-DE.html" }, @@ -196,7 +196,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -244,7 +244,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -307,7 +307,7 @@ "url": "https://zigbee.blakadder.com/3A_HGZB-42.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/3A_HGZB-42.html" }, @@ -347,7 +347,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + ioBroker + deCONZ" + "value": "ZHA + Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -399,7 +399,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -463,7 +463,7 @@ "url": "https://zigbee.blakadder.com/3A_HGZB-42-DE.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/3A_HGZB-42-DE.html" }, @@ -1257,8 +1257,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/A-OK_AM25.html" }, { "field": "Exposed fields", @@ -2006,7 +2006,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + ZHA" + "value": "Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -2046,7 +2046,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -2099,7 +2099,7 @@ "url": "https://zigbee.blakadder.com/Acova_Taffetas_2.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Acova_Taffetas_2.html" }, @@ -4655,7 +4655,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -4701,6 +4701,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -4761,6 +4765,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9CZA-G1521-Q1A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_9CZA-G1521-Q1A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -5375,8 +5384,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HR-C99C-Z-C045.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_HR-C99C-Z-C045.html" }, { "field": "Exposed fields", @@ -5857,7 +5866,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -5903,6 +5912,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -5963,6 +5976,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IC-CDZFB2AC004HA-MZN.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_IC-CDZFB2AC004HA-MZN.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -6003,7 +6021,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -6049,6 +6067,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -6109,6 +6131,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IC-CDZFB2AC005HA-MZN.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_IC-CDZFB2AC005HA-MZN.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -7756,7 +7783,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -7802,6 +7829,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -7862,6 +7893,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LDSENK02F.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK01F.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -8349,7 +8385,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -8399,6 +8435,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -8461,8 +8505,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LDSENK08.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK08.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK08.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK08.html" }, { "field": "Exposed fields", @@ -8507,7 +8561,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -8553,6 +8607,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -8613,6 +8671,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LDSENK09.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK09.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -8647,7 +8710,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -8693,6 +8756,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -8753,6 +8824,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LDSENK10.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK10.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ADEO_LDSENK10.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -10686,7 +10767,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -10734,7 +10815,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -10793,7 +10874,7 @@ "url": "https://zigbee.blakadder.com/ADEO_LDSENK02F.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/ADEO_LDSENK02F.html" }, @@ -11517,8 +11598,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/81810.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81810.html" }, { "field": "Exposed fields", @@ -12119,7 +12200,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -12173,6 +12254,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -12239,6 +12324,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/AduroSmart_81823.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81823.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -12268,7 +12358,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -12318,6 +12408,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -12380,8 +12474,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/81825.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81825.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81825.html" }, { "field": "Exposed fields", @@ -12531,8 +12630,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/81848.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81848.html" }, { "field": "Exposed fields", @@ -12719,7 +12818,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -12765,6 +12864,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -12825,6 +12928,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/81855.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81855.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -12975,8 +13083,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/81863.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AduroSmart_81863.html" }, { "field": "Exposed fields", @@ -14361,7 +14469,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + deCONZ" + "value": "ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -14405,7 +14513,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -14459,7 +14567,7 @@ "url": "https://zigbee.blakadder.com/Aeotec_GP-AEOBTNEU.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Aeotec_GP-AEOBTNEU.html" }, @@ -14628,7 +14736,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + deCONZ + Zigbee2MQTT" + "value": "ZHA + deCONZ + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -14678,6 +14786,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -14739,6 +14851,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Aeotec_ZAG001-C15.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aeotec_ZAG001-C15.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -16009,7 +16126,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -16055,6 +16172,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -16115,6 +16236,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4713407.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Airam_4713407.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -17407,8 +17533,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AJ_ZIGPROA60.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ajax_Online_AJ_ZIGPROA60.html" }, { "field": "Exposed fields", @@ -18609,7 +18735,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -18655,6 +18781,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -18720,6 +18850,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/141L100RC.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_141L100RC.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -18754,7 +18889,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -18804,6 +18939,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -18866,8 +19005,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/C422AC11D41H140.0W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_C422AC11D41H140.0W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_C422AC11D41H140.0W.html" }, { "field": "Exposed fields", @@ -18916,7 +19060,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -18966,6 +19110,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -19028,8 +19176,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/C422AC14D41H140.0W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_C422AC14D41H140.0W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_C422AC14D41H140.0W.html" }, { "field": "Exposed fields", @@ -19078,7 +19231,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -19128,6 +19281,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -19195,8 +19352,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/F122SB62H22A4.5W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_F122SB62H22A4.5W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_F122SB62H22A4.5W.html" }, { "field": "Exposed fields", @@ -19240,7 +19402,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -19290,6 +19452,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -19352,8 +19518,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L122AA63H11A6.5W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122AA63H11A6.5W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122AA63H11A6.5W.html" }, { "field": "Exposed fields", @@ -19402,7 +19573,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -19452,6 +19623,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -19514,8 +19689,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0505B_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122CB63H11A9.0W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122CB63H11A9.0W.html" }, { "field": "Exposed fields", @@ -19564,7 +19744,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -19614,6 +19794,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -19676,8 +19860,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L122FF63H11A5.0W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122FF63H11A5.0W.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aldi_L122FF63H11A5.0W.html" }, { "field": "Exposed fields", @@ -20232,8 +20421,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMART-HEAT10.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Alecto_SMART-HEAT10.html" }, { "field": "Exposed fields", @@ -20593,7 +20782,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -20648,6 +20837,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -20717,6 +20910,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Alecto_SMART-TEMP10.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Alecto_SMART-TEMP10.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -20749,7 +20947,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + ZHA + Zigbee2MQTT" + "value": "deCONZ + ZHA + Zigbee4Domoticz + Zigbee2MQTT" }, "facts": [ { @@ -20796,6 +20994,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Zigbee2MQTT", "value": "Support record available" @@ -20855,6 +21057,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/AllbeAI_TY4CH.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AllbeAI_TY4CH.html" + }, { "field": "Zigbee2MQTT", "source": "Blakadder Zigbee record", @@ -24611,7 +24818,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -24661,6 +24868,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -24723,8 +24942,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/VOCKQJK11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" }, { "field": "Exposed fields", @@ -25864,7 +26098,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota + ZHA + ioBroker + deCONZ" }, "facts": [ { @@ -25911,9 +26145,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -25974,10 +26224,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DJT11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DJT11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT11LM.html" }, { "field": "Exposed fields", @@ -26030,7 +26300,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -26076,6 +26346,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -26136,6 +26410,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DJT12LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DJT12LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -26178,7 +26457,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -26225,6 +26504,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -26288,10 +26571,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DLKZMK11LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DLKZMK11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DLKZMK11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DLKZMK11LM.html" }, { "field": "Exposed fields", @@ -26341,7 +26629,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Tasmota" }, "facts": [ { @@ -26387,6 +26675,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -26447,6 +26743,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DLKZMK12LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DLKZMK12LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_DLKZMK12LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -27219,7 +27525,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -27266,9 +27572,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -27329,10 +27643,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GZCGQ11LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_GZCGQ11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GZCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_GZCGQ11LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_GZCGQ11LM.html" }, { "field": "Exposed fields", @@ -28547,7 +28871,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -28595,173 +28919,182 @@ "value": "Support record available" }, { - "label": "ZHA", + "label": "Zigbee4Domoticz", "value": "Support record available" - } - ], - "heading": "Platform compatibility" - }, - { - "facts": [ - { - "label": "Exposed fields", - "value": "battery, buzzer, buzzer_manual_alarm, buzzer_manual_mute, heartbeat_indicator, linkage_alarm, linkage_alarm_state, power_outage_count, selftest, smoke, smoke_density, smoke_density_dbm, test, voltage" - }, - { - "label": "OTA updates", - "value": "Listed" }, { - "label": "Zigbee model IDs", - "value": "lumi.sensor_smoke.acn03" - } - ], - "heading": "Exposed features" - } - ], - "fingerprints": [], - "image_path": "https://tulgfrqamtcshdtmhvpx.supabase.co/storage/v1/object/public/stack127-media/directories/zigbee-devices/images/aqara-jy-gz-01aq-28cb02e00d559e45.webp", - "image_quality": "official-zigbee2mqtt-product-image", - "image_source_url": "https://github.com/Koenkk/zigbee2mqtt.io/blob/bec62debdc7dd53c2f4306a8bebdbd486d072404/public/images/devices/JY-GZ-01AQ.png", - "model": "JY-GZ-01AQ", - "name": "Smart smoke detector", - "ota": true, - "provenance": [ - { - "field": "Manufacturer", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Retail model", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Description", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Device type", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "White-label model", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Zigbee2MQTT", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Exposed fields", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "OTA updates", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - }, - { - "field": "Zigbee model IDs", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" - } - ], - "slug": "aqara-jy-gz-01aq", - "vendor": "Aqara", - "zha_reported_capabilities": [ - "batterypct", - "heartbeat indicator", - "linkage alarm", - "mute buzzer", - "selftest", - "smoke", - "smoke density" - ], - "zigbee2mqtt_capabilities": [ - "battery", - "buzzer", - "buzzer_manual_alarm", - "buzzer_manual_mute", - "heartbeat_indicator", - "linkage_alarm", - "linkage_alarm_state", - "power_outage_count", - "selftest", - "smoke", - "smoke_density", - "smoke_density_dbm", - "test", - "voltage" - ], - "zigbee2mqtt_url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html", - "zigbee_models": [ - "lumi.sensor_smoke.acn03" - ] - }, - { - "battery_reporting": true, - "blakadder_url": "", - "card": { - "compatibility": { - "label": "Works with", - "status": "confirmed", - "value": "Zigbee2MQTT" - }, - "facts": [ - { - "label": "Type", - "value": "Sensor" - }, - { - "label": "Capabilities", - "value": "battery, buzzer, buzzer_manual_alarm, buzzer_manual_mute" - } - ] - }, - "category": "sensor", - "date_added": "2022-04-30", - "detail_sections": [ - { - "facts": [ - { - "label": "Manufacturer", - "value": "Aqara" - }, - { - "label": "Retail model", - "value": "JY-GZ-03AQ" - }, - { - "label": "Description", - "value": "Smart smoke detector" - }, - { - "label": "Device type", - "value": "Sensor" - }, - { - "label": "White-label model", - "value": "Yes" - } - ], - "heading": "Exact device" - }, - { - "facts": [ - { - "label": "Zigbee2MQTT", + "label": "ZHA", + "value": "Support record available" + } + ], + "heading": "Platform compatibility" + }, + { + "facts": [ + { + "label": "Exposed fields", + "value": "battery, buzzer, buzzer_manual_alarm, buzzer_manual_mute, heartbeat_indicator, linkage_alarm, linkage_alarm_state, power_outage_count, selftest, smoke, smoke_density, smoke_density_dbm, test, voltage" + }, + { + "label": "OTA updates", + "value": "Listed" + }, + { + "label": "Zigbee model IDs", + "value": "lumi.sensor_smoke.acn03" + } + ], + "heading": "Exposed features" + } + ], + "fingerprints": [], + "image_path": "https://tulgfrqamtcshdtmhvpx.supabase.co/storage/v1/object/public/stack127-media/directories/zigbee-devices/images/aqara-jy-gz-01aq-28cb02e00d559e45.webp", + "image_quality": "official-zigbee2mqtt-product-image", + "image_source_url": "https://github.com/Koenkk/zigbee2mqtt.io/blob/bec62debdc7dd53c2f4306a8bebdbd486d072404/public/images/devices/JY-GZ-01AQ.png", + "model": "JY-GZ-01AQ", + "name": "Smart smoke detector", + "ota": true, + "provenance": [ + { + "field": "Manufacturer", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Retail model", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Description", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Device type", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "White-label model", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Zigbee2MQTT", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_JY-GZ-01AQ.html" + }, + { + "field": "ZHA", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_JY-GZ-01AQ.html" + }, + { + "field": "Exposed fields", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "OTA updates", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + }, + { + "field": "Zigbee model IDs", + "source": "Zigbee2MQTT", + "url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html" + } + ], + "slug": "aqara-jy-gz-01aq", + "vendor": "Aqara", + "zha_reported_capabilities": [ + "batterypct", + "heartbeat indicator", + "linkage alarm", + "mute buzzer", + "selftest", + "smoke", + "smoke density" + ], + "zigbee2mqtt_capabilities": [ + "battery", + "buzzer", + "buzzer_manual_alarm", + "buzzer_manual_mute", + "heartbeat_indicator", + "linkage_alarm", + "linkage_alarm_state", + "power_outage_count", + "selftest", + "smoke", + "smoke_density", + "smoke_density_dbm", + "test", + "voltage" + ], + "zigbee2mqtt_url": "https://www.zigbee2mqtt.io/devices/JY-GZ-01AQ.html", + "zigbee_models": [ + "lumi.sensor_smoke.acn03" + ] + }, + { + "battery_reporting": true, + "blakadder_url": "", + "card": { + "compatibility": { + "label": "Works with", + "status": "confirmed", + "value": "Zigbee2MQTT" + }, + "facts": [ + { + "label": "Type", + "value": "Sensor" + }, + { + "label": "Capabilities", + "value": "battery, buzzer, buzzer_manual_alarm, buzzer_manual_mute" + } + ] + }, + "category": "sensor", + "date_added": "2022-04-30", + "detail_sections": [ + { + "facts": [ + { + "label": "Manufacturer", + "value": "Aqara" + }, + { + "label": "Retail model", + "value": "JY-GZ-03AQ" + }, + { + "label": "Description", + "value": "Smart smoke detector" + }, + { + "label": "Device type", + "value": "Sensor" + }, + { + "label": "White-label model", + "value": "Yes" + } + ], + "heading": "Exact device" + }, + { + "facts": [ + { + "label": "Zigbee2MQTT", "value": "Support record available" } ], @@ -29324,7 +29657,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -29374,6 +29707,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -29436,8 +29773,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LGYCDD01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_LGYCDD01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_LGYCDD01LM.html" }, { "field": "Exposed fields", @@ -29496,7 +29838,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -29543,9 +29885,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -29606,10 +29960,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LLKZMK11LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LLKZMK11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LLKZMK11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LLKZMK11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LLKZMK11LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LLKZMK11LM.html" }, { "field": "Exposed fields", @@ -29811,7 +30180,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -29858,9 +30227,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -29921,10 +30306,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCCGQ11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MCCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ11LM.html" }, { "field": "Exposed fields", @@ -29969,7 +30374,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -30016,9 +30421,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -30079,10 +30496,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCCGQ12LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MCCGQ12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ12LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ12LM.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ12LM.html" }, { "field": "Exposed fields", @@ -30270,7 +30702,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -30317,6 +30749,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -30380,10 +30816,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCCGQ14LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ14LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MCCGQ14LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MCCGQ14LM.html" }, { "field": "Exposed fields", @@ -30425,7 +30866,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -30472,6 +30913,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -30535,10 +30980,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CTP-R01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CTP-R01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ12LM.html" }, { "field": "Exposed fields", @@ -30584,7 +31034,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -30631,9 +31081,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -30694,10 +31160,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MFKZQ01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MFKZQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" }, { "field": "Exposed fields", @@ -31761,7 +32247,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker" }, "facts": [ { @@ -31807,6 +32293,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -31867,6 +32365,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBCZ11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBCZ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBCZ11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBCZ11LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -31911,7 +32424,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -31957,6 +32470,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -32017,6 +32534,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBCZ14LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBCZ14LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -32065,7 +32587,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -32111,6 +32633,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -32171,6 +32697,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBCZ15LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBCZ15LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -32220,7 +32751,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -32267,6 +32798,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -32330,10 +32873,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG03LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG03LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG03LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG03LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG03LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG03LM.html" }, { "field": "Exposed fields", @@ -32378,7 +32936,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -32425,6 +32983,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -32488,10 +33058,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG04LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG04LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG04LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG04LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG04LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG04LM.html" }, { "field": "Exposed fields", @@ -32534,7 +33119,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ioBroker + ZHA" }, "facts": [ { @@ -32581,6 +33166,22 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -32644,10 +33245,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG11LM.html" }, { "field": "Exposed fields", @@ -32695,7 +33316,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ioBroker + ZHA" }, "facts": [ { @@ -32742,6 +33363,22 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -32805,10 +33442,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG12LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG12LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG12LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG12LM.html" }, { "field": "Exposed fields", @@ -33466,7 +34123,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -33513,9 +34170,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -33576,10 +34245,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG21LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG21LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG21LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG21LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG21LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG21LM.html" }, { "field": "Exposed fields", @@ -33622,7 +34306,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -33672,6 +34356,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -33734,8 +34422,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG22LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG22LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG22LM.html" }, { "field": "Exposed fields", @@ -33778,7 +34471,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -33824,6 +34517,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -33884,6 +34581,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG23LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG23LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -33929,7 +34631,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -33975,6 +34677,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -34035,6 +34745,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG24LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG24LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG24LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -34190,8 +34910,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG25LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG25LM.html" }, { "field": "Exposed fields", @@ -35604,7 +36324,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -35651,6 +36371,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -35714,10 +36438,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG38LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG38LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QBKG38LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG38LM.html" }, { "field": "Exposed fields", @@ -35764,7 +36493,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -35810,6 +36539,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -35870,6 +36603,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG39LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG39LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -35915,7 +36653,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -35961,6 +36699,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -36021,6 +36763,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QBKG40LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_QBKG40LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -36529,7 +37276,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -36576,9 +37323,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -36639,10 +37402,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RTCGQ11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ11LM.html" }, { "field": "Exposed fields", @@ -36800,8 +37583,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCGQ12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ12LM.html" }, { "field": "Exposed fields", @@ -36848,7 +37631,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -36895,6 +37678,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -36958,10 +37745,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RTCGQ13LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ13LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCGQ13LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ13LM.html" }, { "field": "Exposed fields", @@ -37008,7 +37800,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -37058,6 +37850,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -37120,8 +37916,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCGQ14LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ14LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCGQ14LM.html" }, { "field": "Exposed fields", @@ -37321,7 +38122,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -37368,9 +38169,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -37431,10 +38240,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RTCZCGQ11LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCZCGQ11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCZCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCZCGQ11LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_RTCZCGQ11LM.html" }, { "field": "Exposed fields", @@ -37491,7 +38310,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker + deCONZ + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -37541,6 +38360,22 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -37603,8 +38438,28 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SJCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ11LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ11LM.html" }, { "field": "Exposed fields", @@ -37650,7 +38505,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -37697,9 +38552,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -37760,10 +38627,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SJCGQ12LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SJCGQ12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ12LM.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ12LM.html" }, { "field": "Exposed fields", @@ -37918,8 +38800,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SJCGQ13LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SJCGQ13LM.html" }, { "field": "Exposed fields", @@ -37963,7 +38845,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -38013,6 +38895,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -38075,8 +38969,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP-EUC01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SP-EUC01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SP-EUC01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SP-EUC01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SP-EUC01.html" }, { "field": "Exposed fields", @@ -38131,7 +39040,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -38177,6 +39086,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -38237,6 +39150,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNGZDJ11LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SRSC-M01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -38278,7 +39196,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -38328,6 +39246,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -38390,8 +39312,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SRTS-A01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SRTS-A01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SRTS-A01.html" }, { "field": "Exposed fields", @@ -38451,7 +39378,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -38498,9 +39425,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -38561,10 +39500,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SSM-U01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSM-U01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U01.html" }, { "field": "Exposed fields", @@ -38613,7 +39567,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -38660,9 +39614,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -38723,10 +39689,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SSM-U02.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSM-U02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U02.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U02.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_SSM-U02.html" }, { "field": "Exposed fields", @@ -41095,7 +42076,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -41145,6 +42126,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -41207,8 +42200,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/VOCKQJK11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_AAQS-S01.html" }, { "field": "Exposed fields", @@ -41695,7 +42703,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -41742,6 +42750,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -41805,10 +42821,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG15LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG15LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" }, { "field": "Exposed fields", @@ -41851,7 +42877,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -41901,6 +42927,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -41963,8 +42993,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-EUK01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK01.html" }, { "field": "Exposed fields", @@ -42013,7 +43048,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -42060,9 +43095,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -42123,10 +43166,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WS-EUK02.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-EUK02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK02.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK02.html" }, { "field": "Exposed fields", @@ -42175,7 +43228,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -42225,6 +43278,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -42287,8 +43348,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-EUK03.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK03.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK03.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK03.html" }, { "field": "Exposed fields", @@ -42340,7 +43411,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -42390,6 +43461,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -42452,8 +43527,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-EUK04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK04.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-EUK04.html" }, { "field": "Exposed fields", @@ -43846,8 +44926,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-USC01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-USC01.html" }, { "field": "Exposed fields", @@ -44043,7 +45123,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -44089,6 +45169,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -44149,6 +45233,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WS-USC03.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-USC03.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -44307,8 +45396,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WS-USC04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WS-USC04.html" }, { "field": "Exposed fields", @@ -44356,7 +45445,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -44403,9 +45492,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -44466,10 +45571,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WSDCGQ11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WSDCGQ11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ11LM.html" }, { "field": "Exposed fields", @@ -44514,7 +45639,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost + Zigbee4Domoticz" }, "facts": [ { @@ -44564,6 +45689,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -44626,8 +45759,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WSDCGQ12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ12LM.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ12LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WSDCGQ12LM.html" }, { "field": "Exposed fields", @@ -44851,7 +45994,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -44898,9 +46041,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -44961,10 +46112,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXCJKG11LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXCJKG11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG11LM.html" }, { "field": "Exposed fields", @@ -45006,7 +46167,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -45053,9 +46214,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -45116,10 +46289,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXCJKG12LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXCJKG12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG12LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG12LM.html" }, { "field": "Exposed fields", @@ -45161,7 +46349,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -45208,9 +46396,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -45271,10 +46475,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXCJKG13LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG13LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXCJKG13LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG13LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG13LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG13LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXCJKG13LM.html" }, { "field": "Exposed fields", @@ -45317,7 +46541,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker + Tasmota" }, "facts": [ { @@ -45364,9 +46588,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -45427,10 +46667,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG02LM_rev1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG02LM_rev1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM.html" }, { "field": "Exposed fields", @@ -45473,7 +46733,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker + Tasmota" }, "facts": [ { @@ -45520,9 +46780,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -45583,10 +46859,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG02LM_rev2.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM_2018.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM_2018.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG02LM_rev2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM_2018.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM_2018.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG02LM_2018.html" }, { "field": "Exposed fields", @@ -45627,7 +46923,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker + Tasmota" }, "facts": [ { @@ -45670,6 +46966,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -45736,6 +47036,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Aqara_WXKG03LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG03LM.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -46355,7 +47660,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -46402,9 +47707,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -46465,10 +47786,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG06LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG06LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG06LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG06LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG06LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG06LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG06LM.html" }, { "field": "Exposed fields", @@ -46509,7 +47850,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -46556,9 +47897,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -46619,10 +47976,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG07LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG07LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG07LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG07LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG07LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG07LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG07LM.html" }, { "field": "Exposed fields", @@ -46663,7 +48040,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -46710,9 +48087,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -46773,10 +48166,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG11LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG11LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG11LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG11LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG11LM.html" }, { "field": "Exposed fields", @@ -46820,7 +48233,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -46867,9 +48280,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -46930,10 +48359,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG12LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG12LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG12LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG12LM.html" }, { "field": "Exposed fields", @@ -47087,8 +48536,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG13LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG13LM.html" }, { "field": "Exposed fields", @@ -47273,7 +48722,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -47320,6 +48769,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -47383,10 +48840,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG15LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG15LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WRS-R02.html" }, { "field": "Exposed fields", @@ -47429,7 +48896,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -47479,6 +48946,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -47541,8 +49012,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG16LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG16LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG16LM.html" }, { "field": "Exposed fields", @@ -47585,7 +49061,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -47631,6 +49107,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -47691,6 +49175,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG17LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG17LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG17LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -47732,7 +49226,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -47778,6 +49272,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -47838,6 +49336,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG20LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_WXKG20LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -48773,7 +50276,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -48820,6 +50323,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -48883,10 +50390,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCLBL01LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCLBL01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCLBL01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCLBL01LM.html" }, { "field": "Exposed fields", @@ -49109,7 +50621,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -49155,6 +50667,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -49215,6 +50735,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCLDJ11LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCLDJ11LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCLDJ11LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -49257,7 +50787,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -49303,6 +50833,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -49363,6 +50897,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCLDJ12LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCLDJ12LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -49667,8 +51206,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCWWSQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCWWSQ01LM.html" }, { "field": "Exposed fields", @@ -49715,7 +51254,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -49761,6 +51300,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -49821,6 +51364,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCZ11LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCZ11LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -49869,7 +51417,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -49919,6 +51467,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -49981,8 +51537,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCZ12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ12LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ12LM.html" }, { "field": "Exposed fields", @@ -50032,7 +51598,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota + SONOFF iHost" }, "facts": [ { @@ -50078,6 +51644,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -50138,6 +51712,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCZ15LM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCZ15LM.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNCZ15LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -51086,7 +52670,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -51133,6 +52717,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -51196,10 +52784,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNJLBL01LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNJLBL01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNJLBL01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNJLBL01LM.html" }, { "field": "Exposed fields", @@ -51248,7 +52841,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -51295,6 +52888,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -51358,10 +52963,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNLDP12LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNLDP12LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNLDP12LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNLDP12LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNLDP12LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNLDP12LM.html" }, { "field": "Exposed fields", @@ -51518,8 +53138,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNLDP13LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNLDP13LM.html" }, { "field": "Exposed fields", @@ -51685,7 +53305,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -51731,6 +53351,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -51791,6 +53415,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNMS11LM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNMS11LM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -55410,8 +57039,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNTGMK11LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNTGMK11LM.html" }, { "field": "Exposed fields", @@ -55720,8 +57349,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNXDD01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNXDD01LM.html" }, { "field": "Exposed fields", @@ -55921,7 +57550,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -55968,6 +57597,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -56031,10 +57664,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNXNKG02LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNXNKG02LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNXNKG02LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_ZNXNKG02LM.html" }, { "field": "Exposed fields", @@ -57810,7 +59448,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -57857,9 +59495,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -57929,10 +59583,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/40ZH-O.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_40ZH-O.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_40ZH-O.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/40ZH-O.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_40ZH-O.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_40ZH-O.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_40ZH-O.html" }, { "field": "Exposed fields", @@ -57974,7 +59648,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -58022,7 +59696,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -58085,7 +59759,7 @@ "url": "https://zigbee.blakadder.com/Aubess_AP-SMT-Breaker02-1CH.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Aubess_AP-SMT-Breaker02-1CH.html" }, @@ -58757,7 +60431,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -58804,6 +60478,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -58872,10 +60554,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS000F_power.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS000F_power.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" }, { "field": "Exposed fields", @@ -60985,7 +62677,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -61032,6 +62724,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -61095,10 +62791,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AU-A1ZBDSS.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aurora_AU-A1ZBDSS.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AU-A1ZBDSS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aurora_AU-A1ZBDSS.html" }, { "field": "Exposed fields", @@ -61726,7 +63427,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -61772,6 +63473,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -61832,6 +63537,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AU-A1ZBPIRS.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aurora_AU-A1ZBPIRS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -61866,7 +63576,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -61912,6 +63622,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -61972,6 +63686,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AU-A1ZBR16A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aurora_AU-A1ZBR16A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -62270,8 +63989,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AU-A1ZBR2GW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aurora_AU-A1ZBR2GW.html" }, { "field": "Exposed fields", @@ -62898,7 +64617,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -62948,6 +64667,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -63009,6 +64732,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Avatto_CLY8101U-GE.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_CLY8101U-GE.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -71612,7 +73340,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -71660,7 +73388,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -71719,7 +73447,7 @@ "url": "https://zigbee.blakadder.com/AwoX_33943.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/AwoX_33943.html" }, @@ -72744,7 +74472,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -72794,6 +74522,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -72861,8 +74593,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/33957.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AwoX_33957.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/AwoX_33957.html" }, { "field": "Exposed fields", @@ -73790,7 +75527,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -73836,6 +75573,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -73896,6 +75637,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GR-ZB01-W.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Axis_GR-ZB01-W.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -75530,7 +77276,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -75582,7 +77328,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -75650,7 +77396,7 @@ "url": "https://zigbee.blakadder.com/Bankamp_2154_1.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Bankamp_2154_1.html" }, @@ -75962,7 +77708,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT + ioBroker + ZHA + Tasmota" + "value": "Zigbee4Domoticz + Zigbee2MQTT + ioBroker + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -76002,7 +77748,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -76013,6 +77759,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -76067,7 +77817,7 @@ "url": "https://zigbee.blakadder.com/Beca_BHT-6000.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Beca_BHT-6000.html" }, @@ -76081,6 +77831,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Beca_BHT-6000.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beca_BHT-6000.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -76572,7 +78327,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -76618,6 +78373,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -76678,6 +78437,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/F7C033.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Belkin_F7C033.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -76857,7 +78621,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -76904,9 +78668,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -76967,10 +78743,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Benexmart_ZM-sui1.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Benexmart_ZM-sui1.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Benexmart_ZM-sui1.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Benexmart_ZM-sui1.html" }, { "field": "Exposed fields", @@ -77174,7 +78965,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -77224,6 +79015,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -77291,8 +79086,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X5H-GB-B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beok_TGR85-ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beok_TGR85-ZB.html" }, { "field": "Exposed fields", @@ -80246,7 +82046,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -80292,6 +82092,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -80352,6 +82156,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SCM-S1.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Blaupunkt_SCM-S1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -80393,7 +82202,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -80440,9 +82249,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -80503,10 +82328,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNTZ007.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS2.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS2.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNTZ007.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS2.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS2.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS2.html" }, { "field": "Exposed fields", @@ -80660,8 +82505,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BW-IS3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS3.html" }, { "field": "Exposed fields", @@ -80700,7 +82545,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + deCONZ" }, "facts": [ { @@ -80746,6 +82591,22 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -80806,6 +82667,26 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0201.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS4.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS4.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS4.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS4.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -81009,7 +82890,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -81064,6 +82945,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -81133,6 +83018,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS8.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS8.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -81169,7 +83059,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -81215,6 +83105,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -81280,6 +83174,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BW-IS9.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-IS9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -81319,7 +83218,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -81366,6 +83265,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -81429,10 +83340,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BW-SHP13.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BW-SHP13.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" }, { "field": "Exposed fields", @@ -81469,7 +83395,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -81516,6 +83442,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -81579,10 +83517,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0121_plug.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0121_plug.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" }, { "field": "Exposed fields", @@ -81628,7 +83581,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -81675,6 +83628,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -81738,10 +83703,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP13.html" }, { "field": "Exposed fields", @@ -81778,7 +83758,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -81825,9 +83805,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -81888,10 +83880,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_1.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" }, { "field": "Exposed fields", @@ -81928,7 +83935,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -81975,9 +83982,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -82055,10 +84074,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_3.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SHP15.html" }, { "field": "Exposed fields", @@ -82352,8 +84386,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BW-SS7_1gang.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BlitzWolf_BW-SS7_1.html" }, { "field": "Exposed fields", @@ -84689,7 +86723,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -84736,6 +86770,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -84799,10 +86837,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BSP-FZ2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BSP-FZ2.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BSP-FZ2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BSP-FZ2.html" }, { "field": "Exposed fields", @@ -84978,7 +87021,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -85025,6 +87068,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -85088,10 +87135,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BTH-RA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BTH-RA.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BTH-RA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BTH-RA.html" }, { "field": "Exposed fields", @@ -85273,8 +87325,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BTH-RM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BTH-RM.html" }, { "field": "Exposed fields", @@ -85444,8 +87496,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BTH-RM230Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_BTH-RM230Z.html" }, { "field": "Exposed fields", @@ -85737,7 +87789,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -85787,6 +87839,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -85849,8 +87905,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ISW-ZPR1-WP13.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_ISW-ZPR1-WP13.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Bosch_ISW-ZPR1-WP13.html" }, { "field": "Exposed fields", @@ -87088,8 +89149,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HT_CZ_01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Brennestuhl_HT_CZ_01.html" }, { "field": "Exposed fields", @@ -90658,7 +92719,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -90705,6 +92766,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -90768,10 +92833,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0003.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0003.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0003.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0003.html" }, { "field": "Exposed fields", @@ -91685,7 +93755,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -91731,6 +93801,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -91791,6 +93873,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/064888.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_3584C.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_3584C.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_3584C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -91979,7 +94076,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -92029,6 +94126,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -92091,8 +94192,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/412015.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_F20T60A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_F20T60A.html" }, { "field": "Exposed fields", @@ -92431,7 +94537,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -92477,6 +94583,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -92537,6 +94647,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/412171.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_FC80CC.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -92869,7 +94984,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -92919,6 +95034,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -92981,8 +95100,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/412170.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_FC80RC.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_FC80RC.html" }, { "field": "Exposed fields", @@ -93137,8 +95261,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/K4003C_L4003C_N4003C_NT4003C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_4003C.html" }, { "field": "Exposed fields", @@ -93182,7 +95306,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -93229,6 +95353,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -93292,10 +95420,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/K4027C_L4027C_N4027C_NT4027C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_4027C.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/K4027C_L4027C_N4027C_NT4027C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_4027C.html" }, { "field": "Exposed fields", @@ -93577,8 +95710,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L4531C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BTicino_4531C.html" }, { "field": "Exposed fields", @@ -93906,7 +96039,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -93952,6 +96085,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -94012,6 +96149,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/6717-84.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Busch_Jaeger_6717-84.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -94315,7 +96457,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -94361,6 +96503,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -94421,6 +96571,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/6735_6736_6737.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Busch_Jaeger_6736.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Busch_Jaeger_6736.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -99469,8 +101629,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/C204.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Candeo_C204.html" }, { "field": "Exposed fields", @@ -99959,7 +102119,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -100007,7 +102167,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -100066,7 +102226,7 @@ "url": "https://zigbee.blakadder.com/Candeo_HK-DIM-A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Candeo_HK-DIM-A.html" }, @@ -100100,7 +102260,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "deCONZ + Zigbee4Domoticz + Zigbee2MQTT" }, "facts": [ { @@ -100143,6 +102303,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Zigbee2MQTT", "value": "Support record available" @@ -100197,6 +102361,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/CASA_IA_CAC-201.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CASA_IA_CAC-201.html" + }, { "field": "Zigbee2MQTT", "source": "Blakadder Zigbee record", @@ -100229,7 +102398,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -100269,7 +102438,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -100318,7 +102487,7 @@ "url": "https://zigbee.blakadder.com/CASA_IA_CAC-221.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/CASA_IA_CAC-221.html" }, @@ -100349,7 +102518,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -100389,7 +102558,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -100438,7 +102607,7 @@ "url": "https://zigbee.blakadder.com/CASA_IA_CMS-323.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/CASA_IA_CMS-323.html" }, @@ -100476,7 +102645,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -100516,7 +102685,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -100565,7 +102734,7 @@ "url": "https://zigbee.blakadder.com/CASA_IA_CPC-321-80.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/CASA_IA_CPC-321-80.html" }, @@ -100596,7 +102765,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -100642,6 +102811,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -100702,6 +102875,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CCB432.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CASA_IA_CCB-432-32.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -101026,7 +103204,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -101073,6 +103251,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -101136,10 +103322,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CTHS-317-ET.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CASA_IA_CTHS-317-ET.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CASA_IA_CTHS-317-ET.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CTHS-317-ET.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CASA_IA_CTHS-317-ET.html" }, { "field": "Exposed fields", @@ -101330,7 +103526,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -101380,6 +103576,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -101442,8 +103650,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CGW-Z-0010.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CEL_CGW-Z-0010.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CEL_CGW-Z-0010.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CEL_CGW-Z-0010.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/CEL_CGW-Z-0010.html" }, { "field": "Exposed fields", @@ -102171,7 +104394,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -102217,6 +104440,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -102277,6 +104504,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/3200-de.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3200-Gde.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -102868,8 +105100,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3310-G.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3310-G.html" }, { "field": "Exposed fields", @@ -103199,7 +105431,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -103245,6 +105477,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -103305,6 +105545,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/3323-G.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3323-G.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3323-G.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -103457,8 +105707,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3328-G.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3328-G.html" }, { "field": "Exposed fields", @@ -103612,8 +105862,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3400-D.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_3400-G.html" }, { "field": "Exposed fields", @@ -104050,8 +106300,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4200-C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Centralite_4200-C.html" }, { "field": "Exposed fields", @@ -105649,8 +107899,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SB100.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Cleverio_SB100.html" }, { "field": "Exposed fields", @@ -106252,7 +108502,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -106302,6 +108552,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -106373,8 +108627,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CMA30035.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ClickSmart_CMA30035.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ClickSmart_CMA30035.html" }, { "field": "Exposed fields", @@ -106737,8 +108996,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CMA30651.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ClickSmart_CMA30651.html" }, { "field": "Exposed fields", @@ -108844,7 +111103,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -108890,6 +111149,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -108950,6 +111213,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PSM-29ZBSR.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Climax_PSM-29ZBSR.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -109428,7 +111696,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -109478,6 +111746,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -109540,8 +111812,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SD-8SCZBS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Climax_SD-8SCZBS.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Climax_SD-8SCZBS.html" }, { "field": "Exposed fields", @@ -110312,7 +112589,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -110363,6 +112640,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -110427,6 +112708,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/codm_90085.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/codm_90085.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -112911,7 +115197,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + SONOFF iHost" }, "facts": [ { @@ -112958,9 +115244,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -113021,10 +115319,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" }, { "field": "Exposed fields", @@ -113063,7 +115376,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -113110,9 +115423,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -113173,10 +115502,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0207_water_leak_detector.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0207.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0207.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0207_water_leak_detector.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0207.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0207.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0207.html" }, { "field": "Exposed fields", @@ -116071,7 +118420,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -116125,6 +118474,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -116191,6 +118544,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/SZ1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SZ1.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -116646,7 +119004,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -116693,9 +119051,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -116756,10 +119122,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CC2538.ROUTER.V1.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CC2538.ROUTER.V1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.html" }, { "field": "Exposed fields", @@ -116795,7 +119171,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -116842,9 +119218,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -116905,10 +119289,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CC2538.ROUTER.V2.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.v2.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CC2538.ROUTER.V2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.v2.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/jethome_CC2538.router.v2.html" }, { "field": "Exposed fields", @@ -117091,7 +119485,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -117137,6 +119531,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -117197,6 +119595,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DNCKATSW001.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DNCKATSW001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -117940,7 +120343,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -117990,6 +120393,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -118052,8 +120459,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LYWSD03MMC.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LYWSD03MMC.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_LYWSD03MMC.html" }, { "field": "Exposed fields", @@ -118253,7 +120665,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -118303,6 +120715,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -118365,8 +120781,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MHO-C401N.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MHO-C401N.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MHO-C401N.html" }, { "field": "Exposed fields", @@ -118704,7 +121125,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -118751,6 +121172,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -118814,10 +121247,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ptvo.switch.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ptvo.switch.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ptvo.switch.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ptvo.switch.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ptvo.switch.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ptvo.switch.html" }, { "field": "Exposed fields", @@ -119279,7 +121727,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -119325,6 +121773,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -119385,6 +121837,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZigUP.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ZigUP.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -119859,7 +122316,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -119905,6 +122362,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -119965,6 +122426,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DCH-B112.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/D-Link_DCH-B112.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -120287,7 +122753,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -120338,6 +122804,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -120402,6 +122872,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Danalock_V3-BTZB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danalock_V3-BTZB.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -120729,7 +123204,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker" }, "facts": [ { @@ -120776,9 +123251,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -120839,10 +123326,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/014G2461.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danfoss_014G2461.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danfoss_014G2461.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/014G2461.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danfoss_014G2461.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danfoss_014G2461.html" }, { "field": "Exposed fields", @@ -121110,7 +123612,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -121156,6 +123658,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -121216,6 +123722,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/014G2480.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Danfoss_014G2480.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -122448,7 +124959,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -122495,6 +125006,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -122558,10 +125073,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/0402946.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Datek_0402946.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/0402946.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Datek_0402946.html" }, { "field": "Exposed fields", @@ -122765,7 +125285,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -122811,6 +125331,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -122871,6 +125395,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HLU2909K.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Datek_HLU2909K.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -122915,7 +125444,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -122965,6 +125494,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -123027,8 +125560,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HSE2905E.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Datek_HSE2905E.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Datek_HSE2905E.html" }, { "field": "Exposed fields", @@ -126400,7 +128938,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -126447,9 +128985,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -126510,10 +129056,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AQSZB-110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_AQSZB-110.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AQSZB-110.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_AQSZB-110.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_AQSZB-110.html" }, { "field": "Exposed fields", @@ -126706,7 +129262,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -126752,6 +129308,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -126812,6 +129372,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EMIZB-132.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_EMIZB-132.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -127133,7 +129698,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -127180,9 +129745,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127243,10 +129816,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HESZB-120.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_HESZB-120.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HESZB-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_HESZB-120.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_HESZB-120.html" }, { "field": "Exposed fields", @@ -127298,7 +129881,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -127344,6 +129927,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127404,6 +129995,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HMSZB-110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_HMSZB-110.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_HMSZB-110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -127447,7 +130048,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -127493,6 +130094,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127553,6 +130162,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IOMZB-110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_IOMZB-110.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_IOMZB-110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -127591,7 +130210,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -127637,6 +130256,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127697,6 +130320,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/KEYZB-110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_KEYZB-110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -127741,7 +130369,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -127787,6 +130415,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127847,6 +130479,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MOSZB-130.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-130.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -127888,7 +130525,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -127935,9 +130572,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -127998,10 +130647,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MOSZB-140.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-140.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MOSZB-140.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-140.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-140.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-140.html" }, { "field": "Exposed fields", @@ -128042,7 +130706,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -128088,6 +130752,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -128148,6 +130816,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MOSZB-141.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_MOSZB-141.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -128616,7 +131289,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -128662,6 +131335,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -128722,6 +131399,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SIRZB-110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SIRZB-110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -128930,7 +131612,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -128976,6 +131658,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129036,6 +131722,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SMRZB-143.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SMRZB-143.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -129082,7 +131773,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -129128,6 +131819,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129188,6 +131883,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SMRZB-332.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SMRZB-332.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -129227,7 +131927,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -129274,9 +131974,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129337,10 +132045,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SMSZB-120.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SMSZB-120.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMSZB-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SMSZB-120.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SMSZB-120.html" }, { "field": "Exposed fields", @@ -129392,7 +132110,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -129439,9 +132157,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129502,10 +132228,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPLZB-131.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SPLZB-131.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SPLZB-131.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SPLZB-131.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SPLZB-131.html" }, { "field": "Exposed fields", @@ -129552,7 +132288,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -129598,6 +132334,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129658,6 +132398,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPLZB-132.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SPLZB-132.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -129702,7 +132447,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -129748,6 +132493,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -129808,6 +132557,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPLZB-134.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_SPLZB-134.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -130145,7 +132899,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -130192,9 +132946,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -130255,10 +133017,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WISZB-120.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_WISZB-120.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WISZB-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_WISZB-120.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_WISZB-120.html" }, { "field": "Exposed fields", @@ -130302,7 +133074,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -130348,6 +133120,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -130408,6 +133188,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WISZB-121.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_WISZB-121.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_WISZB-121.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -130883,7 +133673,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -130933,6 +133723,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -130995,8 +133793,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZHEMI101.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_ZHEMI101.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_ZHEMI101.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Develco_ZHEMI101.html" }, { "field": "Exposed fields", @@ -131611,7 +134419,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -131665,6 +134473,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -131731,6 +134543,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/ptvo.router.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ptvo.router.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -131763,7 +134580,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -131809,6 +134626,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -131869,6 +134690,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_AirSense.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_Airsense.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -131918,7 +134744,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -131964,6 +134790,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -132024,6 +134854,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_Flower.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_Flower.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -132175,8 +135010,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_FreePad.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_FreePad.html" }, { "field": "Exposed fields", @@ -132218,7 +135053,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -132264,6 +135099,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -132324,6 +135163,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_Geiger.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_Geiger.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -132791,7 +135635,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -132837,6 +135681,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -132897,6 +135749,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_R8_8.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_R8_8.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_R8_8.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -133080,7 +135942,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -133126,6 +135988,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -133186,6 +136052,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DIYRuZ_RT.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuZ_RT.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -133493,8 +136364,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FreePad_LeTV_8.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DIYRuz_FreePad_8.html" }, { "field": "Exposed fields", @@ -134862,7 +137733,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -134909,6 +137780,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -134972,10 +137851,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0205.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0205.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" }, { "field": "Exposed fields", @@ -137032,7 +139921,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -137082,6 +139971,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -137261,8 +140158,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAA-EU.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAA-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAA-EU.html" }, { "field": "Exposed fields", @@ -137549,7 +140456,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -137599,6 +140506,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -137778,8 +140693,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAB-EU.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAB-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZAB-EU.html" }, { "field": "Exposed fields", @@ -137813,7 +140738,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -137863,6 +140788,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -137925,8 +140862,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0012.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-2ZAA-EU.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-2ZAA-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-2ZAA-EU.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-2ZAA-EU.html" }, { "field": "Exposed fields", @@ -137968,7 +140920,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -138022,6 +140974,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -138088,6 +141044,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eardatek_ESW-0ZAA-EU.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-0ZAA-EU.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -138390,7 +141351,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + deCONZ + ZHA" + "value": "Tasmota + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -138440,6 +141401,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -138501,6 +141466,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eardatek_ESW-0ZBA-EU.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-0ZBA-EU.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -138529,7 +141499,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + Tasmota + deCONZ" + "value": "ZHA + Zigbee2MQTT + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -138581,7 +141551,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -138645,7 +141615,7 @@ "url": "https://zigbee.blakadder.com/Eardatek_ESW-3ZAB-EU.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eardatek_ESW-3ZAB-EU.html" }, @@ -138679,7 +141649,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -138723,7 +141693,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -138777,7 +141747,7 @@ "url": "https://zigbee.blakadder.com/EARU_EAKCB-T-M.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/EARU_EAKCB-T-M.html" }, @@ -139155,7 +142125,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ioBroker + deCONZ + Tasmota + Zigbee2MQTT + ZHA" + "value": "ioBroker + Zigbee4Domoticz + Tasmota + Zigbee2MQTT + ZHA" }, "facts": [ { @@ -139199,7 +142169,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -139265,7 +142235,7 @@ "url": "https://zigbee.blakadder.com/EARU_RDCBC.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/EARU_RDCBC.html" }, @@ -139314,7 +142284,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -139361,6 +142331,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -139505,10 +142483,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TRV06.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TRV06.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" }, { "field": "Exposed fields", @@ -142813,7 +145801,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -142863,6 +145851,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -142925,8 +145921,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SAGE206612.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Echostar_SAGE206612.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Echostar_SAGE206612.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Echostar_SAGE206612.html" }, { "field": "Exposed fields", @@ -142965,7 +145971,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -143012,6 +146018,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -143080,10 +146090,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/Eco-Dim.05.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.05.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/Eco-Dim.05.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.05.html" }, { "field": "Exposed fields", @@ -143269,7 +146284,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -143316,6 +146331,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -143375,6 +146394,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.07.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.07.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -143565,7 +146589,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -143605,7 +146629,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -143654,7 +146678,7 @@ "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.10.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/EcoDim_ECO-DIM.10.html" }, @@ -143831,7 +146855,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -143877,6 +146901,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -143937,6 +146965,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10010.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10010.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -143975,7 +147008,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -144021,6 +147054,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -144081,6 +147118,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10011.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10011.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -144119,7 +147161,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -144165,6 +147207,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -144225,6 +147271,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10012.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10012.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -144263,7 +147314,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -144309,6 +147360,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -144369,6 +147424,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10013.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10013.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -144407,7 +147467,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -144453,6 +147513,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -144513,6 +147581,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10014.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10014.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10014.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -144551,7 +147629,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -144597,6 +147675,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -144657,6 +147739,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ED-10015.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoDim_ED-10015.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -145146,7 +148233,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -145196,6 +148283,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -145258,8 +148349,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4655BC0-R.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ecolink_4655BC0-R.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ecolink_4655BC0-R.html" }, { "field": "Exposed fields", @@ -145560,8 +148656,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/A9A19A60WESDZ02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ecosmart_A9A19A60WESDZ02.html" }, { "field": "Exposed fields", @@ -145718,8 +148814,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/A9BR3065WESDZ02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoSmart_A9BR3065WESDZ02.html" }, { "field": "Exposed fields", @@ -145876,8 +148972,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/D1523.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoSmart_D1523.html" }, { "field": "Exposed fields", @@ -146657,7 +149753,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -146703,6 +149799,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -146763,6 +149867,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1TST-EU.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eCozy_1TST-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eCozy_1TST-EU.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -146809,7 +149923,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -146856,9 +149970,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -146919,10 +150041,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PLUG_EDP_RE_DY.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EDP_re-dy_plug.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/PLUG_EDP_RE_DY.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EDP_re-dy_plug.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EDP_re-dy_plug.html" }, { "field": "Exposed fields", @@ -147077,8 +150209,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SWITCH_EDP_RE_DY.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EDP_re-dy_switch.html" }, { "field": "Exposed fields", @@ -153846,8 +156978,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EFEKTA_PWS_Max.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EFEKTALAB_EFEKTA_PWS_Max.html" }, { "field": "Exposed fields", @@ -158694,7 +161826,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ + Tasmota" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -158742,7 +161874,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -158805,7 +161937,7 @@ "url": "https://zigbee.blakadder.com/Eglo_12227.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eglo_12227.html" }, @@ -158841,7 +161973,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -158889,7 +162021,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -158948,7 +162080,7 @@ "url": "https://zigbee.blakadder.com/Eglo_12237.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eglo_12237.html" }, @@ -158979,7 +162111,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -159027,7 +162159,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -159086,7 +162218,7 @@ "url": "https://zigbee.blakadder.com/Eglo_12252.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eglo_12252.html" }, @@ -159117,7 +162249,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -159165,7 +162297,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -159224,7 +162356,7 @@ "url": "https://zigbee.blakadder.com/Eglo_12253.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Eglo_12253.html" }, @@ -160247,7 +163379,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -160297,6 +163429,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -160359,8 +163495,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EZMB-RGB-TW-I2C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eglo_12254.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eglo_12254.html" }, { "field": "Exposed fields", @@ -160977,8 +164118,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/33955.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eglo_900053.html" }, { "field": "Exposed fields", @@ -161429,8 +164570,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/33955.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eglo_900316.html" }, { "field": "Exposed fields", @@ -161592,8 +164733,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/33955.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eglo_900317.html" }, { "field": "Exposed fields", @@ -164676,7 +167817,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -164722,6 +167863,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -164782,6 +167927,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/316GLEDRF.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Elko_4523410.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -164942,7 +168092,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -164989,6 +168139,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -165052,10 +168210,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4523430.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Elko_4523430.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Elko_4523430.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4523430.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Elko_4523430.html" }, { "field": "Exposed fields", @@ -167948,7 +171116,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -167994,6 +171162,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -168054,6 +171226,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EKO09738.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EKO09738.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -169332,7 +172509,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -169382,6 +172559,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -169444,8 +172625,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/43076.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43076.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43076.html" }, { "field": "Exposed fields", @@ -169636,7 +172822,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -169686,6 +172872,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -169748,8 +172938,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/43080.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43080.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43080.html" }, { "field": "Exposed fields", @@ -169797,7 +172992,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -169844,6 +173039,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -169907,10 +173106,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/43082.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43082.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/43082.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43082.html" }, { "field": "Exposed fields", @@ -170071,8 +173275,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/43084.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43084.html" }, { "field": "Exposed fields", @@ -170570,7 +173774,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -170616,6 +173820,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -170676,6 +173884,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/43100.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Enbrighten_43100.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -175366,7 +178579,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -175412,6 +178625,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -175472,6 +178689,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZGR904-S.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Envilar_ZGR904-S.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -175972,7 +179194,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -176019,6 +179241,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -176123,10 +179353,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/essentials_120112.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/essentials_120112.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/essentials_120112.html" }, { "field": "Exposed fields", @@ -177615,8 +180855,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EB-SB-1B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Essentielb_EB-SB-1B.html" }, { "field": "Exposed fields", @@ -178422,7 +181662,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -178469,9 +181709,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -178532,10 +181788,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPZB0001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eurotronic_SPZB0001.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eurotronic_SPZB0001.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eurotronic_SPZB0001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SPZB0001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eurotronic_SPZB0001.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eurotronic_SPZB0001.html" }, { "field": "Exposed fields", @@ -178707,8 +181983,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EZ200.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Evanell_EZ200.html" }, { "field": "Exposed fields", @@ -179666,8 +182942,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Evolveo_Heat_M30.html" }, { "field": "Exposed fields", @@ -179730,7 +183006,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost" }, "facts": [ { @@ -179780,6 +183056,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -179842,8 +183122,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SRB01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Evvr_SRB01.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Evvr_SRB01.html" }, { "field": "Exposed fields", @@ -179882,7 +183167,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -179934,7 +183219,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -179998,7 +183283,7 @@ "url": "https://zigbee.blakadder.com/eWeLight_ZAH-BL01-RGBCW.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLight_ZAH-BL01-RGBCW.html" }, @@ -183308,7 +186593,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + Tasmota + deCONZ" }, "facts": [ { @@ -183355,9 +186640,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -183423,10 +186724,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-04.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK06.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK06.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK06.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK06.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK06.html" }, { "field": "Exposed fields", @@ -183470,7 +186791,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + Tasmota + deCONZ" }, "facts": [ { @@ -183517,9 +186838,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -183580,10 +186917,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-01.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK07.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK07.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK07.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK07.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK07.html" }, { "field": "Exposed fields", @@ -183627,7 +186984,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -183674,9 +187031,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -183754,10 +187123,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-02.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK08.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK08.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK08.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK08.html" }, { "field": "Exposed fields", @@ -183802,7 +187186,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -183849,9 +187233,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -183921,10 +187321,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-03.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK09.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-03.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK09.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK09.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK09.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_RHK09.html" }, { "field": "Exposed fields", @@ -183969,7 +187389,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -184016,9 +187436,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -184079,10 +187515,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SA-003-Zigbee.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SA-003-Zigbee.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SA-003-Zigbee.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SA-003-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SA-003-Zigbee.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SA-003-Zigbee.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SA-003-Zigbee.html" }, { "field": "Exposed fields", @@ -185173,7 +188629,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -185223,6 +188679,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -185285,8 +188749,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SWITCH-ZR02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SWITCH-ZR02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SWITCH-ZR02.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SWITCH-ZR02.html" }, { "field": "Exposed fields", @@ -185325,7 +188799,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -185371,6 +188845,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -185431,6 +188909,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SWITCH-ZR03-1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_SWITCH-ZR03.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -185607,7 +189090,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -185657,6 +189140,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -185719,8 +189214,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZB-SW01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW01.html" }, { "field": "Exposed fields", @@ -185759,7 +189269,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -185806,6 +189316,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -185869,10 +189383,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZB-SW02.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZB-SW02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW02.html" }, { "field": "Exposed fields", @@ -185914,7 +189433,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -185960,6 +189479,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -186020,6 +189543,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZB-SW03.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW03.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -186464,7 +189992,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -186515,6 +190043,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -186579,6 +190111,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW015.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZB-SW015.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -186614,7 +190151,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -186665,6 +190202,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -186729,6 +190270,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -186761,7 +190307,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -186805,7 +190351,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -186815,6 +190361,10 @@ { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -186867,7 +190417,7 @@ "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004-plug.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004-plug.html" }, @@ -186881,6 +190431,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004-plug.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZYZB004-plug.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -187216,7 +190771,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -187267,6 +190822,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -187331,6 +190890,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZYZB011-MINI.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZYZB011-MINI.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -187363,7 +190927,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -187414,6 +190978,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -187478,6 +191046,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/eWeLink_ZYZB011-Plug.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_ZYZB011-Plug.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -190280,7 +193853,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -190330,6 +193903,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -190417,8 +193994,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZB003-X.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Fantem_ZB003-X.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Fantem_ZB003-X.html" }, { "field": "Exposed fields", @@ -191792,7 +195374,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -191838,6 +195420,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -191898,6 +195484,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SCA01ZB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Feibit_SCA01ZB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -192368,7 +195959,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -192414,6 +196005,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -192474,6 +196073,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SGA01ZB.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Feibit_SGA01ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Feibit_SGA01ZB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -192939,7 +196548,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -192985,6 +196594,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -193045,6 +196658,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SSA01ZB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Feibit_SSA01ZB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -199946,7 +203564,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -199996,6 +203614,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -200058,8 +203684,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/Garza-Standard-A60.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Garza_401311A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Garza_401311A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Garza_401311A.html" }, { "field": "Exposed fields", @@ -200252,7 +203888,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker" }, "facts": [ { @@ -200302,6 +203938,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -200364,8 +204004,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/45852GE.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GE_45852GE.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GE_45852GE.html" }, { "field": "Exposed fields", @@ -200553,7 +204198,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -200599,6 +204244,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -200659,6 +204308,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/45856GE.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GE_45856GE.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -200698,7 +204352,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -200744,6 +204398,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -200804,6 +204462,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/45857GE.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GE_45857GE.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -201548,7 +205211,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -201595,6 +205258,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -201658,6 +205325,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_TS0121.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0121.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -202859,7 +206531,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -202911,7 +206583,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -202975,7 +206647,7 @@ "url": "https://zigbee.blakadder.com/Giderwel_C05Z.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Giderwel_C05Z.html" }, @@ -203164,7 +206836,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + Zigbee2MQTT + ZHA + deCONZ" + "value": "Tasmota + Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -203216,7 +206888,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -203280,7 +206952,7 @@ "url": "https://zigbee.blakadder.com/GiEX_QT06.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/GiEX_QT06.html" }, @@ -204536,7 +208208,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -204582,6 +208254,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -204642,6 +208322,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/InstaRemote.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gira_2430-100.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gira_2430-100.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -204940,7 +208630,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -204990,6 +208680,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -205065,8 +208759,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JR-ZDS01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Girier_JR-ZDS01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Girier_JR-ZDS01.html" }, { "field": "Exposed fields", @@ -206482,7 +210181,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -206529,6 +210228,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -206592,10 +210303,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-001Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-001Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-001Z.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-001Z.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-B-001Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-001Z.html" }, { "field": "Exposed fields", @@ -206946,7 +210672,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -206996,6 +210722,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -207058,8 +210788,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-B-003P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-003P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-003P.html" }, { "field": "Exposed fields", @@ -207103,7 +210838,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -207150,6 +210885,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -207213,10 +210952,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-004P.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-004P.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-B-004P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-004P.html" }, { "field": "Exposed fields", @@ -207416,7 +211160,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -207462,6 +211206,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -207522,6 +211274,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-007Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-007Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-007Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -207571,7 +211333,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -207617,6 +211379,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -207677,6 +211447,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-007ZS.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-007ZS.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-007ZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -207838,8 +211618,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-B-008P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008P.html" }, { "field": "Exposed fields", @@ -207890,7 +211670,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + zigbee + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -207937,6 +211717,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "zigbee", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -208000,10 +211792,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-008Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008Z.html" + }, + { + "field": "zigbee", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008Z.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-B-008Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008Z.html" }, { "field": "Exposed fields", @@ -208054,7 +211861,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -208100,6 +211907,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -208160,6 +211971,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-B-008ZS.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-B-008ZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -208209,7 +212025,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT + ioBroker" + "value": "deCONZ + Zigbee2MQTT + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -208256,6 +212072,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ioBroker", "value": "Support record available" @@ -208315,6 +212135,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Gledopto_GL-MC-001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-MC-001.html" + }, { "field": "ioBroker", "source": "Blakadder Zigbee record", @@ -208957,7 +212782,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -209004,6 +212829,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -209067,10 +212900,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-C-004P.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-004P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-004P.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-004P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-004P.html" }, { "field": "Exposed fields", @@ -209114,7 +212957,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -209160,6 +213003,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -209225,6 +213076,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-C-006.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-006.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-006.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -209267,7 +213128,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -209314,6 +213175,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -209377,10 +213246,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-C-006P.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-006P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-006P.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-006P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-006P.html" }, { "field": "Exposed fields", @@ -209721,7 +213600,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -209768,6 +213647,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -209831,6 +213714,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Gledopto_GL-C-007.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-007.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -210301,8 +214189,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-007P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-007P.html" }, { "field": "Exposed fields", @@ -210663,7 +214551,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + ioBroker + deCONZ" + "value": "ZHA + Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -210715,7 +214603,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -210779,7 +214667,7 @@ "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008.html" }, @@ -211125,7 +215013,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -211175,6 +215063,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -211237,8 +215133,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-008P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008P.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008P.html" }, { "field": "Exposed fields", @@ -211446,7 +215352,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -211492,6 +215398,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -211552,6 +215462,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-C-008S.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-008S.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -211601,7 +215516,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -211648,6 +215563,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -211716,10 +215643,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-C-009.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-009.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-009.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-009.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-009.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-009.html" }, { "field": "Exposed fields", @@ -211872,8 +215814,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-009P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-009P.html" }, { "field": "Exposed fields", @@ -212318,8 +216260,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-C-008P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-C-011P.html" }, { "field": "Exposed fields", @@ -213884,7 +217826,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -213930,6 +217872,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -213990,6 +217940,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-D-003Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-D-003Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-D-003Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -214039,7 +217999,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -214085,6 +218045,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -214145,6 +218109,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-D-003ZS.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-D-003ZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -214349,7 +218318,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -214395,6 +218364,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -214455,6 +218428,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-D-004Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-D-004Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -215236,8 +219214,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-D-006P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-D-006P.html" }, { "field": "Exposed fields", @@ -216508,7 +220486,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -216554,6 +220532,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -216614,6 +220600,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-FL-004TZ.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-FL-004TZ.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-FL-004TZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -216663,7 +220659,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -216709,6 +220705,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -216769,6 +220769,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-FL-004TZS.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-FL-004TZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -218168,7 +222173,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -218214,6 +222219,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -218274,6 +222283,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-G-001Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-G-001Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -218323,7 +222337,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -218369,6 +222383,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -218429,6 +222447,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-G-001ZS.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-G-001ZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -220612,7 +224635,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -220662,6 +224685,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -220724,8 +224751,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-S-004Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-004Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-004Z.html" }, { "field": "Exposed fields", @@ -221085,7 +225117,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -221131,6 +225163,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -221191,6 +225231,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-S-006P.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-006P.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-006P.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -221508,8 +225558,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-S-007Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-007Z.html" }, { "field": "Exposed fields", @@ -221560,7 +225610,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -221606,6 +225656,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -221666,6 +225720,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-S-007ZS.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-S-007ZS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -222021,7 +226080,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -222068,6 +226127,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -222131,10 +226194,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-SD-001.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-SD-001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-SD-001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-SD-001.html" }, { "field": "Exposed fields", @@ -222319,7 +226387,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -222365,6 +226433,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -222425,6 +226497,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-SD-002.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-SD-002.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -222462,7 +226539,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -222512,6 +226589,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -222574,8 +226655,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GL-SD-003P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-SD-003P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-SD-003P.html" }, { "field": "Exposed fields", @@ -222923,7 +227009,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -222969,6 +227055,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -223029,6 +227119,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GL-W-001Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Gledopto_GL-W-001Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -224059,7 +228154,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -224105,6 +228200,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -224165,6 +228264,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SKHMP30-I1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GS_SKHMP30-I1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -224793,7 +228897,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -224839,6 +228943,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -224899,6 +229007,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/STHM-I1H.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/GS_STHM-I1H.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -225925,8 +230038,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HA-ZM12_24-mw2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Halemeier_HA-ZM12.html" }, { "field": "Exposed fields", @@ -226861,7 +230974,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -226908,9 +231021,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -227060,10 +231185,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hama_00176592.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hama_00176592.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hama_00176592.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hama_00176592.html" }, { "field": "Exposed fields", @@ -227261,7 +231401,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -227311,6 +231451,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -227373,8 +231517,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/99432.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hampton_Bay_99432.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hampton_Bay_99432.html" }, { "field": "Exposed fields", @@ -230095,7 +234244,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -230146,6 +234295,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -230214,6 +234367,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heiman_HS1CA.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1CA.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -230843,7 +235001,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -230893,6 +235051,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -230955,8 +235121,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS1CG.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1CG.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1CG.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1CG.html" }, { "field": "Exposed fields", @@ -231709,7 +235885,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -231759,6 +235935,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -231821,8 +236005,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS1DS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1DS.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1DS.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1DS.html" }, { "field": "Exposed fields", @@ -232016,7 +236210,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -232066,6 +236260,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -232128,8 +236334,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS1HT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" }, { "field": "Exposed fields", @@ -232173,7 +236394,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -232223,6 +236444,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -232285,8 +236518,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS1HT-N.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1HT.html" }, { "field": "Exposed fields", @@ -232614,7 +236862,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + deCONZ + Zigbee2MQTT" + "value": "ZHA + deCONZ + Zigbee4Domoticz + Zigbee2MQTT" }, "facts": [ { @@ -232661,6 +236909,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Zigbee2MQTT", "value": "Support record available" @@ -232720,6 +236972,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heiman_HS1MS.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1MS.html" + }, { "field": "Zigbee2MQTT", "source": "Blakadder Zigbee record", @@ -233186,7 +237443,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -233232,6 +237489,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -233297,6 +237562,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS1RC-N.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1RC.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1RC.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -233632,7 +237907,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -233683,6 +237958,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -233751,6 +238030,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heiman_HS1SA.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS1SA.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -235307,7 +239591,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -235353,6 +239637,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -235418,6 +239706,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS2DB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2DB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -236333,7 +240626,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -236380,6 +240673,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -236443,10 +240744,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS2SK.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2SK.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2SK.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS2SK.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2SK.html" }, { "field": "Exposed fields", @@ -236638,7 +240949,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -236684,6 +240995,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -236753,6 +241068,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS2SS.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2SS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -237409,7 +241729,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA + ioBroker" }, "facts": [ { @@ -237456,9 +241776,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -237528,10 +241860,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS2WD-E.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2WD.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2WD.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS2WD-E.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2WD.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS2WD.html" }, { "field": "Exposed fields", @@ -238426,7 +242773,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -238472,6 +242819,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -238532,6 +242887,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS3AQ.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3AQ.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3AQ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -238569,7 +242934,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -238615,6 +242980,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -238675,6 +243044,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS3CG.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3CG.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -238862,7 +243236,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost" }, "facts": [ { @@ -238912,6 +243286,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -238974,8 +243352,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HS3HT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3HT.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3HT.html" }, { "field": "Exposed fields", @@ -239017,7 +243400,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -239063,6 +243446,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -239123,6 +243510,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HS3MS.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3MS.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -239167,7 +243559,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -239217,6 +243609,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -239278,6 +243674,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heiman_HS3SA.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3SA.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -239453,7 +243854,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -239499,6 +243900,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -239555,6 +243960,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heiman_HS3WL.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heiman_HS3WL.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -240608,7 +245018,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -240659,6 +245069,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -240727,6 +245141,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Heimgard_HCSMOKEDETECT.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heimgard_HCSMOKEDETECT.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -241325,7 +245744,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -241371,6 +245790,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -241431,6 +245854,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HC-SLM-1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Heimgard_HC-SLM-1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -244384,7 +248812,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -244439,6 +248867,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -244508,6 +248940,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hihome_WZB-STH.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hihome_WZB-STH.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -244678,7 +249115,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -244725,9 +249162,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -244877,10 +249326,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HiHome_WZB-TRVL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HiHome_WZB-TRVL.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HiHome_WZB-TRVL.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HiHome_WZB-TRVL.html" }, { "field": "Exposed fields", @@ -244929,7 +249393,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -244979,6 +249443,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -245054,8 +249526,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DDS238-2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hiking_DDS238-2.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hiking_DDS238-2.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hiking_DDS238-2.html" }, { "field": "Exposed fields", @@ -245593,7 +250075,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -245643,6 +250125,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -245705,8 +250191,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/1613V.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_1613V.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_1613V.html" }, { "field": "Exposed fields", @@ -245751,7 +250242,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -245798,6 +250289,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -245861,10 +250356,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DWS003.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_DWS003.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DWS003.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_DWS003.html" }, { "field": "Exposed fields", @@ -246309,8 +250809,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HALIGHTDIMWWB22.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_HALIGHTDIMWWB22.html" }, { "field": "Exposed fields", @@ -247780,7 +252280,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -247827,6 +252327,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -247890,10 +252394,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MOT003.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_MOT003.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MOT003.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_MOT003.html" }, { "field": "Exposed fields", @@ -248083,7 +252592,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ + Tasmota" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz + Tasmota + deCONZ" }, "facts": [ { @@ -248131,12 +252640,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -248194,7 +252707,7 @@ "url": "https://zigbee.blakadder.com/Hive_SIREN001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hive_SIREN001.html" }, @@ -248203,6 +252716,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Hive_SIREN001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SIREN001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -248520,7 +253038,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -248570,6 +253088,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -248632,8 +253154,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SLR1b.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLR1b.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLR1b.html" }, { "field": "Exposed fields", @@ -248791,8 +253318,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SLR1c.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLR1c.html" }, { "field": "Exposed fields", @@ -248984,7 +253511,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -249031,6 +253558,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -249094,10 +253625,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SLR2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLR2.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SLR2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLR2.html" }, { "field": "Exposed fields", @@ -249588,7 +254124,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -249634,6 +254170,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -249694,6 +254234,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SLT2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLT2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -249842,8 +254387,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SLT3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_SLT3.html" }, { "field": "Exposed fields", @@ -250586,7 +255131,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -250636,6 +255181,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -250698,8 +255247,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/UK7004240.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_UK7004240.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hive_UK7004240.html" }, { "field": "Exposed fields", @@ -258920,7 +263474,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -258966,6 +263520,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -259026,6 +263584,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/10011722.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hornbach_10011722.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -259367,7 +263930,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -259414,6 +263977,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -259477,10 +264044,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/10011725.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hornbach_10011725.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/10011725.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hornbach_10011725.html" }, { "field": "Exposed fields", @@ -259943,8 +264515,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/10297667.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hornbach_10297667.html" }, { "field": "Exposed fields", @@ -262319,7 +266891,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -262365,6 +266937,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -262425,6 +267001,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S900W-ZG.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HZC_Electronics_S900W.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -262880,7 +267461,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -262928,7 +267509,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -262987,7 +267568,7 @@ "url": "https://zigbee.blakadder.com/iCasa_ICZB-B1FC60.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/iCasa_ICZB-B1FC60.html" }, @@ -263167,7 +267748,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -263215,7 +267796,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -263274,7 +267855,7 @@ "url": "https://zigbee.blakadder.com/iCasa_ICZB-B2FC125.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/iCasa_ICZB-B2FC125.html" }, @@ -263308,7 +267889,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -263356,7 +267937,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -263415,7 +267996,7 @@ "url": "https://zigbee.blakadder.com/iCasa_ICZB-B2FC95.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/iCasa_ICZB-B2FC95.html" }, @@ -263449,7 +268030,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -263497,7 +268078,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -263556,7 +268137,7 @@ "url": "https://zigbee.blakadder.com/iCasa_ICZB-B3FC64.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/iCasa_ICZB-B3FC64.html" }, @@ -263736,7 +268317,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -263786,6 +268367,22 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -263848,8 +268445,28 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICZB-IW11D.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11D.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11D.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11D.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11D.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11D.html" }, { "field": "Exposed fields", @@ -263891,7 +268508,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -263938,6 +268555,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -264001,10 +268622,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICZB-IW11SW.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11SW.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICZB-IW11SW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-IW11SW.html" }, { "field": "Exposed fields", @@ -264193,7 +268819,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -264239,6 +268865,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -264299,6 +268929,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICZB-KPD12.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD12S.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -264337,7 +268972,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -264383,6 +269018,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -264443,6 +269086,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICZB-KPD14S.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD14S.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD14S.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -264483,7 +269136,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" }, "facts": [ { @@ -264533,6 +269186,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -264595,8 +269256,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICZB-KPD18S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD18S.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD18S.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-KPD18S.html" }, { "field": "Exposed fields", @@ -264638,7 +269309,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -264685,6 +269356,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -264748,10 +269423,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICZB-R11D.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-R11D.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICZB-R11D.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-R11D.html" }, { "field": "Exposed fields", @@ -264940,7 +269620,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -264986,6 +269666,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -265046,6 +269730,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICZB-RM11S.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iCasa_ICZB-RM11S.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -265271,7 +269960,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -265317,6 +270006,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -265373,6 +270066,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/idinio_0140300.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/idinio_0140300.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -265847,7 +270545,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -265893,6 +270591,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -265953,6 +270659,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LH-32ZB.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iHORN_LH-32ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iHORN_LH-32ZB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -268613,7 +273329,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -268659,6 +273375,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -268728,6 +273448,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZC-W1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZC-W1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -269059,7 +273784,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -269103,13 +273828,17 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ioBroker", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -269165,7 +273894,7 @@ "url": "https://zigbee.blakadder.com/Ikea_E1525.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1525.html" }, @@ -269174,6 +273903,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1525.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1525.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -269354,7 +274088,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker" }, "facts": [ { @@ -269401,9 +274135,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -269464,10 +274210,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E160x_E170x_E190x.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1603.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1603.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E160x_E170x_E190x.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1603.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1603.html" }, { "field": "Exposed fields", @@ -270223,7 +274984,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + ioBroker + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -270270,9 +275031,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -270333,10 +275110,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1743.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1743.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1743.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1743.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1743.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1743.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1743.html" }, { "field": "Exposed fields", @@ -270378,7 +275175,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker + Tasmota" }, "facts": [ { @@ -270428,6 +275225,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -270490,8 +275299,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1744.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1744.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1744.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1744.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1744.html" }, { "field": "Exposed fields", @@ -270532,7 +275356,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -270576,13 +275400,17 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ioBroker", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -270642,7 +275470,7 @@ "url": "https://zigbee.blakadder.com/Ikea_E1745.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1745.html" }, @@ -270651,6 +275479,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1745.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1745.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -270691,7 +275524,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -270741,6 +275574,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -270803,8 +275648,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1746.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1746.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1746.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1746.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1746.html" }, { "field": "Exposed fields", @@ -270842,7 +275702,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -270889,9 +275749,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -270952,10 +275824,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1757.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1757.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1757.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1757.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1757.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1757.html" }, { "field": "Exposed fields", @@ -271000,7 +275887,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -271047,6 +275934,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -271110,10 +276009,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1766.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1766.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1766.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1766.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1766.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1766.html" }, { "field": "Exposed fields", @@ -271155,7 +276069,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -271199,13 +276113,17 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ZHA", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -271261,7 +276179,7 @@ "url": "https://zigbee.blakadder.com/Ikea_E1810.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1810.html" }, @@ -271270,6 +276188,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E1810.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1810.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -271305,7 +276228,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -271352,9 +276275,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -271415,10 +276346,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1812.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1812.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1812.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1812.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1812.html" }, { "field": "Exposed fields", @@ -271459,7 +276400,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -271506,6 +276447,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -271569,10 +276514,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1836.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1836.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1836.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1836.html" }, { "field": "Exposed fields", @@ -271725,8 +276675,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1841.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1841.html" }, { "field": "Exposed fields", @@ -271767,7 +276717,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -271817,6 +276767,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -271879,8 +276833,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1842.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1842.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1842.html" }, { "field": "Exposed fields", @@ -272065,7 +277024,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -272112,6 +277071,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -272175,10 +277146,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1926.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1926.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1926.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1926.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1926.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E1926.html" }, { "field": "Exposed fields", @@ -272223,7 +277209,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA" + "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -272277,6 +277263,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -272343,6 +277333,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_E2001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -272515,7 +277510,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -272565,6 +277560,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -272627,8 +277626,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2006.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2006.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2006.html" }, { "field": "Exposed fields", @@ -272682,7 +277686,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -272732,6 +277736,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -272794,8 +277806,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2007.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2007.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2007.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2007.html" }, { "field": "Exposed fields", @@ -273105,8 +278127,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2102.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2102.html" }, { "field": "Exposed fields", @@ -273146,7 +278168,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -273193,6 +278215,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -273256,10 +278282,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E2103.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2103.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2103.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2103.html" }, { "field": "Exposed fields", @@ -273299,7 +278330,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -273346,9 +278377,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -273409,10 +278452,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E2112.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2112.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2112.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2112.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2112.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2112.html" }, { "field": "Exposed fields", @@ -273451,7 +278509,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -273501,6 +278559,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -273563,8 +278625,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2123.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2123.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2123.html" }, { "field": "Exposed fields", @@ -273744,7 +278811,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -273794,6 +278861,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -273856,8 +278927,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2201.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2201.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_E2201.html" }, { "field": "Exposed fields", @@ -276313,7 +281389,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -276357,13 +281433,17 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ioBroker", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -276419,7 +281499,7 @@ "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10EU-IL-1.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10EU-IL-1.html" }, @@ -276428,6 +281508,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10EU-IL-1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10EU-IL-1.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -276614,7 +281699,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -276668,6 +281753,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -276734,6 +281823,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10NA-IL-1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-10NA-IL-1.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -276878,8 +281972,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICPSHC24-30-IL44-1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICPSHC24-30-IL44-1.html" }, { "field": "Exposed fields", @@ -277074,7 +282168,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -277121,9 +282215,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -277184,10 +282290,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ICTC-G-1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICTC-G-1.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICTC-G-1.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ICTC-G-1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICTC-G-1.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_ICTC-G-1.html" }, { "field": "Exposed fields", @@ -277705,7 +282826,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -277752,6 +282873,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -277815,10 +282940,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/L1527.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1527.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L1527.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1527.html" }, { "field": "Exposed fields", @@ -277868,7 +282998,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -277915,6 +283045,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -277978,10 +283120,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/L1528.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1528.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1528.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1528.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L1528.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1528.html" }, { "field": "Exposed fields", @@ -278031,7 +283188,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -278078,6 +283235,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -278141,10 +283302,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/L1529.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1529.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L1529.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1529.html" }, { "field": "Exposed fields", @@ -278306,8 +283472,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L1530.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1530.html" }, { "field": "Exposed fields", @@ -278357,7 +283523,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -278404,6 +283570,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -278467,10 +283637,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/L1531.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1531.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L1531.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_L1531.html" }, { "field": "Exposed fields", @@ -279440,7 +284615,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -279488,12 +284663,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -279551,7 +284730,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1536G5-E12.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1536G5-E12.html" }, @@ -279560,6 +284739,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1536G5-E12.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1536G5-E12.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -279591,7 +284775,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -279639,12 +284823,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -279702,7 +284890,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1537R6.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1537R6.html" }, @@ -279711,6 +284899,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1537R6.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1537R6.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -279892,7 +285085,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + ZHA" }, "facts": [ { @@ -279939,6 +285132,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -280002,10 +285203,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1545G12.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1545G12.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1545G12.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1545G12.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1545G12.html" }, { "field": "Exposed fields", @@ -280057,7 +285268,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + ZHA" }, "facts": [ { @@ -280104,6 +285315,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -280167,10 +285386,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1546G12.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1546G12.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1546G12.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1546G12.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1546G12.html" }, { "field": "Exposed fields", @@ -280222,7 +285451,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -280269,6 +285498,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -280332,10 +285573,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1622G12.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1622G12.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1622G12.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1622G12.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1622G12.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1622G12.html" }, { "field": "Exposed fields", @@ -280382,7 +285638,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -280429,6 +285685,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -280492,10 +285760,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1623G12.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1623G12.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1623G12.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1623G12.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1623G12.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1623G12.html" }, { "field": "Exposed fields", @@ -280700,7 +285983,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ZHA + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -280752,7 +286035,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -280816,7 +286099,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1624G9-E12.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1624G9-E12.html" }, @@ -281003,7 +286286,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -281054,6 +286337,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -281118,6 +286405,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1649C5-E12.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1649C5-E12.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -281154,7 +286446,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -281201,9 +286493,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -281264,10 +286564,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1650R5.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1650R5.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1650R5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1650R5.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1650R5.html" }, { "field": "Exposed fields", @@ -281465,7 +286775,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + ioBroker" + "value": "Zigbee2MQTT + Tasmota + ZHA + Zigbee4Domoticz + deCONZ + ioBroker" }, "facts": [ { @@ -281516,6 +286826,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -281584,6 +286898,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1732G11-E26.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1732G11-E26.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -281625,7 +286944,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -281672,9 +286991,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -281735,10 +287062,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1733G7.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1733G7.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1733G7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1733G7.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1733G7.html" }, { "field": "Exposed fields", @@ -282194,8 +287531,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1738G7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1738G7.html" }, { "field": "Exposed fields", @@ -282246,7 +287583,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -282294,12 +287631,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -282357,7 +287698,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1739R5.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1739R5.html" }, @@ -282366,6 +287707,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1739R5.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1739R5.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -282396,7 +287742,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -282443,6 +287789,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -282506,10 +287864,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1835C6.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1835C6.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1835C6.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1835C6.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1835C6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1835C6.html" }, { "field": "Exposed fields", @@ -282860,7 +288233,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -282910,6 +288283,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -282972,8 +288349,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1837R5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1837R5.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1837R5.html" }, { "field": "Exposed fields", @@ -283019,7 +288401,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -283066,6 +288448,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -283129,10 +288515,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1842G3.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1842G3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1842G3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1842G3.html" }, { "field": "Exposed fields", @@ -283179,7 +288570,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -283227,7 +288618,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -283290,7 +288681,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1903C5.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1903C5.html" }, @@ -283330,7 +288721,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -283380,6 +288771,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -283442,8 +288837,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1923R5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1923R5.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1923R5.html" }, { "field": "Exposed fields", @@ -283497,7 +288897,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -283547,6 +288947,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -283609,8 +289013,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1924G9.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1924G9.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1924G9.html" }, { "field": "Exposed fields", @@ -283778,8 +289187,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1925G6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1925G6.html" }, { "field": "Exposed fields", @@ -283983,7 +289392,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -284033,6 +289442,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -284094,6 +289507,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1934G3.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1934G3.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -284124,7 +289542,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -284174,6 +289592,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -284236,8 +289662,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1935C3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1935C3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1935C3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1935C3.html" }, { "field": "Exposed fields", @@ -284397,8 +289833,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1936G5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1936G5.html" }, { "field": "Exposed fields", @@ -284607,7 +290043,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -284655,7 +290091,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -284714,7 +290150,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED1937T5.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED1937T5.html" }, @@ -284752,7 +290188,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -284799,9 +290235,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -284862,10 +290306,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED1949C5.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1949C5.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED1949C5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1949C5.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED1949C5.html" }, { "field": "Exposed fields", @@ -284917,7 +290371,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -284964,6 +290418,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -285027,10 +290485,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LED2002G5.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2002G5.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED2002G5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2002G5.html" }, { "field": "Exposed fields", @@ -285082,7 +290545,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + SONOFF iHost + Zigbee4Domoticz" }, "facts": [ { @@ -285132,6 +290595,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -285194,8 +290669,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED2003G10.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2003G10.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2003G10.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2003G10.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2003G10.html" }, { "field": "Exposed fields", @@ -285402,7 +290892,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + SONOFF iHost + deCONZ" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost + Zigbee4Domoticz" }, "facts": [ { @@ -285454,7 +290944,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -285518,7 +291008,7 @@ "url": "https://zigbee.blakadder.com/Ikea_LED2005R5.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ikea_LED2005R5.html" }, @@ -286460,7 +291950,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -286510,6 +292000,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -286572,8 +292066,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LED2102G3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2102G3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_LED2102G3.html" }, { "field": "Exposed fields", @@ -290564,7 +296063,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -290611,6 +296110,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -290674,10 +296181,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T1820.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1820.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1820.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T1820.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1820.html" }, { "field": "Exposed fields", @@ -290727,7 +296244,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -290774,6 +296291,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -290837,10 +296362,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T1828.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1828.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1828.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T1828.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1828.html" }, { "field": "Exposed fields", @@ -290890,7 +296425,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -290937,6 +296472,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -291000,10 +296543,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T1829.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1829.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1829.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T1829.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T1829.html" }, { "field": "Exposed fields", @@ -291165,8 +296718,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T2011.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T2011.html" }, { "field": "Exposed fields", @@ -291364,7 +296917,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -291414,6 +296967,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -291476,8 +297033,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T2035.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T2035.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T2035.html" }, { "field": "Exposed fields", @@ -291635,8 +297197,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/T2037.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ikea_T2037.html" }, { "field": "Exposed fields", @@ -292494,8 +298056,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/511.000.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.000.html" }, { "field": "Exposed fields", @@ -292691,7 +298253,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -292737,6 +298299,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -292797,6 +298363,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.012.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.012.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -292983,7 +298554,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -293029,6 +298600,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -293098,6 +298673,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.040.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.040.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -293454,7 +299034,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ioBroker + ZHA" }, "facts": [ { @@ -293501,6 +299081,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -293564,10 +299156,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.201.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.201.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.201.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.201.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/511.201.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.201.html" }, { "field": "Exposed fields", @@ -293609,7 +299216,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -293656,6 +299263,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -293719,10 +299334,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.202.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.202.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.202.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/511.202.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.202.html" }, { "field": "Exposed fields", @@ -293907,7 +299532,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -293953,6 +299578,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -294013,6 +299642,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZG2819S-RGBW.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.344.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -294052,7 +299686,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -294098,6 +299732,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -294158,6 +299796,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.524.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.524.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -294194,7 +299837,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -294240,6 +299883,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -294300,6 +299947,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/511.541.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_511.541.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -295054,7 +300706,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -295100,6 +300752,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -295160,6 +300816,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5112.80.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_5111.80.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -295492,7 +301153,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -295538,6 +301199,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -295598,6 +301263,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5120.1200.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_5120.1200.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -296354,7 +302024,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -296404,6 +302074,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -296466,8 +302140,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/5128.10.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_5128.10.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iluminize_5128.10.html" }, { "field": "Exposed fields", @@ -297962,7 +303641,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -298008,6 +303687,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -298068,6 +303751,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07001L_07005B.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07002L.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -298635,8 +304323,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/07008L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07008L.html" }, { "field": "Exposed fields", @@ -298977,7 +304665,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -299024,6 +304712,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -299087,10 +304779,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07045L.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07045L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/07045L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07045L.html" }, { "field": "Exposed fields", @@ -299131,7 +304828,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -299177,6 +304874,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -299237,6 +304938,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07046L.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07046L.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -299273,7 +304979,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -299319,6 +305025,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -299379,6 +305089,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07047L.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07047L.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -299416,7 +305131,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -299463,6 +305178,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -299526,10 +305249,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07048L.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07048L.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07048L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/07048L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07048L.html" }, { "field": "Exposed fields", @@ -300450,7 +306183,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -300496,6 +306229,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -300556,6 +306293,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/07504L.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07504L.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -301681,8 +307423,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/07732L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07732L.html" }, { "field": "Exposed fields", @@ -301862,8 +307604,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/07743L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Immax_07743L.html" }, { "field": "Exposed fields", @@ -303628,8 +309370,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AE_260.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_AE_260.html" }, { "field": "Exposed fields", @@ -305552,8 +311294,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BE_220.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_BE_220.html" }, { "field": "Exposed fields", @@ -306186,7 +311928,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -306232,6 +311974,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -306292,6 +312038,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BY_185_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_BY_185_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -306342,7 +312093,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -306382,7 +312133,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -306431,7 +312182,7 @@ "url": "https://zigbee.blakadder.com/Innr_BY_265.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Innr_BY_265.html" }, @@ -306608,7 +312359,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -306654,6 +312405,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -306714,6 +312469,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BY_285_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_BY_285_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -307316,8 +313076,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FL_120_C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_FL_120_C.html" }, { "field": "Exposed fields", @@ -307675,7 +313435,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker" }, "facts": [ { @@ -307725,6 +313485,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -307787,8 +313551,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FL_140_C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_FL_140_C.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_FL_140_C.html" }, { "field": "Exposed fields", @@ -308757,7 +314526,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -308803,6 +314572,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -308863,6 +314636,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/OFL_142_C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_OFL_142_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -309362,7 +315140,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -309408,6 +315186,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -309468,6 +315254,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/OSL_130_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_OSL_130_C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_OSL_130_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -310262,7 +316058,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -310308,6 +316104,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -310368,6 +316172,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PL_110.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_PL_110.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_PL_110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -310408,7 +316222,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -310454,6 +316268,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -310514,6 +316336,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PL_115.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_PL_115.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_PL_115.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -310700,7 +316532,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -310746,6 +316578,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -310806,6 +316642,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_148_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_148_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -310996,7 +316837,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -311042,6 +316883,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -311102,6 +316947,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_165.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_165.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -311434,7 +317284,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -311480,6 +317330,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -311540,6 +317398,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_178_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_178_T.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_178_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -311583,7 +317451,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -311629,6 +317497,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -311689,6 +317565,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_185_C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_185_C.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_185_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -311883,7 +317769,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -311929,6 +317815,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -311989,6 +317887,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_245.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_245.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_245.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_245.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -312321,7 +318234,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -312367,6 +318280,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -312427,6 +318352,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_248_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_248_T.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_248_T.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_248_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -312619,7 +318559,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -312665,6 +318605,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -312725,6 +318677,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_250_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_250_C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_250_C.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_250_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -312887,8 +318854,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RB_251_C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_251_C.html" }, { "field": "Exposed fields", @@ -313540,7 +319507,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -313590,6 +319557,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -313652,8 +319627,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RB_265.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_265.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_265.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_265.html" }, { "field": "Exposed fields", @@ -314129,7 +320114,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -314179,6 +320164,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -314241,8 +320234,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RB_278_T.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_278_T.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_278_T.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_278_T.html" }, { "field": "Exposed fields", @@ -314584,7 +320587,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -314631,9 +320634,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -314694,10 +320713,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RB_285_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_285_C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_285_C.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_285_C.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RB_285_C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_285_C.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_285_C.html" }, { "field": "Exposed fields", @@ -314749,7 +320788,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -314799,6 +320838,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -314861,8 +320904,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RB_286_C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_286_C.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RB_286_C.html" }, { "field": "Exposed fields", @@ -315066,7 +321114,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -315112,6 +321160,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -315172,6 +321228,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RC_110.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RC_110.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RC_110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -315349,7 +321415,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -315395,6 +321461,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -315455,6 +321525,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RC_250.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RC_250.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -315492,7 +321567,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -315538,6 +321613,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -315598,6 +321681,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RCL_110.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RCL_110.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RCL_110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -316383,7 +322476,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -316429,6 +322522,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -316489,6 +322590,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RF_261.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_261.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_261.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -316673,7 +322784,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -316719,6 +322830,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -316779,6 +322902,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RF_263.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_263.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_263.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_263.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -316819,7 +322957,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -316865,6 +323003,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -316925,6 +323071,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RF_264.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_264.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RF_264.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -317841,7 +323997,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker" }, "facts": [ { @@ -317891,6 +324047,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -317953,8 +324113,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RS_128_T.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_128_T.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_128_T.html" }, { "field": "Exposed fields", @@ -317999,7 +324164,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -318045,6 +324210,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318105,6 +324274,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_225.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_225.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -318145,7 +324319,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -318191,6 +324365,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318251,6 +324433,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_226.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_226.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_226.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -318291,7 +324483,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -318337,6 +324529,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318397,6 +324593,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_227_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_227_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -318440,7 +324641,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -318486,6 +324687,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318546,6 +324751,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_228_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_228_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -318592,7 +324802,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -318638,6 +324848,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318698,6 +324920,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_229_T.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_229_T.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_229_T.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_229_T.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -318744,7 +324981,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -318790,6 +325027,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -318850,6 +325099,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RS_230_C.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_230_C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_230_C.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RS_230_C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -319640,7 +325904,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -319686,6 +325950,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -319746,6 +326018,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RSL_115.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RSL_115.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_RSL_115.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -320366,7 +326648,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -320412,6 +326694,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -320472,6 +326766,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP_120.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_120.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_120.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_120.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -320514,7 +326823,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker + Tasmota + ZHA" }, "facts": [ { @@ -320561,6 +326870,22 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -320624,10 +326949,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP_220.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_220.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_220.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_220.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_220.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP_220.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_220.html" }, { "field": "Exposed fields", @@ -320667,7 +327012,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -320713,6 +327058,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -320773,6 +327126,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP_222.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_222.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_222.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -320811,7 +327174,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -320858,6 +327221,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -320921,10 +327292,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP_224.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_224.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_224.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP_224.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_224.html" }, { "field": "Exposed fields", @@ -320964,7 +327345,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -321011,6 +327392,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -321074,10 +327459,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP_234.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_234.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP_234.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_SP_234.html" }, { "field": "Exposed fields", @@ -321711,7 +328101,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -321757,6 +328147,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -321817,6 +328211,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/UC_110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Innr_UC_110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -322107,8 +328506,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/VZM31-SN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Inovelli_VZM31-SN.html" }, { "field": "Exposed fields", @@ -322395,8 +328794,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/VZM35-SN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Inovelli_VZM35-SN.html" }, { "field": "Exposed fields", @@ -322685,8 +329084,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/57004000.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Insta_57004000.html" }, { "field": "Exposed fields", @@ -322870,7 +329269,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -322920,6 +329319,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -322982,8 +329385,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/57008000.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Insta_57008000.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Insta_57008000.html" }, { "field": "Exposed fields", @@ -323455,7 +329863,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -323502,6 +329910,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -323570,10 +329986,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ID-UK21FW09.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iolloi_ID-EU20FW09.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iolloi_ID-EU20FW09.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ID-UK21FW09.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iolloi_ID-EU20FW09.html" }, { "field": "Exposed fields", @@ -323612,7 +330038,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -323658,6 +330084,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -323723,6 +330157,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ID-UK21FW09.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iolloi_ID-UK21FW09.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/iolloi_ID-UK21FW09.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -324519,7 +330963,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -324565,6 +331009,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -324650,6 +331098,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PF-PM02D-TYZ.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/IOTPerfect_PF-PM02D-TYZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -324931,8 +331384,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/27087-03.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_27087-03.html" }, { "field": "Exposed fields", @@ -325085,8 +331538,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3210-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3210-L.html" }, { "field": "Exposed fields", @@ -325275,7 +331728,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -325325,6 +331778,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -325387,8 +331844,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3320-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3320-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3320-L.html" }, { "field": "Exposed fields", @@ -325431,7 +331893,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -325481,6 +331943,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -325543,8 +332009,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3326-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3326-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3326-L.html" }, { "field": "Exposed fields", @@ -325699,8 +332170,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3450-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Iris_3450-L.html" }, { "field": "Exposed fields", @@ -328519,7 +334990,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -328559,7 +335030,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -328608,7 +335079,7 @@ "url": "https://zigbee.blakadder.com/Jiawen_JW-A04-RGBW.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Jiawen_JW-A04-RGBW.html" }, @@ -328786,7 +335257,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -328832,6 +335303,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -328892,6 +335367,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/K2RGBW01.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Jiawen_K2RGBW01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -330684,8 +337164,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RS-THP-MP-1.0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Keen_Home_KHTS.html" }, { "field": "Exposed fields", @@ -330730,7 +337210,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -330776,6 +337256,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -330836,6 +337320,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SV01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Keen_Home_SV01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -330896,7 +337385,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -330943,6 +337432,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -331006,10 +337499,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SV02.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Keen_Home_SV02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SV02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Keen_Home_SV02.html" }, { "field": "Exposed fields", @@ -331065,7 +337563,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -331116,6 +337614,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -331184,6 +337686,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/KlikAanKlikUit_ZCO-900.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/KlikAanKlikUit_ZCO-900.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -331365,7 +337872,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -331411,6 +337918,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -331471,6 +337982,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZCC-3500.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/KlikAanKlikUit_ZCC-3500.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -331626,8 +338142,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZCM-1800.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZCM-1800.html" }, { "field": "Exposed fields", @@ -332897,7 +339413,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -332944,9 +339460,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -333007,10 +339535,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPBS.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPBS.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPBS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPBS.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPBS.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPBS.html" }, { "field": "Exposed fields", @@ -333200,7 +339743,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -333247,9 +339790,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -333310,10 +339865,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPFT.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPFT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPFT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPFT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPFT.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPFT.html" }, { "field": "Exposed fields", @@ -333357,7 +339927,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -333404,6 +339974,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -333467,10 +340045,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPKEY.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPKEY.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPKEY.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/2AJZ4KPKEY.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPKEY.html" }, { "field": "Exposed fields", @@ -334936,7 +341524,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -334987,6 +341575,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -335051,6 +341643,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Konke_KPDR.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Konke_KPDR.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -335376,7 +341973,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -335422,6 +342019,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -335482,6 +342091,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/KS-SM001.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ksentry_KS-SM001.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ksentry_KS-SM001.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ksentry_KS-SM001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -336228,7 +342852,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -336274,6 +342898,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -336334,6 +342962,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/99100-006.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Kwikset_910.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -336677,7 +343310,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -336724,6 +343357,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -336787,10 +343424,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/99140-002.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Kwikset_914.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/99140-002.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Kwikset_914.html" }, { "field": "Exposed fields", @@ -337137,7 +343779,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -337177,7 +343819,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -337226,7 +343868,7 @@ "url": "https://zigbee.blakadder.com/L_S_7061288.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/L_S_7061288.html" }, @@ -338576,7 +345218,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -338623,6 +345265,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -338803,10 +345449,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Larkkey_ZSTY-SM-1DMZG-EU.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Larkkey_ZSTY-SM-1DMZG-EU.html" }, { "field": "Exposed fields", @@ -338840,7 +345491,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -338887,6 +345538,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -339231,10 +345886,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Larkkey_ZSTY-SM-1SRZG-EU.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Larkkey_ZSTY-SM-1SRZG-EU.html" }, { "field": "Exposed fields", @@ -339284,7 +345944,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + ZHA" + "value": "deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -339327,6 +345987,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -339381,6 +346045,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lasco_lightswitch_1gang.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lasco_lightswitch_1gang.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -340863,7 +347532,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -340910,6 +347579,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -340973,10 +347646,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HK-LN-DIM-A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LED_Trading_9106.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HK-LN-DIM-A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LED_Trading_9106.html" }, { "field": "Exposed fields", @@ -341779,7 +348457,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -341827,7 +348505,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -341890,7 +348568,7 @@ "url": "https://zigbee.blakadder.com/Ledvance_4058075208421.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ledvance_4058075208421.html" }, @@ -342337,7 +349015,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -342383,6 +349061,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -342443,6 +349125,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075168572.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075168572.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -342631,7 +349318,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -342677,6 +349364,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -342737,6 +349428,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075181472.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075181472.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -342778,7 +349474,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" }, "facts": [ { @@ -342828,6 +349524,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -342890,8 +349594,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075208339.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208339.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208339.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208339.html" }, { "field": "Exposed fields", @@ -342941,7 +349655,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -342987,6 +349701,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -343047,6 +349765,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075208353.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208353.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -343095,7 +349818,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -343145,6 +349868,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -343207,8 +349934,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075208360.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208360.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208360.html" }, { "field": "Exposed fields", @@ -343258,7 +349990,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -343304,6 +350036,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -343364,6 +350100,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075208384.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208384.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -343517,8 +350258,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075208391.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208391.html" }, { "field": "Exposed fields", @@ -343568,7 +350309,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -343614,6 +350355,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -343674,6 +350419,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075208414.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208414.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -344579,7 +351329,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -344626,6 +351376,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -344689,10 +351447,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075729001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075729001.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075729001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075729001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075729001.html" }, { "field": "Exposed fields", @@ -347041,8 +353809,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075729322.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075729322.html" }, { "field": "Exposed fields", @@ -348555,7 +355323,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA" }, "facts": [ { @@ -348602,6 +355370,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -348665,10 +355445,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AB3257001NJ.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AB3257001NJ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" }, { "field": "Exposed fields", @@ -348848,7 +355643,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -348894,6 +355689,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -348954,6 +355753,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC08560.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC08560.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -349397,8 +356201,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AC25697.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208391.html" }, { "field": "Exposed fields", @@ -349736,7 +356540,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -349782,6 +356586,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -349842,6 +356650,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC26940_AC31266.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075209985.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -349879,7 +356692,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -349925,6 +356738,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -349985,6 +356802,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC33901.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208414.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -351055,7 +357877,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -351105,6 +357927,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -351167,8 +357993,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/6ARCZABZH.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoSmart_6ARCZABZH.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/EcoSmart_6ARCZABZH.html" }, { "field": "Exposed fields", @@ -353066,8 +359897,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM350STW1TCF.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Leedarson_ZM350STW1TCF.html" }, { "field": "Exposed fields", @@ -353240,7 +360071,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -353286,6 +360117,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -353346,6 +360181,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/064873.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064873.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -353383,7 +360223,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -353425,6 +360265,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -353476,6 +360320,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_064875.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064875.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -353505,7 +360354,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "deCONZ + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -353551,6 +360400,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -353607,6 +360460,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_064879.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064879.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -353782,7 +360640,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -353828,6 +360686,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -353888,6 +360758,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/064888.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064888.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064888.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_064888.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -354067,7 +360952,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -354113,6 +360998,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -354173,6 +361066,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/067694.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067694.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067694.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -354210,7 +361113,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -354253,6 +361156,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -354311,6 +361218,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_067721.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067721.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -354350,7 +361262,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -354393,6 +361305,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -354451,6 +361367,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_067725.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067725.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -354491,7 +361412,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -354538,6 +361459,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -354597,6 +361522,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_067726.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067726.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -354776,7 +361706,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "deCONZ + Zigbee4Domoticz + Zigbee2MQTT" }, "facts": [ { @@ -354819,6 +361749,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Zigbee2MQTT", "value": "Support record available" @@ -354873,6 +361807,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_067646.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067646.html" + }, { "field": "Zigbee2MQTT", "source": "Blakadder Zigbee record", @@ -355194,7 +362133,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -355241,6 +362180,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -355304,10 +362251,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/067771.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067771.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067771.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/067771.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067771.html" }, { "field": "Exposed fields", @@ -355501,7 +362458,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -355548,6 +362505,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -355611,10 +362576,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/067773.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067773.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067773.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/067773.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067773.html" }, { "field": "Exposed fields", @@ -355653,7 +362628,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -355699,6 +362674,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -355759,6 +362738,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/067774.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067774.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -355796,7 +362780,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -355839,6 +362823,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -355897,6 +362885,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_067775.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067775.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -356085,7 +363078,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -356131,6 +363124,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -356191,6 +363192,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/067776.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067776.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_067776.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -357221,7 +364232,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -357267,6 +364278,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -357327,6 +364342,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/412015.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_412015.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -357370,7 +364390,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -357416,6 +364436,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -357476,6 +364500,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/412170.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_412170.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -357517,7 +364546,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -357563,6 +364592,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -357623,6 +364660,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/412171.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_412171.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_412171.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -358403,7 +365450,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -358446,6 +365493,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -358504,6 +365555,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Legrand_600391.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_600391.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -358544,7 +365600,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -358590,6 +365646,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -358650,6 +365714,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/752189.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_752x89.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Legrand_752x89.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -360155,8 +367229,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CM001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_CM001.html" }, { "field": "Exposed fields", @@ -361146,8 +368220,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WK34-EU.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_WK34.html" }, { "field": "Exposed fields", @@ -361312,8 +368386,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WP30-EU.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_WP30.html" }, { "field": "Exposed fields", @@ -361355,7 +368429,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -361405,6 +368479,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -361467,8 +368545,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E220-KR4N0Z0-HA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_WP33.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_WP33.html" }, { "field": "Exposed fields", @@ -361923,8 +369006,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/XF-EU-S100-1-M.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LELLKI_XF-EU-S100-1.html" }, { "field": "Exposed fields", @@ -361967,7 +369050,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -362015,7 +369098,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -362025,6 +369108,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -362082,7 +369169,7 @@ "url": "https://zigbee.blakadder.com/Lerlink_A2-ZH20.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_A2-ZH20.html" }, @@ -362096,6 +369183,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_A2-ZH20.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_A2-ZH20.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -362278,7 +369370,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -362326,7 +369418,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -362393,7 +369485,7 @@ "url": "https://zigbee.blakadder.com/Lerlink_X701A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_X701A.html" }, @@ -362437,7 +369529,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -362485,7 +369577,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -362552,7 +369644,7 @@ "url": "https://zigbee.blakadder.com/Lerlink_X702A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_X702A.html" }, @@ -362851,7 +369943,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -362898,6 +369990,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -362961,6 +370057,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_X711A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X711A.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -363000,7 +370101,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -363047,6 +370148,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -363110,6 +370215,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_X712A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X712A.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -363149,7 +370259,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -363196,6 +370306,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -363259,6 +370373,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_X713A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X713A.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -363601,7 +370720,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -363649,7 +370768,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -363659,6 +370778,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -363716,7 +370839,7 @@ "url": "https://zigbee.blakadder.com/Lerlink_ZBWS03.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_ZBWS03.html" }, @@ -363730,6 +370853,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lerlink_ZBWS03.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_ZBWS03.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -364454,8 +371582,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DG3HL-1BW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Leviton_DG3HL-1BW.html" }, { "field": "Exposed fields", @@ -365769,7 +372897,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -365816,9 +372944,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -365879,10 +373015,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/14147206L.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14147206L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14147206L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14147206L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14147206L.html" }, { "field": "Exposed fields", @@ -365926,7 +373072,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -365976,6 +373122,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -366038,8 +373188,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14148906L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14148906L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14148906L.html" }, { "field": "Exposed fields", @@ -366788,8 +373943,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0505B_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14153706L.html" }, { "field": "Exposed fields", @@ -366989,7 +374144,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -367039,6 +374194,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -367101,8 +374260,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14153905L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14153905L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14153905L.html" }, { "field": "Exposed fields", @@ -367263,8 +374427,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14156408L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14156408L.html" }, { "field": "Exposed fields", @@ -367417,8 +374581,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14156506L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_14156506L.html" }, { "field": "Exposed fields", @@ -368543,8 +375707,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FB21-001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_FB21-001.html" }, { "field": "Exposed fields", @@ -368580,7 +375744,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker" }, "facts": [ { @@ -368627,9 +375791,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -368690,10 +375866,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06104A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06104A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06104A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06104A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06104A.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06104A.html" }, { "field": "Exposed fields", @@ -368742,7 +375933,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + ioBroker" }, "facts": [ { @@ -368789,9 +375980,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -368852,10 +376055,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06106A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06106A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106A.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106A.html" }, { "field": "Exposed fields", @@ -368904,7 +376122,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -368951,9 +376169,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -369014,10 +376244,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06106B.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06106B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106B.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106B.html" }, { "field": "Exposed fields", @@ -369066,7 +376311,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -369113,9 +376358,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -369176,10 +376433,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06106C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106C.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06106C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106C.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06106C.html" }, { "field": "Exposed fields", @@ -369378,7 +376650,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -369432,6 +376704,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -369498,6 +376774,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG06335.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06335.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -369674,7 +376955,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -369724,6 +377005,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -369795,8 +377084,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06336.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06336.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06336.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06336.html" }, { "field": "Exposed fields", @@ -369835,7 +377134,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -369882,9 +377181,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -369970,10 +377281,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06337.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06337.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337.html" }, { "field": "Exposed fields", @@ -370153,7 +377479,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -370207,6 +377533,10 @@ { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -370273,6 +377603,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG06337-DK.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337-DK.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -370303,7 +377638,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -370357,6 +377692,10 @@ { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -370423,6 +377762,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG06337-FR.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06337-FR.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -370594,7 +377938,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -370644,6 +377988,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -370731,8 +378087,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06338.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06338.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06338.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06338.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06338.html" }, { "field": "Exposed fields", @@ -371338,7 +378709,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" }, "facts": [ { @@ -371388,6 +378759,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -371455,8 +378834,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06467.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06467.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06467.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06467.html" }, { "field": "Exposed fields", @@ -372385,7 +379774,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -372432,9 +379821,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -372500,10 +379897,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06619.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06619.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06619.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06619.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06619.html" }, { "field": "Exposed fields", @@ -372541,7 +379948,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -372588,9 +379995,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -372656,10 +380071,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06620.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06620.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06620.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06620.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06620.html" }, { "field": "Exposed fields", @@ -372697,7 +380122,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -372744,6 +380169,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -372816,10 +380249,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG06668.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06668.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06668.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG06668.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG06668.html" }, { "field": "Exposed fields", @@ -372860,7 +380303,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -372900,7 +380343,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -372949,7 +380392,7 @@ "url": "https://zigbee.blakadder.com/Lidl_HG06701A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG06701A.html" }, @@ -373343,7 +380786,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -373387,7 +380830,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -373445,7 +380888,7 @@ "url": "https://zigbee.blakadder.com/Lidl_HG07310.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG07310.html" }, @@ -373485,7 +380928,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT + ZHA + ioBroker" + "value": "Zigbee4Domoticz + Zigbee2MQTT + deCONZ + ZHA + ioBroker" }, "facts": [ { @@ -373525,13 +380968,17 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -373586,7 +381033,7 @@ "url": "https://zigbee.blakadder.com/Lidl_HG07834A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG07834A.html" }, @@ -373595,6 +381042,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG07834A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834A.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -373786,7 +381238,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -373833,9 +381285,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -373896,10 +381360,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG07834B.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG07834B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834B.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834B.html" }, { "field": "Exposed fields", @@ -374097,7 +381576,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker" + "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -374151,6 +381630,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -374217,6 +381700,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG07834C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG07834C.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -374938,8 +382426,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HG08010.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08010.html" }, { "field": "Exposed fields", @@ -375104,7 +382592,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -375150,6 +382638,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -375210,6 +382702,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG08131C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08131C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -375253,7 +382750,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -375299,6 +382796,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -375364,6 +382865,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HG08164.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08164.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -376312,7 +383818,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT + ZHA" + "value": "deCONZ + Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -376362,6 +383868,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -376423,6 +383933,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lidl_HG08673-FR.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08673-FR.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -376596,7 +384111,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -376646,6 +384161,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -376713,8 +384236,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/PSBZS_A1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08675.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08675.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lidl_HG08675.html" }, { "field": "Exposed fields", @@ -376907,7 +384440,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -376953,6 +384486,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377013,6 +384550,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-02.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-02.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -377060,7 +384602,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -377106,6 +384648,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377166,6 +384716,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-03.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-03.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-03.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -377208,7 +384768,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -377254,6 +384814,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377314,6 +384878,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-04.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-04.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -377354,7 +384923,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -377400,6 +384969,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377460,6 +385033,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-05.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-05.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -377500,7 +385078,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -377546,6 +385124,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377606,6 +385188,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-07.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-07.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -377646,7 +385233,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -377692,6 +385279,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -377752,6 +385351,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCLH-08.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-08.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-08.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LifeControl_MCLH-08.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -383473,7 +391087,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -383523,6 +391137,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -383585,8 +391203,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LS21001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_LS21001.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_LS21001.html" }, { "field": "Exposed fields", @@ -383629,7 +391252,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -383679,6 +391302,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -383741,8 +391368,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZL00030014.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL00030014.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL00030014.html" }, { "field": "Exposed fields", @@ -383787,7 +391419,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -383833,6 +391465,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -383893,6 +391529,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZL1000100-CCT-US-V1A02.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL1000100-CCT-US-V1A02.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -384194,8 +391835,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZL1000400-CCT-EU-2-V1A02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL1000400-CCT-EU-V1A02.html" }, { "field": "Exposed fields", @@ -384532,7 +392173,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -384578,6 +392219,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -384638,6 +392283,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZL1000701-27-EU-V1A02.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL1000701-27-EU-V1A02.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -384678,7 +392328,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -384724,6 +392374,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -384784,6 +392438,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZL13100314.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZL13100314.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -384936,8 +392595,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZS1100400-IN-V1A02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS1100400-IN-V1A02.html" }, { "field": "Exposed fields", @@ -384979,7 +392638,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -385026,9 +392685,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -385089,10 +392756,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZS110050078.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS110050078.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZS110050078.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS110050078.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS110050078.html" }, { "field": "Exposed fields", @@ -385430,7 +393107,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -385476,6 +393153,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -385536,6 +393217,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZS190000118.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS190000118.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -385720,7 +393406,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota" }, "facts": [ { @@ -385766,6 +393452,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -385826,6 +393524,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZS232000178.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS232000178.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS232000178.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Linkind_ZS232000178.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -386737,7 +394450,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -386783,6 +394496,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -386843,6 +394560,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LVS-SC7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LivingWise_LVS-SC7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -387136,8 +394858,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LVS-SN10ZW_SN11.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LivingWise_LVS-SN10ZW.html" }, { "field": "Exposed fields", @@ -387436,8 +395158,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LVS-ZB15S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LivingWise_LVS-ZB15S.html" }, { "field": "Exposed fields", @@ -387589,8 +395311,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LVS-ZB500D.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LivingWise_LVS-ZB500D.html" }, { "field": "Exposed fields", @@ -388631,7 +396353,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -388677,6 +396399,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -388737,6 +396463,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TI0001-socket.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Livolo_TI0001-socket.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -388774,7 +396505,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -388820,6 +396551,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -388880,6 +396615,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TI0001-switch.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Livolo_TI0001-switch.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -388917,7 +396657,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -388963,6 +396703,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -389023,6 +396767,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TI0001-switch-2gang.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Livolo_TI0001-switch-2gang.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -389362,7 +397111,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -389402,7 +397151,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -389451,7 +397200,7 @@ "url": "https://zigbee.blakadder.com/Lixee_ZigLight.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lixee_ZigLight.html" }, @@ -389482,7 +397231,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -389532,6 +397281,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -389594,8 +397347,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZiPulses.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LiXee_ZiPulses.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LiXee_ZiPulses.html" }, { "field": "Exposed fields", @@ -389776,7 +397534,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -389826,6 +397584,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -389887,6 +397649,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/LiXee_Zlinky_TIC.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LiXee_Zlinky_TIC.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -390202,7 +397969,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -390249,6 +398016,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -390337,10 +398108,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZG-101ZL.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-101ZL.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG-101ZL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-101ZL.html" }, { "field": "Exposed fields", @@ -390644,8 +398420,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/11830304.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_TS130F.html" }, { "field": "Exposed fields", @@ -390691,7 +398467,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -390737,6 +398513,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -390797,6 +398581,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4000116784070.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Anncoe_C338-Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Anncoe_C338-Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -390835,7 +398629,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -390885,6 +398679,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -391064,8 +398866,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EDM-1ZBB-EU.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" }, { "field": "Exposed fields", @@ -391099,7 +398911,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -391146,6 +398958,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -391218,10 +399034,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-C01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-C01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-C01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-C01.html" }, { "field": "Exposed fields", @@ -391418,7 +399239,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -391465,6 +399286,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -391533,10 +399358,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-2C-L.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-2C-L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-2C-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-2C-L.html" }, { "field": "Exposed fields", @@ -391576,7 +399406,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -391623,6 +399453,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -391691,10 +399525,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-2C-LN.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-2C-LN.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-2C-LN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-2C-LN.html" }, { "field": "Exposed fields", @@ -391735,7 +399574,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -391782,6 +399621,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -391854,10 +399697,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-L.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-L.html" }, { "field": "Exposed fields", @@ -392046,7 +399894,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -392093,6 +399941,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -392161,10 +400013,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-LN.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-LN.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-D02-TRIAC-LN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-D02-TRIAC-LN.html" }, { "field": "Exposed fields", @@ -392354,7 +400211,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -392401,6 +400258,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -392473,10 +400334,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-S04-2C-LN.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S04-2C-LN.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-S04-2C-LN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S04-2C-LN.html" }, { "field": "Exposed fields", @@ -392513,7 +400379,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -392563,6 +400429,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -392630,8 +400500,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0011.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S05-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S05-L.html" }, { "field": "Exposed fields", @@ -392673,7 +400548,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -392720,6 +400595,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -392788,10 +400671,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-S05-LN.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S05-LN.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S05-LN.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QS-Zigbee-S05-LN.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_QS-Zigbee-S05-LN.html" }, { "field": "Exposed fields", @@ -392828,7 +400721,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -392870,6 +400763,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -392921,6 +400818,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lonsonho_SmartPlug.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_SmartPlug.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -392951,7 +400853,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -393001,6 +400903,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -393063,8 +400973,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" }, { "field": "Exposed fields", @@ -393531,7 +401451,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ioBroker + Tasmota + ZHA" }, "facts": [ { @@ -393578,6 +401498,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ioBroker", "value": "Support record available" @@ -393645,6 +401569,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lonsonho_TS0121.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_TS0121.html" + }, { "field": "ioBroker", "source": "Blakadder Zigbee record", @@ -394149,7 +402078,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -394196,9 +402125,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -394268,10 +402205,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/X701A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X701A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X701A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X701A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X701A.html" }, { "field": "Exposed fields", @@ -394448,7 +402395,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -394495,9 +402442,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -394599,10 +402558,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/X702A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X702A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X702A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X702A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X702A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X702A.html" }, { "field": "Exposed fields", @@ -394636,7 +402610,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + Tasmota + ZHA" }, "facts": [ { @@ -394683,6 +402657,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -394795,10 +402781,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/X703A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X703A.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X703A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X703A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X703A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lerlink_X703A.html" }, { "field": "Exposed fields", @@ -394832,7 +402833,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -394879,9 +402880,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -394951,10 +402960,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/X711A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X711A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X711A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X711A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X711A.html" }, { "field": "Exposed fields", @@ -394991,7 +403010,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -395038,6 +403057,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -395106,10 +403129,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/X712A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X712A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X712A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X712A.html" }, { "field": "Exposed fields", @@ -395290,7 +403318,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -395341,6 +403369,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -395409,6 +403441,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Lonsonho_X703A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_X703A.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -395451,7 +403488,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -395501,6 +403538,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -395584,8 +403625,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZB-RGBCW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_ZB-RGBCW.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lonsonho_ZB-RGBCW.html" }, { "field": "Exposed fields", @@ -395752,8 +403798,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GDC311ZBQ1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_GDC311ZBQ1.html" }, { "field": "Exposed fields", @@ -395791,7 +403837,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -395838,6 +403884,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -395906,10 +403960,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS011F_socket_module.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_socket_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" }, { "field": "Exposed fields", @@ -396085,7 +404149,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -396133,7 +404197,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -396192,7 +404256,7 @@ "url": "https://zigbee.blakadder.com/LoraTap_SC400ZB.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/LoraTap_SC400ZB.html" }, @@ -396339,8 +404403,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SC500ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SC500ZB.html" }, { "field": "Exposed fields", @@ -396657,7 +404721,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -396704,9 +404768,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -396767,10 +404847,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0043.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS600ZB.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS600ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0043.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS600ZB.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS600ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS600ZB.html" }, { "field": "Exposed fields", @@ -396810,7 +404910,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -396864,6 +404964,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -396930,6 +405034,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/LoraTap_SS6200ZB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS6200ZB.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -396961,7 +405070,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -397008,9 +405117,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -397071,10 +405192,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SS6400ZB.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS6400ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SS6400ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS6400ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS6400ZB.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS6400ZB.html" }, { "field": "Exposed fields", @@ -397603,8 +405739,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0046.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS9600ZB.html" }, { "field": "Exposed fields", @@ -399097,8 +407233,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/12AB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lubeez_LUBEEZ-12AB.html" }, { "field": "Exposed fields", @@ -399280,7 +407416,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -399326,6 +407462,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -399391,6 +407535,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZX-5311.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Luminea_ZX-5311.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Luminea_ZX-5311.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -400150,7 +408304,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -400200,6 +408354,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -400262,8 +408420,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LZL4BWHL01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lutron_LZL4BWHL01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lutron_LZL4BWHL01.html" }, { "field": "Exposed fields", @@ -400302,7 +408465,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -400352,6 +408515,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -400414,8 +408581,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/Z3-1BRL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lutron_Z3-1BRL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Lutron_Z3-1BRL.html" }, { "field": "Exposed fields", @@ -406541,7 +414713,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -406591,6 +414763,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -406662,8 +414838,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_din_smart_relay.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ATMS1602Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ATMS1602Z.html" }, { "field": "Exposed fields", @@ -406708,7 +414889,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -406755,6 +414936,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -406827,10 +415012,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/DAC2161C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DAC2161C.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DAC2161C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DAC2161C.html" }, { "field": "Exposed fields", @@ -407157,7 +415347,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -407203,6 +415393,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -407280,6 +415474,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PJ-ZGD01.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_PJ-ZGD01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -408548,7 +416747,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "deCONZ + Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -408594,6 +416793,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -408650,6 +416853,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Meian_SW02-ZB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Meian_SW02-ZB.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -409076,7 +417284,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -409122,6 +417330,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -409182,6 +417394,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0505B_1.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_S9E27LED9W-RGB-Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -409892,8 +418109,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMA02P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMA02P.html" }, { "field": "Exposed fields", @@ -410050,8 +418267,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0202.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMA02P.html" }, { "field": "Exposed fields", @@ -410204,8 +418421,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMA03P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMA03P.html" }, { "field": "Exposed fields", @@ -410362,8 +418579,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMA04P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMA04P.html" }, { "field": "Exposed fields", @@ -411154,7 +419371,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -411201,9 +419418,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -411269,10 +419494,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SMI7040.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMI7040.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMI7040.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMI7040.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SMI7040.html" }, { "field": "Exposed fields", @@ -412232,8 +420467,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SPP02GIP.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SPP02GIP.html" }, { "field": "Exposed fields", @@ -412542,8 +420777,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SPPUSB02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SPPUSB02.html" }, { "field": "Exposed fields", @@ -412585,7 +420820,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -412635,6 +420870,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -412702,8 +420949,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0011.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW01.html" }, { "field": "Exposed fields", @@ -412914,8 +421176,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSW02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW02.html" }, { "field": "Exposed fields", @@ -413220,7 +421482,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -413266,6 +421528,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -413326,6 +421592,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0014.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSW04.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -413788,8 +422059,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSWD01.html" }, { "field": "Exposed fields", @@ -413944,8 +422215,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSWF01G.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSWF01G.html" }, { "field": "Exposed fields", @@ -413982,7 +422253,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -414032,6 +422303,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -414211,8 +422486,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSWM-DIMZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSWM-DIMZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSWM-DIMZ.html" }, { "field": "Exposed fields", @@ -414631,8 +422911,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SSWRM-ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Mercator_SSWRM-ZB.html" }, { "field": "Exposed fields", @@ -416105,8 +424385,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FUT036Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/MiBoxer_FUT036Z.html" }, { "field": "Exposed fields", @@ -416716,8 +424996,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/FUT039Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/MiBoxer_FUT039Z.html" }, { "field": "Exposed fields", @@ -420424,7 +428704,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -420471,9 +428751,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -420543,10 +428831,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AM43-0.45_40-ES-EB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_AM43-0_45_40-ES-EB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AM43-0.45_40-ES-EB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_AM43-0_45_40-ES-EB.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_AM43-0_45_40-ES-EB.html" }, { "field": "Exposed fields", @@ -420593,7 +428891,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -420640,9 +428938,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -420740,10 +429054,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BHT-002.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_BHT-002.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_BHT-002.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_BHT-002.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BHT-002.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_BHT-002.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_BHT-002.html" }, { "field": "Exposed fields", @@ -420951,7 +429285,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -420998,9 +429332,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -421074,10 +429416,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BRT-100-TRV.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beca_BRT-100.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BRT-100-TRV.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beca_BRT-100.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beca_BRT-100.html" }, { "field": "Exposed fields", @@ -421138,7 +429490,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -421188,6 +429540,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -421367,8 +429727,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_1_gang_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_EDM-1ZBB-EU.html" }, { "field": "Exposed fields", @@ -421539,8 +429909,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ERS-10TZBVB-AA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ERS-10TZBVB-AA.html" }, { "field": "Exposed fields", @@ -421883,7 +430253,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -421930,9 +430300,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -422074,10 +430456,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" }, { "field": "Exposed fields", @@ -422675,7 +431072,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -422722,9 +431119,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -422794,10 +431203,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MS-104BZ.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104BZ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MS-104BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104BZ.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104BZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104BZ.html" }, { "field": "Exposed fields", @@ -422835,7 +431259,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -422882,6 +431306,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -422994,10 +431422,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MS-104CZ.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104CZ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MS-104CZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104CZ.html" }, { "field": "Exposed fields", @@ -423184,7 +431617,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + Zigbee2MQTT + deCONZ + ZHA" + "value": "Tasmota + Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -423232,7 +431665,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -423295,7 +431728,7 @@ "url": "https://zigbee.blakadder.com/Moes_MS-104Z-1.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_MS-104Z-1.html" }, @@ -423335,7 +431768,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -423385,6 +431818,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -423446,6 +431883,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_MS-104ZN-1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-104ZN-1.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -423635,7 +432077,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -423682,9 +432124,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -423762,10 +432212,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-105B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-105B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-105B.html" }, { "field": "Exposed fields", @@ -423808,7 +432268,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -423855,6 +432315,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -424035,10 +432499,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MS-105Z.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-105Z.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MS-105Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-105Z.html" }, { "field": "Exposed fields", @@ -424194,7 +432663,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -424244,6 +432713,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -424311,8 +432784,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MS-108ZR.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-108ZR.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_MS-108ZR.html" }, { "field": "Exposed fields", @@ -424358,7 +432836,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -424413,6 +432891,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -424482,6 +432964,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZSS-X-TH-C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-X-TH-C.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -425282,8 +433769,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SH4-ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_SH4-ZB.html" }, { "field": "Exposed fields", @@ -426548,8 +435035,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TV01-ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zonnsmart_TV01-ZG.html" }, { "field": "Exposed fields", @@ -426787,8 +435274,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TV02-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zonnsmart_TV01-ZG.html" }, { "field": "Exposed fields", @@ -426990,8 +435477,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/UFO-R11.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_UFO-R11.html" }, { "field": "Exposed fields", @@ -428229,8 +436716,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZB-TD5-RCW-GU10.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZB-TD5-RCW-GU10.html" }, { "field": "Exposed fields", @@ -429318,7 +437805,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -429364,6 +437851,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -429437,6 +437928,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZC-HM.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-HM-CO.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -431417,7 +439913,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -431467,6 +439963,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -431528,6 +440028,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZK-XX-2U.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZK-XX-2U.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -433685,8 +442190,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZP-LZ-FR2U.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZP-LZ-FR2U.html" }, { "field": "Exposed fields", @@ -433881,7 +442386,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + ZHA + Zigbee2MQTT" + "value": "Zigbee4Domoticz + ZHA + Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -433921,7 +442426,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -433931,6 +442436,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -433978,7 +442487,7 @@ "url": "https://zigbee.blakadder.com/Moes_ZS-B-EU2.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZS-B-EU2.html" }, @@ -433992,6 +442501,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZS-B-EU2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZS-B-EU2.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -434704,7 +443218,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -434752,7 +443266,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -434819,7 +443333,7 @@ "url": "https://zigbee.blakadder.com/Moes_ZS-EU1-PNW.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZS-EU1-PNW.html" }, @@ -438433,8 +446947,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZSS-QY-HP.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-QY-HP.html" }, { "field": "Exposed fields", @@ -439182,7 +447696,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -439241,6 +447755,10 @@ "label": "Tasmota", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -439315,6 +447833,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Moes_ZSS-X-PIRL-C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-X-PIRL-C.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -439488,7 +448011,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -439538,6 +448061,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -439609,8 +448144,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZSS-ZK-THL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-ZK-THL.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-ZK-THL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-ZK-THL.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZSS-ZK-THL.html" }, { "field": "Exposed fields", @@ -439935,7 +448485,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -439981,6 +448531,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -440050,6 +448604,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZT-B-EU3.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZT-B-EU3.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -440086,7 +448645,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -440133,9 +448692,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -440196,10 +448767,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZT-SR-EU4.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZT-SR-EU4.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZT-SR-EU4.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZT-SR-EU4.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZT-SR-EU4.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZT-SR-EU4.html" }, { "field": "Exposed fields", @@ -441283,8 +449869,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTRV-ZX-TV01-MS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTRV-ZX-TV01-MS.html" }, { "field": "Exposed fields", @@ -441706,7 +450292,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -441756,6 +450342,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -441827,8 +450417,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTS-EU_1gang.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTS-EU1-W.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTS-EU1-W.html" }, { "field": "Exposed fields", @@ -442132,8 +450727,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTS-EU_3gang.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTS-EU3-W.html" }, { "field": "Exposed fields", @@ -442289,8 +450884,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTS-EU_4gang.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTS-US4-W.html" }, { "field": "Exposed fields", @@ -442606,8 +451201,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTS-EUR-C.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZTS-EUR-C.html" }, { "field": "Exposed fields", @@ -443277,7 +451872,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -443324,6 +451919,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -443392,10 +451991,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/404001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/404001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404001.html" }, { "field": "Exposed fields", @@ -444331,7 +452935,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -444382,6 +452986,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -444450,6 +453058,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404011.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404011.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -444794,7 +453407,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -444841,6 +453454,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -444913,10 +453534,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/404021.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404021.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404021.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/404021.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404021.html" }, { "field": "Exposed fields", @@ -444954,7 +453585,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "Zigbee4Domoticz + Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -444994,12 +453625,16 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -445047,7 +453682,7 @@ "url": "https://zigbee.blakadder.com/Muller_Licht_404022.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404022.html" }, @@ -445056,6 +453691,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404022.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404022.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -445232,7 +453872,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -445278,6 +453918,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -445338,6 +453982,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/404023.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404023.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -445676,7 +454325,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -445720,7 +454369,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -445778,7 +454427,7 @@ "url": "https://zigbee.blakadder.com/Muller_Licht_404027.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404027.html" }, @@ -446266,7 +454915,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -446310,7 +454959,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -446368,7 +455017,7 @@ "url": "https://zigbee.blakadder.com/Muller_Licht_404036.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404036.html" }, @@ -446827,7 +455476,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT" + "value": "Zigbee4Domoticz + Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -446867,12 +455516,16 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -446920,7 +455573,7 @@ "url": "https://zigbee.blakadder.com/Muller_Licht_404049.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404049.html" }, @@ -446929,6 +455582,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Muller_Licht_404049.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404049.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -447414,7 +456072,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota" }, "facts": [ { @@ -447460,6 +456118,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -447520,6 +456190,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/404065.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404065.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404065.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_404065.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -449105,7 +457790,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -449151,6 +457836,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -449211,6 +457900,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/44435.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Muller_Licht_44435.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -451311,7 +460005,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -451357,6 +460051,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -451417,6 +460115,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MIR-WA100.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_MIR-WA100.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -452182,8 +460885,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZJSB9-80Z.html" }, { "field": "Exposed fields", @@ -455586,7 +464289,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -455633,6 +464336,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -455696,10 +464403,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512700.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512700.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4512700.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512700.html" }, { "field": "Exposed fields", @@ -455741,7 +464453,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -455787,6 +464499,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -455847,6 +464563,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512701.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512701.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -455884,7 +464605,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -455930,6 +464651,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -455990,6 +464715,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512702.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512702.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -456028,7 +464758,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -456075,6 +464805,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -456138,10 +464872,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512703.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512703.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4512703.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512703.html" }, { "field": "Exposed fields", @@ -456326,7 +465065,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -456372,6 +465111,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -456432,6 +465175,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512705.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512705.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -456469,7 +465217,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -456515,6 +465263,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -456575,6 +465327,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512706.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512706.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -456905,7 +465662,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -456951,6 +465708,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -457011,6 +465772,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512719.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512719.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -457048,7 +465814,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -457095,6 +465861,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -457158,10 +465928,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512721.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512721.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4512721.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512721.html" }, { "field": "Exposed fields", @@ -457624,7 +466399,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -457670,6 +466445,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -457730,6 +466509,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512728.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512728.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -457768,7 +466552,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -457814,6 +466598,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -457874,6 +466662,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4512729.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512729.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -458196,7 +466989,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -458242,6 +467035,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -458298,6 +467095,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Namron_4512737.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Namron_4512737.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -464982,8 +473784,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBHTR10WT.html" }, { "field": "Exposed fields", @@ -465677,7 +474479,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -465723,6 +474525,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -465816,6 +474622,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0215A_remote.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBRC10WT.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -465852,7 +474663,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -465902,6 +474713,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -465964,8 +474779,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBSC10WT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSC10WT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSC10WT.html" }, { "field": "Exposed fields", @@ -466165,7 +474985,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -466212,9 +475032,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -466280,10 +475112,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZBSM10WT.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBSM10WT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" }, { "field": "Exposed fields", @@ -466320,7 +475167,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -466367,9 +475214,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -466430,10 +475289,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RH3040.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RH3040.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSM10WT.html" }, { "field": "Exposed fields", @@ -467527,7 +476401,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -467574,9 +476448,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -467642,10 +476524,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NAS-AB02B0.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B0.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NAS-AB02B0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B0.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B0.html" }, { "field": "Exposed fields", @@ -467699,7 +476591,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -467746,9 +476638,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -467822,10 +476722,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NAS-AB02B2.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B2.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NAS-AB02B2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B2.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB02B2.html" }, { "field": "Exposed fields", @@ -467871,7 +476781,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -467917,6 +476827,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -467990,6 +476904,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NAS-AB06B2.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-AB06B2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -468147,8 +477066,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NAS-PD07.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-PD07.html" }, { "field": "Exposed fields", @@ -468813,7 +477732,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -468863,6 +477782,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -468925,8 +477852,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NAS-WR01B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-WR01B.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-WR01B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-WR01B.html" }, { "field": "Exposed fields", @@ -470652,7 +479589,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -470698,6 +479635,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -470758,6 +479699,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/Z809A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Netvox_Z809A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -473366,7 +482312,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -473412,6 +482358,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -473472,6 +482422,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/552-80699.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Niko_552-80699.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -473513,7 +482468,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -473559,6 +482514,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -473624,6 +482587,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PTM_215Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Niko_91004.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Niko_91004.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -475728,7 +484701,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -475778,6 +484751,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -475840,8 +484817,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SIN-4-1-20.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-1-20.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-1-20.html" }, { "field": "Exposed fields", @@ -476153,7 +485135,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -476203,6 +485185,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -476265,8 +485251,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SIN-4-2-20.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-2-20.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-2-20.html" }, { "field": "Exposed fields", @@ -476302,7 +485293,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -476349,6 +485340,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -476412,10 +485407,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SIN-4-2-20_PRO.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-2-20_PRO.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SIN-4-2-20_PRO.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-2-20_PRO.html" }, { "field": "Exposed fields", @@ -476596,7 +485596,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -476643,6 +485643,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -476706,10 +485710,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SIN-4-FP-21.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-FP-21.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SIN-4-FP-21.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-FP-21.html" }, { "field": "Exposed fields", @@ -476750,7 +485759,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -476800,6 +485809,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -476862,8 +485875,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SIN-4-RS-20.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-RS-20.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-RS-20.html" }, { "field": "Exposed fields", @@ -476901,7 +485919,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -476947,6 +485965,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -477007,6 +486029,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SIN-4-RS-20_PRO.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_SIN-4-RS-20_PRO.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -477043,7 +486070,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -477093,6 +486120,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -477155,8 +486186,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STPH-4-1-00.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_STPH-4-1-00.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NodOn_STPH-4-1-00.html" }, { "field": "Exposed fields", @@ -477461,8 +486497,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/98423051.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nordtronic_98423051.html" }, { "field": "Exposed fields", @@ -477654,7 +486690,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -477704,6 +486740,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -477766,8 +486806,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/98425031.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nordtronic_98425031.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nordtronic_98425031.html" }, { "field": "Exposed fields", @@ -478413,7 +487458,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota + deCONZ" }, "facts": [ { @@ -478459,6 +487504,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -478540,6 +487593,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_switch.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NorkImes_MKS-CM-W5.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NorkImes_MKS-CM-W5.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -478578,7 +487641,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota + deCONZ" }, "facts": [ { @@ -478624,6 +487687,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -478733,6 +487804,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_switch_4_gang_1.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NorkImes_MKS-CM-W5.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/NorkImes_MKS-CM-W5.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -479060,7 +488141,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -479110,6 +488191,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -479172,8 +488261,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/A1Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_A1Z.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_A1Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_A1Z.html" }, { "field": "Exposed fields", @@ -482611,7 +491710,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -482661,6 +491760,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -482728,8 +491831,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E2.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E2.html" }, { "field": "Exposed fields", @@ -482765,7 +491873,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -482812,6 +491920,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -482875,10 +491987,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E3.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E3.html" }, { "field": "Exposed fields", @@ -483055,7 +492172,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -483102,6 +492219,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -483170,10 +492291,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E5.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E5.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E5.html" }, { "field": "Exposed fields", @@ -483213,7 +492339,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -483260,6 +492386,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -483340,10 +492470,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E6.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E6.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_E6.html" }, { "field": "Exposed fields", @@ -483694,7 +492829,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -483744,6 +492879,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -483806,8 +492945,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/L12Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_L12Z.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_L12Z.html" }, { "field": "Exposed fields", @@ -484439,7 +493583,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Tasmota + ZHA" }, "facts": [ { @@ -484486,6 +493630,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -484554,10 +493706,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LZ3.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_LZ3.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_LZ3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LZ3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nous_LZ3.html" }, { "field": "Exposed fields", @@ -493744,7 +502906,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -493791,9 +502953,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -493854,10 +503024,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/3A12S-15.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_3A12S-15.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3A12S-15.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_3A12S-15.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_3A12S-15.html" }, { "field": "Exposed fields", @@ -494048,7 +503228,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -494094,6 +503274,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -494154,6 +503338,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-01A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-01A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -494194,7 +503383,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker + deCONZ" }, "facts": [ { @@ -494244,6 +503433,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -494306,8 +503503,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HGZB-02A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-02A.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-02A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-02A.html" }, { "field": "Exposed fields", @@ -495074,7 +504281,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -495120,6 +504327,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -495180,6 +504391,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-06A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-06A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -495952,7 +505168,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -495998,6 +505214,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -496058,6 +505282,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-41.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-41.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-41.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -498271,7 +507505,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -498317,6 +507551,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -498377,6 +507615,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZW-EU-4C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZW-EU-4C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -498562,7 +507805,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -498612,6 +507855,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -498674,8 +507921,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NCZ-3011-HA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nyce_NCZ-3011-HA.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nyce_NCZ-3011-HA.html" }, { "field": "Exposed fields", @@ -498717,7 +507969,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -498763,6 +508015,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -498823,6 +508079,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NCZ-3014-HA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nyce_NCZ-3014-HA.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -498863,7 +508124,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -498909,6 +508170,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -498969,6 +508234,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NCZ-3041-HA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nyce_NCZ-3041-HA.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -499014,7 +508284,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -499060,6 +508330,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -499120,6 +508394,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NCZ-3043-HA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nyce_NCZ-3043-HA.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -503762,7 +513041,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -503812,6 +513091,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -503874,8 +513165,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GWRJN5169.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OpenLumi_GWRJN5169.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OpenLumi_GWRJN5169.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OpenLumi_GWRJN5169.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OpenLumi_GWRJN5169.html" }, { "field": "Exposed fields", @@ -504034,7 +513340,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -504073,6 +513379,10 @@ }, { "facts": [ + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -504122,6 +513432,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Orvibo_SF30.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_SF30.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -504955,7 +514270,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -505005,6 +514320,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -505067,8 +514390,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CM10ZW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_CM10ZW.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_CM10ZW.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_CM10ZW.html" }, { "field": "Exposed fields", @@ -505108,7 +514441,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -505154,6 +514487,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -505214,6 +514551,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CR11S8UZ.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_CR11S8UZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -507422,7 +516764,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -507469,6 +516811,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -507532,10 +516878,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SN10ZW.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_SN10ZW.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SN10ZW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_SN10ZW.html" }, { "field": "Exposed fields", @@ -507870,7 +517221,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -507916,6 +517267,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -507976,6 +517335,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ST30.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_ST30.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_ST30.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -508162,7 +517531,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -508208,6 +517577,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -508268,6 +517641,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SW30.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_SW30.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -509028,7 +518406,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -509074,6 +518452,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -509134,6 +518516,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T40S6Z.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_T40S6Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -509170,7 +518557,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -509216,6 +518603,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -509276,6 +518667,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T40W1Z.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_T40W1Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -509316,7 +518712,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -509362,6 +518758,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -509422,6 +518822,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/T40W2Z.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_T40W2Z.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -510172,7 +519577,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -510218,6 +519623,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -510278,6 +519687,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/W40CZ.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Orvibo_W40CZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -511187,7 +520601,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -511234,6 +520648,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -511297,6 +520715,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/OSRAM_31930.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_31930.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -511336,7 +520759,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -511386,6 +520809,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -511448,8 +520875,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4052899926110.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4052899926110.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4052899926110.html" }, { "field": "Exposed fields", @@ -512079,7 +521511,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -512129,6 +521561,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -512191,8 +521627,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075036185.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075036185.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075036185.html" }, { "field": "Exposed fields", @@ -512244,7 +521685,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -512290,6 +521731,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -512350,6 +521799,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075047853.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075047853.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075047853.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -512545,7 +522004,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -512592,6 +522051,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -512655,10 +522122,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4058075816459.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075816459.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075816459.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4058075816459.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075816459.html" }, { "field": "Exposed fields", @@ -512699,7 +522176,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + ZHA + Zigbee2MQTT + deCONZ" + "value": "Tasmota + ZHA + Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -512750,6 +522227,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -512814,6 +522295,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/OSRAM_4058075816534.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075816534.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -515336,7 +524822,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA" }, "facts": [ { @@ -515383,6 +524869,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -515446,10 +524944,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AB3257001NJ.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AB3257001NJ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB3257001NJ.html" }, { "field": "Exposed fields", @@ -515632,7 +525145,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -515682,6 +525195,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -515744,8 +525265,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AB35996.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB35996.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB35996.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AB35996.html" }, { "field": "Exposed fields", @@ -516080,7 +525611,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -516126,6 +525657,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -516186,6 +525721,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC01353010G.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC01353010G.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -516227,7 +525767,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker" }, "facts": [ { @@ -516273,6 +525813,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -516333,6 +525885,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC0251100NJ_AC0251600NJ_AC0251700NJ.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC0251x00NJ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC0251x00NJ.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC0251x00NJ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -517370,7 +526937,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -517416,6 +526983,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -517476,6 +527051,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC08559.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC08559.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC08559.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -517521,7 +527106,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -517567,6 +527152,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -517627,6 +527216,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC08560-DIM.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_AC08560.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -517952,7 +527546,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker" }, "facts": [ { @@ -518002,6 +527596,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -518064,8 +527662,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AC10786-DIM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208377.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ledvance_4058075208377.html" }, { "field": "Exposed fields", @@ -518404,7 +528007,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + ZHA + deCONZ" + "value": "Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -518454,6 +528057,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -518515,6 +528122,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/OSRAM_4058075816510.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OSRAM_4058075816510.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -518810,7 +528422,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -518856,6 +528468,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -518916,6 +528536,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CR701-YZ.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Oujiabao_CR701-YZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Oujiabao_CR701-YZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -519271,7 +528901,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -519315,7 +528945,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -519369,7 +528999,7 @@ "url": "https://zigbee.blakadder.com/Owon_PC321-TY.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Owon_PC321-TY.html" }, @@ -519406,7 +529036,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -519452,6 +529082,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -519512,6 +529150,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AC201.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_AC201.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_AC201.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -519711,7 +529359,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -519757,6 +529405,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -519817,6 +529469,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CB432.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_CB432.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -520454,7 +530111,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -520496,6 +530153,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -520547,6 +530208,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/OWON_PCT502.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_PCT502.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -520889,7 +530555,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -520932,6 +530598,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -520986,6 +530656,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/OWON_PIR313.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_PIR313.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -521308,7 +530983,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -521354,6 +531029,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -521414,6 +531093,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PIR323-PTH.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_PIR323.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -522026,7 +531710,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -522073,6 +531757,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -522136,10 +531828,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/THS317-ET.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_THS317-ET.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_THS317-ET.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/THS317-ET.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_THS317-ET.html" }, { "field": "Exposed fields", @@ -522328,7 +532030,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -522374,6 +532076,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -522434,6 +532140,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WSP402.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_WSP402.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -522617,7 +532328,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -522663,6 +532374,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -522723,6 +532438,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WSP404.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OWON_WSP404.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -524733,7 +534453,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -524773,7 +534493,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -524822,7 +534542,7 @@ "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.001.94.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.001.94.html" }, @@ -525439,7 +535159,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -525485,6 +535205,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -525545,6 +535273,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/100.425.90.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.425.90.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.425.90.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -525583,7 +535321,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -525629,6 +535367,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -525689,6 +535431,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/100.462.31.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.462.31.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -526021,7 +535768,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -526067,6 +535814,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -526127,6 +535878,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NLG-CCT_light.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.424.11.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -526170,7 +535926,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -526216,6 +535972,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -526276,6 +536036,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NLG-RGB-TW_light.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.470.92.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -526621,7 +536386,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -526668,6 +536433,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -526731,10 +536500,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/NLG-TW_light.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.469.xx.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/NLG-TW_light.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paul_Neuhaus_100.469.xx.html" }, { "field": "Exposed fields", @@ -527202,7 +536976,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -527248,6 +537022,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -527308,6 +537086,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/371000001.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_371000001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -527351,7 +537134,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -527397,6 +537180,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -527462,6 +537249,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/371000002.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_371000002.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -528105,7 +537897,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -528151,6 +537943,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -528211,6 +538007,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/500.43.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50043.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -528248,7 +538049,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -528294,6 +538095,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -528354,6 +538159,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/500.44.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50044.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -528397,7 +538207,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -528443,6 +538253,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -528503,6 +538317,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/500.45.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50045.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -528815,8 +538634,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/500.47.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50047.html" }, { "field": "Exposed fields", @@ -528866,7 +538685,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + Tasmota" }, "facts": [ { @@ -528912,6 +538731,22 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -528972,6 +538807,26 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/500.48.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50048.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50048.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50048.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50048.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -529420,7 +539275,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -529466,6 +539321,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -529526,6 +539389,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/500.67.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50067.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50067.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -530450,7 +540323,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -530500,6 +540373,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -530562,8 +540439,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/501.34.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50134.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Paulmann_50134.html" }, { "field": "Exposed fields", @@ -533662,8 +543544,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RR620ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR620ZB.html" }, { "field": "Exposed fields", @@ -533699,7 +543581,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -533749,6 +543631,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -533811,8 +543697,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3300-P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/PeQ_3300-P.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/PeQ_3300-P.html" }, { "field": "Exposed fields", @@ -534111,8 +544002,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/PECLS01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Perenio_PECLS01.html" }, { "field": "Exposed fields", @@ -534271,8 +544162,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/PECMS01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Perenio_PECMS01.html" }, { "field": "Exposed fields", @@ -534901,7 +544792,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + ZHA" + "value": "deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -534944,6 +544835,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -534998,6 +544893,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philio_PST03-A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philio_PST03-A.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -535035,7 +544935,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -535079,7 +544979,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -535137,7 +545037,7 @@ "url": "https://zigbee.blakadder.com/Philips_LST002.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LST002.html" }, @@ -537584,7 +547484,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -537630,6 +547530,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -537690,6 +547594,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1740193P0.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1740193P0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -538148,7 +548057,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -538194,6 +548103,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -538254,6 +548167,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1741530P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1741530P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -539094,7 +549012,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -539140,6 +549058,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -539200,6 +549122,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1742830P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1742830P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -539407,7 +549334,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -539454,6 +549381,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -539517,10 +549448,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1743030P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1743030P7.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/1743030P7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1743030P7.html" }, { "field": "Exposed fields", @@ -539732,7 +549668,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -539778,6 +549714,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -539838,6 +549778,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1743230P7.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1743230P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -541095,7 +551040,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -541141,6 +551086,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -541201,6 +551150,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1743930P7.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1743930P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -541504,7 +551458,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -541550,6 +551504,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -541610,6 +551568,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1744130P7.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1744130P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -543409,7 +553372,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -543455,6 +553418,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -543515,6 +553482,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1746130P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1746130P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -543838,8 +553810,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/1746330P7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1746330P7.html" }, { "field": "Exposed fields", @@ -544019,7 +553991,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -544065,6 +554037,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -544125,6 +554101,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1746430P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1746430P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -544178,7 +554159,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -544224,6 +554205,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -544284,6 +554269,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1746447P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_1746447P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -546279,8 +556269,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3216331P6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_3216331P6.html" }, { "field": "Exposed fields", @@ -547022,8 +557012,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3261030P6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_3261030P6.html" }, { "field": "Exposed fields", @@ -548419,7 +558409,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -548465,6 +558455,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -548525,6 +558519,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/3402831P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_3402831P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -552450,7 +562449,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -552496,6 +562495,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -552556,6 +562559,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4080148P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4080148P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -552921,7 +562929,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -552967,6 +562975,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -553027,6 +563039,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4080248P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4080248P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -553079,7 +563096,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -553125,6 +563142,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -553185,6 +563206,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4080248U9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4080248U9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -553397,7 +563423,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -553443,6 +563469,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -553503,6 +563533,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4090130P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4090130P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -553844,7 +563879,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -553890,6 +563925,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -553950,6 +563989,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4090231P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4090231P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -554002,7 +564046,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -554048,6 +564092,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -554108,6 +564160,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4090330P9.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4090330P9.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4090330P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -554165,7 +564227,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -554212,9 +564274,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -554275,10 +564345,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4090331P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCP001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/4090331P9.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCP001.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCP001.html" }, { "field": "Exposed fields", @@ -554339,7 +564419,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -554385,6 +564465,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -554445,6 +564529,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/4090431P9.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_4090431P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -557217,7 +567306,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -557263,6 +567352,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -557323,6 +567420,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5042131P9.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5042131P9.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5042131P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -558252,7 +568359,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -558298,6 +568405,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -558358,6 +568469,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5047131P8.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5047131P8.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -558404,7 +568520,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -558450,6 +568566,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -558510,6 +568630,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5047131P9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5047131P9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -558557,7 +568682,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker" }, "facts": [ { @@ -558607,6 +568732,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -558669,8 +568798,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/5047230P6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5047230P6.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5047230P6.html" }, { "field": "Exposed fields", @@ -560379,7 +570513,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -560425,6 +570559,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -560485,6 +570623,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5060831P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5060831P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -561177,7 +571320,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -561223,6 +571366,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -561283,6 +571430,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5062131P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5062131P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -561803,7 +571955,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -561849,6 +572001,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -561909,6 +572065,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5062331P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5062331P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -562904,7 +573065,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -562950,6 +573111,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -563010,6 +573175,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5063231P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063231P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -563062,7 +573232,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -563108,6 +573278,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -563168,6 +573342,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5063330P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063330P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -563220,7 +573399,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -563266,6 +573445,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -563326,6 +573509,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5063331P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063331P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -563378,7 +573566,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -563424,6 +573612,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -563484,6 +573676,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5063430P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063430P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -563536,7 +573733,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -563582,6 +573779,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -563642,6 +573847,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5063431P7.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063431P7.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5063431P7.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -563806,8 +574021,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/5110131H5.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_5110131H5.html" }, { "field": "Exposed fields", @@ -566898,7 +577113,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -566944,6 +577159,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -567004,6 +577223,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5996511U5.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCD001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -567056,7 +577280,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -567102,6 +577326,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -567162,6 +577390,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/5996611U5.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCD002.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -569049,7 +579282,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ioBroker + ZHA" }, "facts": [ { @@ -569096,6 +579329,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -569159,10 +579404,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/7602031P7.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT026.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT026.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT026.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/7602031P7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT026.html" }, { "field": "Exposed fields", @@ -572646,7 +582906,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -572693,9 +582953,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -572756,10 +583024,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/8718699703424.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_8718699703424.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/8718699703424.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_8718699703424.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_8718699703424.html" }, { "field": "Exposed fields", @@ -572927,8 +583205,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/8719514279131.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWO003.html" }, { "field": "Exposed fields", @@ -573823,8 +584101,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/8719514301542.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTO002.html" }, { "field": "Exposed fields", @@ -573871,7 +584149,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -573917,6 +584195,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -573977,6 +584259,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/8719514302235.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWE004.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -574131,8 +584418,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/8719514328242.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTA004.html" }, { "field": "Exposed fields", @@ -576765,7 +587052,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -576812,6 +587099,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -576875,10 +587166,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/8719514440937_8719514440999.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RDM002.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/8719514440937_8719514440999.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RDM002.html" }, { "field": "Exposed fields", @@ -579190,7 +589486,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -579240,6 +589536,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -579302,8 +589606,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/915005733701.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT024.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT024.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT024.html" }, { "field": "Exposed fields", @@ -582830,7 +593144,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -582876,6 +593190,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -582936,6 +593254,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/915005996401.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_915005996401.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -583691,8 +594014,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/915005997301.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_915005997301.html" }, { "field": "Exposed fields", @@ -584050,7 +594373,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -584096,6 +594419,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -584156,6 +594483,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/915005997701.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_915005997701.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -584665,7 +594997,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -584711,6 +595043,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -584771,6 +595107,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/915005998101.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_915005998101.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -586315,7 +596656,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + deCONZ" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -586363,7 +596704,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -586422,7 +596763,7 @@ "url": "https://zigbee.blakadder.com/Philips_LTW010.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LTW010.html" }, @@ -587191,7 +597532,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -587237,6 +597578,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -587297,6 +597642,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290018187B.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCL002.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -587462,8 +597812,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290018189.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWS001.html" }, { "field": "Exposed fields", @@ -587799,7 +598149,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -587845,6 +598195,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -587905,6 +598259,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290018215.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA002.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -588097,7 +598456,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -588143,6 +598502,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -588203,6 +598566,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929001821618.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA011.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -589593,7 +599961,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -589640,9 +600008,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -589703,10 +600087,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290019758.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML002.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML002.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML002.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290019758.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML002.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML002.html" }, { "field": "Exposed fields", @@ -590037,7 +600441,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -590083,6 +600487,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -590143,6 +600551,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290020400.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWE003.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -590639,7 +601052,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + SONOFF iHost" }, "facts": [ { @@ -590685,6 +601098,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -590745,6 +601162,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290022266A.html" }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCA005.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -590945,7 +601367,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + SONOFF iHost" }, "facts": [ { @@ -590991,6 +601413,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -591051,6 +601477,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290022267A.html" }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTA008.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -591208,8 +601639,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290022268.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA003.html" }, { "field": "Exposed fields", @@ -593190,7 +603621,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -593240,6 +603671,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -593302,8 +603737,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290022944.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTE002.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTE002.html" }, { "field": "Exposed fields", @@ -594056,8 +604496,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290023351.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA008.html" }, { "field": "Exposed fields", @@ -594395,7 +604835,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -594441,6 +604881,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -594501,6 +604945,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929002375901.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929002375901.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -594553,7 +605002,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -594599,6 +605048,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -594659,6 +605112,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929002376001.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929002376001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -594711,7 +605169,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -594757,6 +605215,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -594817,6 +605279,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929002376101.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929002376101.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -595137,8 +605604,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929002376301.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929002376301.html" }, { "field": "Exposed fields", @@ -596284,7 +606751,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -596331,9 +606798,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -596394,10 +606869,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929002398602.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RWL022.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929002398602.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RWL022.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RWL022.html" }, { "field": "Exposed fields", @@ -597495,8 +607980,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290024406.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWU001.html" }, { "field": "Exposed fields", @@ -597798,8 +608283,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290024426.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LOM006.html" }, { "field": "Exposed fields", @@ -598247,8 +608732,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290024683.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTA010.html" }, { "field": "Exposed fields", @@ -598407,8 +608892,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290024684.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTA009.html" }, { "field": "Exposed fields", @@ -600862,7 +611347,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -600912,6 +611397,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -600974,8 +611463,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290024896.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCA004.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCA004.html" }, { "field": "Exposed fields", @@ -601354,7 +611848,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -601400,6 +611894,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -601460,6 +611958,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929002966501.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929002966501.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -602139,7 +612642,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -602186,6 +612689,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -602249,10 +612756,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929003017102.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RDM001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929003017102.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RDM001.html" }, { "field": "Exposed fields", @@ -604980,7 +615492,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -605030,6 +615542,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -605092,8 +615608,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929003050601.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LOM007.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LOM007.html" }, { "field": "Exposed fields", @@ -605133,7 +615654,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -605179,6 +615700,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -605239,6 +615764,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/9290030509.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LOM008.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -605828,8 +616358,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290030518.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWV006.html" }, { "field": "Exposed fields", @@ -606457,7 +616987,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -606503,6 +617033,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -606563,6 +617097,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/929003052601.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929003052601.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -610474,7 +621013,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -610524,6 +621063,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -610586,8 +621133,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290030674.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML004.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML004.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML004.html" }, { "field": "Exposed fields", @@ -610629,7 +621186,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -610679,6 +621236,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -610741,8 +621306,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/9290030675.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML003.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML003.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML003.html" }, { "field": "Exposed fields", @@ -611811,8 +622386,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929003099101.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929003099101.html" }, { "field": "Exposed fields", @@ -612572,8 +623147,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929003115701.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929003115701.html" }, { "field": "Exposed fields", @@ -612896,8 +623471,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/929003115901.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_929003115901.html" }, { "field": "Exposed fields", @@ -642922,7 +653497,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -642970,7 +653545,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -643029,7 +653604,7 @@ "url": "https://zigbee.blakadder.com/Philips_LCA001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCA001.html" }, @@ -644630,7 +655205,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -644678,7 +655253,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -644741,7 +655316,7 @@ "url": "https://zigbee.blakadder.com/Philips_LCG002.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCG002.html" }, @@ -645039,7 +655614,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -645085,6 +655660,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -645141,6 +655720,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCT002.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT002.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -645172,7 +655756,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -645216,7 +655800,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -645270,7 +655854,7 @@ "url": "https://zigbee.blakadder.com/Philips_LCT003.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCT003.html" }, @@ -645305,7 +655889,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -645349,7 +655933,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -645407,7 +655991,7 @@ "url": "https://zigbee.blakadder.com/Philips_LCT007.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCT007.html" }, @@ -645713,7 +656297,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -645757,7 +656341,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -645819,7 +656403,7 @@ "url": "https://zigbee.blakadder.com/Philips_LCT012.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCT012.html" }, @@ -645988,7 +656572,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ + Tasmota" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -646035,6 +656619,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -646098,6 +656686,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LCT015.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LCT015.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -646911,7 +657504,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ioBroker + ZHA + Tasmota" }, "facts": [ { @@ -646958,6 +657551,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ioBroker", "value": "Support record available" @@ -647025,6 +657622,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LLC010.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LLC010.html" + }, { "field": "ioBroker", "source": "Blakadder Zigbee record", @@ -647361,7 +657963,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -647405,7 +658007,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -647459,7 +658061,7 @@ "url": "https://zigbee.blakadder.com/Philips_LLC014.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LLC014.html" }, @@ -647493,7 +658095,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -647536,6 +658138,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -647594,6 +658200,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LLC020.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LLC020.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -647635,7 +658246,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -647685,6 +658296,10 @@ { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -647746,6 +658361,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LOM001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LOM001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -647775,7 +658395,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -647819,7 +658439,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -647873,7 +658493,7 @@ "url": "https://zigbee.blakadder.com/Philips_LOM002.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LOM002.html" }, @@ -648826,7 +659446,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + deCONZ + ioBroker" + "value": "ZHA + Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ" }, "facts": [ { @@ -648874,12 +659494,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -648937,7 +659561,7 @@ "url": "https://zigbee.blakadder.com/Philips_LTA001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LTA001.html" }, @@ -648946,6 +659570,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LTA001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTA001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -650894,7 +661523,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + ioBroker + deCONZ" + "value": "ZHA + Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -650945,6 +661574,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -651009,6 +661642,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LTG002.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LTG002.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -651826,7 +662464,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -651870,7 +662508,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -651928,7 +662566,7 @@ "url": "https://zigbee.blakadder.com/Philips_LTW012.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LTW012.html" }, @@ -652231,7 +662869,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -652275,7 +662913,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -652289,6 +662927,10 @@ { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -652341,7 +662983,7 @@ "url": "https://zigbee.blakadder.com/Philips_LWA001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWA001.html" }, @@ -652360,6 +663002,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWA001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -652389,7 +663036,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ZHA + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -652440,6 +663087,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -652504,6 +663155,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWA004.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWA004.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -652809,7 +663465,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -652853,7 +663509,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -652911,7 +663567,7 @@ "url": "https://zigbee.blakadder.com/Philips_LWA009.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWA009.html" }, @@ -653446,7 +664102,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -653490,7 +664146,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -653544,7 +664200,7 @@ "url": "https://zigbee.blakadder.com/Philips_LWA018.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWA018.html" }, @@ -653577,7 +664233,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -653623,6 +664279,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -653679,6 +664339,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWB004.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWB004.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -653708,7 +664373,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -653754,6 +664419,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -653810,6 +664479,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWB006.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWB006.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -653839,7 +664513,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -653887,7 +664561,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -653950,7 +664624,7 @@ "url": "https://zigbee.blakadder.com/Philips_LWB010.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWB010.html" }, @@ -653988,7 +664662,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -654035,6 +664709,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -654094,6 +664772,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWB014.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWB014.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -654381,7 +665064,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -654428,6 +665111,10 @@ "label": "ioBroker", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -654487,6 +665174,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWE002.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWE002.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -654643,7 +665335,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -654691,7 +665383,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -654750,7 +665442,7 @@ "url": "https://zigbee.blakadder.com/Philips_LWG001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWG001.html" }, @@ -654783,7 +665475,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -654829,6 +665521,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -654889,6 +665589,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LWG004.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWG004.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWG004.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -654931,7 +665641,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -654985,6 +665695,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -655051,6 +665765,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWO001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWO001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -655080,7 +665799,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -655131,6 +665850,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -655195,6 +665918,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_LWV001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_LWV001.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -655745,7 +666473,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + ioBroker + deCONZ" }, "facts": [ { @@ -655793,12 +666521,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "ioBroker", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -655856,7 +666588,7 @@ "url": "https://zigbee.blakadder.com/Philips_ROM001.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_ROM001.html" }, @@ -655865,6 +666597,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_ROM001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_ROM001.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -655895,7 +666632,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -655938,6 +666675,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -655996,6 +666737,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_RWL020.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RWL020.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -656036,7 +666782,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -656079,6 +666825,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -656141,6 +666891,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_RWL021.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_RWL021.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -656186,7 +666941,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -656237,6 +666992,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -656305,6 +667064,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Philips_SML001.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Philips_SML001.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -656347,7 +667111,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -656393,6 +667157,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -656453,6 +667221,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/Hive.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Phoscon_Hive.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -656640,7 +667413,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -656690,6 +667463,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -656757,8 +667534,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/PS-SPRZMS-SLP3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Plaid_PS-SPRZMS-SLP3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Plaid_PS-SPRZMS-SLP3.html" }, { "field": "Exposed fields", @@ -657090,7 +667872,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -657136,6 +667918,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -657196,6 +667982,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/160-01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Plugwise_160-01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -657403,7 +668194,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -657453,6 +668244,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -657515,8 +668314,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/701721.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Popp_701721.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Popp_701721.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Popp_701721.html" }, { "field": "Exposed fields", @@ -668872,8 +679681,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QT-05M.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/QOTO_QT-05M.html" }, { "field": "Exposed fields", @@ -671114,7 +681923,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -671169,6 +681978,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -671238,6 +682051,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Rehent_RH-ZTH1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Rehent_RH-ZTH1.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -671883,7 +682701,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -671930,9 +682748,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -672034,10 +682860,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Revolt_NX-4911.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Revolt_NX-4911.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Revolt_NX-4911.html" }, { "field": "Exposed fields", @@ -672650,7 +683486,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -672696,6 +683532,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -672756,6 +683596,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZB-5001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RGB_Genie_ZB-5001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -673081,7 +683926,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -673127,6 +683972,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -673187,6 +684036,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZB-5121.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RGB_Genie_ZB-5121.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -673650,7 +684504,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + Tasmota + deCONZ" }, "facts": [ { @@ -673694,7 +684548,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -673704,6 +684558,10 @@ { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -673756,7 +684614,7 @@ "url": "https://zigbee.blakadder.com/RightSitu_ZW08.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/RightSitu_ZW08.html" }, @@ -673770,6 +684628,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/RightSitu_ZW08.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RightSitu_ZW08.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -675096,8 +685959,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-003-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-003-0.html" }, { "field": "Exposed fields", @@ -675276,7 +686139,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -675323,9 +686186,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -675386,10 +686257,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-004-0.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-004-0.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-004-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-004-0.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-004-0.html" }, { "field": "Exposed fields", @@ -675721,7 +686602,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -675767,6 +686648,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -675827,6 +686716,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-007-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-007-0.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-007-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -675865,7 +686764,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -675911,6 +686810,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -675971,6 +686874,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-008-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-008-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -676011,7 +686919,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -676057,6 +686965,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -676117,6 +687029,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-009-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-009-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -676155,7 +687072,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -676201,6 +687118,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -676261,6 +687186,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-010-0.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-010-0.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-010-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -676303,7 +687238,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -676350,6 +687285,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -676413,10 +687352,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-011-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-011-0.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-011-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-011-0.html" }, { "field": "Exposed fields", @@ -677033,7 +687977,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -677079,6 +688023,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -677139,6 +688091,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-017-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-017-0.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-017-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -677331,7 +688293,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -677377,6 +688339,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -677437,6 +688403,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-018-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-018-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -677615,7 +688586,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -677661,6 +688632,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -677721,6 +688696,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-025-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-025-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -677871,8 +688851,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-026-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-026-0.html" }, { "field": "Exposed fields", @@ -678025,8 +689005,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-029-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-029-0.html" }, { "field": "Exposed fields", @@ -678347,7 +689327,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -678393,6 +689373,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -678453,6 +689437,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-035-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ROBB_ROB_200-035-0.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -682023,7 +693012,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -682070,9 +693059,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -682222,10 +693223,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZB-RT1.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZB-RT1.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZB-RT1.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZB-RT1.html" }, { "field": "Exposed fields", @@ -682551,7 +693567,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -682598,6 +693614,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -682686,10 +693706,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZVG1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZVG1.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZVG1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZVG1.html" }, { "field": "Exposed fields", @@ -683412,7 +694437,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -683458,6 +694483,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -683518,6 +694547,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/OS600.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_OS600.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -683558,7 +694592,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -683604,6 +694638,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -683664,6 +694702,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PS600.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_PS600.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -683844,7 +694887,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -683891,6 +694934,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -683954,10 +695005,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP600.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_SP600.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_SP600.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP600.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_SP600.html" }, { "field": "Exposed fields", @@ -684000,7 +695061,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -684046,6 +695107,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -684106,6 +695175,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPE600.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_SPE600.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Salus_SPE600.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -684848,7 +695927,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -684895,9 +695974,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -684958,10 +696053,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RH3040.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM301Z.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM301Z.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RH3040.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM301Z.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM301Z.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM301Z.html" }, { "field": "Exposed fields", @@ -685003,7 +696118,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -685050,6 +696165,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -685113,10 +696232,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SM308.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM308.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SM308.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM308.html" }, { "field": "Exposed fields", @@ -685445,7 +696569,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -685492,6 +696616,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -685555,10 +696691,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SM309.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM309.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM309.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM309.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SM309.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM309.html" }, { "field": "Exposed fields", @@ -685895,7 +697046,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -685942,6 +697093,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -686005,10 +697160,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-014-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM311.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ROB_200-014-0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM311.html" }, { "field": "Exposed fields", @@ -686055,7 +697215,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -686102,6 +697262,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -686165,10 +697329,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZG2835RAC.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM311.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG2835RAC.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM311.html" }, { "field": "Exposed fields", @@ -686473,8 +697642,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SM315.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM315.html" }, { "field": "Exposed fields", @@ -686514,7 +697683,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -686560,6 +697729,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -686616,6 +697789,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Samotech_SM323.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM323.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -686947,7 +698125,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -686993,6 +698171,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -687049,6 +698231,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Samotech_SM323v2.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Samotech_SM323v2.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -688144,7 +699331,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -688198,6 +699385,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -688264,6 +699455,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Saswell_SEA802-Zigbee.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Saswell_SEA802-Zigbee.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -690624,7 +701820,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -690671,6 +701867,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -690734,10 +701934,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BE468.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schlage_BE468.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BE468.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schlage_BE468.html" }, { "field": "Exposed fields", @@ -691912,8 +703117,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/41EPBDWCLMZ_354PBDMBTZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_41EPBDWCLMZ_354PBDMBTZ.html" }, { "field": "Exposed fields", @@ -691959,7 +703164,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -692005,6 +703210,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -692065,6 +703274,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/545D6102.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_545D6102.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -692118,7 +703332,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -692164,6 +703378,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -692224,6 +703442,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/545D6115.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_545D6115.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -692267,7 +703490,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -692313,6 +703536,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -692373,6 +703600,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/545D6514.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_545D6514.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -692566,7 +703798,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -692608,6 +703840,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -692659,6 +703895,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_550B1021.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_550B1021.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -692944,7 +704185,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -692990,6 +704231,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -693050,6 +704295,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/550B1024.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_550B1024.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -693090,7 +704340,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -693136,6 +704386,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -693196,6 +704450,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/550D6001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_550D6001.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -694005,7 +705264,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -694052,6 +705311,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -694115,10 +705382,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CCT5011-0001_CCT5011-0002_MEG5011-0001.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_W50110.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_W50110.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CCT5011-0001_CCT5011-0002_MEG5011-0001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_W50110.html" }, { "field": "Exposed fields", @@ -694727,7 +706004,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -694773,6 +706050,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -694833,6 +706114,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/CCT711119.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_CCT711119.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -695015,7 +706301,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -695065,6 +706351,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -695127,8 +706421,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CCTFR6100Z3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_CCTFR6100.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_CCTFR6100.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_CCTFR6100.html" }, { "field": "Exposed fields", @@ -695628,7 +706932,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -695672,7 +706976,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -695726,7 +707030,7 @@ "url": "https://zigbee.blakadder.com/Schneider_Electric_CCTFR6400.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_CCTFR6400.html" }, @@ -697796,7 +709100,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -697836,7 +709140,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -697885,7 +709189,7 @@ "url": "https://zigbee.blakadder.com/Schneider_Electric_EER32000.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_EER32000.html" }, @@ -697919,7 +709223,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ" + "value": "Zigbee4Domoticz" }, "facts": [ { @@ -697959,7 +709263,7 @@ { "facts": [ { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -698008,7 +709312,7 @@ "url": "https://zigbee.blakadder.com/Schneider_Electric_EER40020.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_EER40020.html" }, @@ -698188,7 +709492,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -698234,6 +709538,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -698294,6 +709602,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EER42000.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EER42000.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -698334,7 +709647,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -698380,6 +709693,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -698440,6 +709757,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EER50000.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EER50000.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -698484,7 +709806,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -698530,6 +709852,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -698590,6 +709916,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EER51000.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EER51000.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -698752,7 +710083,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -698798,6 +710129,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -698858,6 +710193,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EER53000.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EER53000.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -699068,7 +710408,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -699115,6 +710455,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -699178,10 +710522,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EKO09716.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EKO09716.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/EKO09716.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EKO09716.html" }, { "field": "Exposed fields", @@ -699228,7 +710577,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -699274,6 +710623,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -699334,6 +710687,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/EKO09738.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_EKO09738.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -699378,7 +710736,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -699421,6 +710779,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -699475,6 +710837,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_MEG5113-0300.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_MEG5113-0300.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -700826,7 +712193,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -700869,6 +712236,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -700923,6 +712294,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_MEG5165-0000.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_MEG5165-0000.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -702112,7 +713488,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -702158,6 +713534,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -702218,6 +713602,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S520567.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_S520567.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_S520567.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -702992,7 +714386,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -703036,7 +714430,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -703090,7 +714484,7 @@ "url": "https://zigbee.blakadder.com/Schneider_Electric_W50100.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_W50100.html" }, @@ -703561,7 +714955,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -703611,6 +715005,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -703672,6 +715070,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Schneider_Electric_WDE002172.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_WDE002172.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -703699,7 +715102,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -703746,6 +715149,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -703809,10 +715216,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WDE002334.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_NH3516.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WDE002334.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schneider_Electric_NH3516.html" }, { "field": "Exposed fields", @@ -705926,7 +717338,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -705972,6 +717384,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -706032,6 +717452,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZHS-15.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schwaiger_ZHS15.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Schwaiger_ZHS15.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -706923,7 +718353,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker + Tasmota + deCONZ" }, "facts": [ { @@ -706973,6 +718403,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -707035,8 +718477,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E11-G13.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E11-G13.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E11-G13.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E11-G13.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E11-G13.html" }, { "field": "Exposed fields", @@ -707986,8 +719443,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E11-N1EA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E11-N1EA.html" }, { "field": "Exposed fields", @@ -708982,8 +720439,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E12-N14.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E12-N14.html" }, { "field": "Exposed fields", @@ -709023,7 +720480,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -709069,6 +720526,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -709129,6 +720590,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E12-N1E.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E12-N1E.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -709326,7 +720792,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -709372,6 +720838,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -709432,6 +720902,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E13-N11.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E13-N11.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -709847,8 +721322,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1C-NB6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1C-NB6.html" }, { "field": "Exposed fields", @@ -709888,7 +721363,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -709938,6 +721413,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -710000,8 +721479,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1C-NB7.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1C-NB7.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1C-NB7.html" }, { "field": "Exposed fields", @@ -710044,7 +721528,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -710091,9 +721575,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -710154,10 +721646,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1D-G73WNA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1D-G73.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1D-G73WNA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1D-G73.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1D-G73.html" }, { "field": "Exposed fields", @@ -710199,7 +721701,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -710246,6 +721748,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -710309,10 +721815,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1E-G7F.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1E-G7F.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1E-G7F.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1E-G7F.html" }, { "field": "Exposed fields", @@ -710462,8 +721973,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1F-N5E.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1F-N5E.html" }, { "field": "Exposed fields", @@ -710656,7 +722167,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -710703,6 +722214,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -710766,10 +722281,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E1G-G8E.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1G-G8E.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/E1G-G8E.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E1G-G8E.html" }, { "field": "Exposed fields", @@ -711245,7 +722765,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -711291,6 +722811,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -711351,6 +722875,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/E21-N1EA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_E21-N1EA.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -711694,7 +723223,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -711740,6 +723269,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -711800,6 +723333,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/Z01-A19NAE26.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sengled_Z01-A19NAE26.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -712561,7 +724099,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -712607,6 +724145,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -712667,6 +724209,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AL-PIR02.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sercomm_SZ-PIR02.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -712849,7 +724396,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -712895,6 +724442,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -712955,6 +724506,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SZ-DWS04.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sercomm_SZ-DWS04.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -713108,8 +724664,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SZ-DWS08.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sercomm_SZ-DWS08.html" }, { "field": "Exposed fields", @@ -713295,7 +724851,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -713341,6 +724897,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -713401,6 +724961,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SZ-ESW01-AU.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sercomm_SZ-ESW01-AU.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -714257,8 +725822,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/XHS2-SE.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sercomm_XHS2-SE.html" }, { "field": "Exposed fields", @@ -714302,7 +725867,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -714349,9 +725914,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -714501,10 +726078,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SETTI_TRV001.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SETTI_TRV001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SETTI_TRV001.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SETTI_TRV001.html" }, { "field": "Exposed fields", @@ -715186,7 +726778,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -715236,6 +726828,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -715297,6 +726893,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Shawader_WSS401_3.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shawader_WSS401_3.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -720367,7 +731968,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -720414,6 +732015,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -720477,10 +732082,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HLC821-Z-SC.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shenzhen_Homa_HLD812-Z-SC.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HLC821-Z-SC.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shenzhen_Homa_HLD812-Z-SC.html" }, { "field": "Exposed fields", @@ -720781,8 +732391,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HLD503-Z-CT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shenzhen_Homa_HLD503-Z-CT.html" }, { "field": "Exposed fields", @@ -720829,7 +732439,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -720876,6 +732486,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -720939,10 +732553,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HLD812-Z-SC.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shenzhen_Homa_HLD812-Z-SC.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HLD812-Z-SC.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shenzhen_Homa_HLD812-Z-SC.html" }, { "field": "Exposed fields", @@ -727708,7 +739327,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -727755,6 +739374,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -727899,10 +739530,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shojzj_378RT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shojzj_378RT.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shojzj_378RT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Shojzj_378RT.html" }, { "field": "Exposed fields", @@ -728555,7 +740201,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -728605,6 +740251,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -728667,8 +740317,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZFP-1A-CH.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siglis_ZFP-1A-CH.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siglis_ZFP-1A-CH.html" }, { "field": "Exposed fields", @@ -728711,7 +740366,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -728758,6 +740413,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -728821,10 +740480,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZFU-1D-CH.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siglis_ZFU-1D-CH.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZFU-1D-CH.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siglis_ZFU-1D-CH.html" }, { "field": "Exposed fields", @@ -730284,8 +741948,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DM2500ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_DM2500ZB.html" }, { "field": "Exposed fields", @@ -730448,8 +742112,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/DM2550ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_DM2550ZB.html" }, { "field": "Exposed fields", @@ -730907,8 +742571,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RM3250ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_RM3250ZB.html" }, { "field": "Exposed fields", @@ -731066,8 +742730,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RM3500ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_RM3500ZB.html" }, { "field": "Exposed fields", @@ -731223,8 +742887,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP2600ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_SP2600ZB.html" }, { "field": "Exposed fields", @@ -731269,7 +742933,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -731316,6 +742980,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -731379,10 +743047,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SP2610ZB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_SP2610ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SP2610ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_SP2610ZB.html" }, { "field": "Exposed fields", @@ -731538,8 +743211,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SW2500ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_SW2500ZB.html" }, { "field": "Exposed fields", @@ -731591,7 +743264,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -731638,6 +743311,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -731701,10 +743378,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TH1123ZB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1123ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TH1123ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1123ZB.html" }, { "field": "Exposed fields", @@ -731924,7 +743606,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -731971,6 +743653,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -732034,10 +743720,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TH1124ZB.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1124ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TH1124ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1124ZB.html" }, { "field": "Exposed fields", @@ -732257,7 +743948,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -732307,6 +743998,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -732369,8 +744064,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TH1300ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1300ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1300ZB.html" }, { "field": "Exposed fields", @@ -732709,8 +744409,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TH1400ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1400ZB.html" }, { "field": "Exposed fields", @@ -732889,8 +744589,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TH1500ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_TH1500ZB.html" }, { "field": "Exposed fields", @@ -733341,8 +745041,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/VA4220ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_VA4220ZB.html" }, { "field": "Exposed fields", @@ -733525,7 +745225,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -733572,6 +745272,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -733635,10 +745339,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WL4200S.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_WL4200S.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WL4200S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sinope_WL4200S.html" }, { "field": "Exposed fields", @@ -733823,7 +745532,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -733873,6 +745582,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -733976,8 +745693,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siterwell_GS361A-H04.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siterwell_GS361A-H04.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Siterwell_GS361A-H04.html" }, { "field": "Exposed fields", @@ -743192,7 +754919,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Tasmota" }, "facts": [ { @@ -743238,6 +754965,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -743298,6 +755033,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_16.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_16.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_16.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -743480,7 +755225,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker" }, "facts": [ { @@ -743526,6 +755271,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -743586,6 +755343,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_21A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21A.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -743627,7 +755399,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -743673,6 +755445,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -743733,6 +755513,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_21B.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21B.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -743773,7 +755563,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -743819,6 +755609,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -743879,6 +755677,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_21C.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21C.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_21C.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -743918,7 +755726,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -743964,6 +755772,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744024,6 +755844,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_22.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_22.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_22.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_22.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744066,7 +755901,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -744112,6 +755947,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744172,6 +756011,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_22A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_22A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744210,7 +756054,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -744256,6 +756100,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744316,6 +756164,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_22B.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_22B.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744355,7 +756208,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -744401,6 +756254,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744461,6 +756318,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_23.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_23.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744654,7 +756516,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -744700,6 +756562,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744760,6 +756626,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_24A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_24A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744808,7 +756679,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -744854,6 +756725,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -744914,6 +756789,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_25.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_25.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -744955,7 +756835,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -745001,6 +756881,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -745061,6 +756945,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_26.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_26.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -745102,7 +756991,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -745148,6 +757037,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -745208,6 +757101,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_28.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_28.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -745247,7 +757145,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -745293,6 +757191,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -745353,6 +757259,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_29.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_29.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_29.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -745400,7 +757316,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -745446,6 +757362,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -745506,6 +757426,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_29A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_29A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -745555,7 +757480,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -745602,6 +757527,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -745665,10 +757602,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/AV2010_32.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_32.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_32.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_32.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/AV2010_32.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SMaBiT_AV2010_32.html" }, { "field": "Exposed fields", @@ -746585,7 +758537,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -746631,6 +758583,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -746691,6 +758651,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-07A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-07A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-07A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -746739,7 +758709,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -746785,6 +758755,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -746845,6 +758819,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-20-DE.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/3A_HGZB-20-DE.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -746883,7 +758862,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -746930,9 +758909,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -746993,10 +758988,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" }, { "field": "Exposed fields", @@ -747036,7 +759051,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -747083,9 +759098,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -747146,10 +759177,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0042.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0042.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" }, { "field": "Exposed fields", @@ -747189,7 +759240,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -747236,9 +759287,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -747299,10 +759366,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0043.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0043.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_3.html" }, { "field": "Exposed fields", @@ -747342,7 +759429,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -747396,6 +759483,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -747462,6 +759553,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9TSZGB_1.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -747628,7 +759724,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -747674,6 +759770,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -747734,6 +759834,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S9ZGBRC01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Smart9_S9ZGBRC01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -748644,7 +760749,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -748694,6 +760799,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -748756,8 +760865,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3305-S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_3305-S.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_3305-S.html" }, { "field": "Exposed fields", @@ -749936,7 +762050,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -749982,6 +762096,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -750042,6 +762160,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/F-APP-UK-V2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_F-APP-UK-V2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -750222,7 +762345,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -750272,6 +762395,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -750334,8 +762461,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/F-MLT-US-2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-MLT-250.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-MLT-250.html" }, { "field": "Exposed fields", @@ -750928,7 +763060,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -750974,6 +763106,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751034,6 +763174,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GP-WOU019BBDWG.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_GP-WOU019BBDWG.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_GP-WOU019BBDWG.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -751075,7 +763225,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -751125,6 +763275,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751187,8 +763341,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IM6001-BTP01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-BTP01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-BTP01.html" }, { "field": "Exposed fields", @@ -751229,7 +763388,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -751276,9 +763435,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751339,10 +763506,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IM6001-MPP01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MPP01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IM6001-MPP01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MPP01.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MPP01.html" }, { "field": "Exposed fields", @@ -751390,7 +763567,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -751437,9 +763614,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751500,10 +763685,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IM6001-MTP01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MTP01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IM6001-MTP01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MTP01.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-MTP01.html" }, { "field": "Exposed fields", @@ -751547,7 +763742,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -751593,6 +763788,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751653,6 +763856,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IM6001-OTP05.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-OTP05.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-OTP05.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -751694,7 +763907,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost + Zigbee4Domoticz" }, "facts": [ { @@ -751741,9 +763954,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751804,10 +764029,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IM6001-WLP01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-WLP01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IM6001-WLP01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-WLP01.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-WLP01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_IM6001-WLP01.html" }, { "field": "Exposed fields", @@ -751852,7 +764092,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" }, "facts": [ { @@ -751902,6 +764142,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -751964,8 +764212,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STS-IRM-250.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STSS-IRM-001.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STSS-IRM-001.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STSS-IRM-001.html" }, { "field": "Exposed fields", @@ -752009,7 +764267,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + ioBroker" }, "facts": [ { @@ -752059,6 +764317,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -752121,8 +764387,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STS-IRM-251.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-IRM-251.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-IRM-251.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-IRM-251.html" }, { "field": "Exposed fields", @@ -752278,8 +764554,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STS-OUT-US-2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_GP-U999SJVLFEB.html" }, { "field": "Exposed fields", @@ -752319,7 +764595,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -752369,6 +764645,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -752431,8 +764711,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STS-PRS-251.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-PRS-251.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-PRS-251.html" }, { "field": "Exposed fields", @@ -752473,7 +764758,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -752523,6 +764808,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -752585,8 +764874,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/STS-WTR-250.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-WTR-250.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_STS-WTR-250.html" }, { "field": "Exposed fields", @@ -753060,7 +765354,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -753107,6 +765401,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -753170,10 +765468,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SZ-SRN12N.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_SZ-SRN12.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SZ-SRN12N.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/SmartThings_SZ-SRN12.html" }, { "field": "Exposed fields", @@ -761333,7 +773636,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota + ioBroker + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -761383,6 +773686,26 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -761445,8 +773768,33 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/BASICZBR3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_BASICZBR3.html" }, { "field": "Exposed fields", @@ -763590,7 +775938,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz + ZHA + deCONZ + SONOFF iHost" }, "facts": [ { @@ -763637,9 +775985,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -763700,10 +776064,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S26R2ZB.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_S26R2ZB.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_S26R2ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/S26R2ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_S26R2ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_S26R2ZB.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_S26R2ZB.html" }, { "field": "Exposed fields", @@ -764667,7 +777051,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + Tasmota + deCONZ + SONOFF iHost" }, "facts": [ { @@ -764714,9 +777098,29 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -764777,10 +777181,35 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-01.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01.html" }, { "field": "Exposed fields", @@ -765107,7 +777536,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost + Zigbee4Domoticz" }, "facts": [ { @@ -765157,6 +777586,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -765219,8 +777656,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-01P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01P.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-01P.html" }, { "field": "Exposed fields", @@ -765261,7 +777708,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ + Tasmota + SONOFF iHost" }, "facts": [ { @@ -765308,9 +777755,29 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -765388,10 +777855,35 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-02.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02.html" }, { "field": "Exposed fields", @@ -765581,7 +778073,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + SONOFF iHost" }, "facts": [ { @@ -765628,9 +778120,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -765691,10 +778195,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-02D.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02D.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-02D.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02D.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02D.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02D.html" }, { "field": "Exposed fields", @@ -766303,8 +778822,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-02P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-02P.html" }, { "field": "Exposed fields", @@ -766648,7 +779167,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ + Tasmota + SONOFF iHost" }, "facts": [ { @@ -766695,9 +779214,29 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -766767,10 +779306,35 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-03.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-03.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03.html" }, { "field": "Exposed fields", @@ -766814,7 +779378,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -766864,6 +779428,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -766926,8 +779494,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-03P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-03P.html" }, { "field": "Exposed fields", @@ -767107,7 +779680,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + Zigbee4Domoticz + deCONZ + Tasmota + SONOFF iHost" }, "facts": [ { @@ -767154,9 +779727,29 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -767222,10 +779815,35 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNZB-04.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04.html" }, { "field": "Exposed fields", @@ -767382,8 +780000,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-04P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-04P.html" }, { "field": "Exposed fields", @@ -767679,8 +780297,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-05P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-05P.html" }, { "field": "Exposed fields", @@ -767718,7 +780336,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + Tasmota + SONOFF iHost" }, "facts": [ { @@ -767768,6 +780386,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -767830,8 +780460,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNZB-06P.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-06P.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-06P.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-06P.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SNZB-06P.html" }, { "field": "Exposed fields", @@ -768268,8 +780913,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SWV.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_SWV.html" }, { "field": "Exposed fields", @@ -769394,7 +782039,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -769441,6 +782086,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -769504,10 +782153,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TRVZB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_TRVZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TRVZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_TRVZB.html" }, { "field": "Exposed fields", @@ -770109,8 +782763,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBM5-1C-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBM5-1C-120.html" }, { "field": "Exposed fields", @@ -770414,8 +783068,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBM5-2C-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBM5-2C-120.html" }, { "field": "Exposed fields", @@ -770721,8 +783375,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBM5-3C-120.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBM5-3C-120.html" }, { "field": "Exposed fields", @@ -770918,7 +783572,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -770968,6 +783622,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -771030,8 +783692,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBMicro.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMicro.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMicro.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMicro.html" }, { "field": "Exposed fields", @@ -771076,7 +783748,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -771123,9 +783795,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -771186,10 +783874,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZBMINI.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBMINI.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI.html" }, { "field": "Exposed fields", @@ -771228,7 +783936,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + Zigbee4Domoticz + deCONZ + SONOFF iHost" }, "facts": [ { @@ -771275,9 +783983,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -771338,10 +784062,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZBMINI-L.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI-L.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBMINI-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI-L.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI-L.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINI-L.html" }, { "field": "Exposed fields", @@ -771381,7 +784125,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + SONOFF iHost + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -771431,6 +784175,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -771493,8 +784249,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBMINIL2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINIL2.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINIL2.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINIL2.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINIL2.html" }, { "field": "Exposed fields", @@ -771646,8 +784417,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZBMINIR2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sonoff_ZBMINIR2.html" }, { "field": "Exposed fields", @@ -773602,7 +786373,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -773652,6 +786423,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -773714,8 +786489,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SMT402AD.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Stelpro_SMT402AD.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Stelpro_SMT402AD.html" }, { "field": "Exposed fields", @@ -774341,7 +787121,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -774387,6 +787167,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -774447,6 +787231,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/STZB402.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Stelpro_STZB402.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -774492,7 +787281,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -774538,6 +787327,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -774598,6 +787391,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/50208693.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yphix_50208693.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -778165,7 +790963,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -778211,6 +791009,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -778271,6 +791077,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9001K12-DIM-Z4.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K12-DIM-Z4.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K12-DIM-Z4.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -778309,7 +791125,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -778355,6 +791171,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -778420,6 +791244,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/VES-ZB-REM-013.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K12-DIM-Z4.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K12-DIM-Z4.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -778456,7 +791290,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -778502,6 +791336,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -778562,6 +791400,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9001K12-DIM-Z5.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K12-DIM-Z5.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779023,7 +791866,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -779069,6 +791912,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -779129,6 +791976,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9001K2-DIM2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K2-DIM2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779167,7 +792019,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -779213,6 +792065,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -779278,6 +792134,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/VES-ZB-WAL-006.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K2-DIM2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779437,7 +792298,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -779483,6 +792344,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -779543,6 +792408,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ROB_200-008-0.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K4-DIM2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779583,7 +792453,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -779629,6 +792499,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -779694,6 +792568,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/VES-ZB-WAL-011.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K4-DIM2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779853,7 +792732,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -779899,6 +792778,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -779959,6 +792842,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9001K8-DIM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K8-DIM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -779997,7 +792885,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -780043,6 +792931,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -780103,6 +792995,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HGZB-04D_HGZB-4D-UK.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K8-DIM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -780145,7 +793042,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -780191,6 +793088,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -780256,6 +793157,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/VES-ZB-WAL-012.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9001K8-DIM.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -782559,7 +795465,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -782609,6 +795515,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -782670,6 +795580,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9040A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9040A.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -782816,8 +795731,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9040A-S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9040A-S.html" }, { "field": "Exposed fields", @@ -784198,7 +797113,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -784244,6 +797159,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -784304,6 +797227,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SR-ZG9080A.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9080A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9080A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -784343,7 +797276,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -784389,6 +797322,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -784454,6 +797395,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/VES-ZB-MOT-019.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9080A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9080A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -785874,7 +798825,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -785921,6 +798872,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -785980,6 +798935,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9101SAC-HP.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG9101SAC-HP.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -788924,7 +801884,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -788970,6 +801930,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -789030,6 +801994,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZG2858A.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sunricher_SR-ZG2858A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -790740,7 +803709,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -790786,6 +803755,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -790846,6 +803819,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SWO-MOS1PA.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Swann_SWO-MOS1PA.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -792044,7 +805022,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -792094,6 +805072,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -792156,8 +805138,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/72569.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_72569.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_72569.html" }, { "field": "Exposed fields", @@ -792314,8 +805301,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/72922-A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_72922.html" }, { "field": "Exposed fields", @@ -792355,7 +805342,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -792405,6 +805392,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -792467,8 +805458,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/73693.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73693.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73693.html" }, { "field": "Exposed fields", @@ -792519,7 +805515,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -792565,6 +805561,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -792625,6 +805625,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/73739.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73739.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -792674,7 +805679,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -792720,6 +805725,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -792780,6 +805789,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/73740.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73740.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -792822,7 +805836,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -792868,6 +805882,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -792928,6 +805946,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/73741.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73741.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -792976,7 +805999,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -793022,6 +806045,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -793082,6 +806109,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/73742.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73742.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -793236,8 +806268,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/73743.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_73743.html" }, { "field": "Exposed fields", @@ -793577,7 +806609,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -793623,6 +806655,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -793683,6 +806719,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/74282.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_74282.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -793982,8 +807023,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/74388.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Sylvania_74388.html" }, { "field": "Exposed fields", @@ -796216,8 +809257,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/TCP_Smart_TBUWTRV.html" }, { "field": "Exposed fields", @@ -796609,7 +809650,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -796655,6 +809696,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -796715,6 +809760,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/XHK1-TC.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xfinity_XHK1-TC.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -797038,8 +810088,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_wall_outlet.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Teekar_SWP86-01OG.html" }, { "field": "Exposed fields", @@ -797334,8 +810384,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CL001.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_CL001.html" }, { "field": "Exposed fields", @@ -797673,7 +810723,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -797719,6 +810769,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -797779,6 +810833,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TERNCY-DC01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-DC01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -797963,7 +811022,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA" }, "facts": [ { @@ -798010,6 +811069,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -798073,10 +811136,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TERNCY-PP01.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-PP01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TERNCY-PP01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-PP01.html" }, { "field": "Exposed fields", @@ -798117,7 +811185,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -798164,9 +811232,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -798227,10 +811307,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TERNCY-SD01.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-SD01.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-SD01.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TERNCY-SD01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-SD01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Terncy_TERNCY-SD01.html" }, { "field": "Exposed fields", @@ -798854,8 +811949,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM79E-DT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM79E-DT.html" }, { "field": "Exposed fields", @@ -798901,7 +811996,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -798948,6 +812043,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -799016,10 +812115,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0202.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0202.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0202.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0202.html" }, { "field": "Exposed fields", @@ -799169,8 +812273,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tesla_Smart_TSL-SEN-DOOR.html" }, { "field": "Exposed fields", @@ -799322,8 +812426,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0204.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tesla_Smart_TSL-SEN-GAS.html" }, { "field": "Exposed fields", @@ -799606,8 +812710,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0205.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tesla_Smart_TSL-SEN-SMOKE.html" }, { "field": "Exposed fields", @@ -799801,8 +812905,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tesla_Smart_TSL-TRV-GS361A.html" }, { "field": "Exposed fields", @@ -800029,8 +813133,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TV02-Zigbee.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tesla_Smart_TSL-TRV-TV01ZG.html" }, { "field": "Exposed fields", @@ -800323,7 +813427,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -800370,9 +813474,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -800514,10 +813630,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/HY368.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HY368.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hysen_HY368.html" }, { "field": "Exposed fields", @@ -801900,7 +815031,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -801946,6 +815077,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -802006,6 +815141,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S57003.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/The_Light_Group_S57003.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -803196,8 +816336,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RDS17BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RDS17BZ.html" }, { "field": "Exposed fields", @@ -803382,7 +816522,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -803432,6 +816572,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -803494,8 +816638,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RMS16BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RMS16BZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RMS16BZ.html" }, { "field": "Exposed fields", @@ -804072,8 +817221,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSB015BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSB015BZ.html" }, { "field": "Exposed fields", @@ -804373,8 +817522,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSB22BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSB22BZ.html" }, { "field": "Exposed fields", @@ -805247,8 +818396,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSNL02043Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSNL02043Z.html" }, { "field": "Exposed fields", @@ -805675,8 +818824,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSP019BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSP019BZ.html" }, { "field": "Exposed fields", @@ -805714,7 +818863,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -805761,6 +818910,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -805824,10 +818977,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/3RSP02028BZ.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSP02028BZ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSP02028BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSP02028BZ.html" }, { "field": "Exposed fields", @@ -806919,8 +820077,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSS008Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSS008Z.html" }, { "field": "Exposed fields", @@ -807074,8 +820232,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RSS009Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RSS009Z.html" }, { "field": "Exposed fields", @@ -807405,7 +820563,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -807455,6 +820613,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -807517,8 +820679,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RTHS24BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RTHS24BZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RTHS24BZ.html" }, { "field": "Exposed fields", @@ -807672,8 +820839,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RVS01031Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RVS01031Z.html" }, { "field": "Exposed fields", @@ -808155,7 +821322,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -808205,6 +821372,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -808267,8 +821438,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/3RWS18BZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RWS18BZ.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Third_Reality_3RWS18BZ.html" }, { "field": "Exposed fields", @@ -810292,7 +823468,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -810339,9 +823515,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -810423,10 +823607,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TO-Q-SY1-JZT.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-JZT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TO-Q-SY1-JZT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-JZT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-JZT.html" }, { "field": "Exposed fields", @@ -810471,7 +823665,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ" }, "facts": [ { @@ -810518,9 +823712,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -810590,10 +823792,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TO-Q-SY1-ZT.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-ZT.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TO-Q-SY1-ZT.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-ZT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY1-ZT.html" }, { "field": "Exposed fields", @@ -810805,7 +824017,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -810853,7 +824065,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -810912,7 +824124,7 @@ "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY2-JZT.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tongou_TO-Q-SY2-JZT.html" }, @@ -813736,7 +826948,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -813782,6 +826994,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -813842,6 +827062,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZCTS-808.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZCTS-808.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZCTS-808.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -813882,7 +827112,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -813934,7 +827164,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -814002,7 +827232,7 @@ "url": "https://zigbee.blakadder.com/Trust_ZLED-2705.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Trust_ZLED-2705.html" }, @@ -814040,7 +827270,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -814087,6 +827317,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -814150,10 +827392,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZLED-2709.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZLED-2709.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZLED-2709.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZLED-2709.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZLED-2709.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZLED-2709.html" }, { "field": "Exposed fields", @@ -814195,7 +827452,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + ZHA" + "value": "Zigbee2MQTT + ioBroker + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -814247,7 +827504,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -814315,7 +827572,7 @@ "url": "https://zigbee.blakadder.com/Trust_ZLED-EC2206.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Trust_ZLED-EC2206.html" }, @@ -814504,7 +827761,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -814550,6 +827807,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -814615,6 +827876,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZLED-TUNE9.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZLED-TUNE9.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -814659,7 +827925,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ" }, "facts": [ { @@ -814706,9 +827972,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -814769,10 +828043,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZPIR-8000.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZPIR-8000.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZPIR-8000.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZPIR-8000.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZPIR-8000.html" }, { "field": "Exposed fields", @@ -814813,7 +828097,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota" }, "facts": [ { @@ -814863,6 +828147,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -814930,8 +828218,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZSDR-850.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/KlikAanKlikUit_ZSDR-850.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/KlikAanKlikUit_ZSDR-850.html" }, { "field": "Exposed fields", @@ -814971,7 +828264,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -815017,6 +828310,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -815077,6 +828374,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZWLD-100.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZWLD-100.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -815117,7 +828419,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -815163,6 +828465,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -815223,6 +828537,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZYCT-202.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZYCT-202.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZYCT-202.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Trust_ZYCT-202.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -815261,7 +828590,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -815311,6 +828640,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -815373,8 +828710,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/tubeszb.router.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/tubeszb.router.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/tubeszb.router.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/tubeszb.router.html" }, { "field": "Exposed fields", @@ -819342,7 +832689,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -819388,6 +832735,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -819457,6 +832808,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/BAC-002-ALZB.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/HKGK_BAC-002-ALZB.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -820422,7 +833778,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -820472,6 +833828,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -820534,8 +833894,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/CK-BL702-AL-01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_CK-BL702-AL-01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/eWeLink_CK-BL702-AL-01.html" }, { "field": "Exposed fields", @@ -821860,7 +835225,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -821907,6 +835272,10 @@ "label": "ZHA", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -821970,6 +835339,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_DS-112L-3.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_DS-112L-3.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -823315,8 +836689,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ERS-10TZBVK-AA.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ERS-10TZBVK-AA.html" }, { "field": "Exposed fields", @@ -824058,8 +837432,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GDC311ZBQ1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_GDC311ZBQ1.html" }, { "field": "Exposed fields", @@ -824548,8 +837922,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/houseiq_GTZ02.html" }, { "field": "Exposed fields", @@ -825129,8 +838503,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/HY08WE.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_HY08WE.html" }, { "field": "Exposed fields", @@ -825601,7 +838975,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -825648,9 +839022,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -825711,10 +839093,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_iH-F001.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_iH-F001.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_iH-F001.html" }, { "field": "Exposed fields", @@ -825919,7 +839311,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + SONOFF iHost" }, "facts": [ { @@ -825969,6 +839361,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -826048,8 +839452,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IH-K009.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH-K009.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH-K009.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH-K009.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH-K009.html" }, { "field": "Exposed fields", @@ -826203,8 +839622,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IH-K663.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH-K663.html" }, { "field": "Exposed fields", @@ -826240,7 +839659,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -826286,6 +839705,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -826363,6 +839786,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IH012-RT01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZM-RT20.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -826405,7 +839833,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + SONOFF iHost" }, "facts": [ { @@ -826452,9 +839880,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -826520,10 +839956,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/IH012-RT02.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH012-RT02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/IH012-RT02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH012-RT02.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_IH012-RT02.html" }, { "field": "Exposed fields", @@ -826946,7 +840392,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -826992,6 +840438,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -827057,6 +840511,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/JM-TRH-ZGB-V1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_JM-TRH-ZGB-V1.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_JM-TRH-ZGB-V1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -827103,7 +840567,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -827150,9 +840614,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -827218,10 +840694,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/KCTW1Z.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_KCTW1Z.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/KCTW1Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_KCTW1Z.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_KCTW1Z.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_KCTW1Z.html" }, { "field": "Exposed fields", @@ -827565,7 +841056,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -827612,9 +841103,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -827680,10 +841179,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/LCZ030.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-TH02B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LCZ030.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-TH02B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Neo_NAS-TH02B.html" }, { "field": "Exposed fields", @@ -828633,7 +842142,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -828679,6 +842188,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -829020,6 +842537,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_M515EGZT.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_M515EGZT.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -830525,8 +844052,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MG-ZG01W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/MakeGood_MG-ZG01W.html" }, { "field": "Exposed fields", @@ -830687,8 +844214,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MG-ZG02W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/MakeGood_MG-ZG02W.html" }, { "field": "Exposed fields", @@ -830851,8 +844378,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MG-ZG03W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/MakeGood_MG-ZG03W.html" }, { "field": "Exposed fields", @@ -831392,7 +844919,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + Zigbee2MQTT + ioBroker + deCONZ + Tasmota" + "value": "ZHA + Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + deCONZ" }, "facts": [ { @@ -831444,12 +844971,16 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { "label": "Tasmota", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -831512,7 +845043,7 @@ "url": "https://zigbee.blakadder.com/Tuya_MIR-TE100.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_MIR-TE100.html" }, @@ -831521,6 +845052,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_MIR-TE100.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_MIR-TE100.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -831901,8 +845437,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MTG075-ZB-RL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_MTG275-ZB-RL.html" }, { "field": "Exposed fields", @@ -832298,8 +845834,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MTG275-ZB-RL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_MTG275-ZB-RL.html" }, { "field": "Exposed fields", @@ -833867,7 +847403,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -833915,7 +847451,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -833974,7 +847510,7 @@ "url": "https://zigbee.blakadder.com/Tuya_QS-Zigbee-CP03.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_QS-Zigbee-CP03.html" }, @@ -834141,7 +847677,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + Tasmota + deCONZ" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -834189,7 +847725,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -834248,7 +847784,7 @@ "url": "https://zigbee.blakadder.com/QS-Zigbee-S05-EC.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/QS-Zigbee-S05-EC.html" }, @@ -834953,7 +848489,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -835003,6 +848539,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -835078,8 +848622,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/QT-07S.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" }, { "field": "Exposed fields", @@ -839595,7 +853149,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -839639,7 +853193,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -839693,7 +853247,7 @@ "url": "https://zigbee.blakadder.com/Tuya_SML-01Z-ES-16A.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_SML-01Z-ES-16A.html" }, @@ -840015,7 +853569,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -840063,7 +853617,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -840122,7 +853676,7 @@ "url": "https://zigbee.blakadder.com/Tuya_SML-03Z.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_SML-03Z.html" }, @@ -840157,7 +853711,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ioBroker + ZHA + Tasmota + SONOFF iHost" }, "facts": [ { @@ -840204,9 +853758,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -840267,10 +853837,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SNTZ007.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SNTZ007.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SNTZ007.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SNTZ007.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SNTZ007.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SNTZ007.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SNTZ007.html" }, { "field": "Exposed fields", @@ -840454,7 +854044,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -840500,6 +854090,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -840565,6 +854159,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/SPM01.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_SPM01-D2TZ.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -842035,8 +855634,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SS9600ZB.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS9600ZB.html" }, { "field": "Exposed fields", @@ -844239,8 +857838,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TM-YKQ004.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TM-YKQ004.html" }, { "field": "Exposed fields", @@ -844676,7 +858275,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + deCONZ + ZHA" + "value": "Tasmota + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -844723,6 +858322,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -844782,6 +858385,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_TMZ02L.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TMZ02L.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -844991,7 +858599,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -845038,9 +858646,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -845110,10 +858726,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TRV601.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Haozee_TRV601.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TRV601.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Haozee_TRV601.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Haozee_TRV601.html" }, { "field": "Exposed fields", @@ -846124,8 +859750,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0001_fingerbot.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ADFB.html" }, { "field": "Exposed fields", @@ -846759,7 +860385,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -846809,6 +860435,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -846920,8 +860554,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0001_switch_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OXT_SWTZ21.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OXT_SWTZ21.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/OXT_SWTZ21.html" }, { "field": "Exposed fields", @@ -847935,7 +861579,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -847982,6 +861626,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -848045,10 +861693,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0003.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0003.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0003.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0003.html" }, { "field": "Exposed fields", @@ -849296,8 +862949,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0004.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0004.html" }, { "field": "Exposed fields", @@ -849603,8 +863256,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0004_switch_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-04Z.html" }, { "field": "Exposed fields", @@ -850402,7 +864055,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -850452,6 +864105,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -850514,8 +864179,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0012.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0012.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0012.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0012.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/BSEED_TS0012.html" }, { "field": "Exposed fields", @@ -850557,7 +864237,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -850607,6 +864287,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -850690,8 +864382,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0012_switch_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-02Z-L.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-02Z-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-02Z-L.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-02Z-L.html" }, { "field": "Exposed fields", @@ -850876,7 +864583,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ + Tasmota" }, "facts": [ { @@ -850926,6 +864633,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -851005,8 +864724,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0013_switch_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-03Z-L.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-03Z-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-03Z-L.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_SML-03Z-L.html" }, { "field": "Exposed fields", @@ -851332,7 +865066,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -851382,6 +865116,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -851444,8 +865186,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0041.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0041.html" }, { "field": "Exposed fields", @@ -852594,8 +866346,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0046.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_SS9600ZB.html" }, { "field": "Exposed fields", @@ -852779,7 +866531,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -852826,9 +866578,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -852926,10 +866686,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS004F.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-4ZAA-CN.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS004F.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-4ZAA-CN.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Eardatek_ESW-4ZAA-CN.html" }, { "field": "Exposed fields", @@ -854001,7 +867771,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -854051,6 +867821,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -854118,8 +867892,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0111_valve.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-V01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-V01.html" }, { "field": "Exposed fields", @@ -854300,7 +868079,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -854350,6 +868129,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -854411,6 +868194,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_TS011F.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS011F.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -856215,8 +870003,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_plug_2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM-ZBCZ-EU.html" }, { "field": "Exposed fields", @@ -856565,7 +870353,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + ZHA" }, "facts": [ { @@ -856612,6 +870400,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -856680,10 +870476,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS011F_socket_module.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS011F_socket_module.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/LoraTap_RR400ZB.html" }, { "field": "Exposed fields", @@ -857930,7 +871736,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -857977,6 +871783,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -858045,10 +871855,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0202.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0202.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0202.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0202.html" }, { "field": "Exposed fields", @@ -858539,7 +872354,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + deCONZ + SONOFF iHost" }, "facts": [ { @@ -858586,9 +872401,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "SONOFF iHost", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -858649,10 +872476,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0203.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" + }, + { + "field": "SONOFF iHost", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0203.html" }, { "field": "Exposed fields", @@ -858839,7 +872681,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Tasmota" }, "facts": [ { @@ -858885,6 +872727,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -858945,6 +872795,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0204.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0204.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0204.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -858982,7 +872842,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Tasmota + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -859029,9 +872889,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -859092,10 +872964,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0205.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0205.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0205.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0205.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0205.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0205.html" }, { "field": "Exposed fields", @@ -860054,7 +873941,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -860104,6 +873991,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -860166,8 +874057,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0210.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0210.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0210.html" }, { "field": "Exposed fields", @@ -860382,7 +874278,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -860428,6 +874324,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -860537,6 +874441,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0215A_sos.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0215A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0215A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -860574,7 +874488,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + deCONZ" }, "facts": [ { @@ -860620,6 +874534,18 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -860680,6 +874606,21 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0216.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0216.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0216.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0216.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -860720,7 +874661,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -860767,6 +874708,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -860830,10 +874783,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0218.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0218.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0218.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0218.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0218.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0218.html" }, { "field": "Exposed fields", @@ -862498,7 +876466,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -862548,6 +876516,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -862610,8 +876586,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0501B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0501B.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0501B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0501B.html" }, { "field": "Exposed fields", @@ -862947,7 +876933,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ioBroker + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -862994,9 +876980,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -863057,10 +877055,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0502A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0502A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0502A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0502A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0502A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0502A.html" }, { "field": "Exposed fields", @@ -863254,7 +877267,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -863300,6 +877313,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -863365,6 +877382,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0503A.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0503A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -863408,7 +877430,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -863455,9 +877477,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -863518,10 +877552,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0503B.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0503B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0503B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0503B.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0503B.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0503B.html" }, { "field": "Exposed fields", @@ -863721,7 +877770,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -863768,6 +877817,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -863831,10 +877884,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0504B.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0504B.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0504B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0504B.html" }, { "field": "Exposed fields", @@ -864033,7 +878091,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -864079,6 +878137,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -864139,6 +878201,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0505A.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0505A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -864186,7 +878253,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -864232,6 +878299,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -864297,6 +878368,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0505A_led.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0505A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -864338,7 +878414,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -864390,7 +878466,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -864454,7 +878530,7 @@ "url": "https://zigbee.blakadder.com/Tuya_TS0505B.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_TS0505B.html" }, @@ -865262,7 +879338,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -865312,6 +879388,10 @@ { "label": "deCONZ", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -865373,6 +879453,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_smoke.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_smoke.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -871122,8 +885207,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_2.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZS-EUUSD2.html" }, { "field": "Exposed fields", @@ -871299,8 +885384,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_dimmer_3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Moes_ZS-EUUSD3.html" }, { "field": "Exposed fields", @@ -871811,7 +885896,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -871857,6 +885942,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -871930,6 +886019,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_din.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/RTX_ZCB16-2P.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -874668,7 +888762,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA" }, "facts": [ { @@ -874715,6 +888809,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -874791,10 +888893,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_human_presence_sensor.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_PS-HPS.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_PS-HPS.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_human_presence_sensor.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_PS-HPS.html" }, { "field": "Exposed fields", @@ -876329,8 +890441,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_rcbo.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Hoch_ZJSBL7.html" }, { "field": "Exposed fields", @@ -876385,7 +890497,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -876435,6 +890547,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -876510,8 +890626,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_smart_air_house_keeper.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_DCR-KQG.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_DCR-KQG.html" }, { "field": "Exposed fields", @@ -876557,7 +890678,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -876607,6 +890728,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -876726,8 +890855,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_smart_human_presence_sensor_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZY-M100-S.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZY-M100-S.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZY-M100-S.html" }, { "field": "Exposed fields", @@ -877087,7 +891226,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + Tasmota + ZHA" }, "facts": [ { @@ -877134,6 +891273,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -877210,10 +891357,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_smoke_1.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_smoke_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_YG400A.html" }, { "field": "Exposed fields", @@ -878006,7 +892163,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -878056,6 +892213,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -878155,8 +892320,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_soil.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yieryi_THE01840.html" }, { "field": "Exposed fields", @@ -879447,7 +893622,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -879494,9 +893669,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -879578,10 +893761,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_switch_3_gang.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0601_switch_3_gang.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_switch_3_gang.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0601_switch_3_gang.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS0601_switch_3_gang.html" }, { "field": "Exposed fields", @@ -882009,7 +896202,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ZHA" }, "facts": [ { @@ -882056,6 +896249,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -882200,10 +896401,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat_3.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_thermostat_3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Avatto_TRV06.html" }, { "field": "Exposed fields", @@ -887862,7 +902073,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -887909,9 +902120,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -887972,10 +902191,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS130F.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS130F.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS130F.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS130F.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_TS130F.html" }, { "field": "Exposed fields", @@ -888164,7 +902393,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -888214,6 +902443,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -888276,8 +902509,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TT001ZAV20.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSC10WT.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Nedis_ZBSC10WT.html" }, { "field": "Exposed fields", @@ -888315,7 +902553,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -888363,7 +902601,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -888422,7 +902660,7 @@ "url": "https://zigbee.blakadder.com/Tuya_TV02.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_TV02.html" }, @@ -890319,7 +904557,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -890366,6 +904604,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -890518,10 +904764,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WHD02.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WHD02.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WHD02.html" }, { "field": "Exposed fields", @@ -890681,8 +904937,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WL-19DWZ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WL-19DWZ.html" }, { "field": "Exposed fields", @@ -890727,7 +904983,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + Tasmota + deCONZ" + "value": "Zigbee2MQTT + ZHA + Tasmota + Zigbee4Domoticz" }, "facts": [ { @@ -890779,7 +905035,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -890843,7 +905099,7 @@ "url": "https://zigbee.blakadder.com/Tuya_WL-898WZ.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_WL-898WZ.html" }, @@ -890878,7 +905134,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -890925,6 +905181,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -890984,6 +905244,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_WL-TH02.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WL-TH02.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -891169,7 +905434,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" }, "facts": [ { @@ -891219,6 +905484,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -891310,8 +905583,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WSD500A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WSD500A.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WSD500A.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_WSD500A.html" }, { "field": "Exposed fields", @@ -891753,7 +906036,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -891803,6 +906086,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -891870,8 +906157,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/X5H-GB-B.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beok_TGR85-ZB.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Beok_TGR85-ZB.html" }, { "field": "Exposed fields", @@ -893444,8 +907736,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/YSR-MINI-Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ysrsai_YSR-MINI-Z.html" }, { "field": "Exposed fields", @@ -895130,7 +909422,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -895180,6 +909472,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -895242,8 +909538,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZD06.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZD06.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZD06.html" }, { "field": "Exposed fields", @@ -895282,7 +909583,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -895329,6 +909630,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -895392,10 +909697,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZD08.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZD08.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZD08.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZD08.html" }, { "field": "Exposed fields", @@ -896975,7 +911285,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -897025,6 +911335,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -897104,8 +911418,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG-102ZL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-102ZL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-102ZL.html" }, { "field": "Exposed fields", @@ -897449,7 +911768,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -897499,6 +911818,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -897598,8 +911925,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG-204ZL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-204ZL.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-204ZL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-204ZL.html" }, { "field": "Exposed fields", @@ -897953,7 +912290,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -898003,6 +912340,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -898082,8 +912423,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG-205Z_A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-205Z-A.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-205Z-A.html" }, { "field": "Exposed fields", @@ -898727,7 +913073,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -898777,6 +913123,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -898876,8 +913230,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZG-227ZL.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-227ZL.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-227ZL.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG-227ZL.html" }, { "field": "Exposed fields", @@ -899075,7 +913439,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ + Tasmota" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -899126,6 +913490,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "Tasmota", "value": "Support record available" @@ -899190,6 +913558,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_ZG227C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZG227C.html" + }, { "field": "Tasmota", "source": "Blakadder Zigbee record", @@ -899785,7 +914158,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "deCONZ + Zigbee2MQTT + ZHA" + "value": "deCONZ + Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -899832,6 +914205,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -899891,6 +914268,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_ZM-CG205.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZM-CG205.html" + }, { "field": "ZHA", "source": "Blakadder Zigbee record", @@ -900091,7 +914473,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -900137,6 +914519,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -900202,6 +914592,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZMS01.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZMS01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZMS01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -900237,7 +914637,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA" }, "facts": [ { @@ -900284,6 +914684,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -900396,10 +914804,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZN231392.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_valve.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_valve.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZN231392.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_valve.html" }, { "field": "Exposed fields", @@ -902298,7 +916716,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz" }, "facts": [ { @@ -902348,6 +916766,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -902499,8 +916925,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZTH01.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZTH01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZTH01.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZTH01.html" }, { "field": "Exposed fields", @@ -904552,7 +918988,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + SONOFF iHost" + "value": "Zigbee2MQTT + ioBroker + Tasmota + deCONZ + Zigbee4Domoticz + SONOFF iHost" }, "facts": [ { @@ -904607,6 +919043,10 @@ "label": "deCONZ", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "SONOFF iHost", "value": "Support record available" @@ -904676,6 +919116,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Tuya_ZXZTH.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZXZTH.html" + }, { "field": "SONOFF iHost", "source": "Blakadder Zigbee record", @@ -905323,7 +919768,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -905373,6 +919818,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -905492,8 +919941,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZY-M100-L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZY-M100-L.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Tuya_ZY-M100-L.html" }, { "field": "Exposed fields", @@ -907143,7 +921597,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -907193,6 +921647,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -907255,8 +921713,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/C4.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_C4.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_C4.html" }, { "field": "Exposed fields", @@ -907294,7 +921757,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -907340,6 +921803,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -907400,6 +921867,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/D1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_D1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -907904,7 +922376,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -907950,6 +922422,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -908010,6 +922486,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/J1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_J1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -908451,7 +922932,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -908497,6 +922978,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -908557,6 +923042,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_S1.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -908599,7 +923089,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -908645,6 +923135,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -908705,6 +923199,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S1-R.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_S1-R.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -908748,7 +923247,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -908794,6 +923293,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -908854,6 +923357,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/S2.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/ubisys_S2.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -909146,8 +923654,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TWV.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Uhome_TWV.html" }, { "field": "Exposed fields", @@ -909339,8 +923847,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GS361A-H04.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Unitec_30946.html" }, { "field": "Exposed fields", @@ -909545,7 +924053,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ + ioBroker" }, "facts": [ { @@ -909591,6 +924099,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -909651,6 +924167,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/XHK1-UE.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xfinity_XHK1-UE.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xfinity_XHK1-UE.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -909700,7 +924226,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Tasmota" }, "facts": [ { @@ -909746,6 +924272,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -909806,6 +924336,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/XHS1-UE.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/UEI_XHS1-UE.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -909960,8 +924495,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/XHS2-UE.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/UEI_XHS2-UE.html" }, { "field": "Exposed fields", @@ -910845,8 +925380,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/SM-AZ713.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/UseeLink_SM-AZ713.html" }, { "field": "Exposed fields", @@ -911188,7 +925723,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -911238,6 +925773,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -911299,6 +925838,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/UseeLink_SM-SO306EZ-10.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/UseeLink_SM-SO306EZ-10.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -913796,7 +928340,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker" }, "facts": [ { @@ -913842,6 +928386,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -913902,6 +928450,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZK03840.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Viessmann_ZK03840.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -914371,8 +928924,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/C5850000.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Villeroy_Boch_C5850000.html" }, { "field": "Exposed fields", @@ -914706,7 +929259,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + deCONZ" }, "facts": [ { @@ -914752,6 +929305,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -914817,6 +929378,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/PTM_215Z.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Vimar_03906.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Vimar_03906.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -915247,8 +929818,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14592.0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Vimar_14592_16492_19592_20592.html" }, { "field": "Exposed fields", @@ -915561,7 +930132,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -915608,6 +930179,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -915671,10 +930246,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/14594.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Vimar_14594_16494_19594_20594.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/14594.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Vimar_14594_16494_19594_20594.html" }, { "field": "Exposed fields", @@ -916285,7 +930865,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -916335,6 +930915,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -916397,8 +930981,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MCT-340_E.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Visonic_MCT-340_E.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Visonic_MCT-340_E.html" }, { "field": "Exposed fields", @@ -921030,7 +935619,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + ZHA" }, "facts": [ { @@ -921077,6 +935666,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -921145,10 +935738,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/1GNNTS.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Weten_1GNNTS.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/1GNNTS.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Weten_1GNNTS.html" }, { "field": "Exposed fields", @@ -922199,7 +936797,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ZHA + deCONZ" + "value": "Zigbee2MQTT + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -922247,7 +936845,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -922306,7 +936904,7 @@ "url": "https://zigbee.blakadder.com/Wooley_SA-029.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Wooley_SA-029.html" }, @@ -923035,7 +937633,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -923081,6 +937679,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -923150,6 +937752,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/R7048.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7048.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -923189,7 +937796,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -923239,6 +937846,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -923314,8 +937925,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/R7049.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7049.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7049.html" }, { "field": "Exposed fields", @@ -923520,7 +938136,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -923566,6 +938182,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -923675,6 +938295,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/R7052.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7052.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -923833,7 +938458,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -923879,6 +938504,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -923972,6 +938601,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0215A_remote.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7054.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -924008,7 +938642,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Tasmota + deCONZ + ZHA" }, "facts": [ { @@ -924055,6 +938689,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -924123,10 +938765,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/R7060.html" }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7060.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7060.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/R7060.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7060.html" }, { "field": "Exposed fields", @@ -924282,8 +938934,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/R7067.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Woox_R7067.html" }, { "field": "Exposed fields", @@ -925335,7 +939987,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -925378,6 +940030,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -925432,6 +940088,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Xenon_SM-SW101-CZ.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xenon_SM-SW101-CZ.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -925615,7 +940276,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz" }, "facts": [ { @@ -925661,6 +940322,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -925721,6 +940390,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/A6121.html" }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_Vima_A6121.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_Vima_A6121.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -925759,7 +940438,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA + Tasmota" }, "facts": [ { @@ -925806,9 +940485,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -925869,10 +940560,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/GZCGQ01LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_GZCGQ01LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_GZCGQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/GZCGQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_GZCGQ01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_GZCGQ01LM.html" }, { "field": "Exposed fields", @@ -925909,7 +940615,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + ioBroker + deCONZ" }, "facts": [ { @@ -925959,6 +940665,14 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -926021,8 +940735,18 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JTQJ-BF-01LM_BW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTQJ-BF-01LM_BW.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTQJ-BF-01LM_BW.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTQJ-BF-01LM_BW.html" }, { "field": "Exposed fields", @@ -926067,7 +940791,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA + ioBroker + deCONZ + Tasmota" }, "facts": [ { @@ -926114,9 +940838,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -926177,10 +940917,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/JTYJ-GD-01LM_BW.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTYJ-GD-01LM_BW.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/JTYJ-GD-01LM_BW.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTYJ-GD-01LM_BW.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTYJ-GD-01LM_BW.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTYJ-GD-01LM_BW.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_JTYJ-GD-01LM_BW.html" }, { "field": "Exposed fields", @@ -926510,7 +941270,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -926557,9 +941317,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -926620,10 +941396,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MCCGQ01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MCCGQ01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MCCGQ01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MCCGQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MCCGQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MCCGQ01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_MCCGQ01LM.html" }, { "field": "Exposed fields", @@ -926665,7 +941461,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -926712,9 +941508,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -926775,10 +941587,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/MFKZQ01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/MFKZQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Aqara_MFKZQ01LM.html" }, { "field": "Exposed fields", @@ -926981,7 +941813,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ZHA + ioBroker" }, "facts": [ { @@ -927028,9 +941860,25 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -927091,10 +941939,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/RTCGQ01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_RTCGQ01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_RTCGQ01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_RTCGQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/RTCGQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_RTCGQ01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_RTCGQ01LM.html" }, { "field": "Exposed fields", @@ -927136,7 +942004,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + ioBroker + ZHA" }, "facts": [ { @@ -927183,6 +942051,18 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -927246,10 +942126,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WSDCGQ01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WSDCGQ01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WSDCGQ01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WSDCGQ01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WSDCGQ01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WSDCGQ01LM.html" }, { "field": "Exposed fields", @@ -927293,7 +942188,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ + Tasmota + ioBroker + ZHA" }, "facts": [ { @@ -927340,6 +942235,22 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -927403,10 +942314,30 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/WXKG01LM.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXKG01LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXKG01LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXKG01LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXKG01LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/WXKG01LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_WXKG01LM.html" }, { "field": "Exposed fields", @@ -930028,7 +944959,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + ioBroker + Tasmota" }, "facts": [ { @@ -930075,9 +945006,21 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -930138,10 +945081,25 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCZ02LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ02LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCZ02LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ02LM.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ02LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ02LM.html" }, { "field": "Exposed fields", @@ -930185,7 +945143,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA + Tasmota" }, "facts": [ { @@ -930232,9 +945190,17 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -930295,10 +945261,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZNCZ03LM.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ03LM.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCZ03LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ03LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ03LM.html" }, { "field": "Exposed fields", @@ -930342,7 +945318,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ + Zigbee4Domoticz + Tasmota" }, "facts": [ { @@ -930392,6 +945368,18 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "Tasmota", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -930454,8 +945442,23 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZNCZ04LM.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ04LM.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ04LM.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ04LM.html" + }, + { + "field": "Tasmota", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Xiaomi_ZNCZ04LM.html" }, { "field": "Exposed fields", @@ -930647,7 +945650,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -930694,6 +945697,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -930766,10 +945773,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_din_3.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DAC2161C.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_din_3.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/DAC2161C.html" }, { "field": "Exposed fields", @@ -933299,8 +948311,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/YMI70A.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yale_YMI70A.html" }, { "field": "Exposed fields", @@ -933789,7 +948801,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -933839,6 +948851,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -933901,8 +948917,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/YRD220_YRD221.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yale_YRD220-HA.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yale_YRD220-HA.html" }, { "field": "Exposed fields", @@ -936271,8 +951292,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/YRL-220L.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yale_YRL220-HA.html" }, { "field": "Exposed fields", @@ -939837,7 +954858,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz" }, "facts": [ { @@ -939883,6 +954904,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -939943,6 +954968,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/8718801528273.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ynoa_LA-GU10-CCT.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -939983,7 +955013,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -940029,6 +955059,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -940089,6 +955123,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/8718801528334.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ynoa_LA-AAN-UIT-7A.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -945052,7 +960091,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + deCONZ" }, "facts": [ { @@ -945098,6 +960137,10 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -945158,6 +960201,11 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/D10110.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yookee_D10110.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -946064,7 +961112,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -946108,7 +961156,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -946166,7 +961214,7 @@ "url": "https://zigbee.blakadder.com/Ysrsai_ZB-CT01.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Ysrsai_ZB-CT01.html" }, @@ -946328,7 +961376,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker" }, "facts": [ { @@ -946374,6 +961422,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "ioBroker", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -946434,6 +961490,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/YSR-MINI-01_dimmer.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ysrsai_ZB-DL01.html" + }, + { + "field": "ioBroker", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ysrsai_ZB-DL01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -946474,7 +961540,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -946520,6 +961586,14 @@ { "label": "Zigbee2MQTT", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -946589,6 +961663,16 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/YSR-MINI-01_rgbcct.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ysrsai_YSR-MINI-01.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Ysrsai_YSR-MINI-01.html" + }, { "field": "Exposed fields", "source": "Zigbee2MQTT", @@ -946782,7 +961866,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + ZHA + deCONZ" }, "facts": [ { @@ -946832,6 +961916,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -947175,8 +962263,13 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yushun_YS-MT750.html" + }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Yushun_YS-MT750.html" }, { "field": "Exposed fields", @@ -948680,7 +963773,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + Zigbee4Domoticz + ZHA" }, "facts": [ { @@ -948727,6 +963820,14 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -949071,10 +964172,20 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_AM43.html" + }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_AM43.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_AM43.html" }, { "field": "Exposed fields", @@ -949667,8 +964778,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_BCM500DS-TYZ.html" }, { "field": "Exposed fields", @@ -951066,7 +966177,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ + ioBroker + Tasmota + ZHA" + "value": "Zigbee2MQTT + Zigbee4Domoticz + ioBroker + Tasmota + ZHA" }, "facts": [ { @@ -951110,7 +966221,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -951176,7 +966287,7 @@ "url": "https://zigbee.blakadder.com/Zemismart_LXZB-41-AJ-3.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_LXZB-41-AJ-3.html" }, @@ -951766,8 +966877,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_M2805EGBZTN.html" }, { "field": "Exposed fields", @@ -951818,7 +966929,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -951865,6 +966976,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -952209,10 +967324,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_M515EGB.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_M515EGB.html" }, { "field": "Exposed fields", @@ -953744,8 +968864,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TB26-4.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_TB26-4.html" }, { "field": "Exposed fields", @@ -953908,8 +969028,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TB26-6.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_TB26-6.html" }, { "field": "Exposed fields", @@ -954215,7 +969335,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Tasmota + deCONZ + ZHA" + "value": "Tasmota + deCONZ + ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -954265,6 +969385,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -954326,6 +969450,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZB-L03C.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZB-L03C.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -954613,8 +969742,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZIGBEE-B09-UK.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_B90.html" }, { "field": "Exposed fields", @@ -954989,7 +970118,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + deCONZ" + "value": "Zigbee2MQTT + Zigbee4Domoticz + deCONZ" }, "facts": [ { @@ -955032,6 +970161,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "Zigbee4Domoticz", + "value": "Support record available" + }, { "label": "deCONZ", "value": "Support record available" @@ -955086,6 +970219,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZM-CSW002-D.html" }, + { + "field": "Zigbee4Domoticz", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM-CSW002-D.html" + }, { "field": "deCONZ", "source": "Blakadder Zigbee record", @@ -956293,7 +971431,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "Zigbee2MQTT + ioBroker + deCONZ + Tasmota + ZHA" + "value": "Zigbee2MQTT + ioBroker + Zigbee4Domoticz + Tasmota + ZHA + deCONZ" }, "facts": [ { @@ -956341,7 +971479,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" }, { @@ -956351,6 +971489,10 @@ { "label": "ZHA", "value": "Support record available" + }, + { + "label": "deCONZ", + "value": "Support record available" } ], "heading": "Platform compatibility" @@ -956408,7 +971550,7 @@ "url": "https://zigbee.blakadder.com/Zemismart_ZM-ZS3.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZM-ZS3.html" }, @@ -956422,6 +971564,11 @@ "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZM-ZS3.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM-ZS3.html" + }, { "field": "Reported features", "source": "Blakadder Zigbee record", @@ -956762,8 +971909,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM16EL-03_33.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM16EL.html" }, { "field": "Exposed fields", @@ -957457,8 +972604,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM25RX-08_30.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM25RX-08_30.html" }, { "field": "Exposed fields", @@ -957620,7 +972767,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -957667,6 +972814,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -957735,10 +972886,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/ZM25TQ.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM25TQ.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM25TQ.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM25TQ.html" }, { "field": "Exposed fields", @@ -958175,8 +973331,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM79E-DT.html" }, { "field": "Exposed fields", @@ -958509,8 +973665,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/ZM85EL-2Z.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZM85EL-2Z.html" }, { "field": "Exposed fields", @@ -961351,7 +976507,7 @@ "compatibility": { "label": "Works with", "status": "reported", - "value": "ZHA + deCONZ" + "value": "ZHA + Zigbee4Domoticz" }, "facts": [ { @@ -961395,7 +976551,7 @@ "value": "Support record available" }, { - "label": "deCONZ", + "label": "Zigbee4Domoticz", "value": "Support record available" } ], @@ -961449,7 +976605,7 @@ "url": "https://zigbee.blakadder.com/Zemismart_ZN-EC1E.html" }, { - "field": "deCONZ", + "field": "Zigbee4Domoticz", "source": "Blakadder Zigbee record", "url": "https://zigbee.blakadder.com/Zemismart_ZN-EC1E.html" }, @@ -963004,8 +978160,8 @@ }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/LXN59-2S7LX1.0.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zemismart_ZW-EU-02.html" }, { "field": "Exposed fields", @@ -963385,7 +978541,7 @@ "compatibility": { "label": "Works with", "status": "confirmed", - "value": "Zigbee2MQTT + ZHA" + "value": "Zigbee2MQTT + deCONZ + ZHA" }, "facts": [ { @@ -963432,6 +978588,10 @@ "label": "Zigbee2MQTT", "value": "Support record available" }, + { + "label": "deCONZ", + "value": "Support record available" + }, { "label": "ZHA", "value": "Support record available" @@ -963495,10 +978655,15 @@ "source": "Zigbee2MQTT", "url": "https://www.zigbee2mqtt.io/devices/Zen-01-W.html" }, + { + "field": "deCONZ", + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zen_Zen-01-W.html" + }, { "field": "ZHA", - "source": "Zigbee2MQTT", - "url": "https://www.zigbee2mqtt.io/devices/Zen-01-W.html" + "source": "Blakadder Zigbee record", + "url": "https://zigbee.blakadder.com/Zen_Zen-01-W.html" }, { "field": "Exposed fields",