Hello Julian, providing the complete connection string the error is still present:
karaf@root()> plc4x:read modbus modbus:tcp://192.168.70.73 coil:1 Find driver service: Modbus Error executing command: Unsupported transport tcp During the other test, for example running a local class, the string without the transport code works flawlessly. Greetings, Alessio On Thu, Jun 11, 2020 at 1:05 PM Julian Feinauer < j.feina...@pragmaticminds.de> wrote: > I guess its in your config. If I remember correctly you have to state the > transport layer. > So in your case: > > Modbus:tcp://xxx > > Does that help? > > Am 11.06.20, 12:13 schrieb "Alessio Bernesco Làvore" < > alessio.berne...@gmail.com>: > > Thank you very much Cesar for your insight and your detailed > explanation, > much appreciated. > I've used your feature to enable your example and my works, now they > both > find the Modbus driver and all the flow seems clear to me. > > Running your command, but also running my test using an activator, > there's > a transport error: > > karaf@root()> plc4x:read modbus modbus://192.168.70.73 coil:1 > > > Find driver service: Modbus > Error executing command: Unsupported transport tcp > > I cannot understand if it's still related to a misconfiguration on my > side > or with the driver. > > Greetings, > Alessio > > > > > On Wed, Jun 10, 2020 at 8:25 AM Cesar Garcia <cesar.gar...@ceos.com.ve > > > wrote: > > > Hello Alessio, > > > > As I pointed out, with the new design of the drivers it is necessary > to > > make a few modifications so that the system allows communication > with the > > OSGi container. > > > > In a default installation, the load of services in the SPI services > are not > > seen between the different bundles, and that is the problem that is > > happening to you and, as Julian pointed out in his email, the Apache > Aries > > Fly project solves it. > > > > By default Karaf does not integrate the Aries Fly project (although > the > > page indicates that it does), it can be added in a feature or you can > > generate your own version of Karaf (I always start from a minimal > > installation), so I complement the feature you published and you > can see > > in[1]. > > > > Now each service / consumer must indicate within the manifest the > methods > > that it export or import as appropriate. In your case you need to > specify > > the transport services, specifically "PLC4J: Transports: TCP" and the > > consumer "PLC4J: SPI", which are what cause the problem. > Modifications in > > [2] and [3] are made in the POMs. > > > > At this point you should already see the transport and the > registered by > > spifly like in [4]. > > > > Well, here you can already use PLC4X in your bundle, in [5] leave an > > example code, creating a Karaf command with which you can access the > Modbus > > or S7 driver indifferently (Just test the Modbus). > > > > This could somehow be treated as a PR for the project, it should be > > evaluated. > > > > My grain of sand. > > > > 1. The feature > > > > <feature name='${project.artifactId}' description='${ > project.name}' > > version='${project.version}'> > > <details>${project.description}</details> > > <details>Implementation of the protocol adapters for usage > as Java > > library.</details> > > > <bundle>mvn:org.apache.plc4x/plc4j-osgi/0.8.0-SNAPSHOT</bundle> > > <bundle>mvn:org.osgi/osgi.core/6.0.0</bundle> > > > <bundle>mvn:org.apache.plc4x/plc4j-api/0.8.0-SNAPSHOT</bundle> > > > <bundle>mvn:org.apache.plc4x/plc4j-spi/0.8.0-SNAPSHOT</bundle> > > <bundle>mvn:io.netty/netty-codec/4.1.47.Final</bundle> > > <bundle>mvn:io.netty/netty-common/4.1.47.Final</bundle> > > <bundle>mvn:io.netty/netty-transport/4.1.47.Final</bundle> > > <bundle>mvn:io.netty/netty-resolver/4.1.47.Final</bundle> > > > <bundle>mvn:commons-beanutils/commons-beanutils/1.9.4</bundle> > > <bundle>mvn:commons-logging/commons-logging/1.2</bundle> > > > <bundle>mvn:commons-collections/commons-collections/3.2.2</bundle> > > <bundle>mvn:com.github.jinahya/bit-io/1.4.3</bundle> > > <bundle>mvn:commons-codec/commons-codec/1.12</bundle> > > > > <bundle>mvn:org.apache.plc4x/plc4j-driver-s7/0.8.0-SNAPSHOT</bundle> > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-driver-modbus/0.8.0-SNAPSHOT</bundle> > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-transport-tcp/0.8.0-SNAPSHOT</bundle> > > > > > > > <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.10.0</bundle> > > <bundle>mvn:org.apache.commons/commons-lang3/3.9</bundle> > > <bundle>mvn:io.netty/netty-buffer/4.1.47.Final</bundle> > > <bundle>mvn:io.vavr/vavr/0.10.2</bundle> > > <bundle>mvn:io.vavr/vavr-match/0.10.2</bundle> > > > > > > > > > > > > > > > > > > > > > > > > > > > > * <bundle>mvn:org.ow2.asm/asm/8.0.1</bundle> > > <bundle>mvn:org.ow2.asm/asm-util/8.0.1</bundle> > > <bundle>mvn:org.ow2.asm/asm-tree/8.0.1</bundle> > > <bundle>mvn:org.ow2.asm/asm-commons/8.0.1</bundle> > > <bundle>mvn:org.ow2.asm/asm-analysis/8.0.1</bundle> <!-- > > <bundle>mvn:biz.aQute.bnd/aQute.libg/5.0.1</bundle> > > <bundle>mvn:biz.aQute.bnd/biz.aQute.bndlib/5.0.1</bundle> --> > > > > > <bundle>mvn:org.apache.aries.spifly/org.apache.aries.spifly.weaver-internal/1.3.0</bundle> > > > > > > > <bundle>mvn:org.apache.aries.spifly/org.apache.aries.spifly.core-internal/1.3.0</bundle> > > > > > > > <bundle>mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/1.3.0</bundle> > > * > > > > </feature> > > > > [2] "PLC4J: Transports: TCP" > > > > <plugin> > > <groupId>org.apache.felix</groupId> > > <artifactId>maven-bundle-plugin</artifactId> > > <extensions>true</extensions> > > <configuration> > > <instructions> > > > > > > > <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> > > > > > > > <Bundle-Activator>org.apache.plc4x.java.osgi.TransportActivator</Bundle-Activator> > > > > > > > <Export-Service>org.apache.plc4x.java.spi.transport.Transport,org.apache.plc4x.java.transport.tcp.TcpTransport</Export-Service> > > * <SPI-Provider>*</SPI-Provider>* > > </instructions> > > </configuration> > > </plugin> > > > > [3] "PLC4J: SPI" > > <plugin> > > <groupId>org.apache.felix</groupId> > > <artifactId>maven-bundle-plugin</artifactId> > > <extensions>true</extensions> > > <configuration> > > <instructions> > > <Export-package>io.netty.bootstrap,*</Export-package> > > *<SPI-consumer>*</SPI-consumer>* > > </instructions> > > </configuration> > > </plugin> > > </plugins> > > > > [4] karaf@root()> service:list Transport > > [org.apache.plc4x.java.spi.transport.Transport] > > ----------------------------------------------- > > org.apache.plc4x.transport.code = tcp > > org.apache.plc4x.transport.name = IP/TCP Transport > > service.bundleid = 89 > > service.id = 207 > > service.scope = singleton > > Provided by : > > PLC4J: Transports: TCP (89) > > Used by: > > TestPLC4XOsgiWay Blueprint Bundle (51) > > > > [org.apache.plc4x.java.spi.transport.Transport] > > ----------------------------------------------- > > .org.apache.aries.spifly.provider.discovery.mode = > SPI_PROVIDER_HEADER > > .org.apache.aries.spifly.provider.implclass = > > org.apache.plc4x.java.transport.tcp.TcpTransport > > service.bundleid = 89 > > service.id = 208 > > service.scope = bundle > > serviceloader.mediator = 45 > > Provided by : > > PLC4J: Transports: TCP (89) > > > > [5] *https://github.com/glcj/TestPLC4X < > https://github.com/glcj/TestPLC4X > > >* > > > > > > El mar., 9 jun. 2020 a las 5:23, Alessio Bernesco Làvore (< > > alessio.berne...@gmail.com>) escribió: > > > > > Thank you Cesar, > > > thanks for your insight, but i think i'm still lost somewhere. > > > > > > I've registered the driver inside my bundle context, at least i > think so: > > > > > > [org.apache.plc4x.java.api.PlcDriver] > > > ------------------------------------- > > > org.apache.plc4x.driver.code = modbus > > > org.apache.plc4x.driver.name = Modbus > > > service.bundleid = 165 > > > service.id = 247 > > > service.scope = singleton > > > Provided by : > > > PLC4J: Driver: Modbus (165) > > > Used by: > > > edgecontroller Bundle (164) <-- > > > > > > Anyway starting the bundle the PLC Driver Manager is unable to > find the > > > driver: > > > > > > 2020-06-09T09:17:50,132 | INFO | pipe-bundle:update > edgecontroller | > > > PlcDriverManager | 152 - > org.apache.plc4x.plc4j-api - > > > 0.8.0.SNAPSHOT | Instantiating new PLC Driver Manager with class > loader > > > sun.misc.Launcher$AppClassLoader@764c12b6 > > > 2020-06-09T09:17:50,132 | INFO | pipe-bundle:update > edgecontroller | > > > PlcDriverManager | 152 - > org.apache.plc4x.plc4j-api - > > > 0.8.0.SNAPSHOT | Registering available drivers... > > > 2020-06-09T09:17:50,133 | ERROR | pipe-bundle:update > edgecontroller | > > > Activator | 164 - edgecontroller - 1.0.0 | > Unable > > to > > > find driver for protocol 'modbus' > > > > > > Greetings, > > > Alessio > > > > > > On Mon, Jun 8, 2020 at 10:52 PM Cesar Garcia < > cesar.gar...@ceos.com.ve> > > > wrote: > > > > > > > Hello Alessio, > > > > > > > > Perform the test with the "feature" that you put online, and I > can see > > > that > > > > the services associated with the drivers are active. > > > > > > > > karaf@root()> service:list PlcDriver > > > > [org.apache.plc4x.java.api.PlcDriver] > > > > ------------------------------------- > > > > org.apache.plc4x.driver.code = modbus > > > > org.apache.plc4x.driver.name = Modbus > > > > service.bundleid = 59 > > > > service.id = 98 > > > > service.scope = singleton > > > > Provided by : > > > > PLC4J: Driver: Modbus (59) > > > > > > > > [org.apache.plc4x.java.api.PlcDriver] > > > > ------------------------------------- > > > > org.apache.plc4x.driver.code = s7 > > > > org.apache.plc4x.driver.name = Siemens S7 (Basic) > > > > service.bundleid = 60 > > > > service.id = 97 > > > > service.scope = singleton > > > > Provided by : > > > > PLC4J: Driver: S7 (Step7) (60) > > > > > > > > The solution is to use the "BundleContext" with a filter and > take the > > > field > > > > "org.apache.plc4x.driver.name " or the field > > > > "org.apache.plc4x.driver.code" ( They are the same ). I think > that is > > the > > > > way to do it in an OSGi environment. > > > > > > > > Loading the services with SPI is redundant, and it may happen > that the > > > SPI > > > > service does not see the PlcDriver Services (typical OSGi > problem). > > > > > > > > My grain of sand, > > > > > > > > Best regards, > > > > > > > > > > > > > > > > > > > > El lun., 8 jun. 2020 a las 15:41, Alessio Bernesco Làvore (< > > > > alessio.berne...@gmail.com>) escribió: > > > > > > > > > Thank you Julian, > > > > > i've tried to install th Aries SPI Bundle: > > > > > > > > > > 176 │ Active │ 80 │ 1.3.0 │ Apache Aries SPI > Fly > > > Dynamic > > > > > Weaving Bundle > > > > > > > > > > But i'm still unable to resolve the drivers. > > > > > > > > > > Ale > > > > > > > > > > On Mon, Jun 8, 2020 at 8:13 PM Julian Feinauer < > > > > > j.feina...@pragmaticminds.de> > > > > > wrote: > > > > > > > > > > > Hi Alessio, > > > > > > > > > > > > if I remember correctly you need the Aries SPI Fly package > loaded. > > > > > > In Plain PLC4X we use ServiceLoader to discover drivers. > > > > > > If you have nothing like Aries SPI Fly which mediates and > > "immitates" > > > > the > > > > > > ServiceLoader then you dont get a wiring between the > DriverManager > > > and > > > > > the > > > > > > driver. > > > > > > But I don’t checked the lastst implementation to be honest. > > > > > > > > > > > > Perhaps @Robinet, Etienne can help? > > > > > > > > > > > > Julian > > > > > > > > > > > > Am 08.06.20, 20:00 schrieb "Alessio Bernesco Làvore" < > > > > > > alessio.berne...@gmail.com>: > > > > > > > > > > > > Hello everyone, > > > > > > i've created a simple class reading values from a ModBus > PLC. > > > > > > > > > > > > I'm trying to use it inside Karaf, but at start the > class is > > > unable > > > > > to > > > > > > find > > > > > > the modbus driver. I've compiled and installed in Karaf > the > > > > > > "driver-s7-feature", with added the modbus driver: > > > > > > > > > > > > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > > > > > > <features xmlns=" > http://karaf.apache.org/xmlns/features/v1.6.0 > > " > > > > > > name="driver-s7-feature"> > > > > > > <feature name="driver-s7-feature" description="PLC4J: > > > > > > Karaf-Features: > > > > > > S7" version="0.8.0.SNAPSHOT"> > > > > > > <details>Implementation of the protocol adapters > for > > > usage > > > > as > > > > > > Java > > > > > > library.</details> > > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-osgi/0.8.0-SNAPSHOT</bundle> > > > > > > <bundle>mvn:org.osgi/osgi.core/6.0.0</bundle> > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-api/0.8.0-SNAPSHOT</bundle> > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-spi/0.8.0-SNAPSHOT</bundle> > > > > > > > <bundle>mvn:io.netty/netty-codec/4.1.47.Final</bundle> > > > > > > > <bundle>mvn:io.netty/netty-common/4.1.47.Final</bundle> > > > > > > > > > <bundle>mvn:io.netty/netty-transport/4.1.47.Final</bundle> > > > > > > > > <bundle>mvn:io.netty/netty-resolver/4.1.47.Final</bundle> > > > > > > > > > > > <bundle>mvn:commons-beanutils/commons-beanutils/1.9.4</bundle> > > > > > > > > <bundle>mvn:commons-logging/commons-logging/1.2</bundle> > > > > > > > > > > > > > <bundle>mvn:commons-collections/commons-collections/3.2.2</bundle> > > > > > > > <bundle>mvn:com.github.jinahya/bit-io/1.4.3</bundle> > > > > > > > <bundle>mvn:commons-codec/commons-codec/1.12</bundle> > > > > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-driver-s7/0.8.0-SNAPSHOT</bundle> > > > > > > > > > > > > > > > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-driver-modbus/0.8.0-SNAPSHOT</bundle> > > > > > > > > > > > > > > > > > > > > > > > > > <bundle>mvn:org.apache.plc4x/plc4j-transport-tcp/0.8.0-SNAPSHOT</bundle> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.10.0</bundle> > > > > > > > > <bundle>mvn:org.apache.commons/commons-lang3/3.9</bundle> > > > > > > > <bundle>mvn:io.netty/netty-buffer/4.1.47.Final</bundle> > > > > > > <bundle>mvn:io.vavr/vavr/0.10.2</bundle> > > > > > > <bundle>mvn:io.vavr/vavr-match/0.10.2</bundle> > > > > > > </feature> > > > > > > </features> > > > > > > > > > > > > Inside Karaf i can find all the active bundles: > > > > > > > > > > > > 152 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: API > > > > > > 153 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: > Driver: S7 > > > > (Step7) > > > > > > 154 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: OSGi > > > > > > 155 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: SPI > > > > > > 156 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: > Transports: > > > TCP > > > > > > 157 │ Active │ 80 │ 6.0.0.201403061837 │ osgi.core > > > > > > 164 │ Active │ 80 │ 1.0 │ > edgecontroller > > Bundle > > > > > > 165 │ Active │ 80 │ 0.8.0.SNAPSHOT │ PLC4J: > Driver: > > Modbus > > > > > > > > > > > > Anyway at startup the bundle doesnt find any driver: > > > > > > > > > > > > 2020-06-08T17:47:43,391 | INFO | FelixStartLevel | > > > > PlcDriverManager > > > > > > | 152 - org.apache.plc4x.plc4j-api - > 0.8.0.SNAPSHOT | > > > > > > Instantiating new PLC Driver Manager with class loader > > > > > > sun.misc.Launcher$AppClassLoader@764c12b6 > > > > > > 2020-06-08T17:47:43,391 | INFO | FelixStartLevel | > > > > PlcDriverManager > > > > > > | 152 - org.apache.plc4x.plc4j-api - > 0.8.0.SNAPSHOT | > > > > > > Registering > > > > > > available drivers... > > > > > > 2020-06-08T17:47:43,392 | ERROR | FelixStartLevel | > Activator > > > > > > | 164 - edgecontroller - 1.0.0 | Unable to > find > > driver > > > > for > > > > > > protocol 'modbus' > > > > > > > > > > > > edgecontroller is my bundle, looking at the Karaf log the > > > > > > PlcDriverManager > > > > > > is unable to find any driver. > > > > > > > > > > > > I cannot understand were i'm failing, could anyone > provide some > > > > > > insight? > > > > > > > > > > > > Thank you, > > > > > > Ale > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > *CEOS Automatización, C.A.* > > > > *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,* > > > > *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,* > > > > > > > > *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI* > > > > *Ing. César García* > > > > > > > > *Cel: +58 414-760.98.95* > > > > > > > > *Hotline Técnica SIEMENS: 0800 1005080* > > > > > > > > *Email: support.aan.automat...@siemens.com > > > > <support.aan.automat...@siemens.com>* > > > > > > > > > > > > > -- > > *CEOS Automatización, C.A.* > > *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,* > > *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,* > > > > *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI* > > *Ing. César García* > > > > *Cel: +58 414-760.98.95* > > > > *Hotline Técnica SIEMENS: 0800 1005080* > > > > *Email: support.aan.automat...@siemens.com > > <support.aan.automat...@siemens.com>* > > > >