@impact0815/node-red-contrib-home-connect 0.0.0-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/BUILD-INFO.json +23 -0
  2. package/CHANGELOG.md +53 -0
  3. package/LICENSE +21 -0
  4. package/NOTICE +19 -0
  5. package/README.de.md +344 -0
  6. package/README.md +343 -2
  7. package/SECURITY.md +47 -0
  8. package/docs/API-COVERAGE.md +59 -0
  9. package/docs/ARCHITECTURE.md +95 -0
  10. package/docs/DASHBOARD.de.md +121 -0
  11. package/docs/DASHBOARD.md +121 -0
  12. package/docs/FIRST-PUSH.md +42 -0
  13. package/docs/GITHUB-UPDATE.md +76 -0
  14. package/docs/LOCAL-LAN.de.md +150 -0
  15. package/docs/LOCAL-LAN.md +150 -0
  16. package/docs/MESSAGE-API.md +111 -0
  17. package/docs/RELEASE.md +91 -0
  18. package/docs/TROUBLESHOOTING.de.md +230 -0
  19. package/docs/TROUBLESHOOTING.md +230 -0
  20. package/docs/images/README.md +10 -0
  21. package/docs/images/dashboard-details-en.png +0 -0
  22. package/docs/images/dashboard-overview-en.png +0 -0
  23. package/docs/official-api-contract.json +418 -0
  24. package/examples/01-first-steps-device-list.json +148 -0
  25. package/examples/02-events.json +165 -0
  26. package/examples/03-safe-read-write.json +155 -0
  27. package/examples/04-local-read-only.json +214 -0
  28. package/examples/README.de.md +62 -0
  29. package/examples/README.md +62 -0
  30. package/examples/dashboard-dishwasher-washer-oven.json +628 -0
  31. package/examples/dashboard-screenshot-simulated.json +405 -0
  32. package/examples/demo-home-connect-flowfuse-1.34.1-scriptless.json +390 -0
  33. package/lib/client.js +600 -0
  34. package/lib/constants.js +66 -0
  35. package/lib/dashboard-i18n.js +255 -0
  36. package/lib/device-label.js +39 -0
  37. package/lib/errors.js +51 -0
  38. package/lib/health.js +525 -0
  39. package/lib/local-client.js +1014 -0
  40. package/lib/local-crypto.js +122 -0
  41. package/lib/local-diagnostics.js +115 -0
  42. package/lib/local-profile.js +706 -0
  43. package/lib/local-trace.js +103 -0
  44. package/lib/oauth.js +23 -0
  45. package/lib/rate-limiter.js +186 -0
  46. package/lib/simulator.js +290 -0
  47. package/lib/sse.js +58 -0
  48. package/lib/validation.js +194 -0
  49. package/lib/websocket-transport.js +374 -0
  50. package/nodes/home-connect.html +795 -0
  51. package/nodes/home-connect.js +699 -0
  52. package/nodes/locales/de/home-connect.html +19 -0
  53. package/nodes/locales/de/home-connect.json +10 -0
  54. package/nodes/locales/en-US/home-connect.json +10 -0
  55. package/package.json +76 -4
@@ -0,0 +1,19 @@
1
+ <script type="text/html" data-help-name="home-connect-config">
2
+ <h3>Lokales Netz (nur lesen)</h3>
3
+ <ol>
4
+ <li>Den geschützten Profile-Downloader-Ordner so mounten/kopieren, dass der Node-RED-Server bzw. -Container ihn lesen kann.</li>
5
+ <li><b>Local LAN (read-only)</b> auswählen und diesen serverseitigen Ordner eintragen.</li>
6
+ <li><b>Profile suchen / Geräte erkennen</b> anklicken. Unterordner werden durchsucht; ein Gerät gilt erst mit zusammengehörigem Geräte-JSON, <code>DeviceDescription.xml</code> und <code>FeatureMapping.xml</code> als vollständig.</li>
7
+ <li>In jeder Gerätekarte eine private/link-lokale Host/IP eintragen und <b>Auto (empfohlen)</b> beibehalten.</li>
8
+ <li>Je Gerät <b>Verbindung testen</b> anklicken. Der Test liest ausschließlich lokale Ressourcen.</li>
9
+ <li><b>Fertig</b>, deployen und danach im Read-Node nur Gerät/Ressource bzw. im Events-Node ein Gerät oder alle Geräte auswählen.</li>
10
+ </ol>
11
+ <p><code>localDeviceMappings</code> wird automatisch erzeugt; niemand muss Mapping-JSON schreiben. Fehlende/öffentliche Ziele sowie unvollständige und doppelte Profile werden verständlich abgewiesen. Lokales Schreiben endet immer mit <code>LOCAL_READ_ONLY</code>.</p>
12
+ <p><b>Erweitert:</b> Entweder Profilordner oder optional manuell eingefügtes Profil-JSON verwenden. Bei gesetztem Ordner ist der manuelle Editor eingeklappt/deaktiviert und wird ignoriert. Das JSON kann aus erkannten Profilen und Zuordnungen erzeugt werden; Schlüssel bleiben im Credential Store.</p>
13
+ <h3>Cloud</h3>
14
+ <p>Cloud-Konfigurationen behalten den vertraulichen Authorization-Code-Flow mit Client Secret und ohne PKCE, den persistenten Rate-Limiter, Refresh Token, Health/Warnungen und abgesicherte Schreibzugriffe. Vor dem Autorisieren speichern und deployen; Redirect URI im Portal und in Node-RED exakt gleich eintragen.</p>
15
+ </script>
16
+ <script type="text/html" data-help-name="home-connect-discover"><p>Erkennt reale Geräte dynamisch. IDs, Namen, Programme und Fähigkeiten von Benutzergeräten sind nicht fest eingebaut. Nicht unterstützte Ressourcen erscheinen in <code>discoveryErrors</code>, ohne erfolgreiche Daten zu verwerfen.</p></script>
17
+ <script type="text/html" data-help-name="home-connect-read"><p>Liest eine vordefinierte Ressource. Bei lokaler Konfiguration werden nur ein erkanntes/konfiguriertes Gerät und die gewünschte Lese-Ressource ausgewählt; Host/IP bleibt ausschließlich in der Config-Node. <code>msg.haId</code>, <code>msg.operation</code>, <code>msg.key</code> und <code>msg.subKey</code> können Editor-Felder überschreiben; beliebige URLs sind nicht zulässig.</p></script>
18
+ <script type="text/html" data-help-name="home-connect-events"><p>Öffnet lokale WebSocket- oder Cloud-SSE-Events mit automatischer Wiederverbindung. Es kann ein Gerät oder alle konfigurierten Geräte gewählt werden; Host/IP bleibt ausschließlich in der Config-Node. Ausgang 1 enthält Events, Ausgang 2 strukturierte Fehler. Ausgaben enthalten <code>msg.health</code> und zweisprachige <code>msg.warnings</code>.</p></script>
19
+ <script type="text/html" data-help-name="home-connect-write"><p>Abgesicherter Writer für Cloud-Programme, -Einstellungen, -Befehle sowie aktive/ausgewählte Optionen. Lokale Verbindungen werden immer vor Netzwerkzugriff mit <code>LOCAL_READ_ONLY</code> abgewiesen.</p></script>
@@ -0,0 +1,10 @@
1
+ {
2
+ "home-connect": {
3
+ "label": {
4
+ "name": "Name",
5
+ "connection": "Verbindung",
6
+ "environment": "Umgebung",
7
+ "allowWrite": "Schreibzugriff erlauben"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "home-connect": {
3
+ "label": {
4
+ "name": "Name",
5
+ "connection": "Connection",
6
+ "environment": "Environment",
7
+ "allowWrite": "Allow write access"
8
+ }
9
+ }
10
+ }
package/package.json CHANGED
@@ -1,6 +1,78 @@
1
1
  {
2
2
  "name": "@impact0815/node-red-contrib-home-connect",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.1",
4
+ "description": "Node-RED nodes for Home Connect: OAuth authorization, automatic appliance discovery, events, reading and safeguarded writing via the official cloud API, plus experimental read-only local LAN access.",
5
+ "keywords": [
6
+ "node-red",
7
+ "home-connect",
8
+ "home-automation",
9
+ "iot",
10
+ "smart-home",
11
+ "appliances",
12
+ "oauth2",
13
+ "websocket",
14
+ "server-sent-events",
15
+ "bosch",
16
+ "siemens",
17
+ "neff",
18
+ "gaggenau"
19
+ ],
20
+ "license": "MIT",
21
+ "author": "impact0815",
22
+ "homepage": "https://www.npmjs.com/package/@impact0815/node-red-contrib-home-connect",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/impact0815/node-red-contrib-home-connect.git"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/impact0815/node-red-contrib-home-connect/issues"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public",
32
+ "registry": "https://registry.npmjs.org/"
33
+ },
34
+ "main": "nodes/home-connect.js",
35
+ "homeConnectBuild": {
36
+ "buildId": "hc-0.2.1-final",
37
+ "oauthFlow": "authorization_code_client_secret",
38
+ "pkce": false,
39
+ "dashboardLocales": [
40
+ "de",
41
+ "en"
42
+ ],
43
+ "dashboardCompatibility": "@flowfuse/node-red-dashboard@1.34.1",
44
+ "releaseStatus": "final",
45
+ "featureFreeze": "2026-11-01",
46
+ "isolatedDemo": "examples/demo-home-connect-flowfuse-1.34.1-scriptless.json"
47
+ },
48
+ "files": [
49
+ "BUILD-INFO.json",
50
+ "nodes",
51
+ "lib",
52
+ "examples",
53
+ "docs",
54
+ "README.md",
55
+ "README.de.md",
56
+ "CHANGELOG.md",
57
+ "SECURITY.md",
58
+ "LICENSE",
59
+ "NOTICE"
60
+ ],
61
+ "engines": {
62
+ "node": ">=18.0.0",
63
+ "node-red": ">=3.0.0"
64
+ },
65
+ "scripts": {
66
+ "test": "node --test test/*.test.js",
67
+ "lint": "node tools/lint.js",
68
+ "validate": "npm run lint && npm test && npm pack --dry-run",
69
+ "prepublishOnly": "npm run release:check && npm run validate",
70
+ "release:check": "node tools/release-check.js"
71
+ },
72
+ "node-red": {
73
+ "version": ">=3.0.0",
74
+ "nodes": {
75
+ "home-connect": "nodes/home-connect.js"
76
+ }
77
+ }
78
+ }