https://github.com/Ardulink/Ardulink-2/issues
If you can’t use Github or for other reasons, please send us a message with the following form. We will reply to it as soon as possible.
[contact_form lang=en]
A complete, open source, java solution for the control and coordination of Arduino boards. Communication protocol, java SWING components collection, Network Server and more…
https://github.com/Ardulink/Ardulink-2/issues
If you can’t use Github or for other reasons, please send us a message with the following form. We will reply to it as soon as possible.
[contact_form lang=en]
Tema Seamless Keith, sviluppato da Altervista
Apri un sito e guadagna con Altervista - Disclaimer - Segnala abuso
Buonasera Luciano,
sto provando a replicare il programma presente nel video
https://www.youtube.com/watch?v=mrfu3X1PlY8
Ho scaricato il pacchetto Ardulink ma non riesco a inserire correttamente le librerie necessarie su Eclipse perché non sono molto pratico.
In particolare:
1) col comando “Build path” ho messo in “referenced libraries” i files “ardulink.jar” “ch.ntb.usb-0.5.9.jar” “bluecove-2.1.1-SNAPSHOT.jar” “RXTXcomm.jar”
2) ho scritto le seguenti righe copiando dal video (con qualche modifica perché dispongo solo di due arduino UNO)
—— INIZIO ———
import org.zu.ardulink.*;
import org.zu.ardulink.connection.*;
import org.zu.ardulink.connection.bluetooth.*;
import org.zu.ardulink.connection.proxy.*;
import org.zu.ardulink.connection.serial.*;
import org.zu.ardulink.connection.usb.*;
import org.zu.ardulink.event.*;
import org.zu.ardulink.gui.*;
import org.zu.ardulink.gui.customcomponents.*;
import org.zu.ardulink.gui.customcomponents.joystick.*;
import org.zu.ardulink.gui.digistump.*;
import org.zu.ardulink.gui.event.*;
import org.zu.ardulink.gui.facility.*;
import org.zu.ardulink.gui.icons.*;
import org.zu.ardulink.io.*;
import org.zu.ardulink.protocol.*;
import org.zu.ardulink.event.DigitalReadChangeEvent;
import ch.ntb.usb.*;
import ch.ntb.usb.logger.*;
import ch.ntb.usb.testApp.*;
import ch.ntb.usb.usbView.*;
import com.ibm.oti.connection.btgoep.*;
import com.ibm.oti.connection.btl2cap.*;
import com.ibm.oti.connection.btspp.*;
import com.ibm.oti.connection.tcpobex.*;
import com.intel.bluetooth.*;
import com.intel.bluetooth.btgoep.*;
import com.intel.bluetooth.btl2cap.*;
import com.intel.bluetooth.btspp.*;
import com.intel.bluetooth.gcf.socket.*;
import com.intel.bluetooth.obex.*;
import com.intel.bluetooth.tcpobex.*;
import com.sun.cdc.io.j2me.btgoep.*;
import com.sun.cdc.io.j2me.btl2cap.*;
import com.sun.cdc.io.j2me.btspp.*;
import com.sun.cdc.io.j2me.tcpobex.*;
import com.sun.midp.io.j2me.btgoep.*;
import com.sun.midp.io.j2me.btl2cap.*;
import com.sun.midp.io.j2me.btspp.*;
import com.sun.midp.io.j2me.tcpobex.*;
import javax.bluetooth.*;
import javax.microedition.io.*;
import javax.obex.*;
import gnu.io.*;
public class Main {
public static void main(String[] args) {
Link linkArduinoUNO1 = Link.createInstance(“arduinoUNO-1”);
Link linkArduinoUNO2 = Link.createInstance(“arduinoUNO-2”);
// TODO Auto-generated method stub
String portNameArduinoUNO1 = linkArduinoUNO1.getPortList().get(0);
String portNameArduinoUNO2 = linkArduinoUNO2.getPortList().get(1);
while(true) {
blink (linkArduinoUNO1, 11);
blink (linkArduinoUNO2, 10);
}
}
}
—— FINE ———
In particolare il comando
blink (linkArduinoUNO1, 11);
non viene riconosciuto
Ho provato anche col comando
sendPowerPinSwitch (linkArduinoUNO1, 11, 1);
ma anche quello non viene riconosciuto
Mi può dare qualche informazione a riguardo?
Se mi risponde via mail posso inviarle una stampa video dell’albero sulla destra di Eclipse
La ringrazio
Francesco
Buonasera Francesco,
probabilmente non riesci a far funzionare il metodo blink per due ragioni. La prima è che dopo aver creato un’istanza della classe Link devi chiamare il metodo connect() passando il corretto nome della porta seriale (se la connessione è attraverso USB). La seconda ragione è perché blink() non è un metodo di Ardulink ma un metodo che ho implementato per questo esempio e che chiama sendPowerPinSwitch().
Ti consiglio di leggere questo articolo:
http://www.ardulink.org/control-and-coordinate-many-arduino-boards/
e poi di scaricarti il codice dell’esempio che hai visto nel video qui:
http://arduinopclink.altervista.org/wp-content/uploads/2013/12/CoordinationExamples.zip
Buonasera Luciano
stavo provando il tuo esempio del blinking led ma non mi funziona, il circuito è ok perchè l’ho testato con arduino IDE e funziona. ho linkato tutte le librerie nel classpath e ho scelto rxtx e le dll apposite per il mio sistema operativo windows 8.1, l’output della console è il seguente ma il led non si accende:
set 15, 2016 9:29:22 PM org.zu.ardulink.ConnectionContact writeLog
INFORMAZIONI: found the following ports:
set 15, 2016 9:29:22 PM org.zu.ardulink.ConnectionContact writeLog
INFORMAZIONI: COM3
Connecting on port: COM3
set 15, 2016 9:29:22 PM org.zu.ardulink.ConnectionContact writeLog
INFORMAZIONI: connection on COM3 established
Connected:true
Send power:1
Send power:0
Send power:1
Send power:0
Send power:1
Send power:0
Ciao Davide,
hai fatto l’upload dello sketch? Hai controllato che la velocità di connessione (baud) sia la stessa fra Java e Arduino? Prova a collegarti con il monitor seriale e scrivere:
alp://ppsw/13/1
se 13 è il pin dove hai collegato il led.
Fammi sapere
Hello Luciano,
I need to print rotary encoder values from arduino in java.
But cannot catch the serial values in java.
This is my Java Code:
private RplyEvent rplyEvent2;
public void U_speed(int pwm) throws InterruptedException, IOException {
System.out.println(“pwm of u = ” + pwm);
link.sendCustomMessage(“encoder”);
rplyEvent2 = null;
int reply = (int) rplyEvent2.getParameterValue(“encoder_reply”);
System.out.println(“it is” + reply);
}
This is my arduino code:
else if(inputString.substring(6,15) == “cust/encoder”) { // Stop Listen Analog Pin (this is general code you can reuse)
Serial.print(“alp://rply/”);
Serial.print(“ok?id=”);
Serial.print(“0”);
Serial.print(“&encoder_reply=”);
Serial.print(encoder_val);
Serial.print(‘\n’); // End of Message
Serial.flush();
}
Hi Vatsa,
if I understand well your code, you need for a way to retrieve data from Arduino when your application requires it. You can see UniqueID example in our distribution. You can see the java code here: https://github.com/Ardulink/Ardulink-2/tree/master/example-uniqueid/src/main/java/org/ardulink and the sketch here: https://github.com/Ardulink/Ardulink-2/tree/master/deploy-dist/rootfolder/examples/UniqueID/sketch/UniqueID
Another way to read data from Arduino with Ardulink is registering a listener on the Link object. You can see the datareceiver example here: https://github.com/Ardulink/Ardulink-2/tree/master/example-datareceiver/src/main/java/org/ardulink or study openQCM project that uses our technology. Note that openQCM uses Ardulink1 while openQCM2 uses Ardulink2.
Please let me know if you need for other info.
hi all
spoke to @pfichtner on the github platform but as i understand that is a bug reporting platform so i am doing it here.
i am new to the whole scene so there is lots i do not understand and i currently lack basic examples and step by step instructions on how to get this thing working.
after a few hours of playing around(and talking to @pfichtner)
all i am trying to do is blink the onboard LED. nothing fancy.
i am using windows 7.
coding on netbeans.
i have an arduino uno and have loaded the ArdulinkProtocol.ino file successfully on the arduino.
these are the imports that i have done
import java.io.IOException;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
import org.ardulink.core.Link;
import org.ardulink.core.Pin;
import org.ardulink.core.Pin.DigitalPin;
import org.ardulink.core.convenience.Links;
import org.ardulink.core.linkmanager.LinkManager;
import org.ardulink.core.serial.rxtx.SerialLinkConfig;
import org.ardulink.util.URIs;
i have found the below code and am running this.
public static void main(String[] args) throws InterruptedException, IOException {
SerialLinkConfig config;
LinkManager.Configurer configurer;
Link link;// = Links.getDefault();
String s = “ardulink://serial?port=COM13&baudrate=115200&pingprobe=true&proto=ardulink2&waitsecs=20”;
link = LinkManager.getInstance().getConfigurer(URIs.newURI(s)).newLink();
try {
Pin.DigitalPin pin = Pin.digitalPin(13);
boolean power = true;
while (true) {
System.out.println(“Send power:” + power);
link.switchDigitalPin(pin, power);
power = !power;
TimeUnit.SECONDS.sleep(2);
}
} catch(Exception e){
e.printStackTrace();
}
}
this is the error that i am getting
Exception in thread “main” java.lang.NoClassDefFoundError: org/ardulink/core/beans/BeanProperties
at org.ardulink.core.linkmanager.LinkManager$DefaultConfigurer.(LinkManager.java:366)
at org.ardulink.core.linkmanager.LinkManager$1.getConfigurer(LinkManager.java:544)
at blinkled.BlinkLed.main(BlinkLed.java:27)
Caused by: java.lang.ClassNotFoundException: org.ardulink.core.beans.BeanProperties
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 3 more
C:\Users\228525\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
please help as i do not know how to fix any of this?
Hi branewyn,
when java throw this error it means that some needed jar is not in the classpath. Actually you missed to include ardulink-core-beans.
I’ve read your thread on github, even if you are new on Ardulink and Java world I suggest you to start a java maven project that simplify all dependency issues.
Luciano
Software console refuses to work. Tells of: Can´t run AMD 64 dll on IA 32 machine.
Using latest JRE. Sad, because proggie looks promising.
Hi Marco,
you can find two .bat scripts into bin folder to set 32/64 bit dll for serial connection. However if serial connection still doesn’t work you can use serial jssc connection that doen’t need for that dll.
You could also avoid this error removing serial link jar from lib folder. Console should skip this link if it isn’t in the path.
Let me know if you have other issues.
Luciano
Hello. I would like to be able to press a button on the Arduino which publishes the message “DUMP” to a topic called “changeling-commands”. Is that possible?
The topic is running on Mosquitto from a program called changeling (https://github.com/JamesHarrison/changeling).
I have a more detailed description of my issue here: https://forum.arduino.cc/index.php?topic=526130.0
Thank you,
Hello,
Peter replied to your question on https://forum.arduino.cc/index.php?topic=526130.0
Thank you
Hello. Thank you for getting back to me about my last question (https://forum.arduino.cc/index.php?topic=526130.0). I took a hiatus from the project but now I’m back to finish it. I want to test your solution but I’m afraid I’ve run into another problem.
I installed and am running Ardulink 2.1.0 on Ubuntu. I renamed the ardulink-mqtt file to “ardulink-mqtt.jar” and put it in my /home/xerocraft folder. Then I executed the command:
java -jar /home/xerocraft/ardulink-mqtt.jar -d 2
and I got the following error:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/camel/CamelContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.camel.CamelContext
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 7 more
Could the error be caused by a type mismatch with RXTX?
Thank you,
Jeremy
Hi Jeremy,
when you use a Java Library/Application you have ever to pay attention to its dependencies. So in order to run Ardulink MQTT you have to put in the same folder all its dependencies. You can see the list opening the jar like a zip and read the META-INF/MANIFEST.MF file.
There is this classpath list:
Class-Path: ardulink-core-base-2.1.0.jar ardulink-core-util-2.1.0.jar
ardulink-core-beans-2.1.0.jar validation-api-1.0.0.GA.jar ardulink-ca
mel-2.1.0.jar camel-core-2.17.1.jar camel-mqtt-2.17.1.jar jaxb-core-2
.2.11.jar jaxb-impl-2.2.11.jar slf4j-api-1.7.12.jar slf4j-jdk14-1.7.1
2.jar mqtt-client-1.14.jar hawtdispatch-transport-1.22.jar hawtdispat
ch-1.22.jar hawtbuf-1.11.jar moquette-broker-0.8.1.jar moquette-parse
r-commons-0.8.1.jar moquette-netty-parser-0.8.1.jar slf4j-log4j12-1.7
.5.jar log4j-1.2.17.jar netty-common-4.0.33.Final.jar netty-buffer-4.
0.33.Final.jar netty-transport-4.0.33.Final.jar netty-handler-4.0.33.
Final.jar netty-codec-4.0.33.Final.jar netty-codec-http-4.0.33.Final.
jar commons-codec-1.10.jar mapdb-1.0.8.jar HdrHistogram-2.1.4.jar arg
s4j-2.32.jar
Try to run Ardulink MQTT in the same folder you found it. There are all jars you need for.
Of course! Thank you for responding. I’m no longer getting the JNI error. Sorry for the stupid question!
My Arduino correctly interfaces with Ardulink Console but only when I set the Type to “serial-jssc” in the Configuration tab. If I set the type to “serial” and click “Connect,” Ardulink Console crashes. The Port is set to “/dev/ttyACM0”, baudrate is set to “115200”, proto is set to “ardulink2”, qos is unchecked, waitsecs is “10”, and pingprobe is checked.
Under the Digital Sensor Panel tab, Pin 2 changes from Low to High when I press the button connected to digital pin 2 and changes back to Low when I release it. Under the Switch Panel tab, power pin 14 correctly operates the LED connected to A0. Everything works fine.
But I’m still having trouble using Ardulink MQTT. When I run the command:
xerocraft@xerocraft:~$ java -jar /home/xerocraft/Downloads/ardulink/lib/ardulink-mqtt-2.1.0.jar -d 2
I get this output:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-jdk14-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
May 19, 2018 1:27:42 AM org.apache.camel.impl.DefaultCamelContext start
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is starting
May 19, 2018 1:27:42 AM org.apache.camel.management.ManagedManagementStrategy doStart
INFO: JMX is enabled
May 19, 2018 1:27:43 AM org.apache.camel.impl.converter.DefaultTypeConverter doStart
INFO: Loaded 182 type converters
May 19, 2018 1:27:43 AM org.apache.camel.impl.DefaultRuntimeEndpointRegistry doStart
INFO: Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
May 19, 2018 1:27:43 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutting down
May 19, 2018 1:27:43 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) uptime 0.768 seconds
May 19, 2018 1:27:43 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutdown in 0.007 seconds
org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[ardulink://serial?listenTo=D2]] -> [proc… because of Failed to resolve endpoint: ardulink://serial?listenTo=D2 due to: No factory registered for “serial”, available names are []
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:201)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3295)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3018)
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2848)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2844)
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2867)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2844)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2813)
at org.ardulink.mqtt.MqttMain.connectToMqttBroker(MqttMain.java:192)
at org.ardulink.mqtt.MqttMain.doMain(MqttMain.java:173)
at org.ardulink.mqtt.MqttMain.main(MqttMain.java:154)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: ardulink://serial?listenTo=D2 due to: No factory registered for “serial”, available names are []
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:588)
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:79)
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:211)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:107)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:113)
at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:69)
at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:89)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1052)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
… 13 more
Caused by: java.lang.IllegalArgumentException: No factory registered for “serial”, available names are []
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.ardulink.util.Optional.newException(Optional.java:158)
at org.ardulink.util.Optional.getOrThrow(Optional.java:151)
at org.ardulink.core.linkmanager.LinkManager$1.getConfigurer(LinkManager.java:603)
at org.ardulink.core.convenience.Links.getLink(Links.java:93)
at org.ardulink.camel.ArdulinkEndpoint.createLink(ArdulinkEndpoint.java:43)
at org.ardulink.camel.ArdulinkEndpoint.(ArdulinkEndpoint.java:35)
at org.ardulink.camel.ArdulinkComponent.createEndpoint(ArdulinkComponent.java:57)
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:114)
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:568)
… 21 more
*********************************************************************************
Thinking that the issue was due to the program trying to connect to the Arduino over “serial” (which didn’t work in Ardulink Console), I tried setting the connection to “serial-jssc” with this command:
xerocraft@xerocraft:~$ java -jar /home/xerocraft/Downloads/ardulink/lib/ardulink-mqtt-2.1.0.jar -connection ardulink://serial-jssc -d 2
And I got this output:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-jdk14-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
May 19, 2018 2:07:56 AM org.apache.camel.impl.DefaultCamelContext start
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is starting
May 19, 2018 2:07:56 AM org.apache.camel.management.ManagedManagementStrategy doStart
INFO: JMX is enabled
May 19, 2018 2:07:57 AM org.apache.camel.impl.converter.DefaultTypeConverter doStart
INFO: Loaded 182 type converters
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultRuntimeEndpointRegistry doStart
INFO: Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutting down
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) uptime 1.662 seconds
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutdown in 0.048 seconds
org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[ardulink://serial-jssc?listenTo=D2]] -> … because of Failed to resolve endpoint: ardulink://serial-jssc?listenTo=D2 due to: No factory registered for “serial-jssc”, available names are []
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:201)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3295)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3018)
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2848)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2844)
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2867)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2844)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2813)
at org.ardulink.mqtt.MqttMain.connectToMqttBroker(MqttMain.java:192)
at org.ardulink.mqtt.MqttMain.doMain(MqttMain.java:173)
at org.ardulink.mqtt.MqttMain.main(MqttMain.java:154)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: ardulink://serial-jssc?listenTo=D2 due to: No factory registered for “serial-jssc”, available names are []
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:588)
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:79)
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:211)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:107)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:113)
at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:69)
at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:89)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1052)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
… 13 more
Caused by: java.lang.IllegalArgumentException: No factory registered for “serial-jssc”, available names are []
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.ardulink.util.Optional.newException(Optional.java:158)
at org.ardulink.util.Optional.getOrThrow(Optional.java:151)
at org.ardulink.core.linkmanager.LinkManager$1.getConfigurer(LinkManager.java:603)
at org.ardulink.core.convenience.Links.getLink(Links.java:93)
at org.ardulink.camel.ArdulinkEndpoint.createLink(ArdulinkEndpoint.java:43)
at org.ardulink.camel.ArdulinkEndpoint.(ArdulinkEndpoint.java:35)
at org.ardulink.camel.ArdulinkComponent.createEndpoint(ArdulinkComponent.java:57)
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:114)
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:568)
… 21 more
*********************************************************************************
To be honest, I’m not really sure what output I’m expecting from Ardulink MQTT at this point.
But what does the “no factory registered” error mean? How will I know that Ardulink MQTT is running properly as required by your instructions at https://forum.arduino.cc/index.php?topic=526130.msg3678758#msg3678758 ?
Thanks again,
Jeremy
Hello Jeremy,
ok when Ardulink starts it looks for all link implementations available in the classpath. So no bind is done at compile time but just at runtime. Ardulink MQTT looks for serial connection by default. So you have to add the serial jar implementation in the classpath. Again if you start Ardulink MQTT from Ardulink distro it should have all classpaths configured correctly. Of course you can choose another link implementation selecting it from the connection string.
So you could try to run ardulink mqtt with option -connection ardulink://serial-jssc
Thank you Luciano. I did try adding the option “-connection ardulink://serial-jssc” in my May 21 post:
java -jar /home/xerocraft/Downloads/ardulink/lib/ardulink-mqtt-2.1.0.jar -connection ardulink://serial-jssc -d 2
And I got this output:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-jdk14-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/xerocraft/Downloads/ardulink/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
May 19, 2018 2:07:56 AM org.apache.camel.impl.DefaultCamelContext start
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is starting
May 19, 2018 2:07:56 AM org.apache.camel.management.ManagedManagementStrategy doStart
INFO: JMX is enabled
May 19, 2018 2:07:57 AM org.apache.camel.impl.converter.DefaultTypeConverter doStart
INFO: Loaded 182 type converters
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultRuntimeEndpointRegistry doStart
INFO: Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutting down
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) uptime 1.662 seconds
May 19, 2018 2:07:57 AM org.apache.camel.impl.DefaultCamelContext doStop
INFO: Apache Camel 2.17.1 (CamelContext: camel-1) is shutdown in 0.048 seconds
org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[ardulink://serial-jssc?listenTo=D2]] -> … because of Failed to resolve endpoint: ardulink://serial-jssc?listenTo=D2 due to: No factory registered for “serial-jssc”, available names are []
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:201)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3295)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3018)
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2848)
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2844)
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2867)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2844)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2813)
at org.ardulink.mqtt.MqttMain.connectToMqttBroker(MqttMain.java:192)
at org.ardulink.mqtt.MqttMain.doMain(MqttMain.java:173)
at org.ardulink.mqtt.MqttMain.main(MqttMain.java:154)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: ardulink://serial-jssc?listenTo=D2 due to: No factory registered for “serial-jssc”, available names are []
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:588)
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:79)
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:211)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:107)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:113)
at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:69)
at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:89)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1052)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
… 13 more
Caused by: java.lang.IllegalArgumentException: No factory registered for “serial-jssc”, available names are []
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.ardulink.util.Optional.newException(Optional.java:158)
at org.ardulink.util.Optional.getOrThrow(Optional.java:151)
at org.ardulink.core.linkmanager.LinkManager$1.getConfigurer(LinkManager.java:603)
at org.ardulink.core.convenience.Links.getLink(Links.java:93)
at org.ardulink.camel.ArdulinkEndpoint.createLink(ArdulinkEndpoint.java:43)
at org.ardulink.camel.ArdulinkEndpoint.(ArdulinkEndpoint.java:35)
at org.ardulink.camel.ArdulinkComponent.createEndpoint(ArdulinkComponent.java:57)
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:114)
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:568)
… 21 more
*******************************************************************************
The message that jumps out at me is:
org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[ardulink://serial-jssc?listenTo=D2]] -> … because of Failed to resolve endpoint: ardulink://serial-jssc?listenTo=D2 due to: No factory registered for “serial-jssc”, available names are []
How do I resolve the “no factory registered” error?
Thanks again,
Jeremy
Hello Jeremy,
can you try to start ardulink-mqtt from lib folder?
cd /home/xerocraft/Downloads/ardulink/lib/
java -jar ardulink-mqtt-2.1.0.jar -connection ardulink://serial-jssc -d 2
I try to run application
and occurs this errors
java.lang.IllegalStateException: asciiString must not be null
at com.connection.util.Preconditions.checkNotNull(Preconditions.java:35)
at com.connection.util.URIs.newURI(URIs.java:18)
at com.connection.gui.connectionpanel.ConnectionPanel$1.getListCellRendererComponent(ConnectionPanel.java:90)