- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am having some issues trying to connect my Beaglebone Black to the enableiot.com site. Specifically, it is hanging for the status response from the server when you are registering the device. (STATUS: /server/registration_status)
My current setup is the BBB rev A5C powered by usb cable, and also connected to a computer. Running the os it came with (Angstrom). Ethernet connected to a router, and yes it is able to ping google.com.
Here is what I did to get to the point where agent.js can be started:
---
> cd iotkit
> ./setup-agent.sh
problem:
./setup-agent.sh: line 33: sudo: command not found
replace:
# if not root, try to use sudo
if [[ `whoami` != "root" ]];
then
SUDO=""
else
SUDO="sudo"
fi
with:
SUDO=""
should see:
npm downloading lots of things
finally- done
> node agent
2014-03-19T17:05:37.252Z - info: IoT Kit Cloud Agent: C8-A0-30-AC-DE-FE
2014-03-19T17:05:37.787Z - info: Cloud client created
Segmentation fault
will find the segfault cause a little later
copy the cloud agent number
add it to devices on enableiot.com
> shutdown -h now
power on the BBB & wait for it to come up
> cd iotkit
> node agent
problem:
seg fault!
problem line in agent.js:
cloud.reg(sensorsList);
problem line in lib/cloud.js:
var doc = msg.getRegMsg(me.deviceId, undefined, undefined, me.sensorsList);
right before var msg in lib/cloud-message.js add:
me.logger.info("hey");
run node agent again
problem:
error: UncaughtException: Cannot call method 'info' of undefined
add right under var os:
logger = require('./logger').init();
remove the me. infront of logger
one of the variables in msg probably doesn’t exist on the BBB, we have to find it.
change:
"hardware_vendor": os.cpus()[0].model,
"hardware_model": os.platform(),
"Model Name": os.arch(),
"Firmware Version": os.release()
to:
"hardware_vendor": "ARM",
"hardware_model": "Angstrom",
"Model Name": "Beaglebone Black",
"Firmware Version": "Rev A5C"
> node agent
long wait for status /server/registration_status
---
And so this is where it is stuck. It's so close to working though, hopefully.
Any ideas as to why the status is not being received?
- Tags:
- Internet of Things
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
RobotGrrl wrote:
change:
"hardware_vendor": os.cpus()[0].model,
"hardware_model": os.platform(),
"Model Name": os.arch(),
"Firmware Version": os.release()to:
"hardware_vendor": "ARM",
"hardware_model": "Angstrom",
"Model Name": "Beaglebone Black",
"Firmware Version": "Rev A5C"
Thanks for using the iotkit-agent!
The fact you have to do this is not normal. What version of node are you running? On Galileo we're using node 0.10.22, versions after that should work ok too. What's the output of forever.log? Also please use the code tags, makes it much easier to read :)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Node version was 0.8.22. Updated to 0.10.26.
Yes! Now the os variables work!
Running agent again, the device registration was successful. Sending data upstream successfully now :)
Thanks for the help Brendan.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to get my Galileo to register with the cloud. I upgraded my node on Galileo to 0.10.22 and I am able to fire up agent.js etc. I followed the steps to get the mac addr and registered a device in my enableiot account - All good.
When I reboot galileo, everything fires up fine, but what is happening is that the Status returned for my device is "FALSE". to be clear, here is the snippet of code from cloud.js:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is some more information on my registration message: I dumped out what was being sent and here it is:
{"protocol_version":"1.0","timestamp":1398128594081,"sender_id":"98-4F-EE-00-0F-A2","msg_type":"device_registration_msg","properties":{"hardware_vendor":"Intel(R) Quark SoC X1000 CPU @ 339MHz","hardware_model":"linux","Model Name":"ia32","Firmware Version":"3.8.7-yocto-standard"},"peripherals":[{"uuid":"self","type":"gateway","properties":{},"services":[{"name":"98-4F-EE-00-0F-A2-sensor","version":"1.0"}]}],"service_metadata":[{"loaded":true,"capabilities":[],"enabled":true,"name":"98-4F-EE-00-0F-A2-sensor","version":"1.0","metrics":[]}]}
Note, I hardcoded the "hardware_vendor" string, since os.cpus[0].model is returning "05/09" in my Galileo. See below, when I simply run node from the shell in Galileo:
> require('os');
{ endianness: [Function],
hostname: [Function],
loadavg: [Function],
uptime: [Function],
freemem: [Function],
totalmem: [Function],
cpus: [Function],
type: [Function],
release: [Function],
networkInterfaces: [Function],
arch: [Function],
platform: [Function],
tmpdir: [Function],
tmpDir: [Function],
getNetworkInterfaces: [Function: deprecated],
EOL: '\n' }
> os.cpus()
[ { model: '05/09',
speed: 399,
times:
{ user: 457098100,
nice: 0,
sys: 371869100,
idle: 355100,
irq: 0 } } ]
>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
sorry, not completely clear to me: to which cloud do you aim to connect?
BTW: pls post codes in code blocks [see description below comment box]
e.g. "\[bash\] / \[/bash\]" for bash
example - bash "dice game":
[bash]
echo "dice - quit (q)"; while true; do echo $((RANDOM % 6 + 1)); read -t 2 -n 1 -s q; if [ [ $q == "q" ] ] ; then break; fi; done
[/bash]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Pravici: Duplicate of https://software.intel.com/en-us/forums/topic/509743 - to be followed up there

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page