Need help with Node.js I2C /alternative



  • Hello everyone,

    For a project I want to read some data from my I2C sensor and post it to a blockchain. I use Ethereum and the Geth client (which works on the omega2+ with SWAP) for the blockchain. To interact with the smart contract I wanted to use Web3.js which I want to run on Node.js. To keep everything in node.js I decided it would be a good idea to install a I2C module for Node.js.

    This turned out to be a problem because all I2C modules I have looked (i2c and i2c-bus) rely on node-gyp when building. node-gyp is a build tool to compile native addon modules for Node.js. It uses a library called lpthread which is a link to the pthread library source. The problem however is that gcc or g++ don't have this library (they have pthread but not lpthread). This causes a crash when trying to install the i2c library.

    This is the error I get (I can also upload the full error log if necessary):

    root@Omega-45B9:~/read_i2c# npm install --unsafe-perm -S i2c-bus
    npm WARN package.json read_i2c@1.0.0 No description[0_1496260846988_error.txt](Uploading 100%) 
    npm WARN package.json read_i2c@1.0.0 No repository field.
    npm WARN package.json read_i2c@1.0.0 No README data
    \
    > i2c-bus@1.2.2 install /root/read_i2c/node_modules/i2c-bus
    > node-gyp rebuild
    
    make: Entering directory '/root/read_i2c/node_modules/i2c-bus/build'
      CXX(target) Release/obj.target/i2c/src/i2c.o
      SOLINK_MODULE(target) Release/obj.target/i2c.node
    /usr/bin/ld: cannot find -lpthread
    collect2: error: ld returned 1 exit status
    make: *** [i2c.target.mk:114: Release/obj.target/i2c.node] Error 1
    make: Leaving directory '/root/read_i2c/node_modules/i2c-bus/build'
    gyp ERR! build error
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
    gyp ERR! stack     at emitTwo (events.js:87:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Linux 4.4.46
    gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/read_i2c/node_modules/i2c-bus
    gyp ERR! node -v v4.3.1
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok
    npm ERR! Linux 4.4.46
    npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "--unsafe-perm" "-S" "i2c-bus"
    npm ERR! node v4.3.1
    npm ERR! npm  v2.14.12
    npm ERR! code ELIFECYCLE
    
    npm ERR! i2c-bus@1.2.2 install: `node-gyp rebuild`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the i2c-bus@1.2.2 install script 'node-gyp rebuild'.
    npm ERR! This is most likely a problem with the i2c-bus package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node-gyp rebuild
    npm ERR! You can get their info via:
    npm ERR!     npm owner ls i2c-bus
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     /root/read_i2c/npm-debug.log
    

    I have all the lasted version as of 31-05-2017:
    gcc: 5.4.0
    make: 4.2.1
    nodejs: 4.3.1
    omega: 0.1.10 b160

    So the questions are:
    Is there a workaround for this error?
    Is there an alternative for this error?

    I guess I could have python do the talking to the I2C and the link it to web3.js and node.js via RPC or something, but its not preferred.


Log in to reply
 

Looks like your connection to Onion Community was lost, please wait while we try to reconnect.