• Recent
    • Tags
    • Popular
    • Register
    • Login
    1. Home
    2. Matteo Cusmai
    3. Posts

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website
    • Profile
    • Following 1
    • Followers 0
    • Topics 7
    • Posts 15
    • Best 0
    • Controversial 0
    • Groups 0

    Posts made by Matteo Cusmai

    • RE: Once again MQTT over HTTP

      Hi all,
      there is some news about MQTT publisher?

      posted in Wishlist
      Matteo CusmaiM
      Matteo Cusmai
    • RE: Custom Angular Directives

      Hi Jared,
      now I am trying to develop custom directive under directive folder. I have some problem with requirejs.
      Thanks a lot for your advice, I will take it into account if I cannot develop the directives.

      posted in Dashboard Designer & Custom AngularJS Pages
      Matteo CusmaiM
      Matteo Cusmai
    • Custom Angular Directives

      Hi all,
      I would like to integrate some svg widget into my custom dashboards.

      I think the best way is to develop custom directive, isn't it?
      If so, could you give me some documentation or resources about this kind of stuff?

      Best,
      Matteo.

      posted in Dashboard Designer & Custom AngularJS Pages
      Matteo CusmaiM
      Matteo Cusmai
    • RE: event detection scripting

      Hi Phil,
      Thanks for the quick answer.
      There is some documentation about point links?

      posted in Scripting general Discussion
      Matteo CusmaiM
      Matteo Cusmai
    • event detection scripting

      Hi all,
      can I set a datapoint trough Meta Data Point?

      I have tried to set datapoint getting value from meta data point variable (my) but it seems no work.
      This is the code:

      LOG.fatal("before if: " + my.value);
      p399.set('f');
      return my.value;

      Is it possible to manage this kind of logic?

      Regards,
      Matteo.

      posted in Scripting general Discussion
      Matteo CusmaiM
      Matteo Cusmai
    • ZWave

      Hi all,
      I am trying to use Zwave module without success.

      I am using a Zwave.me Pc Adaptor
      http://store.zwaveeurope.com/index.php?cPath=58_59&language=en

      and a zwave device
      http://store.zwaveeurope.com/product_info.php?language=en&products_id=12431

      I was able to the get homeid, but I cannot retrieve the node and command classes.

      Does anyone have the same trouble?

      Bye,
      Matteo.

      posted in Mango Automation general Discussion
      Matteo CusmaiM
      Matteo Cusmai
    • Modbus register

      Hi all,
      I have to integrate a gateway dali modbus that uses the following commands

      Read Holding Registers (FC=03)
      Force Multiple Coils (FC=15)

      When I try to create data points belonging to this data source I cannot see this kind of command. Does mango modbus support these commands?

      posted in Modbus4J general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • RE: MTConnect

      Hi Phil,
      There is a complete implementation of mtcommect agent developed by mtconnect people. My idea is to develop a mango publisher to load data into the agent.

      posted in Mango Automation general Discussion
      Matteo CusmaiM
      Matteo Cusmai
    • MTConnect

      Hi all,
      have someone experienced the standard protocol called MTConnect (http://www.mtconnect.org/)?

      It is a standard protocol to read device information, static and dynamic.
      Is there some integration in Mango?

      Regards,
      Matteo.

      posted in Mango Automation general Discussion
      Matteo CusmaiM
      Matteo Cusmai
    • RE: Developing a module

      Hi all,
      I have solved the problem my myself.
      I was a problem of environment variable, I am using IntelliJ Idea as IDE and I had to set coreHome on ant properties.

      Bye,
      Matteo.

      posted in Development general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • Developing a module

      Hi all,
      I am working on zigbee module for mango.

      I cannot understand how I create zip to deploy on mango.
      I have developed something and I can run maven to create jar, but I need to create the whole directory structure for a module.
      Could you please give me more details about it?
      If you think this discussion could be useful for other people I can post the question on forum.

      Bye,
      Matteo.

      posted in Development general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • RE: modbus rest api error

      Thanks Phil,
      however putting class into overrides didn't work well, so I had to substitute it into the jar.

      posted in Modbus4J general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • RE: modbus rest api error

      Hi Phil,
      I have updated the modbus module, and as you told that bug was fixed, but I have fear there is another one.

      ERROR 2016-02-24 20:45:27,267 (com.serotonin.m2m2.web.mvc.rest.v1.exception.RestExceptionHandler.handleExceptionInternal:80) - Conflicting setter definitions for property "timeout": com.serotonin.m2m2.modbus.vo.ModbusDataSourceModel#setTimeout(1 params) vs com.serotonin.m2m2.modbus.vo.ModbusDataSourceModel#setRetires(1 params)
      java.lang.IllegalArgumentException: Conflicting setter definitions for property "timeout": com.serotonin.m2m2.modbus.vo.ModbusDataSourceModel#setTimeout(1 params) vs com.serotonin.m2m2.modbus.vo.ModbusDataSourceModel#setRetires(1 params)
      at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getSetter(POJOPropertyBuilder.java:303)
      at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.filterBeanProps(BeanDeserializerFactory.java:629)
      at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:527)
      at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:270)
      at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:168)
      at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:399)
      at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:348)
      at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:261)
      at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:241)
      at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
      at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:381)
      at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3154)
      at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3018)
      at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1637)
      at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:1981)
      at com.serotonin.m2m2.web.mvc.rest.v1.mapping.DataSourceModelDeserializer.deserialize(DataSourceModelDeserializer.java:57)
      at com.serotonin.m2m2.web.mvc.rest.v1.mapping.DataSourceModelDeserializer.deserialize(DataSourceModelDeserializer.java:27)
      at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051)
      at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2206)
      at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:221)
      at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:208)
      at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:197)
      at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:147)
      at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:125)
      at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:78)
      at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162)
      at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129)
      at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729)
      at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
      at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
      at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
      at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:300)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      at org.eclipse.jetty.server.Server.handle(Server.java:499)
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
      at java.lang.Thread.run(Thread.java:744)

      In class ModbusDataSourceModel there is a "copy paste" error I think by seeing the code:

      @JsonGetter("timeout")
      public int getTimeout() {
      return ((ModbusDataSourceVO)this.data).getTimeout();
      }

      @JsonSetter("timeout")
      public void setTimeout(int timeout) {
          ((ModbusDataSourceVO)this.data).setTimeout(timeout);
      }
      
      @JsonGetter("retries")
      public int getRetries() {
          return ((ModbusDataSourceVO)this.data).getRetries();
      }
      
      @JsonSetter("timeout")
      public void setRetires(int retries) {
          ((ModbusDataSourceVO)this.data).setRetries(retries);
      }
      
      posted in Modbus4J general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • RE: modbus rest api error

      Hi,
      Thanks a lot for the quick reply.
      I am using 1.6.2, so I will update soon.

      posted in Modbus4J general discussion
      Matteo CusmaiM
      Matteo Cusmai
    • modbus rest api error

      Hi all,
      I am trying to use rest API.

      When I try to fetch all data sources I receive the following server error.
      {
      "message": null,
      "stackTrace": "com.serotonin.m2m2.modbus.vo.ModbusIpDataSourceModel.getHost(ModbusIpDataSourceModel.java:41)\nsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\nsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.lang.reflect.Method.invoke(Method.java:483)\ncom.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:466)\ncom.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:639)\ncom.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)\ncom.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:100)\ncom.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:21)\ncom.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:183)\ncom.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:114)\ncom.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:602)\norg.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:264)\norg.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:100)\norg.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:202)\norg.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:186)\norg.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\norg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:687)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:790)\norg.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)\norg.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)\norg.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)\norg.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:364)\norg.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\norg.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)\norg.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)\norg.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\ncom.serotonin.m2m2.web.mvc.spring.security.CsrfHeaderFilter.doFilterInternal(CsrfHeaderFilter.java:41)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\norg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)\norg.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)\norg.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)\norg.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)\norg.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)\norg.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\norg.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)\norg.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\norg.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)\norg.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)\norg.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)\norg.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)\norg.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\norg.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)\norg.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\norg.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)\norg.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\norg.eclipse.jetty.server.Server.handle(Server.java:499)\norg.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)\norg.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)\norg.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\norg.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\norg.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\njava.lang.Thread.run(Thread.java:744)\n"
      }

      I receive this error only if there is a modbus ip device registered.

      It seems there is a bug in class com.serotonin.m2m2.modbus.vo.ModbusIpDataSourceModel, because I receive a null pointer exception on getHost() method. From my understanding I could be caused by a declaration of a attribute called data even if it is already declared in super class.

      Has anyone received the same error?

      posted in Modbus4J general discussion
      Matteo CusmaiM
      Matteo Cusmai