NEWS
Test Adapter Samsung Smartthings v.0.0.x
-
@Thomas-Braun sagte in Test Adapter Samsung Smartthings v.0.0.x:
@smarteppi sagte in Test Adapter Samsung Smartthings v.0.0.x:
Der Adapter scheint mit Node 20 nicht mehr zu funktionieren.
Losgelöst vom Problem solltest du ohnehin auf nodejs 22 wechseln.
Ja werde ich.
Ich denke aber es wird das Problem nicht lösen.
ChatGTP sagt hier:
** *Gespeicherte Login-Daten / Token zu entschlüsseln
*- Nutzt dafür crypto.createDecipheriv
- Node.js ≥ 20 (OpenSSL 3) ist strenger
- Alte Verschlüsselung → 💥**
@smarteppi sagte in Test Adapter Samsung Smartthings v.0.0.x:
Ich denke aber es wird das Problem nicht lösen.
Das habe ich auch nicht behauptet. Allerdings befindet sich nodejs@20 kurz vor EoL und 22 ist schon länger die Empfehlung für den ioBroker.
-
Wie zu erwarten hat sich mit nodejs22 nichts verbessert.
Please enter a valid codeUrl or Samsung Smartthings Token
smartthings.0
2025-12-27 18:11:20.419 error Please enter a Samsung Smartthings Code Url in the instance settings
smartthings.0
2025-12-27 18:11:20.418 info Start login via code url
smartthings.0
2025-12-27 18:11:20.400 info starting. Version 0.2.2 (non-npm: TA2k/ioBroker.smartthings#b055221990231cf4c8xxxxxxxxe94ff59b0fd75) in /opt/iobroker/node_modules/iobroker.smartthings, node: v22.21.0, js-controller: 7.0.7
smartthings.0
2025-12-27 18:11:16.483 info terminating
smartthings.0
2025-12-27 18:11:16.035 warn Terminated (UNCAUGHT_EXCEPTION): Without reason
smartthings.0
2025-12-27 18:11:16.034 info terminating
smartthings.0
2025-12-27 18:11:16.033 info Got terminate signal TERMINATE_YOURSELF
smartthings.0
2025-12-27 18:11:15.980 error Exception-Code: ERR_OSSL_WRONG_FINAL_BLOCK_LENGTH: error:1C80006B:Provider routines::wrong final block length
smartthings.0
2025-12-27 18:11:15.980 error Error: error:1C80006B:Provider routines::wrong final block length at Decipheriv.final (node:internal/crypto/cipher:184:29) at Smartthings.login (/opt/iobroker/node_modules/iobroker.smartthings/main.js:135:32) at Smartthings.onReady (/opt/iobroker/node_modules/iobroker.smartthings/main.js:58:18)
smartthings.0
2025-12-27 18:11:15.980 error unhandled promise rejection: error:1C80006B:Provider routines::wrong final block length
smartthings.0
2025-12-27 18:11:15.979 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
smartthings.0
2025-12-27 18:11:15.977 info Start login via code url
smartthings.0
2025-12-27 18:11:15.956 info starting. Version 0.2.2 (non-npm: TA2k/ioBroker.smartthings#b05522199023xxxxxxxxxbee94ff59b0fd75) in /opt/iobroker/node_modules/iobroker.smartthings, node: v22.21.0, js-controller: 7.0.7 -
Das sagt KI:
Was genau schiefgeht (technisch korrekt)Node 20+ / 22 nutzt OpenSSL 3.x
Der SmartThings-Adapter:
verschlüsselt Tokens legacy-kompatibel
entschlüsselt sie mit createDecipheriv
OpenSSL 3 ist strenger bei:
Padding
Blocklängen
Ergebnis:
wrong final block length
KI schlägt downgrade nodejs auf 18 vor - mach ich natürlich nicht
Alternative:
Node 22 behalten (nicht empfohlen, aber möglich)Nur mit Legacy-Provider:
export NODE_OPTIONS=--openssl-legacy-provider
iobroker restartIst das zu empfehlen?
-
Das sagt KI:
Was genau schiefgeht (technisch korrekt)Node 20+ / 22 nutzt OpenSSL 3.x
Der SmartThings-Adapter:
verschlüsselt Tokens legacy-kompatibel
entschlüsselt sie mit createDecipheriv
OpenSSL 3 ist strenger bei:
Padding
Blocklängen
Ergebnis:
wrong final block length
KI schlägt downgrade nodejs auf 18 vor - mach ich natürlich nicht
Alternative:
Node 22 behalten (nicht empfohlen, aber möglich)Nur mit Legacy-Provider:
export NODE_OPTIONS=--openssl-legacy-provider
iobroker restartIst das zu empfehlen?
Dann schau in die Issues des Adapters und leg entsprechend eins an, falls es noch nichts passendes gibt.
-
Dann schau in die Issues des Adapters und leg entsprechend eins an, falls es noch nichts passendes gibt.
@Thomas-Braun Leider muss ich sagen das mir dazu die Kenntnisse fehlen. Ich hab auch kein Github Konto.
Ich bin ein User der sich da so durchkämpft. Wenn der Adapter nicht mehr weiterentwickelt wird ist das zu akzeptieren. Danke trotzdem Danke! -
Das sagt KI:
Was genau schiefgeht (technisch korrekt)Node 20+ / 22 nutzt OpenSSL 3.x
Der SmartThings-Adapter:
verschlüsselt Tokens legacy-kompatibel
entschlüsselt sie mit createDecipheriv
OpenSSL 3 ist strenger bei:
Padding
Blocklängen
Ergebnis:
wrong final block length
KI schlägt downgrade nodejs auf 18 vor - mach ich natürlich nicht
Alternative:
Node 22 behalten (nicht empfohlen, aber möglich)Nur mit Legacy-Provider:
export NODE_OPTIONS=--openssl-legacy-provider
iobroker restartIst das zu empfehlen?
@smarteppi ich habe das problem mit node 22.21.1 auf MacOS nicht. welches OS verwendest du
=== Node.js and OpenSSL Version Information === Node.js version: v22.21.1 Node.js platform: darwin Node.js arch: arm64 OpenSSL version: 3.6.0 === All Process Versions === node: 22.21.1 acorn: 8.15.0 ada: 2.9.2 amaro: 1.1.4 ares: 1.34.5 brotli: 1.2.0 cjs_module_lexer: 2.1.0 cldr: 48.0 icu: 78.1 llhttp: 9.3.0 modules: 127 napi: 10 nbytes: 0.1.1 ncrypto: 0.0.1 nghttp2: 1.68.0 openssl: 3.6.0 simdjson: 4.2.2 simdutf: 7.7.0 sqlite: 3.51.0 tz: 2025b undici: 6.22.0 unicode: 17.0 uv: 1.51.0 uvwasi: 0.0.23 v8: 12.4.254.21-node.33 zlib: 1.2.12 zstd: 1.5.7 === Crypto Capabilities === Available ciphers: 130 Has aes-128-cbc: YES === OpenSSL Constants Available === Crypto constants defined: YESDu kannst es auch selber überprüfen einfach in test.js speichern und dann ausführen
node test.jsconst crypto = require('crypto'); console.log('=== Node.js and OpenSSL Version Information ===\n'); console.log('Node.js version:', process.version); console.log('Node.js platform:', process.platform); console.log('Node.js arch:', process.arch); console.log(''); // Check OpenSSL version console.log('OpenSSL version:', process.versions.openssl); console.log(''); // Get all crypto-related versions console.log('=== All Process Versions ==='); Object.keys(process.versions).forEach(key => { console.log(`${key}: ${process.versions[key]}`); }); console.log(''); // Check available crypto features console.log('=== Crypto Capabilities ==='); console.log('Available ciphers:', crypto.getCiphers().length); console.log('Has aes-128-cbc:', crypto.getCiphers().includes('aes-128-cbc') ? 'YES' : 'NO'); console.log(''); // Try to get more detailed OpenSSL info try { const { constants } = crypto; console.log('=== OpenSSL Constants Available ==='); console.log('Crypto constants defined:', Object.keys(constants).length > 0 ? 'YES' : 'NO'); } catch (e) { console.log('Could not access crypto constants:', e.message); } -
@smarteppi ich habe das problem mit node 22.21.1 auf MacOS nicht. welches OS verwendest du
=== Node.js and OpenSSL Version Information === Node.js version: v22.21.1 Node.js platform: darwin Node.js arch: arm64 OpenSSL version: 3.6.0 === All Process Versions === node: 22.21.1 acorn: 8.15.0 ada: 2.9.2 amaro: 1.1.4 ares: 1.34.5 brotli: 1.2.0 cjs_module_lexer: 2.1.0 cldr: 48.0 icu: 78.1 llhttp: 9.3.0 modules: 127 napi: 10 nbytes: 0.1.1 ncrypto: 0.0.1 nghttp2: 1.68.0 openssl: 3.6.0 simdjson: 4.2.2 simdutf: 7.7.0 sqlite: 3.51.0 tz: 2025b undici: 6.22.0 unicode: 17.0 uv: 1.51.0 uvwasi: 0.0.23 v8: 12.4.254.21-node.33 zlib: 1.2.12 zstd: 1.5.7 === Crypto Capabilities === Available ciphers: 130 Has aes-128-cbc: YES === OpenSSL Constants Available === Crypto constants defined: YESDu kannst es auch selber überprüfen einfach in test.js speichern und dann ausführen
node test.jsconst crypto = require('crypto'); console.log('=== Node.js and OpenSSL Version Information ===\n'); console.log('Node.js version:', process.version); console.log('Node.js platform:', process.platform); console.log('Node.js arch:', process.arch); console.log(''); // Check OpenSSL version console.log('OpenSSL version:', process.versions.openssl); console.log(''); // Get all crypto-related versions console.log('=== All Process Versions ==='); Object.keys(process.versions).forEach(key => { console.log(`${key}: ${process.versions[key]}`); }); console.log(''); // Check available crypto features console.log('=== Crypto Capabilities ==='); console.log('Available ciphers:', crypto.getCiphers().length); console.log('Has aes-128-cbc:', crypto.getCiphers().includes('aes-128-cbc') ? 'YES' : 'NO'); console.log(''); // Try to get more detailed OpenSSL info try { const { constants } = crypto; console.log('=== OpenSSL Constants Available ==='); console.log('Crypto constants defined:', Object.keys(constants).length > 0 ? 'YES' : 'NO'); } catch (e) { console.log('Could not access crypto constants:', e.message); } -
@tombox Debian 12 blockworm in einem LXC Container in Proxmox
Das Script läuft bei mir nicht.
@smarteppi Bitte immer mit dem konkreten Fehler antworten
-
Das ist der Log des Fehlers:
javascript.0 14:14:00.667 info
Stopping script
javascript.0 14:14:01.957 info
start JavaScript (Javascript/js)
javascript.0 14:14:01.964 info
=== Node.js and OpenSSL Version Information ===
javascript.0 14:14:01.965 error
Error: ReferenceError: process is not defined
javascript.0 14:14:01.965 error
at script.js.Test:5:33javascript.0 14:14:01.965 error
at script.js.Test:40:3javascript.0 14:14:01.965 error
at Script.runInContext (node:vm:149:12) -
Das ist der Log des Fehlers:
javascript.0 14:14:00.667 info
Stopping script
javascript.0 14:14:01.957 info
start JavaScript (Javascript/js)
javascript.0 14:14:01.964 info
=== Node.js and OpenSSL Version Information ===
javascript.0 14:14:01.965 error
Error: ReferenceError: process is not defined
javascript.0 14:14:01.965 error
at script.js.Test:5:33javascript.0 14:14:01.965 error
at script.js.Test:40:3javascript.0 14:14:01.965 error
at Script.runInContext (node:vm:149:12)@smarteppi Achso das ist ein script was du im container shell ausführen sollst
-
Okay verstehe.
Ergebnis:// Try to get more detailed OpenSSL info
try {
console.log('Could not access crypto constants:', e.message);s).length > 0 ? 'YES' : 'NO');
-bash: syntax error near unexpected token(' -bash: syntax error near unexpected token'=== Node.js and OpenSSL Version Information ===\n''
-bash: syntax error near unexpected token'Node.js version:',' -bash: syntax error near unexpected token'Node.js platform:','
-bash: syntax error near unexpected token'Node.js arch:',' -bash: syntax error near unexpected token'''
-bash: //: Is a directory
-bash: syntax error near unexpected token'OpenSSL version:',' -bash: syntax error near unexpected token'''
-bash: //: Is a directory
-bash: syntax error near unexpected token'=== All Process Versions ==='' -bash: syntax error near unexpected tokenprocess.versions'
-bash: syntax error near unexpected token ``${key}: ${process.versions[key]}' -bash: syntax error near unexpected token}'
-bash: syntax error near unexpected token''' -bash: //: Is a directory -bash: syntax error near unexpected token'=== Crypto Capabilities ===''
-bash: syntax error near unexpected token'Available ciphers:',' -bash: syntax error near unexpected token'Has aes-128-cbc:','
-bash: syntax error near unexpected token''' -bash: //: Is a directory -bash: try: command not found -bash: const: command not found -bash: syntax error near unexpected token'=== OpenSSL Constants Available ===''
-bash: syntax error near unexpected token'Crypto constants defined:',' -bash: syntax error near unexpected token}'
-bash: syntax error near unexpected token'Could not access crypto constants:',' -bash: syntax error near unexpected token}'