This page last changed on May 11, 2013 by juha.

Hello,

For automatisation / domotica purposes, I installed and programmed an S7-200 PLC from Siemens in my new home.
It has a module to connect to the local network and there is a java library available to control it.
I was very happy when I found openremote as it is the perfect solution for controlling everything on my iPhone / iPad, especially since it can run on a synology device which I already had.

After some research and trail & error, I managed to develop a new protocol and locally build/run the controller, beehive & designer. I also successfully added the protocol to the designer. The only problem I have left right now is an error when I try to save or export my design, even when there is only an empty panel added. I get following error in the localhost.log every time I hit the save button:

May 9, 2013 12:34:29 PM org.apache.catalina.core.ApplicationContext log
SEVERE: Exception while dispatching incoming RPC call
java.lang.NullPointerException
	at javax.servlet.GenericServlet.getServletName(GenericServlet.java:322)
	at javax.servlet.GenericServlet.log(GenericServlet.java:277)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:212)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at org.openremote.modeler.server.BaseGWTSpringController.handleRequest(BaseGWTSpringController.java:67)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:859)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:793)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.openremote.modeler.filter.UserTimeoutFilter.doFilter(UserTimeoutFilter.java:61)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:354)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

The only other errors I can find are in the beehive part:

[org.openremote.beehive.repo.SVNClientFactory] : Can't register the cmdline adapter!
Beehive 3.0 Beta1 | 2013-05-09 10:55:03,261 ERROR
[org.openremote.beehive.repo.SVNClientFactory] : Can't create svnclient!
Beehive 3.0 Beta1 | 2013-05-09 10:55:06,897 ERROR
[org.openremote.beehive.api.service.impl.SVNDelegateServiceImpl] : Create svn client from file:///volume1/OpenRemote/webapps/beehive//svn-repos/lirc/trunk failed!

It has something to do with following part in the config.properties file, but I can't figure out how to get this right and I don't know how important it is either or even if it has anything to do with the error in the designer.

#Work directory, contains svn-repos, workCopy and sync history logs.
work.dir=/volume1/OpenRemote/webapps/beehive/

I would be very grateful if you could point me in the right direction to solve this problem.
In the future, I'm very much willing to contribute the final version of my PLC protocol.

If you need more information like certain configuration values, please let me know and I'll provide them asap.

Thank you in advance!

Kind regards

Jente Libaers

Update : I just noticed that I can save when nothing is added, but it fails the moment I add a default iPhone panel.

Posted by jente at May 10, 2013 10:52

Update : used wrong GWT to build designer.

I built the designer with GWT 2.5.1 (most recent at this time) because the build failed with GWT 2.0.4, which is recommended in the readme.txt.
This time I tried with GWT 2.4.0 which also makes the build succeed, and more important, solves my problem of saving the design.

Posted by jente at May 10, 2013 14:21

Good to hear.
Looking forward to your Siemens PLC contribution

Posted by mredeker at May 10, 2013 20:23

Thanks, have updated the readme. It was very outdated, several years old.

Would also be interested in the Siemens PLC integration into OpenRemote. Let us know if there's anything we can do to help you get that going...

Posted by juha at May 11, 2013 14:22
Document generated by Confluence on Jun 05, 2016 09:31