• Recent
    • Tags
    • Popular
    • Register
    • Login
    1. Home
    2. Holzatelier
    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
    H
    • Profile
    • Following 0
    • Followers 0
    • Topics 8
    • Posts 34
    • Best 0
    • Controversial 0
    • Groups 0

    Posts made by Holzatelier

    • RE: HTTP Json Receiver Timestamp

      @holzatelier Just a little update on this.
      It seems the data points are indeed updated on my system when timestamps are passed along with the JSON data. What I didn't realize is that if the timestamp predates the last entry in the point value history then the browser window needs to be refreshed to show the added historic data value.

      So this works for me now besides the missing JSON parsing Error.

      Thank you again for your attention.

      posted in User help
      H
      Holzatelier
    • RE: HTTP Json Receiver Timestamp

      @terrypacker Thanks again for looking at this.

      I have disabled ipv6 on all adaptors of the sending system:

      user@imac21:~$ sudo nano /etc/sysctl.conf
      [sudo] password for user:        
      user@imac21:~$ sudo sysctl -p
      net.ipv6.conf.all.disable_ipv6 = 1
      user@imac21:~$ ifconfig
      enp3s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.1.126  netmask 255.255.255.0  broadcast 192.168.1.255
              ether 10:dd:b1:af:71:03  txqueuelen 1000  (Ethernet)
              RX packets 1778257  bytes 2274299048 (2.1 GiB)
              RX errors 0  dropped 1399  overruns 0  frame 0
              TX packets 878148  bytes 93002850 (88.6 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
              device interrupt 18  
      
      lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
              inet 127.0.0.1  netmask 255.0.0.0
              loop  txqueuelen 1000  (Local Loopback)
              RX packets 826  bytes 41215 (40.2 KiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 826  bytes 41215 (40.2 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      
      wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.1.129  netmask 255.255.255.0  broadcast 192.168.1.255
              ether ec:35:86:38:91:5e  txqueuelen 1000  (Ethernet)
              RX packets 8  bytes 1257 (1.2 KiB)
              RX errors 0  dropped 0  overruns 0  frame 189
              TX packets 126  bytes 16513 (16.1 KiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
              device interrupt 19  
      
      

      However this has not changed the behavior regarding the timestamp on my system.
      IMHO this looks like an issue with the parsing of the timestamp from the JSON message since the data is recieved correctly yet the point is not updated when a valid timestamp is present in the 'timestamp' tag. If the timestamp is 0 or not present then the point is updated using current system time. It also seems odd to me that there would be no parsing error if the JSON pointer for the timestamp is pointing to a non existing tag.

      posted in User help
      H
      Holzatelier
    • RE: HTTP Json Receiver Timestamp

      @jared-wiltshire Thank you for your prompt response.
      Unfortunately I'm still unable to get the timestamp logged with the point value.

      I changed my data source as suggested:

      {
        "dataSources":[
          {
            "xid":"DS_580c90e4-2b83-47aa-a4e7-3062c1a748f0",
            "name":"JSON-test",
            "enabled":true,
            "type":"HTTP_JSON_RECEIVER",
            "alarmLevels":{
              "SET_POINT_FAILURE":"URGENT",
              "JSON_READ_FAILURE":"URGENT"
            },
            "purgeType":"YEARS",
            "setType":"PUBLISHER",
            "dateFormat":"DATE_FORMAT_UTC",
            "receiveType":"JSON",
            "deviceIdWhiteList":[
              "*"
            ],
            "ipWhiteList":[
              "*.*.*.*"
            ],
            "setPointUrl":"",
            "data":null,
            "editPermission":[
              [
                "superadmin"
              ]
            ],
            "purgeOverride":false,
            "purgePeriod":1,
            "readPermission":[
            ]
          }
        ]
      }
      

      My data point is setup like this:
      ACI point setup.png
      ACI logging properties.png
      Let's say I want to send a value of 0.123456 with a timestamp of 12 Aug 2021 11:00:00 (ie epoch in ms: 1628766000000).

      This is what the HTTP JSON Reciever revieves:

      Zeit: Donnerstag, August 12. 2021, 2:28:54 pm
      
      {
        "analyser": [
          {
            "parameter": "ACI",
            "value": 0.123456,
            "timestamp": 1628766000000
          }
        ]
      }
      

      But the point is not updated:

      ACI not logging.png

      However if I send a timestamp of 0:

      Zeit: Donnerstag, August 12. 2021, 2:37:55 pm
      
      {
        "analyser": [
          {
            "parameter": "ACI",
            "value": 0.123456,
            "timestamp": 0
          }
        ]
      }
      

      The data point is updated using system time:

      ACI logging.png

      So it seems that if a JSON message with a valid timestamp is recieved the point is not updated but if the timestamp is not valid or missing then the point is updated using current system time. There are no error messages in the browser or in the ma.log. Neither are there any events logged.

      Looks like this has come up before: https://forum.mango-os.com/topic/4976/event-detector-created-event-with-wrong-timestamp?_=1628768475714

      posted in User help
      H
      Holzatelier
    • RE: HTTP Json Receiver Timestamp

      I have the same issue. My Json data as it is recieved in the "TEST RECIEVER" window:

      {
        "analyser": [
          {
            "parameter": "ACI",
            "value": 0.5678807,
            "timestamp": 1628632800000
          },
          {
            "parameter": "ACV",
            "value": 229.658
          }
        ]
      }
      

      This is my point setup:

      ACI-JSON test.png

      The problem is that there are no errors but the point is not updated at all. If I remove the 'Timestamp identifier' or even point it to some non existing JSON entry like /analyser/0/xyz the point updates just fine using system time as the timestamp.

      This is using Version 4.0.0

      posted in User help
      H
      Holzatelier
    • RE: Data file source - unable to Compile New Templates

      @joelhaggar

      Thanks! That solved it.
      My apologies if that could have been found in the documentation. I looked but I didn't find anything.

      posted in User help
      H
      Holzatelier
    • RE: Data file source - unable to Compile New Templates

      Here is the other half:

      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at com.serotonin.m2m2.web.mvc.spring.security.RateLimitingFilter.doFilterInternal(RateLimitingFilter.java:94) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:133) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:340) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:183) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:138) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:361) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at java.lang.Thread.run(Thread.java:829) [?:?]
      WARN  2021-07-19T18:16:07,331 (com.infiniteautomation.mango.rest.latest.exception.RestExceptionHandler.handleExceptionInternal:268) - Denying access, returning status 401 UNAUTHORIZED for request uri=/rest/latest/users/current;client=192.168.1.126
      org.springframework.security.access.AccessDeniedException: Anonymous access is not allowed
      	at com.serotonin.m2m2.web.mvc.spring.security.permissions.RequireAuthenticationInterceptor.preHandle(RequireAuthenticationInterceptor.java:39) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:148) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at com.infiniteautomation.mango.webapp.filters.MangoCacheControlHeaderFilter.doFilter(MangoCacheControlHeaderFilter.java:154) ~[mango-4.0.0.jar:?]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:196) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:166) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at com.serotonin.m2m2.web.mvc.spring.security.RateLimitingFilter.doFilterInternal(RateLimitingFilter.java:94) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:133) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:340) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:183) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:138) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:361) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at java.lang.Thread.run(Thread.java:829) [?:?]
      
      

      Also note that for this session I tried to compile the templates from a remote machine but I've also tried on the local machine (localhost) and I still get the same error in the browser console.

      posted in User help
      H
      Holzatelier
    • RE: Data file source - unable to Compile New Templates

      @jared-wiltshire
      Thank you for your prompt response.

      Maybe I need to elaborate a bit.
      I'm trying to add a Data File source for a CSV file but there are no entries in the 'template' list to choose from.
      DataSource_DataFile TemplateList.png
      As I understand it I need to compile the 'MultiColumnCsvImorter.java' and 'SimpleCSVImporter.java' from the '/opt/mango/web/modules/dataFile/resources/examples/CSV' folder.

      DataSource_DataFile example CsvImporters.png

      So I click on the 'COMPILE NEW TEMPLATES' button and I only get the error in the browser console as posted above.

      Note that I have chosen to have mango run as 'user' instead of 'mango'

      I'll have to split the content of ma.log because it seems the post gets too long otherwise.

      INFO  2021-07-19T18:15:25,388 (com.serotonin.m2m2.Main.createLifecycle:262) - Starting Mango 4.0.0 with Schema Version: 41
      INFO  2021-07-19T18:15:25,422 (com.serotonin.m2m2.Main.createLifecycle:266) - Java VM: OpenJDK 64-Bit Server VM, version: 11.0.11+9, vendor: AdoptOpenJDK
      INFO  2021-07-19T18:15:25,426 (com.serotonin.m2m2.Main.createLifecycle:267) - Java spec: Java Virtual Machine Specification, version: 11, vendor: Oracle Corporation
      INFO  2021-07-19T18:15:25,427 (com.serotonin.m2m2.Main.createLifecycle:273) - Operating System: Linux, arch: amd64, version: 5.8.0-36-generic
      INFO  2021-07-19T18:15:25,433 (com.serotonin.m2m2.Main.createLifecycle:279) - Running as user account: user
      INFO  2021-07-19T18:15:25,434 (com.serotonin.m2m2.Main.createLifecycle:282) - Installation directory: /opt/mango
      INFO  2021-07-19T18:15:25,435 (com.serotonin.m2m2.Main.createLifecycle:283) - Data directory: /opt/mango-data
      INFO  2021-07-19T18:15:25,436 (com.serotonin.m2m2.Main.createLifecycle:284) - Configuration file: /opt/mango-data/mango.properties
      INFO  2021-07-19T18:15:26,433 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'opcda', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,439 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'snmp', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,442 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'log4JReset', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,444 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'mqttClientDataSource', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,447 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'egauge', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,450 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'cloudConnect', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,453 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'sstGlobalScripts', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,455 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'scripting', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,458 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'advancedScheduler', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,460 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'lineProtocolDataSource', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,464 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'Haystack', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,470 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'asciiFile', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,474 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'envcands', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,477 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'mangoUI', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,480 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'meta', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,483 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'maintenanceEvents', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,485 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'modbus', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,488 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'controlcore', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,492 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'dataFile', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,496 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'BACnet', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,505 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'graaljs', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,509 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'watchlists', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,512 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'ssh', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,514 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'slackPublisher', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,519 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'sqlConsole', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,522 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'serial', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,525 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'TCPIP', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,529 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'dashboardDesigner', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,532 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'pop3', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,535 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'dnp3', v4.0.1 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,538 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'groovy', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,540 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'log4jDS', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,543 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'vmstat', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,548 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'http', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,551 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'excelReports', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,556 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'onewire', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,559 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'virtualDS', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,561 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'sqlds', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,564 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'mangoApi', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:26,568 (com.serotonin.m2m2.Main.loadModules:670) - Loading module 'internal', v4.0.0 by Infinite Automation Systems Inc.
      INFO  2021-07-19T18:15:30,052 (com.serotonin.m2m2.Lifecycle.loadLic:596) - Checking license...
      INFO  2021-07-19T18:15:30,053 (com.serotonin.m2m2.Lifecycle.loadLic:690) - License file not found
      INFO  2021-07-19T18:15:30,513 (com.serotonin.m2m2.db.H2Proxy.initializeImpl:79) - Initializing H2 connection manager
      INFO  2021-07-19T18:15:35,231 (com.serotonin.m2m2.db.upgrade.DBUpgrade.checkUpgrade:37) - Starting instance with core version 4.0.0, schema v41
      INFO  2021-07-19T18:15:43,653 (com.infiniteautomation.mango.spring.MangoRuntimeContextConfiguration.contextRefreshed:159) - Spring context 'runtimeContext' refreshed: org.springframework.context.annotation.AnnotationConfigApplicationContext@773eca84
      INFO  2021-07-19T18:15:43,666 (com.infiniteautomation.mango.spring.MangoRuntimeContextConfiguration.contextStarted:173) - Spring context 'runtimeContext' started: org.springframework.context.annotation.AnnotationConfigApplicationContext@773eca84
      INFO  2021-07-19T18:15:45,140 (com.serotonin.m2m2.rt.RuntimeManagerImpl.initialize:182) - Starting 0 Publishers...
      INFO  2021-07-19T18:15:45,141 (com.serotonin.m2m2.rt.RuntimeManagerImpl.initialize:193) - 0 Publisher's started in 4ms
      INFO  2021-07-19T18:15:48,794 (com.infiniteautomation.mango.spring.MangoRuntimeContextConfiguration.contextRefreshed:159) - Spring context 'rootWebContext' refreshed: Root WebApplicationContext
      WARN  2021-07-19T18:15:49,532 (org.springframework.core.log.CompositeLog.warn:127) - For Jackson Kotlin classes support please add "com.fasterxml.jackson.module:jackson-module-kotlin" to the classpath
      INFO  2021-07-19T18:15:49,836 (com.infiniteautomation.mango.spring.MangoRuntimeContextConfiguration.contextRefreshed:159) - Spring context 'restDispatcherContext' refreshed: WebApplicationContext for namespace 'REST_DISPATCHER-servlet'
      INFO  2021-07-19T18:15:56,351 (com.infiniteautomation.mango.spring.MangoRuntimeContextConfiguration.contextRefreshed:159) - Spring context 'restV3Context' refreshed: WebApplicationContext for namespace 'restV3DispatcherServlet-servlet'
      WARN  2021-07-19T18:15:58,888 (com.infiniteautomation.mango.rest.latest.exception.RestExceptionHandler.handleExceptionInternal:268) - Denying access, returning status 401 UNAUTHORIZED for request uri=/rest/latest/users/current;client=192.168.1.126
      org.springframework.security.access.AccessDeniedException: Anonymous access is not allowed
      	at com.serotonin.m2m2.web.mvc.spring.security.permissions.RequireAuthenticationInterceptor.preHandle(RequireAuthenticationInterceptor.java:39) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:148) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at com.infiniteautomation.mango.webapp.filters.MangoCacheControlHeaderFilter.doFilter(MangoCacheControlHeaderFilter.java:154) ~[mango-4.0.0.jar:?]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:196) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:166) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at com.serotonin.m2m2.web.mvc.spring.security.RateLimitingFilter.doFilterInternal(RateLimitingFilter.java:94) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:115) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:133) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:340) ~[jetty-server-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:183) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:138) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:361) ~[http2-common-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) ~[jetty-util-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at java.lang.Thread.run(Thread.java:829) [?:?]
      WARN  2021-07-19T18:16:00,964 (com.infiniteautomation.mango.rest.latest.exception.RestExceptionHandler.handleExceptionInternal:268) - Denying access, returning status 401 UNAUTHORIZED for request uri=/rest/latest/users/current;client=192.168.1.126
      org.springframework.security.access.AccessDeniedException: Anonymous access is not allowed
      	at com.serotonin.m2m2.web.mvc.spring.security.permissions.RequireAuthenticationInterceptor.preHandle(RequireAuthenticationInterceptor.java:39) ~[mango-4.0.0.jar:?]
      	at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:148) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at com.infiniteautomation.mango.webapp.filters.MangoCacheControlHeaderFilter.doFilter(MangoCacheControlHeaderFilter.java:154) ~[mango-4.0.0.jar:?]
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.41.v20210516.jar:9.4.41.v20210516]
      	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:196) ~[spring-security-web-5.4.2.jar:5.4.2]
      	at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:166) ~[spring-security-web-5.4.2.jar:5.4.2]
      
      posted in User help
      H
      Holzatelier
    • Data file source - unable to Compile New Templates

      I'm trying to get the CSV templates for a "Data file" data source to compile.
      In the "DATA FILE TOOLS" tab I click on the "UPLOAD TMPLATE/POLL CLASS" tab and I see "MulitColumnCsvImporter.java" and "SimpleCsvImporter.jaba" listed.
      When I click on "COMPILE NEW TEMPLATES" nothing seems to happen but I get an error in the browser console:

      mangoUi~ngMango~ngMangoServices.js?v=536b31da9bbc5cc4a3ce:44 Possibly unhandled rejection: {"data":{"cause":null,"result":{"messages":[{"level":"ERROR","message":"???validate.requiredValue(i18n_de_DE)???","property":"templateFiles"}]},"mangoStatusCode":4002,"mangoStatusName":"VALIDATION_FAILED","localizedMessage":"Validation failed"},"status":422,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/rest/latest/data-file-data-source/compile","headers":{"Accept":"application/json","X-Requested-With":"XMLHttpRequest","Content-Type":"application/json;charset=utf-8","X-XSRF-TOKEN":"83966bc1-9eec-434c-8241-0f0cfb141467"},"data":{"additionalClasspath":"","destinationFileStore":"DATA_FILE_COMPILED_TEMPLATE","templateFiles":[]},"cached":false,"timeout":30000},"statusText":"","xhrStatus":"complete","mangoStatusText":"Validation failed, property ''templateFiles'' — ???validate.requiredValue(i18n_de_DE)???","mangoStatusTextShort":"Validation failed","mangoStatusTextFirstValidationMsg":"???validate.requiredValue(i18n_de_DE)???"}
      

      I'm logged in as superadmin.

      Thanks

      CORE: 4.0.0
      JAVA: openjdk version "11.0.11" 2021-04-20
      OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
      OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
      INSTALL METHOD: Linux installation script
      BROWSER: CHROME Version 91.0.4472.164 and every browser I tried.

      posted in User help
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Thank you for all the help with this!

      It works now:forecast_chart.png

      Turns out there was no need to escape the data. It's this that fixed it:

      json-string='""+ptVals+""'
      

      So here is my markup in case anybody else is interested:

      <div class="ma-designer-root" style="width: 100%; height: 100%; position: relative;" id="792c5eac-7dc7-4de0-8e0e-a4df6d1d98d5">
          
          <ma-get-point-value point-xid="DP_be6e20a6-a71d-493a-a8b8-623a6d259b77" point="minTemp"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_bb9a46b6-440b-4908-a8fb-1412d1f160d9" point="meanTemp"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_e786c22d-1c02-44f6-bab0-7b669cdab3c0" point="maxTemp"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_238a534c-fe33-4ed8-b9b3-35b1b2e1be6d" point="minPrecip"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_5eadd0ab-68d8-43b6-8398-c8d95c30cbb2" point="meanPrecip"></ma-get-point-value>
          <ma-get-point-value point-xid="DP_7a00c8d4-760d-4d2d-9770-dd447f9c3bf8" point="maxPrecip"></ma-get-point-value>
      
          <get-json-object json-string='""+minTemp.renderedValue+""' output="minTempValues"></get-json-object>
          <get-json-object json-string='""+meanTemp.renderedValue+""' output="meanTempValues"></get-json-object>
          <get-json-object json-string='""+maxTemp.renderedValue+""' output="maxTempValues"></get-json-object>
          <get-json-object json-string='""+minPrecip.renderedValue+""' output="minPrecipValues"></get-json-object>
          <get-json-object json-string='""+meanPrecip.renderedValue+""' output="meanPrecipValues"></get-json-object>
          <get-json-object json-string='""+maxPrecip.renderedValue+""' output="maxPrecipValues"></get-json-object>
      
          <ma-serial-chart 
              default-type="smoothedLine" 
              style="height: 100%; width: 100%" 
              series-1-color="rgba(255, 128, 0, 0.3)" series-1-axis="left" series-1-values="minTempValues" 
              series-2-color="rgba(255, 128, 0, 1)"   series-2-axis="left" series-2-values="meanTempValues" 
              series-3-color="rgba(255, 128, 0, 0.3)" series-3-axis="left" series-3-values="maxTempValues" 
              series-4-type="column" series-4-color="rgba(1, 15, 18, 1)"     series-4-axis="right" series-4-values="minPrecipValues"  
              series-5-type="column" series-5-color="rgba(0, 255, 255, 0.3)" series-5-axis="right" series-5-values="meanPrecipValues"  
              series-6-type="column" series-6-color="rgba(0, 92, 92, 0.2)"   series-6-axis="right" series-6-values="maxPrecipValues" 
              options="{
                          valueAxes:[
                              {
                                  axisColor:'rgba(255, 128, 0, 1)', 
                                  title: 'Temperatur [°C]', 
                                  fontSize:16,
                                  titleFontSize:18,
                              }, 
                              {
                                  axisColor:'rgba(0, 255, 255, 0.3)', 
                                  title: 'Niederschlag [mm]', 
                                  fontSize:16,
                                  titleFontSize:18, 
                              }
                          ]
          }" ></ma-serial-chart>
          
      </div>
      
      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Thank you for the module!

      I got it working as far as you had it running in your last post. However I'm struggling to get the point data hooked into the module call in the markup. This is what I have now:

      <ma-point-values point-xid="DP_be6e20a6-a71d-493a-a8b8-623a6d259b77"  point="minTemp" values="minTempVals"></ma-point-values>
      <get-json-object json-string="minTempVals" output="ptValues"></get-json-object>
      <p>{{ptValues}}</p>
      <ma-serial-chart  default-type="smoothedLine" style="height: 300px; width: 100%" serias-1-point="" series-1-values="ptValues"></ma-serial-chart>
      

      This doesn't show the chart and the module spits out a warning:

      Input not string
      

      If I use the curly brackets to call the values like this:

      <get-json-object json-string={{minTempVals}} output="ptValues"></get-json-object>
      

      I get an error:

      Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{minTempVals}}] starting at [{minTempVals}}].
      

      So how do I pass the point value as a string? I presume that by not using this in the serial-chart markup:

      from="dateBar.from" to="dateBar.to"
      

      we just grab the latest data entry of the data point?

      Somehow I think I maybe need to concatenate the point value to double quotes?

      " + {{minTemp.value}} + "

      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Fox, thanks for your support.

      I tried the suggested code:
      With {{}} I get an error:

      Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{JSON.parse(minTempVals)}}] starting at [{JSON.parse(minTempVals)}}].
      

      Without {{}} I get no error but still no chart.

      As for the userModule, I found the HowTo and now have the userComponent available in the dashboard designer:

      Hello World.png

      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Wow, thanks Matt. I really appreciate it!

      After a bit of fiddling I have the script writing the JSON arrays to the Data Points.
      And yes I'll definitely need some help to get this to show in a chart:

      [{"value":0.3,"timestamp":1611615600000},{"value":0.3,"timestamp":1611619200000},{"value":0.2,"timestamp":1611622800000},{"value":0.3,"timestamp":1611626400000},{"value":0.3,"timestamp":1611630000000},{"value":-0.1,"timestamp":1611633600000},{"value":-0.2,"timestamp":1611637200000},{"value":-0.6,"timestamp":1611640800000},{"value":-0.8,"timestamp":1611644400000},{"value":-0.6,"timestamp":1611648000000},{"value":-0.2,"timestamp":1611651600000},{"value":0.7,"timestamp":1611655200000},{"value":1.5,"timestamp":1611658800000},{"value":1.7,"timestamp":1611662400000},{"value":1.9,"timestamp":1611666000000},{"value":2,"timestamp":1611669600000},{"value":1.8,"timestamp":1611673200000},{"value":1.8,"timestamp":1611676800000},{"value":1.5,"timestamp":1611680400000},{"value":1.1,"timestamp":1611684000000},{"value":0.4,"timestamp":1611687600000},{"value":-0.2,"timestamp":1611691200000},{"value":-0.9,"timestamp":1611694800000},{"value":-1.4,"timestamp":1611698400000},{"value":-1.8,"timestamp":1611702000000},{"value":-2,"timestamp":1611705600000},{"value":-2,"timestamp":1611709200000},{"value":-1.9,"timestamp":1611712800000},{"value":-1.9,"timestamp":1611716400000},{"value":-1.9,"timestamp":1611720000000},{"value":-2,"timestamp":1611723600000},{"value":-2,"timestamp":1611727200000},{"value":-2,"timestamp":1611730800000},{"value":-1.9,"timestamp":1611734400000},{"value":-1.6,"timestamp":1611738000000},{"value":-1.1,"timestamp":1611741600000},{"value":-0.6,"timestamp":1611745200000},{"value":0.1,"timestamp":1611748800000},{"value":0.7,"timestamp":1611752400000},{"value":1.3,"timestamp":1611756000000},{"value":1.8,"timestamp":1611759600000},{"value":2.2,"timestamp":1611763200000},{"value":2.5,"timestamp":1611766800000},{"value":2.7,"timestamp":1611770400000},{"value":2.9,"timestamp":1611774000000},{"value":3,"timestamp":1611777600000},{"value":3,"timestamp":1611781200000},{"value":3,"timestamp":1611784800000},{"value":2.8,"timestamp":1611788400000},{"value":2.6,"timestamp":1611792000000},{"value":2.2,"timestamp":1611795600000},{"value":2.1,"timestamp":1611799200000},{"value":2,"timestamp":1611802800000},{"value":2.1,"timestamp":1611806400000},{"value":2.3,"timestamp":1611810000000},{"value":2.5,"timestamp":1611813600000},{"value":2.9,"timestamp":1611817200000},{"value":3.3,"timestamp":1611820800000},{"value":3.7,"timestamp":1611824400000},{"value":4.1,"timestamp":1611828000000},{"value":4.4,"timestamp":1611831600000},{"value":4.6,"timestamp":1611835200000},{"value":4.7,"timestamp":1611838800000},{"value":4.8,"timestamp":1611842400000},{"value":4.8,"timestamp":1611846000000},{"value":4.8,"timestamp":1611849600000},{"value":4.8,"timestamp":1611853200000},{"value":4.8,"timestamp":1611856800000},{"value":4.9,"timestamp":1611860400000},{"value":5,"timestamp":1611864000000},{"value":5.2,"timestamp":1611867600000},{"value":5.6,"timestamp":1611871200000},{"value":6.2,"timestamp":1611874800000},{"value":7,"timestamp":1611878400000},{"value":8.2,"timestamp":1611882000000},{"value":9.1,"timestamp":1611885600000},{"value":9.7,"timestamp":1611889200000},{"value":10,"timestamp":1611892800000},{"value":10,"timestamp":1611896400000},{"value":9.7,"timestamp":1611900000000},{"value":9.2,"timestamp":1611903600000},{"value":8.6,"timestamp":1611907200000},{"value":7.9,"timestamp":1611910800000},{"value":7.1,"timestamp":1611914400000},{"value":6.3,"timestamp":1611918000000},{"value":5.7,"timestamp":1611921600000},{"value":5.3,"timestamp":1611925200000},{"value":5,"timestamp":1611928800000},{"value":5,"timestamp":1611932400000},{"value":5.1,"timestamp":1611936000000},{"value":5.3,"timestamp":1611939600000},{"value":5.5,"timestamp":1611943200000},{"value":5.6,"timestamp":1611946800000},{"value":5.8,"timestamp":1611950400000},{"value":5.9,"timestamp":1611954000000},{"value":6.2,"timestamp":1611957600000},{"value":6.5,"timestamp":1611961200000},{"value":6.9,"timestamp":1611964800000},{"value":7.3,"timestamp":1611968400000},{"value":7.7,"timestamp":1611972000000},{"value":7.9,"timestamp":1611975600000},{"value":8,"timestamp":1611979200000},{"value":8,"timestamp":1611982800000},{"value":8,"timestamp":1611986400000},{"value":7.9,"timestamp":1611990000000},{"value":7.7,"timestamp":1611993600000},{"value":7.6,"timestamp":1611997200000},{"value":7.4,"timestamp":1612000800000},{"value":7.3,"timestamp":1612004400000},{"value":7.1,"timestamp":1612008000000},{"value":6.9,"timestamp":1612011600000},{"value":6.7,"timestamp":1612015200000},{"value":6.5,"timestamp":1612018800000},{"value":6.3,"timestamp":1612022400000},{"value":6.1,"timestamp":1612026000000},{"value":5.8,"timestamp":1612029600000},{"value":5.5,"timestamp":1612033200000},{"value":5.1,"timestamp":1612036800000},{"value":4.7,"timestamp":1612040400000},{"value":4.3,"timestamp":1612044000000},{"value":3.7,"timestamp":1612047600000},{"value":3,"timestamp":1612051200000},{"value":2,"timestamp":1612054800000},{"value":1.4,"timestamp":1612058400000},{"value":1,"timestamp":1612062000000},{"value":0.7,"timestamp":1612065600000},{"value":0.5,"timestamp":1612069200000},{"value":0.3,"timestamp":1612072800000},{"value":0.3,"timestamp":1612076400000},{"value":0.3,"timestamp":1612080000000},{"value":0.3,"timestamp":1612083600000},{"value":0.4,"timestamp":1612087200000},{"value":0.5,"timestamp":1612090800000},{"value":0.5,"timestamp":1612094400000},{"value":0.5,"timestamp":1612098000000},{"value":0.5,"timestamp":1612101600000},{"value":0.4,"timestamp":1612105200000},{"value":0.3,"timestamp":1612108800000},{"value":0.2,"timestamp":1612112400000},{"value":0.1,"timestamp":1612116000000},{"value":0,"timestamp":1612119600000},{"value":0,"timestamp":1612123200000},{"value":-0.1,"timestamp":1612126800000},{"value":-0.3,"timestamp":1612130400000},{"value":-0.5,"timestamp":1612134000000},{"value":-1,"timestamp":1612137600000},{"value":-1.9,"timestamp":1612141200000},{"value":-2.5,"timestamp":1612144800000},{"value":-2.9,"timestamp":1612148400000},{"value":-3,"timestamp":1612152000000},{"value":-2.8,"timestamp":1612155600000},{"value":-2.4,"timestamp":1612159200000},{"value":-1.9,"timestamp":1612162800000},{"value":-1.3,"timestamp":1612166400000},{"value":-0.6,"timestamp":1612170000000},{"value":0,"timestamp":1612173600000},{"value":0.4,"timestamp":1612177200000},{"value":0.8,"timestamp":1612180800000},{"value":1,"timestamp":1612184400000},{"value":1,"timestamp":1612188000000},{"value":0.9,"timestamp":1612191600000},{"value":0.7,"timestamp":1612195200000},{"value":0.5,"timestamp":1612198800000},{"value":0.2,"timestamp":1612202400000},{"value":0,"timestamp":1612206000000},{"value":-0.2,"timestamp":1612209600000},{"value":-0.5,"timestamp":1612213200000},{"value":-0.8,"timestamp":1612216800000}] @ 26 Jan 2021 15:52
      
      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Thanks Matt,
      I think the solution using the alphanumeric point with the JSON is the ideal way for me as I just want to chart the hourly forecast.
      Being only a light user of mango I'm a bit green on how to go about it though.

      If I understand correctly I would change my scripting source to write the JSON from the website to six data points (TempMin, TempMean, TempMax, PrecipMin, PrecipMean, PrecipMax) of a virtual data source (change type: NO_CHANGE)?

      I presume the array would look like this for each of the six data points?
      [ {value:12.6,timestamp:165798243000 },{value:12.6,timestamp:16801843000 }, ... ]

      Thanks again for your help.

      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Forcasted Data: Purge existing data before writing updated values

      Here is my Datasource:

      {
        "dataSources":[
          {
            "xid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "name":"Meteo_forecast",
            "enabled":true,
            "type":"SCRIPTING",
            "alarmLevels":{
              "SCRIPT_ERROR":"URGENT",
              "CONTEXT_POINT_DISABLED":"IGNORE",
              "DATA_TYPE_ERROR":"URGENT",
              "POLL_ABORTED":"URGENT",
              "LOG_ERROR":"URGENT"
            },
            "purgeType":"YEARS",
            "updatePeriods":6,
            "updatePeriodType":"HOURS",
            "updateEvent":"UPDATE",
            "context":[
            ],
            "logLevel":"NONE",
            "scriptPermissions":[
              "superadmin"
            ],
            "polling":true,
            "executionDelaySeconds":0,
            "historicalSetting":true,
            "logCount":5,
            "logSize":1.0,
            "script":"var headers = {}; \nvar parameters = {};\nvar station = \"634000\";\nvar requestUrl = \"https:\/\/app-prod-ws.meteoswiss-app.ch\/v1\/forecast?plz=\" + station;\n\nHttpBuilder.get(requestUrl, headers, parameters)\n    .err(function(status, headers, content) {\n        throw content;\n    }).resp(function(status, headers, content) {\n        var response = JSON.parse(content);\n        var periods = response.graph.temperatureMin1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            TempMin.set(periods[k], response.graph.start+(k*3600000));\n        }\n        var periods = response.graph.temperatureMax1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            TempMax.set(periods[k], response.graph.start+(k*3600000));\n        }\n        var periods = response.graph.temperatureMean1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            TempMean.set(periods[k], response.graph.start+(k*3600000));\n        }\n        var periods = response.graph.precipitationMin1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            PrecipMin.set(periods[k], response.graph.start+(k*3600000));\n        }\n        var periods = response.graph.precipitationMax1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            PrecipMax.set(periods[k], response.graph.start+(k*3600000));\n        }\n        var periods = response.graph.precipitationMean1h;\n        for(var k = 0; k < periods.length; k+=1) {\n            var period = periods[k];\n            PrecipMean.set(periods[k], response.graph.start+(k*3600000));\n        }\n    }).execute();\n",
            "quantize":true,
            "useCron":false,
            "editPermission":"superadmin",
            "purgeOverride":false,
            "purgePeriod":1
          }
        ],
        "dataPoints":[
          {
            "xid":"DP_be6e20a6-a71d-493a-a8b8-623a6d259b77",
            "name":"TemperaturMin",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"AVERAGE",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"TempMin"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          },
          {
            "xid":"DP_e786c22d-1c02-44f6-bab0-7b669cdab3c0",
            "name":"TemperaturMax",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"INSTANT",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"TempMax"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          },
          {
            "xid":"DP_bb9a46b6-440b-4908-a8fb-1412d1f160d9",
            "name":"TemperaturMean",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"INSTANT",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"TempMean"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          },
          {
            "xid":"DP_238a534c-fe33-4ed8-b9b3-35b1b2e1be6d",
            "name":"PrecipitationMin",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"INSTANT",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"PrecipMin"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          },
          {
            "xid":"DP_7a00c8d4-760d-4d2d-9770-dd447f9c3bf8",
            "name":"PrecipitationMax",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"INSTANT",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"PrecipMax"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          },
          {
            "xid":"DP_5eadd0ab-68d8-43b6-8398-c8d95c30cbb2",
            "name":"PrecipitationMean",
            "enabled":true,
            "loggingType":"ON_CHANGE",
            "intervalLoggingPeriodType":"HOURS",
            "intervalLoggingType":"INSTANT",
            "purgeType":"DAYS",
            "pointLocator":{
              "dataType":"NUMERIC",
              "contextUpdate":false,
              "settable":true,
              "varName":"PrecipMean"
            },
            "eventDetectors":[
            ],
            "plotType":"SPLINE",
            "rollup":"NONE",
            "unit":"",
            "simplifyType":"NONE",
            "chartColour":"",
            "chartRenderer":{
              "type":"IMAGE",
              "timePeriodType":"DAYS",
              "numberOfPeriods":1
            },
            "dataSourceXid":"DS_6febb1ee-7e34-4a38-98ee-717e36613917",
            "defaultCacheSize":1,
            "deviceName":"Meteo_forecast",
            "discardExtremeValues":false,
            "discardHighLimit":1.7976931348623157E308,
            "discardLowLimit":-1.7976931348623157E308,
            "intervalLoggingPeriod":1,
            "intervalLoggingSampleWindowSize":0,
            "overrideIntervalLoggingSamples":false,
            "preventSetExtremeValues":false,
            "purgeOverride":true,
            "purgePeriod":1,
            "readPermission":"",
            "setExtremeHighLimit":1.7976931348623157E308,
            "setExtremeLowLimit":-1.7976931348623157E308,
            "setPermission":"",
            "tags":{
            },
            "textRenderer":{
              "type":"ANALOG",
              "useUnitAsSuffix":false,
              "suffix":"",
              "format":"0.00"
            },
            "tolerance":0.0
          }
        ]
      }
      
      posted in Scripting general Discussion
      H
      Holzatelier
    • Forcasted Data: Purge existing data before writing updated values

      I have a scripting data source that imports weather forecast data. It works fine but every time it runs (ideally once every hour) it writes a duplicate set of data to the datapoints. It seems that I would need to purge all data from the respective data point before the script writes the updated forecast data to it.
      Is there a way to purge all data from a datapoint from inside a script?

      var headers = {}; 
      var parameters = {};
      var station = "634000";
      var requestUrl = "https://app-prod-ws.meteoswiss-app.ch/v1/forecast?plz=" + station;
      
      HttpBuilder.get(requestUrl, headers, parameters)
          .err(function(status, headers, content) {
              throw content;
          }).resp(function(status, headers, content) {
              var response = JSON.parse(content);
              var periods = response.graph.temperatureMin1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  TempMin.set(periods[k], response.graph.start+(k*3600000));
              }
              var periods = response.graph.temperatureMax1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  TempMax.set(periods[k], response.graph.start+(k*3600000));
              }
              var periods = response.graph.temperatureMean1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  TempMean.set(periods[k], response.graph.start+(k*3600000));
              }
              var periods = response.graph.precipitationMin1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  PrecipMin.set(periods[k], response.graph.start+(k*3600000));
              }
              var periods = response.graph.precipitationMax1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  PrecipMax.set(periods[k], response.graph.start+(k*3600000));
              }
              var periods = response.graph.precipitationMean1h;
              for(var k = 0; k < periods.length; k+=1) {
                  var period = periods[k];
                  PrecipMean.set(periods[k], response.graph.start+(k*3600000));
              }
          }).execute();
      posted in Scripting general Discussion
      H
      Holzatelier
    • RE: Serial DataSource, how to terminate command with <CR>?

      Thanks, that solved it.

      posted in User help
      H
      Holzatelier
    • Serial DataSource, how to terminate command with <CR>?

      Hi,

      I just installed v3.7.7 and I am trying to get a serial data source set up. My problem seems to be that Mango does not send a <CR> to terminate the command. From searching the forum I found that Mango seems to translate \n as a terminator <CR>. So I have set the terminator in the DataSource as \n but Mango just appends the characters '\' 'n' to the command string.

      How do I get it to terminate with <CR>?

      Thanks

      This is what gets sent by mango:
      command_send.png

      But I need to terminate the command with:
      serial_<CR>.png

      My set up:

      Datasource_setup.png
      Point_setup.png

      posted in User help
      H
      Holzatelier
    • Unable to delete Webpages in Firefox

      Hi

      Moved this to a new topic.

      Browser: Firefox Quantum 61.0.2 (64bit) :
      I can't delete dashboards in the dashboard designer. When I click on the trash can symbol nothing happens.

      I get an error message in the browser console: (I'm sorry can't upload pictures, forum says I don't have enough privileges.)

      <unavailable> mangoUi~ngMango~ngMangoServices.js:230:77026
      a/<
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:230:77026
      c
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:72:147720
      a/<
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:72:148680
      $apply
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:230:100815
      compile/</<
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:230:147472
      dispatch
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:39:37882
      add/g.handle
      http://192.168.1.125:8080/modules/mangoUI/web/mangoUi~ngMango~ngMangoServices.js:39:35947
      XML Parsing Error: no root element found
      Location: http://192.168.1.125:8080/rest/v2/server/client-error
      Line Number 1, Column 1: client-error:1:1

      I tried in Chrome and there it works just fine.

      posted in User help
      H
      Holzatelier