OpenICE Community Support Forum
Welcome to the OpenICE community support forum. Use this forum for submitting bugs, asking for help, and solving problems you are having with OpenICE software. For ideas, general questions, and conversation please use the discussion forum.
No similar topics found.

0
MQTT and Node.js
Hello Jeff,
I have been reading the node.js code on Github. Could you please explain to us how to use the publishing structure for plotting data on the web browser by implementing node.js? It will really help us a lot.
Cheers
Tim
I have been reading the node.js code on Github. Could you please explain to us how to use the publishing structure for plotting data on the web browser by implementing node.js? It will really help us a lot.
Cheers
Tim

0
Beaglebone Element14 error message when starting OpenICE 0.6.2
Hello. I've been trying to follow the directions for the device-adaptor but running into some glitches.
#1) I'm using the Beaglebone Element14 Black revision C - following the flashing directions for disk image C, it installs version 0.6.2. I noticed that the serial RS232 port is ttyO2 instead of ttyO1, but before I even get to that point, I try to start the software and get this message: (note, the adaptor setup directions say to type OpenICE-0.6.3/bin/OpenICE but the only directory is OpenICE 0.6.2). Here's the copied error message - is there something I'm missing? Sorry, I'm not a developer.
debian@beaglebone:~$ OpenICE-0.6.2/bin/OpenICE
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:227)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:173)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182)
at com.sun.javafx.application.LauncherImpl$$Lambda$2/4940284.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:185)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182)
at com.sun.javafx.application.LauncherImpl$$Lambda$2/4940284.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
debian@beaglebone:~$
#1) I'm using the Beaglebone Element14 Black revision C - following the flashing directions for disk image C, it installs version 0.6.2. I noticed that the serial RS232 port is ttyO2 instead of ttyO1, but before I even get to that point, I try to start the software and get this message: (note, the adaptor setup directions say to type OpenICE-0.6.3/bin/OpenICE but the only directory is OpenICE 0.6.2). Here's the copied error message - is there something I'm missing? Sorry, I'm not a developer.
debian@beaglebone:~$ OpenICE-0.6.2/bin/OpenICE
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:227)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:173)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182)
at com.sun.javafx.application.LauncherImpl$$Lambda$2/4940284.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:185)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182)
at com.sun.javafx.application.LauncherImpl$$Lambda$2/4940284.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
debian@beaglebone:~$

0
Answered
How to change the Device-Adapter to use a static IP address...
Common question:
I've followed the tutorial on OpenICE.info to image a bealgebone with the provided disk image. I started to set it up but found DHCP is enabled by default. I need to set a static IP. Can you give us a quick "how to".
I've followed the tutorial on OpenICE.info to image a bealgebone with the provided disk image. I started to set it up but found DHCP is enabled by default. I need to set a static IP. Can you give us a quick "how to".

Answer
Jeff Peterson
10 years ago
The beaglebone is a standard linux computer running Debian. The default user is “debian”; the default password is “debian”. You can access the terminal in a variety of ways; the easiest is plugging in a USB keyboard and a monitor (there’s a mini-HDMI port on the beaglebone). Alternatively if you feel comfortable with SSH, you can access the terminal at debian@192.168.13.2 through the Micro-USB port on the beaglebone. USB networking is enabled by default and separate from Ethernet networking so you can use one to change the other.
The official documentation for Debian networking configuration is here: https://wiki.debian.org/NetworkConfiguration#Configuring_the_interface_manually
The network setup interfaces configuration file is located at "/etc/network/interfaces”.
With your preferred text editor, change the block in the file /etc/network/interfaces from:
The official documentation for Debian networking configuration is here: https://wiki.debian.org/NetworkConfiguration#Configuring_the_interface_manually
The network setup interfaces configuration file is located at "/etc/network/interfaces”.
With your preferred text editor, change the block in the file /etc/network/interfaces from:
auto eth0to:
allow-hotplug eth0
iface eth0 inet dhcp
auto eth0Obviously use your preferred IP addresses. After you’ve saved your changes to the config file, restart the beaglebone with `sudo reboot`.
iface eth0 inet static
address 192.0.2.7
netmask 255.255.255.0
gateway 192.0.2.254

0
Under review
Good DDS Tutorial?
Do you have a recommended/favorite DDS introduction/tutorial? I'm finding that having a grounding in DDS would help in my understanding of how to use OpenICE.
Thanks,
Brad
Thanks,
Brad

0
Answered
Where is the IDL and how do I use it to generate code?
A common question:
Where is OpenICE's IDL and how do you run the tool to generate the C interfaces for the IDLs?
Where is OpenICE's IDL and how do you run the tool to generate the C interfaces for the IDLs?

Answer
Jeff Peterson
10 years ago
The IDL is found in our git repo - the IDL is found under /master/data-types/x73-idl/src/main/idl/ice/ice.idl.
To generate code for the IDL, we use rtiddsgen. The code generator is documented here.
At the command line, enter:
To generate code for the IDL, we use rtiddsgen. The code generator is documented here.
At the command line, enter:
rtiddsgen -language C -inputIdl /path/to/repo/data-types/x73-idl/src/main/idl/ice/ice.idl

0
Under review
Reading a DeviceIdentity that has a blank model field
I'm writing an OpenICE app designed to report the on/off state of various Devices. So far I've successfully modified Hello OpenICE code to Subscribe to HeartBeat and DeviceIdentity Topics. The HeartBeat data seems to arrive fine, but the DeviceIdentity data has problems.
In the received DeviceIdentity, the model name is blank, rather than being something like "Pulse Ox (simulated)". I've seen some symptoms that suggest that the model string gets filled in later, but I'm not certain of that.
I wanted to double-check with you that I'm using the correct pattern to read the DeviceIdentity data: I substituted class names in Hello OpenICE code based on some guesswork, so something may be incorrect. Based on the symptom I'm wondering whether I'm not properly telling DDS that I want to read the data contents. I haven't found an example of reading DeviceIdentity in the mdpnp git.
Here is the relevant code (adapted from HelloICE.java) - I apologize for the formatting. Note that on reception of a Pulse Ox (simulated) DeviceIdentity, the model field is blank.
Thanks for your help,
Brad
---------------------------------
public void on_data_available(DataReader reader) {
In the received DeviceIdentity, the model name is blank, rather than being something like "Pulse Ox (simulated)". I've seen some symptoms that suggest that the model string gets filled in later, but I'm not certain of that.
I wanted to double-check with you that I'm using the correct pattern to read the DeviceIdentity data: I substituted class names in Hello OpenICE code based on some guesswork, so something may be incorrect. Based on the symptom I'm wondering whether I'm not properly telling DDS that I want to read the data contents. I haven't found an example of reading DeviceIdentity in the mdpnp git.
Here is the relevant code (adapted from HelloICE.java) - I apologize for the formatting. Note that on reception of a Pulse Ox (simulated) DeviceIdentity, the model field is blank.
Thanks for your help,
Brad
---------------------------------
public void on_data_available(DataReader reader) {
ice.DeviceIdentitySeq deviceIdentitySeq = new ice.DeviceIdentitySeq();
SampleInfoSeq infoSeq = new SampleInfoSeq();
SampleInfoSeq infoSeq = new SampleInfoSeq();
DeviceIdentityDataReader diReader = (DeviceIdentityDataReader) reader;
try {
diReader.read(deviceIdentitySeq, infoSeq, ResourceLimitsQosPolicy.LENGTH_UNLIMITED, SampleStateKind.NOT_READ_SAMPLE_STATE, ViewStateKind.ANY_VIEW_STATE, InstanceStateKind.ALIVE_INSTANCE_STATE);
/*
* Bug: the model number info seems blank. Example output:
* Bug: the model number info seems blank. Example output:
* 2015-09-24 13:50:11 DEBUG IceQos:50 - Loaded default ice_library QoS
* 2015-09-24 13:51:30 ERROR DeviceIdentityListener:75 - Empty model in received DeviceIdentity
* 2015-09-24 13:51:30 INFO HelloIce:75 - ON: manuf: , model: , serial:
* 2015-09-24 13:51:47 INFO HelloIce:75 - OFF: manuf: , model: , serial:
*/
* 2015-09-24 13:51:30 ERROR DeviceIdentityListener:75 - Empty model in received DeviceIdentity
* 2015-09-24 13:51:30 INFO HelloIce:75 - ON: manuf: , model: , serial:
* 2015-09-24 13:51:47 INFO HelloIce:75 - OFF: manuf: , model: , serial:
*/
Date now = new Date();
for(int i = 0; i < infoSeq.size(); i++) {
SampleInfo si = (SampleInfo) infoSeq.get(i);
ice.DeviceIdentity data = (ice.DeviceIdentity) deviceIdentitySeq.get(i);
if(si.valid_data) {
if (data.model.length() == 0) {
logger.error("Empty model in received DeviceIdentity");
}
tracker.sawIdentity(data, now);
}
}
} catch (RETCODE_NO_DATA noData) {
// No Data was available to the read call
} finally {
// the objects provided by "read" are owned by the reader and we must return them
// so the reader can control their lifecycle
diReader.return_loan(deviceIdentitySeq, infoSeq);
}
}

0
Under review
How to find Device model number from unique device ID
I'm writing an OpenICE application to keep track of what Devices are running, and note (on a UI) when they come and go.
So far, I've successfully written code to Subscribe to and Read HeartBeatTopic data, and filtered out the Supervisor data vs. Devices' data. Now that I have unique device IDs from the HeartBeat, I want to ask the model number (and more if I can) of the Device that sent the HeartBeat.
How do I do that?
Thanks,
Brad
So far, I've successfully written code to Subscribe to and Read HeartBeatTopic data, and filtered out the Supervisor data vs. Devices' data. Now that I have unique device IDs from the HeartBeat, I want to ask the model number (and more if I can) of the Device that sent the HeartBeat.
How do I do that?
Thanks,
Brad

0
Answered
How to build OpenICE source on BBB
Hi, guys!
I was installed Revision C Disk Image and gradle-2.4 and sync to a NTP clock on BBB.
but, jdk 8u33 in Rev.C disk image is not build OpenICE source on BBB. (./gradlew)
The reason is 8u33 is not supported JavaFx. so I reinstalled jdk 8u6.
but OpenICE source is not build on BBB....
I want to build OpenICE source on BBB.
help me how to build OpenICE source on BBB or build reference.
p.s - Your device adapter(BBB) have a rs-232 serial port. my BBB don't have a serial port. T.T

thanks
Hyungi
I was installed Revision C Disk Image and gradle-2.4 and sync to a NTP clock on BBB.
but, jdk 8u33 in Rev.C disk image is not build OpenICE source on BBB. (./gradlew)
The reason is 8u33 is not supported JavaFx. so I reinstalled jdk 8u6.
but OpenICE source is not build on BBB....
I want to build OpenICE source on BBB.
help me how to build OpenICE source on BBB or build reference.
p.s - Your device adapter(BBB) have a rs-232 serial port. my BBB don't have a serial port. T.T

thanks
Hyungi

0
Under review
Issues logging in from corporate network
When I try to login to community.openice.info from our corporate network, the login doesn't fail, but doesn't seem to authenticate - it's as if I'm not logged in.
Logging in from my phone-as-hotspot (no proxy or firewall) works fine.
So I need to find what about or corporate proxy or firewall is preventing my logging into the community site. More info as I find it.
Logging in from my phone-as-hotspot (no proxy or firewall) works fine.
So I need to find what about or corporate proxy or firewall is preventing my logging into the community site. More info as I find it.

0
Under review
mindray monitors
Hello, can we expect support for Mindray Beneview series of Patient monitors anytime soon?

0
Answered
Getting waveform data from the Puritan Bennett 840
Hi everyone,
Sorry to keep asking questions, but this one has actually bugged us for a while now. Do you know how to make the Puritan Bennett 840 ventilator output waveform data?
We have tried all ports but all we get is the miscf message with numeric data only. We can't see any options on the ventilator itself either. As far as I understand from the code, the PB demo is also only set up to ask for numeric data.
Any insight you might have will be appreciated.
Thanks!
Rado
Sorry to keep asking questions, but this one has actually bugged us for a while now. Do you know how to make the Puritan Bennett 840 ventilator output waveform data?
We have tried all ports but all we get is the miscf message with numeric data only. We can't see any options on the ventilator itself either. As far as I understand from the code, the PB demo is also only set up to ask for numeric data.
Any insight you might have will be appreciated.
Thanks!
Rado

+1
Under review
Alaris PC Infusion Pump
Do you guys have any experience with Alaris pumps? We have one in the lab but I can't get it to export data. The manuals are not very helpful either - apparently there is some software (also developed by Alaris) that seems to be the only way to export data.
Thanks,
Rado
Thanks,
Rado

0
Answered
How to host openice (https://github.com/jeffplourde/openice) locally on Win-7
Hi,
I have cloned the OpenICU (master) branch on my Win-7 and hosted it on IIS7.5. When I visit the OpenICU Webdemo page of hosted website (http://localhost/openice/demo.html), the 'Connecting..' status never changes.
Upon debugging, figured out that the generated 'openice.info.js' file is needed under the build folder. Downloaded the same from the OpenICE website (https://www.openice.info/demo.html) and then I started getting the following 404 error trace
http://localhost/socket.io/?EIO=3&transport=polling&t=1427954861373-0
I don't have NodeJs server running on my machine as I presently don't have any insights on how to use it for OpenICE locally.
Any help is highly appreciated.
Thanks.
I have cloned the OpenICU (master) branch on my Win-7 and hosted it on IIS7.5. When I visit the OpenICU Webdemo page of hosted website (http://localhost/openice/demo.html), the 'Connecting..' status never changes.
Upon debugging, figured out that the generated 'openice.info.js' file is needed under the build folder. Downloaded the same from the OpenICE website (https://www.openice.info/demo.html) and then I started getting the following 404 error trace
http://localhost/socket.io/?EIO=3&transport=polling&t=1427954861373-0
I don't have NodeJs server running on my machine as I presently don't have any insights on how to use it for OpenICE locally.
Any help is highly appreciated.
Thanks.

0
Answered
What are RTI-dds & OpenSplice for?
Hi, guys!
What are RTI-dds & OpenSplice for? on OpenICE.
I think RTI using the transform of idl to java.
that's right?
I want to know the exact usage.
Thanks,
Hyungi
What are RTI-dds & OpenSplice for? on OpenICE.
I think RTI using the transform of idl to java.
that's right?
I want to know the exact usage.
Thanks,
Hyungi

Answer
Jeff Peterson
10 years ago
Hi Hyungi,
DDS is a distributed system abstraction layer that passes messages between the OpenICE nodes. DDS is technically a standard with commercial implementations distributed by RTI and PrismTech (OpenSplice). OpenICE is distributed with a community edition of RTI DDS.
More information about how we use DDS in OpenICE can be found in the working-draft of OpenICE App Architecture Description.
Thanks,
Jeff
DDS is a distributed system abstraction layer that passes messages between the OpenICE nodes. DDS is technically a standard with commercial implementations distributed by RTI and PrismTech (OpenSplice). OpenICE is distributed with a community edition of RTI DDS.
More information about how we use DDS in OpenICE can be found in the working-draft of OpenICE App Architecture Description.
Thanks,
Jeff

+3
HeartBeat
The OpenICE systems need to track the presence and availability of various devices in the system. There are a lot of possible ways to maintain the known "liveliness" of remote participants. Here are some of the ways we have tried in the past and the solution which we have converged upon during OpenICE development.
- Participant Liveliness
- Our first mechanism was to use DDS metadata to track the liveliness of remote participants. In principle this worked but it had several drawbacks and unmet requirements...
- It may not always be desirable to maintain a 1:1 correspondence between participant and device. For instance a participant accepting connections from bluetooth devices might actually communicate data for a number of such devices through one DDS Participant.
- Participant meta-data does not usually get relayed between DDS networks. Further, when data is relayed to a remote network (perhaps at the central monitoring or data center scope) it is presented to that network through a new participant local to that network.
- Configuration of discovery-related parameters is vendor-specific so establishing compatible settings can be difficult.
- Our first mechanism was to use DDS metadata to track the liveliness of remote participants. In principle this worked but it had several drawbacks and unmet requirements...
- DeviceIdentity instance Liveliness
- Our next attempt was at using the Liveliness of DeviceIdentity instances to track remote device liveliness.
- This successfully breaks the undesirable 1:1 correspondence participant and device.
- The problem here is that DeviceIdentity is not frequently republished. Meaning that once a reader has received a DeviceIdentity instance sample it *will* properly mark that instance "NOT ALIVE" when it fails to communicate a heartbeat; but later when the connection is re-established there is no new sample to communicate and the state of the instance will not become ALIVE until a new sample is produced.
- Our next attempt was at using the Liveliness of DeviceIdentity instances to track remote device liveliness.
- A distinct HeartBeat topic
- To meet our requirements we created a Topic in the system expressly for the purpose of discerning liveliness.
- By contract devices all must publish a new sample of Heartbeat every two seconds. The sample size is deliberately kept very small; including only UDI and a device type.
- Because this is "user" level data (and not metadata) from the DDS perspective it will "properly" traverse routes and links between DDS systems.
- This topic is described in our IDL. Our QoS settings are in a profile called "heartbeat" within ice_library.xml.
- You can view realtime Heartbeats from devices in our lab on our diagnostics page.
Customer support service by UserEcho