NEWS
Problem beim Einbinden eines node.js Adapters
-
Hallo,
da es für NanoDmx noch nichts gibt hab ich mich mal dran gemacht einen Adapter zu machen... Alles Neuland für mich - ich hoffe das wird was...
und falls ich grundlegende Fehler mache bin ich für jeden Tip dankbar ...IoBroker Läuft in einer Docker Instanz auf dem Nas, Mein Rechner unter Windows 10 - offensichtlich keine optimale Kombination...
Also als erste das Yotube Turorial von dmxface nachgebaut bis ich einen "installierebaren Adapter " hatte... Logik kommt später... nun dachte ich, man kann einfach in den Dependecies den dmx Node ergänzen?
"dependencies": {
"@iobroker/adapter-core": "^1.0.3",
"dmx": "^0.0.6",
"serialport": "^9.0.2" <--Macht keinen unterschied wenn ich das weglasse...
},Jedoch kommte es dann beim Laden zu gyp?? Fehlern die ich nicht verstehe...
Hier unter Windows
und hier bei der Installation im IOBroker
hier das ganze IOBroker Log:[s=] $ ./iobroker url "https://github.com/Bordman-ger/ioBroker.nanodmx.git" --debug install https://github.com/Bordman-ger/ioBroker.nanodmx/tarball/c107c301493fd4451565a7ac7b25ec801ee934fb NPM version: 6.14.8 npm install https://github.com/Bordman-ger/ioBroker.nanodmx/tarball/c107c301493fd4451565a7ac7b25ec801ee934fb --loglevel error --prefix "/opt/iobroker" (System call) > serialport@6.2.2 install /opt/iobroker/node_modules/dmx/node_modules/serialport> prebuild-install || node-gyp rebuild make: Verzeichnis „/opt/iobroker/node_modules/dmx/node_modules/serialport/build“ wird betreten CXX(target) Release/obj.target/serialport/src/serialport.o In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:../../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete) ^ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:41:48: error: no matching function for call to ‘v8::Value::ToString()’ v8::String::Utf8Value path(info[0]->ToString()); ^In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2668:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’ V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString( ^~~~~~~~ /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2668:44: note: candidate expects 1 argument, 0 providedIn file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2684:31: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’ Local<String> ToString(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2684:31: note: candidate expects 1 argument, 0 provided Local<String> ToString(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~../src/serialport.cpp:48:53: error: no matching function for call to ‘v8::Value::ToObject()’ v8::Local<v8::Object> options = info[1]->ToObject(); ^In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’ V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject( ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 providedIn file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’ Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/serialport.cpp:78:69: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen); ^~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterOpen(uv_work_t*)’:../src/serialport.cpp:95:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(2, argv); ^In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:113:53: error: no matching function for call to ‘v8::Value::ToObject()’ v8::Local<v8::Object> options = info[1]->ToObject(); ^ In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’ V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject( ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 providedIn file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’ Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/serialport.cpp:135:71: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate); ^~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterUpdate(uv_work_t*)’:../src/serialport.cpp:150:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(1, argv); ^In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:175:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose); ^~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterClose(uv_work_t*)’:../src/serialport.cpp:188:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(1, argv); ^ In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:215:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush); ^~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterFlush(uv_work_t*)’:../src/serialport.cpp:231:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(1, argv); ^ In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:250:53: error: no matching function for call to ‘v8::Value::ToObject()’ v8::Local<v8::Object> options = info[1]->ToObject(); ^ In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’ V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject( ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2672:44: note: candidate expects 1 argument, 0 providedIn file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’ Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:2686:31: note: candidate expects 1 argument, 0 provided Local<Object> ToObject(Isolate* isolate) const); ^~~~~~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/serialport.cpp:270:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet); ^~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterSet(uv_work_t*)’:../src/serialport.cpp:285:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(1, argv); ^In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:314:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet); ^~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterGet(uv_work_t*)’:../src/serialport.cpp:329:96: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations] results->Set(Nan::New<v8::String>("cts").ToLocalChecked(), Nan::New<v8::Boolean>(data->cts)); ^ In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:3499:22: note: declared here bool Set(Local<Value> key, Local<Value> value)); ^~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~../src/serialport.cpp:330:96: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations] results->Set(Nan::New<v8::String>("dsr").ToLocalChecked(), Nan::New<v8::Boolean>(data->dsr)); ^In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:3499:22: note: declared here bool Set(Local<Value> key, Local<Value> value)); ^~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/serialport.cpp:331:96: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations] results->Set(Nan::New<v8::String>("dcd").ToLocalChecked(), Nan::New<v8::Boolean>(data->dcd)); ^In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:3499:22: note: declared here bool Set(Local<Value> key, Local<Value> value)); ^~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~../src/serialport.cpp:336:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(2, argv); ^In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:363:76: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate); ^~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterGetBaudRate(uv_work_t*)’:../src/serialport.cpp:378:106: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations] results->Set(Nan::New<v8::String>("baudRate").ToLocalChecked(), Nan::New<v8::Integer>(data->baudRate)); ^In file included from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8-internal.h:14, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:27, from /opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:67, from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8.h:3499:22: note: declared here bool Set(Local<Value> key, Local<Value> value)); ^~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/serialport.cpp:383:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(2, argv); ^In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:../src/serialport.cpp:409:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain); ^~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘void EIO_AfterDrain(uv_work_t*)’:../src/serialport.cpp:424:30: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations] data->callback.Call(1, argv); ^ In file included from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../../../../nan/nan.h:1742:3: note: declared here Call(int argc, v8::Local<v8::Value> argv[]) const { ^~~~../src/serialport.cpp: At global scope:../src/serialport.cpp:430:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses] SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) { ^ ../src/serialport.cpp:449:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses] SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) { ^ ../src/serialport.cpp:460:17: error: variable or field ‘init’ declared void void init(v8::Handle<v8::Object> target) { ^~~~~~../src/serialport.cpp:460:17: error: ‘Handle’ is not a member of ‘v8’ ../src/serialport.cpp:460:34: error: expected primary-expression before ‘>’ token void init(v8::Handle<v8::Object> target) { ^ ../src/serialport.cpp:460:36: error: ‘target’ was not declared in this scope void init(v8::Handle<v8::Object> target) { ^~~~~~ ../src/serialport.cpp:460:36: note: suggested alternative: ‘tzset’ void init(v8::Handle<v8::Object> target) { ^~~~~~ tzset In file included from ../../../../nan/nan.h:56, from ../src/./serialport.h:6, from ../src/serialport.cpp:1:../src/serialport.cpp:485:25: error: ‘init’ was not declared in this scope NODE_MODULE(serialport, init); ^~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:727:36: note: in definition of macro ‘NODE_MODULE_X’ (node::addon_register_func) (regfunc), \ ^~~~~~~../src/serialport.cpp:485:1: note: in expansion of macro ‘NODE_MODULE’ NODE_MODULE(serialport, init); ^~~~~~~~~~~ ../src/serialport.cpp:485:25: note: suggested alternative: ‘int’ NODE_MODULE(serialport, init); ^~~~/opt/iobroker/.cache/node-gyp/12.19.0/include/node/node.h:727:36: note: in definition of macro ‘NODE_MODULE_X’ (node::addon_register_func) (regfunc), \ ^~~~~~~../src/serialport.cpp:485:1: note: in expansion of macro ‘NODE_MODULE’ NODE_MODULE(serialport, init); ^~~~~~~~~~~ make: *** [serialport.target.mk:114: Release/obj.target/serialport/src/serialport.o] Fehler 1 make: Verzeichnis „/opt/iobroker/node_modules/dmx/node_modules/serialport/build“ wird verlassen gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)gyp ERR! stack at ChildProcess.emit (events.js:314:20)gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12) gyp ERR! System Linux 4.4.59+ gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"gyp ERR! cwd /opt/iobroker/node_modules/dmx/node_modules/serialportgyp ERR! node -v v12.19.0gyp ERR! node-gyp -v v5.1.0gyp ERR! not ok npm ERR! code ELIFECYCLEnpm ERR! errno 1 npm ERR! serialport@6.2.2 install: `prebuild-install || node-gyp rebuild`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the serialport@6.2.2 install script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in:npm ERR! /opt/iobroker/.npm/_logs/2020-10-17T12_29_11_056Z-debug.log ERROR: host.iobroker_test Cannot install https://github.com/Bordman-ger/ioBroker.nanodmx/tarball/c107c301493fd4451565a7ac7b25ec801ee934fb: 1 ERROR: process exited with code 25
Was ist der Grund für den Fehler?
Kann ich die dependencies nicht einfach erweitern?Bzw wie geht man sonst vor wenn man einen vorhandene node.js einbinden will
dmx liegt hier:
https://github.com/node-dmx/dmxMein Repo hier:
https://github.com/Bordman-ger/ioBroker.nanodmxIch Danke euch...
-
@Boardy Wenn das Nano DMX dieselbe USB Schnittstelle hat wie mein DMX USB Dongle, dann schau doch mal da rein: https://github.com/UncleSamSwiss/ioBroker.udmx
Kann noch nicht viel, aber wir könnten das zusammen erweitern.
PS: der Adapter entspricht nicht den neusten Anforderungen für Adapter Entwicklung - wenn du ein gutes Beispiel willst, nimmst du lieber meinen Loxone Adapter.
-
@Boardy sagte in Problem beim Einbinden eines node.js Adapters:
Was ist der Grund für den Fehler?
Grundsätzlich hast du wohl alles richtig gemacht, allerdings ist das mit Node und Windows immer so eine Sache. In diesem Fall hat er Probleme
serialport
zu kompilieren. Wirst du es später auch unter Windows benutzen wollen, oder ist das nur deine Entwicklungsumgebung? Was benutzt du als IDE? Mein Vorschlag wäre sonst: VS Code und Devcontainer. -
@UncleSam deinen Adapter schaue ich mir morgen an...
Das Windows log war nur Spielerei aber auf dem NAS (Synology) kommt ja was ähnliches also nicht Windows spezifisch... Meine IDE ist noch nicht gut, VSCode hab ich mir heute auch ausgeguckt, Devcontainer kenn ich nicht? Docker unter Windows? muss ich morgen mal ausgiebiger suchen... momentan schieb ich alles auf Github und installiere von dort im IoBrocker auf dem NAS - zum Debuggen natürlich keine Lösung... wie gesagt, komplett alles Neuland (-:
Und deinen Loxone Adapter schau ich mir auch an - Danke
-
@UncleSam sagte in Problem beim Einbinden eines node.js Adapters:
Kann noch nicht viel, aber wir könnten das zusammen erweitern.
Ja das sieht doch schon super aus - wüsste jetzt nicht warum das nicht gehen soll? Mir ist dein Daten-Interface zwar noch nicht klar, aber ich will letztlich auch nur Daten vom Homeserver auf den Controller durchreichen, benötige also nur paar Datenpunkte...
Ich hab mal versucht das nun anzupassen und verstehe im Moment nicht wieso die Fehlermeldung weiterhin kommt
Liegt das ggf an meinem USB Hub das er ihn nicht findet?
-
Ich hatte die beiden Module aus dem Readme vergessen...
Per PACKAGES nachgalden: build-essential libudev-dev
nun bekomme ich im Container log den Fehler :
Was kann da klemmen?
-
@Boardy sagte in Problem beim Einbinden eines node.js Adapters:
Was kann da klemmen?
Docker Container? Ist der "privileged"? Sonst hast du wahrscheinlich keinen Zugriff auf den USB des Host.
-
@UncleSam Ja das macht Sinn, ich habe es Dank buanet hinbekommen die Devices durchzureichen ohne priviligierten Container, aber node-usb greift ja gar nicht über die devices zu sonder geht auf den host - muss mal sehen ob ich das auch durchreichen kann - privilegiert kommt bei mir nicht in frage... hab es Testweise gerade mal abgeschaltet, da ist zumindest dieser Fehler weg aber es kommen andere - ich glaube ich setzte mien IOBroker erst mal neu auf mittels Best Practic clean istall und dann teste ich mal weiter.
-
Hier noch mal das log in hübsch nachdem ich alles neu aufgesetzt habe... wer versteht wo das Problem liegt und wie man es beheben kann?
Scheint ja irgendwie an der alten serialport zu liegen - weiß aber gar nicht wo die herkommt... -
Nachdem ich nun noch mal eine IOBrocker instanz mit Node Version
node: v10.20.0 npm: 6.14.4 aufgesetzt habe
klappt die Installation - es liegt also vermutlich an Node 12.xxx. -
Hallo,
ich habe nun kräftig umgebaut, bin auf Visual Studio Code umgestiegen, mir dem Generator den Adamter neu angelegt habe auf Typescript umgestellt und hänge nun an dem Aufruf der externen Klasse...
Kann mir da jemand eine Tip geben? Kann ich für diese Klasse Typescript deaktivieren?
es gibt noch kein declaration module - war wohl etwas ungeschickt gleich auf Typescript zu gehen...Eine Frage zum Debuggen mit devcontainer: da ich den USB Stick im Keller fest verkabelt habe macht es wenig Sinn diesem am lokalen PC zu testen... komme ich ohne Devcontainer weiter oder ist das zu mühsam um sinnvoll was zu machen? (z.B. Status ins Log schreiben geht ja wohl)
Meine Typescript Version liegt unter
https://github.com/Bordman-ger/ioBroker.nanodmx2.gitIch hatte auch schon versucht, die dmx Files mit in meien Adapter reinzunehmen aber da komme ich in teufels Küche... (daher sind die files aktuell aber noch im Git)
Uwe
-
@Boardy sagte in Problem beim Einbinden eines node.js Adapters:
es gibt noch kein declaration module - war wohl etwas ungeschickt gleich auf Typescript zu gehen...
Kannst du problemlos selber schreiben: z.B. eine Datei "dmx.d.ts" erstellen und dort die Definitionen selber schreiben.
Oder du belässt einfach alles beiany
und hast (wie in JavaScript) keine Typenprüfung.Eine Frage zum Debuggen mit devcontainer: da ich den USB Stick im Keller fest verkabelt habe macht es wenig Sinn diesem am lokalen PC zu testen... komme ich ohne Devcontainer weiter oder ist das zu mühsam um sinnvoll was zu machen? (z.B. Status ins Log schreiben geht ja wohl)
Devcontainer und USB sind nicht gerade die besten Freunde. Insbesondere unter Windows nicht.
Es gibt mehrere Möglichkeiten:
- du kopierst jeweils deinen Code per WinSCP auf das Gerät, wo der USB-Stick angeschlossen ist
- du lädst alles auf GitHub und installierst dann auf dem Gerät via GitHub URL den aktuellsten Stand
- du schreibst dir einen kleinen RPC Server/Client und arbeitest "remote": https://github.com/UncleSamSwiss/ioBroker.i2c/tree/master/src/debug
Ich hatte auch schon versucht, die dmx Files mit in meien Adapter reinzunehmen aber da komme ich in teufels Küche... (daher sind die files aktuell aber noch im Git)
Würde ich nie machen; dafür gibt es ja schliesslich NPM und Node Module.
Wieso heisst dein Adapter übrigens "nanodmx2"? Ich würde den dann noch umbenennen.
-
@UncleSam nanaodmx2 weil das die Typescript Variante ist... ja wird natürlich umbenannt wollte nur nicht alles parallel schrotten...
Dann versuch ich mich mal mit der Datei "dmx.d.ts" da kann ich ja bei dir im Loxone bischen spicken (-.
Ich gehe aktuell den Weg über Git und Adapter install - klappt ganz gut
-
@Boardy sagte in Problem beim Einbinden eines node.js Adapters:
da kann ich ja bei dir im Loxone bischen spicken
Ja, gibt nicht gerade viel zu sehen
Ich habe mir das Leben ehrlich gesagt sehr einfach gemacht.
https://github.com/UncleSamSwiss/ioBroker.loxone/blob/master/src/node-lox-ws-api.d.ts
declare module 'node-lox-ws-api';
Das war's auch schon...
-
@UncleSam also kein gutes Beispiel? sorry zu viele neues und ich weiß nicht genau nach was ich suchen soll...
Die Klassendefiniton sieht wie folgt aus:

Ich würde zum start erst mal den weg mit any versuchen, aber wie genau muss ich dann den Typ deklarieren ?
declare module "dmx"; <- passt das für eine Klasse?
Ich habe nun mein Git aufgeräumt und bin wieder in
https://github.com/Bordman-ger/ioBroker.nanodmx.gitführt zu diversen Fehlern
passt das so und meine Fehler sind im Code meines main.js oder ist hier bei der Dekleration noch was falsch? Der Type Error deutet darauf hin?
-
Hatte dasselbe Problem. Bei mir war die Lösung
import * as loxoneWsApi from 'node-lox-ws-api'; // .... client = new loxoneWsApi(/* ... */);
Das kommt aber ganz darauf an, wie der Export bei der benutzten Library aussieht. Vielleicht kann uns @AlCalzone hier weiterhelfen?
declare module
sagt einfach: es gibt ein Modul. Was das Modul beinhaltet ist dann eben nicht festgelegt und damit ist alles "any". -
@Boardy @UncleSam Der TypeError deutet für mich darauf hin dass du das Paket falsch importierst oder falsch nutzt. Laut Anleitung:
const DMX = require('dmx')
was in TypeScript übersetzt wie folgt aussehen sollte (ein sog. Standard-Import):
import DMX from "dmx";
Die Form
import * as DMX
nutzt man, wenn das Modul mehrere Exporte hat, die du unter dem Namen
DMX
zusammenfassen möchtest.Dann gäbe es noch
import { something } from "modul"
, welches nur den Exportsomething
importiert. -
Cool das hat nun funktioniert (-:
@UncleSam sagte in Problem beim Einbinden eines node.js Adapters:
- du lädst alles auf GitHub und installierst dann auf dem Gerät via GitHub URL den aktuellsten Stand
Das ist für mich der schnellste weg... nun hab ich gesehen dass Visual Studio Code auch remote debuggen kann... geht das auch mit einem nicht privilegierten Container auf dem NAS?
Aktuell hab ich die Syntaxfehler weg und er Adapter statet und stoppt auch gleich wieder... muss mich noch mal durch die adapterdoku wühlen und Beispiele ansehen... falls einer auf den ersten Blick sieht was schief geht wäre ein Hinweis nett (-:
Gibt es vielleicht ein relativ triviales Type Script Besipiel an dem ich mich orientieren kann?
Denke aber mein Hauptproblem ist die DMX Klasse richtig einzubinden...LG
Uwe
-
@Boardy sagte in Problem beim Einbinden eines node.js Adapters:
nun hab ich gesehen dass Visual Studio Code auch remote debuggen kann... geht das auch mit einem nicht privilegierten Container auf dem NAS?
Remote Debugging ist eine Funktionalität von nodejs, somit funktioniert das in jeder denkbaren Kombination.
Die andere Variante, die ich auch schon gemacht habe, ist Remote VS Code. Damit läuft dein VS Code GUI auf deinem PC, aber der Rest von VS Code läuft direkt in der VM: https://code.visualstudio.com/docs/remote/ssh Ich benutze das zB zum auf dem Raspi zu entwickeln, so kann ich immer auf meinem Desktop PC bleiben und trotzdem ohne herum kopieren meinen Code direkt auf dem Raspi laufen lassen.
Gibt es vielleicht ein relativ triviales Type Script Besipiel an dem ich mich orientieren kann?
Mein einfachster Adapter in TypeScript ist:
https://github.com/UncleSamSwiss/ioBroker.luxtronik2 -
@UncleSam Ich kämpfe noch damit, im Docker container SSH zum laufen zu bringen... (BUANET) aber das habe ich an anderer Stelle adressiert...
Ich wäre schon glücklich wenn mein Adapter mal was ins Log schreibt - hast du ne Idee warum der gleich wieder beendet?
https://github.com/Bordman-ger/ioBroker.nanodmx.gitFehlt wohl noch irgend was elementares - ich halte mich lieber an deinen loxone adapter, der ist auch nicht so viel komplizierter wie der luxtronik2...