• Recent
    • Tags
    • Popular
    • Register
    • Login
    1. Home
    2. Wingnut2.0
    3. Topics

    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
    W
    • Profile
    • Following 1
    • Followers 0
    • Topics 48
    • Posts 111
    • Best 3
    • Controversial 0
    • Groups 0

    Topics created by Wingnut2.0

    • W

      Disable HTTP OPTIONS method - Security

      User help
      • • • Wingnut2.0
      1
      0
      Votes
      1
      Posts
      140
      Views

      No one has replied

    • W

      Modbus Publisher - Edit a DataPoint v4.4.1

      User help
      • • • Wingnut2.0
      5
      0
      Votes
      5
      Posts
      737
      Views

      W

      @cwangv
      Agreed. I have something scribbled down about the error
      'IllegalStateException: Should be in state [INITIALIZING, RUNNING], but is in state TERMINATING'
      appearing in the log when attempting to delete a point failed.

      Its almost as though the publisher isn't starting/stopping cleanly. (Only tested with modbus publisher)

    • W

      Mango API - "mangoStatusCode": 4004 on Core 4.4.1

      User help
      • • • Wingnut2.0
      1
      0
      Votes
      1
      Posts
      379
      Views

      No one has replied

    • W

      ???Runtime manager not running Error when attempting JSON Configuration Import

      User help
      • • • Wingnut2.0
      1
      0
      Votes
      1
      Posts
      296
      Views

      No one has replied

    • W

      Testing out the new Influx DB Line Protocol Data Source

      User help
      • • • Wingnut2.0
      3
      0
      Votes
      3
      Posts
      345
      Views

      W

      Thank you, Terry.

      While testing, I am using the following input

      [[inputs.win_perf_counters.object]]
      # Processor usage, alternative to native, reports on a per core.
      ObjectName = "Processor"
      Instances = [""]
      Counters = [
      "% Idle Time",
      "% Interrupt Time",
      "% Privileged Time",
      "% User Time",
      "% Processor Time",
      "% DPC Time",
      ]
      Measurement = "win_cpu"
      # Set to true to include _Total instance when querying for all ().
      IncludeTotal=true

      The message to be sent is the following

      win_cpu,host=LAPTOP,instance=2,objectname=Processor,source=telegraf Percent_DPC_Time=0,Percent_Idle_Time=89.79866790771484,Percent_Interrupt_Time=0,Percent_Privileged_Time=0,Percent_Processor_Time=3.9585533142089844,Percent_User_Time=3.098111152648926 1604960081000000000

      What is making it to Mango ends up looking like this
      0_1604960358678_0ccc20d1-834d-4c65-bf9b-6184c2d19fdd-image.png

      Along with some additional errors for points that failed to be created.

      'test_Influx': Failed creating point with field key ²—‚ œ±þÞÑE€d7ˆF}Ñú¢ªÓU™çœÌâï£ÉŤZ >Mç‹Ów?œýò׳?üã¯gÿŒïß¼Œ&óÅprYžo¯‡ÇÕùɏ‹OÕ¬~`úñ?«ËÅdø¥:ý¹Zü>}>?ùódQÍþ>¼¬óéíì²:]Tãêz6üûÉÙðòsµ˜_|¨&‹‹›j6¯.Oaðí×÷Õe5ú­ººx;š_gWÕÕÆÅ¿Þ.>No'ÍïŸüq6›ÎæMÝ_ùÓ×EµñÄý(V¿?3²oWNÐ@ÒPáÛ¿¨Aœÿ>¼yÅ‹_¦‹áx¹³áõhr}~òÓhÜ€Y5»¬õë|x]zd¶PrvmÊåÍí3¡ƒ˜M/«ù|:kÁý¿Œ¾T§’$T-ƒ‰ßî|{öfuÜÿôç«qµú-¢°cH‚hØú–zÝÌnoŸ because name -> Cannot be longer than 255 characters

      I do have Treat integers as Numeric types checked but seem to keep getting NumberFormatExceptions and Invalid Line Length errors. Can Mango only handle a single value being sent at a time?

      Thank you.

    • W

      ReferenceError on Meta Data Source script

      User help
      • • • Wingnut2.0
      7
      0
      Votes
      7
      Posts
      1.6k
      Views

      W

      Thank you @terrypacker. I had a global script using $EXEC
      Once I removed that the script would execute.

    • W

      Issue after using Install script for Linux and Mac

      User help
      • • • Wingnut2.0
      2
      0
      Votes
      2
      Posts
      777
      Views

      MattFoxM

      I'd follow this version, it's more manual and involved, but will allow you to check your install step by step

      https://help.infiniteautomation.com/linux-installation

      Fox

    • W

      Simple Ping Monitor

      How-To
      • • • Wingnut2.0
      11
      0
      Votes
      11
      Posts
      2.6k
      Views

      phildunlapP

      You're welcome!

    • W

      Are event messages available in scripts?

      How-To
      • • • Wingnut2.0
      6
      0
      Votes
      6
      Posts
      1.5k
      Views

      phildunlapP

      In 3.6 security was added to scripts to ensure that only a script with superadmin permissions could invoke Java code. That's probably what you're seeing.

    • W

      MangoES w/USB Ethernet Adapter

      User help
      • • • Wingnut2.0
      8
      0
      Votes
      8
      Posts
      1.7k
      Views

      W

      The device identifier at the beginning of the error line was mmcblk0:
      I wont be able to do any additional testing until tomorrow, but I did test this on another mangoES and received the same results. I believe both tests were using the vertical USB port next to the RJ45 Ethernet port.

    • W

      Using XID Prefix with PTCP Publishers

      User help
      • • • Wingnut2.0
      5
      0
      Votes
      5
      Posts
      1.3k
      Views

      W

      Thanks again Phillip. Both examples are very helpful.

    • W

      Heartbeat for Cloud Connect Clients

      User help
      • • • Wingnut2.0
      10
      0
      Votes
      10
      Posts
      1.7k
      Views

      phildunlapP

      Hi Wingnut2.0,

      Maybe someone else can think of a way to go through the API (I think it may be possible with some serious HTTP / WS encoding shenanigans through a Serial Data source connected to the API via a serial-tcp virtual port... not straightforward!), but through a scripting data source......

      Write a wrapper for the UserEventListener interface that we can instantiate and pass functions to from the script, package com.infiniteautomation.forumexample; import com.serotonin.m2m2.rt.event.UserEventListener; import com.serotonin.m2m2.rt.event.EventInstance; /* * @author Phillip Dunlap * This class exists because Nashorn JavaScript functions can be implicitly cast to interfaces with one * method. So, we need to separate the one UserEventListener interface into four interfaces. */ public class ScriptableUserEventListener implements UserEventListener { private RaisedHandler raisedHandler = null; private RtnHandler rtnHandler = null; private DeactivatedHandler deactivatedHandler = null; private AckHandler ackHandler = null; @Override public int getUserId() { //Because not all events go to all users, we need to pretend to be a part of the message relay structure // so that we get all the messages // TODO permit script to set the user id //private, but the value we want to return //return com.serotonin.m2m2.rt.event.UserEventMulticaster.MULTICASTER_ID; // == -100 //This will make it hard / impossible to remove this listener, which means we should hit validate with // care. Probably the right thing to do here would be create a new superadmin user (or lesser privilege I guess) // for the script to present the ID of, and just never let anyone log in as that user. Then we can mash the remove // for that ID without worrying about messing things up for anyone (not like with -100 !!!) return -100; } @Override public void raised(EventInstance evt) { if(raisedHandler != null) raisedHandler.raised(evt); } public interface RaisedHandler { public void raised(EventInstance evt); } public void registerRaisedHandler(RaisedHandler raisedHandler) { this.raisedHandler = raisedHandler; } @Override public void returnToNormal(EventInstance evt) { if(rtnHandler != null) rtnHandler.rtn(evt); } public interface RtnHandler { public void rtn(EventInstance evt); } public void registerRtnHandler(RtnHandler rtnHandler) { this.rtnHandler = rtnHandler; } @Override public void deactivated(EventInstance evt) { if(deactivatedHandler != null) deactivatedHandler.deactivated(evt); } public interface DeactivatedHandler { public void deactivated(EventInstance evt); } public void registerDeactivatedHandler(DeactivatedHandler deactivatedHandler) { this.deactivatedHandler = deactivatedHandler; } @Override public void acknowledged(EventInstance evt) { if(ackHandler != null) ackHandler.ack(evt); } public interface AckHandler { public void ack(EventInstance evt); } public void registerAckHandler(AckHandler ackHandler) { this.ackHandler = ackHandler; } }

      Compile. I found this easiest to do by placing the ScriptableUserEventListener.java file into Mango/web/modules/dataFile/web/CompilingGrounds/Poll directory, then create a new data file data source and hit the compile button. Now you should have a com/infiniteautomation/forumexample set of directories in Mango/web/modules/dataFile/web/templates/Poll. Copy the com directory and the folders / files beneath it to Mango/overrides/classes/ (no need to restart)

      Write a scripting data source to register the listener, like,

      if(typeof registered === 'undefined') { var scriptableUserEventListener = new com.infiniteautomation.forumexample.ScriptableUserEventListener(); var raisedFunc = function(event) { p.set(event.getMessage().translate(com.serotonin.m2m2.Common.getTranslations())); }; var rtnFunc = function(event) { p.set(event.getRtnMessage().translate(com.serotonin.m2m2.Common.getTranslations())); }; scriptableUserEventListener.registerRaisedHandler(raisedFunc); scriptableUserEventListener.registerRtnHandler(rtnFunc); //could also register for deactivated or acknowledged events com.serotonin.m2m2.Common.eventManager.addUserEventListener(scriptableUserEventListener); registered = true; //print("registered"); } //The big flaw here is that the listener cannot be removed because we // will lose the object when the script is disabled. To prevent that, we could // make the script try to load the listener from the attributes map of the alphanumeric // point. And then only create it if the listener doesn't already exist. If it does // exist, the script need not do anything! And, if one wished to remove the listener, // one could pass the object returned from getting the attribute to the // com.serotonin.m2m2.Common.eventManager.removeUserEventListener( CONTEXT_POINTS.p.getAttribute("scriptableListener" ) ); // but for this example c'est la vie. I can fix / test that if need be.

      And voila! Some clumsiness is that the alphanumeric point couldn't store values for two events at the same time, but it should still generate updates/events even if there are two values at the same millisecond. Also there are comments about the potential clumsiness in the solution. I could do another pass and clean that up if need be...

    • W

      Cloud Connect - 401 & 403 Errors

      User help
      • • • Wingnut2.0
      11
      0
      Votes
      11
      Posts
      2.2k
      Views

      Jared WiltshireJ

      By default the client should forward port 22 for SSH which you will need to change to 2222 for a MangoES yes.

      The web port should default to forwarding the non-SSL web port from the env.properties file however.

    • W

      Cloud Connect - Unable to Generate New Key on Client

      User help
      • • • Wingnut2.0
      4
      0
      Votes
      4
      Posts
      1.1k
      Views

      W

      Hey Phillip,

      If you inadvertently have both the client and server set to start with Mango and cause Mango to restart neither the client or server will have public keys available. You will also see CloudConnectServer errors in the logs for bind exception.

    • W

      Error when attempting SNMP SET

      User help
      • • • Wingnut2.0
      6
      0
      Votes
      6
      Posts
      2.1k
      Views

      J

      @phildunlap I installed version 3.4.1 and works perfect!
      Thank you.

    • W

      BACnetErrorException: property: missing-required-parameter

      User help
      • • • Wingnut2.0
      2
      0
      Votes
      2
      Posts
      1.0k
      Views

      terrypackerT

      The BACnet4J 4.1.6 Release was only to update the build system and did not effect the performance of the library. We are currently in development of 4.1.7-SNAPSHOT which should be released as 4.1.7 by the end of August. So basically you aren't missing out on any features that have been released by using version 4.1.5

      As for your problem, it looks like the new device is sending a message that BACnet4J doesn't understand. This is causing the Transport layer to reject it when it tries to process it. I suggest that you start by getting a Wireshark capture of the messages the new device is sending to Mango, specifically the Unconfirmed COV Notification Requests as they look to be malformed.

    • W

      Syncing Tags from PTCP Publisher to Receiver

      User help
      • • • Wingnut2.0
      2
      0
      Votes
      2
      Posts
      736
      Views

      W

      Solved -
      Accept point attribute updates must be enabled on the receiving data source.

    • W

      Use Watchlist to query for multiple datapoint History

      User help
      • • • Wingnut2.0
      6
      0
      Votes
      6
      Posts
      1.5k
      Views

      Jared WiltshireJ

      @wingnut2-0 said in Use Watchlist to query for multiple datapoint History:

      are you referring to :8080/ui/watch-list/

      Yes.

    • W

      Adding Extra tags via PTCP Publisher breaks connection

      User help
      • • • Wingnut2.0
      6
      0
      Votes
      6
      Posts
      1.4k
      Views

      W

      Thank you, Phillip - Working now.

    • W

      Assigning Event Handler (Set Point) output to multiple targets

      User help
      • • • Wingnut2.0
      4
      0
      Votes
      4
      Posts
      1.1k
      Views

      phildunlapP

      That enables one to handle multiple event types with the same event handler, not only point event detector event types. There is not a way through the UI to configure that sort of situation yet, but you can import it already and it'll work. It would be many-events-to-single-handler instead of single-handler-to-many-points.

      Looping over points and using the set() function is the only way to set multiple values from a set point handler. You can still construct the context (which should work automatically with the snippet I shared) through JSON via the "additionalContext" property of the set point handler.