• Recent
    • Tags
    • Popular
    • Register
    • Login
    1. Home
    2. Mircea
    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
    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 13
    • Posts 47
    • Best 0
    • Controversial 0
    • Groups 0

    Topics created by Mircea

    • M

      Login Error

      User help
      • • • Mircea
      12
      0
      Votes
      12
      Posts
      2.3k
      Views

      M

      Thanks . Now is working.

    • M

      unable to discover a bacnet device on my network

      User help
      • • • Mircea
      18
      0
      Votes
      18
      Posts
      5.9k
      Views

      phildunlapP

      Surprisingly, resolution was found in slightly different Local Device settings, specifically he had to use the broadcast address that was proper for the network and the sink address to bind. So, in this instance, bind address 0.0.0.0 and broadcast address 192.168.1.255

    • M

      BACnet scheduler

      User help
      • • • Mircea
      8
      0
      Votes
      8
      Posts
      2.8k
      Views

      phildunlapP

      Someone recently inquired about how they could use this thread if their goal was to give the user the ability to easily create and send a BACnet schedule. This post provides a means of converting an advanced scheduler schedule into a BACnet schedule via a script like,

      //Lightly tested var schedule = JSON.parse(scheduleJson.value).schedule; var scheduleToSend = new com.serotonin.bacnet4j.type.constructed.BACnetArray(7, new com.serotonin.bacnet4j.type.constructed.DailySchedule( new com.serotonin.bacnet4j.type.constructed.SequenceOf())); function convertToDailySchedule(timeStrings) { var times = []; var active; if(timeStrings.length > 0 && timeStrings[0] == "00:00") { times.push( new com.serotonin.bacnet4j.type.constructed.TimeValue( new com.serotonin.bacnet4j.type.primitive.Time(0, 0, 0, 0), new com.serotonin.bacnet4j.type.primitive.Double(active.value)) ); active = true; timeStrings.shift(); //remove first element } else { times.push( new com.serotonin.bacnet4j.type.constructed.TimeValue( new com.serotonin.bacnet4j.type.primitive.Time(0, 0, 0, 0), new com.serotonin.bacnet4j.type.primitive.Double(inactive.value)) ); active = false; } for(var k in timeStrings) { var timeString = timeStrings[k]; times.push( new com.serotonin.bacnet4j.type.constructed.TimeValue( convertTimeStringToTime(timeString), active ? new com.serotonin.bacnet4j.type.primitive.Double(inactive.value) : new com.serotonin.bacnet4j.type.primitive.Double(active.value)) ); active = !active; } return new com.serotonin.bacnet4j.type.constructed.SequenceOf(times); } function convertTimeStringToTime(timeString) { var parts = timeString.split(":"); return new com.serotonin.bacnet4j.type.primitive.Time(parseInt(parts[0]), parseInt(parts[1]), 0, 0); } for(var d=0; d<7; d+=1) { //0-6 if(d < schedule.length) scheduleToSend.putBase1(d+1, convertToDailySchedule( schedule[d] )); else scheduleToSend.putBase1(d+1, convertToDailySchedule( [] )); } print(scheduleToSend);

      the active and inactive values are gotten from numeric context points. If you wanted more than two values, you could encode a list into an alphanumeric point and have the script work with that. The scheduleJson is from an SQL data source doing a row-based:

      select xid, defaultSchedule from advancedSchedules

      Here's the JSON from my testing. I didn't actually set the schedule out to a weekly schedule on a BACnet device, though. Should work the same as the previous example.

      { "advancedSchedules": [ { "xid": "ADVSCH_1", "defaultSchedule": { "dailySchedules": [ { "changes": [ "05:20", "15:40" ] }, { "changes": [ "05:20", "15:40", "16:50", "22:40" ] }, { "changes": [ "05:20", "15:40", "16:50", "22:40" ] }, { "changes": [ "05:20", "15:40", "16:50", "22:40" ] }, { "changes": [ "05:20", "15:40", "16:50", "22:40" ] }, { "changes": [ "05:20", "15:40", "16:50", "22:40" ] }, { "changes": [ "05:20", "15:40" ] } ], "offsetCount": 24 }, "readPermission": "", "name": "bacnet", "alarmLevel": "DO_NOT_LOG", "errorAlarmLevel": "DO_NOT_LOG", "user": "admin", "editPermission": "", "enabled": false, "exceptions": [] } ], "dataSources":[ { "xid":"DS_f580c6c5-af80-45d6-b06b-ad6daf54a027", "name":"Values To Send BACnet", "enabled":true, "type":"VIRTUAL", "alarmLevels":{ "POLL_ABORTED":"URGENT" }, "purgeType":"YEARS", "updatePeriodType":"MINUTES", "polling":false, "updatePeriods":5, "editPermission":"", "purgeOverride":false, "purgePeriod":1 }, { "xid":"DS_e05d8adf-e887-4822-94f1-fe4c51187576", "name":"ScheduleSelector", "enabled":false, "type":"SQL", "alarmLevels":{ "POLL_ABORTED":"URGENT", "STATEMENT_EXCEPTION":"URGENT", "DATA_SOURCE_EXCEPTION":"URGENT" }, "purgeType":"YEARS", "updatePeriodType":"MINUTES", "connectionUrl":"jdbc:h2:C:\\\\IA\\\\Mangoes\\\\enterprise-m2m2-core-3.5.0-2\\\\databases\/mah2", "driverClassname":"org.h2.Driver", "password":"", "rowBasedQuery":true, "selectStatement":"select xid, defaultSchedule from advancedSchedules", "updatePeriods":5, "username":"", "editPermission":"", "purgeOverride":false, "purgePeriod":1 }, { "xid":"DS_dcc24ccc-988c-41ba-a2a0-07478f6b3817", "name":"Send Bacnet Schedules", "enabled":false, "type":"META", "alarmLevels":{ "SCRIPT_ERROR":"URGENT", "CONTEXT_POINT_DISABLED":"URGENT", "RESULT_TYPE_ERROR":"URGENT" }, "purgeType":"YEARS", "editPermission":"", "purgeOverride":false, "purgePeriod":1 } ], "dataPoints":[ { "xid":"DP_9baad447-7fca-415e-bd52-671f09b66f6a", "name":"Send Schedule 1", "enabled":false, "loggingType":"ON_CHANGE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"INSTANT", "purgeType":"YEARS", "pointLocator":{ "dataType":"BINARY", "updateEvent":"NONE", "contextUpdateEvent":"CONTEXT_CHANGE", "context":[ { "varName":"scheduleJson", "dataPointXid":"DP_200a62c6-3788-445d-ad71-52c443328447", "updateContext":true }, { "varName":"active", "dataPointXid":"DP_ff4a9197-c12d-466e-a725-f739b31e594f", "updateContext":false }, { "varName":"inactive", "dataPointXid":"DP_9bb7dff1-9482-4053-90e7-5e8fe7b688e4", "updateContext":false } ], "logLevel":"NONE", "variableName":"my", "executionDelaySeconds":0, "logCount":5, "logSize":1.0, "script":"\/\/Lightly tested\nvar schedule = JSON.parse(scheduleJson.value).schedule;\nvar scheduleToSend = new com.serotonin.bacnet4j.type.constructed.BACnetArray(7, \n new com.serotonin.bacnet4j.type.constructed.DailySchedule(\n new com.serotonin.bacnet4j.type.constructed.SequenceOf()));\n \n \nfunction convertToDailySchedule(timeStrings) {\n var times = [];\n var active;\n if(timeStrings.length > 0 && timeStrings[0] == \"00:00\") {\n times.push(\n new com.serotonin.bacnet4j.type.constructed.TimeValue(\n new com.serotonin.bacnet4j.type.primitive.Time(0, 0, 0, 0),\n new com.serotonin.bacnet4j.type.primitive.Double(active.value))\n );\n active = true;\n timeStrings.shift(); //remove first element\n } else {\n times.push(\n new com.serotonin.bacnet4j.type.constructed.TimeValue(\n new com.serotonin.bacnet4j.type.primitive.Time(0, 0, 0, 0),\n new com.serotonin.bacnet4j.type.primitive.Double(inactive.value))\n );\n active = false;\n }\n \n for(var k in timeStrings) {\n var timeString = timeStrings[k];\n times.push(\n new com.serotonin.bacnet4j.type.constructed.TimeValue(\n convertTimeStringToTime(timeString),\n active ? \n new com.serotonin.bacnet4j.type.primitive.Double(inactive.value) :\n new com.serotonin.bacnet4j.type.primitive.Double(active.value))\n );\n active = !active;\n }\n \n return new com.serotonin.bacnet4j.type.constructed.SequenceOf(times);\n}\n\nfunction convertTimeStringToTime(timeString) {\n var parts = timeString.split(\":\");\n return new com.serotonin.bacnet4j.type.primitive.Time(parseInt(parts[0]), parseInt(parts[1]), 0, 0);\n}\n \nfor(var d=0; d<7; d+=1) { \/\/0-6\n if(d < schedule.length)\n scheduleToSend.putBase1(d+1, convertToDailySchedule( schedule[d] ));\n else\n scheduleToSend.putBase1(d+1, convertToDailySchedule( [] ));\n}\n\nprint(scheduleToSend);", "scriptPermissions":{ "customPermissions":"", "dataPointReadPermissions":"superadmin,reallycool", "dataPointSetPermissions":"superadmin,reallycool", "dataSourcePermissions":"superadmin,reallycool" }, "settable":false, "updateCronPattern":"" }, "eventDetectors":[ ], "plotType":"STEP", "rollup":"NONE", "unit":"", "templateXid":"Binary_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"TABLE", "limit":10 }, "dataSourceXid":"DS_dcc24ccc-988c-41ba-a2a0-07478f6b3817", "defaultCacheSize":1, "deviceName":"Send Bacnet Schedules", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":15, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"BINARY", "oneColour":"black", "oneLabel":"one", "zeroColour":"blue", "zeroLabel":"zero" }, "tolerance":0.0 }, { "xid":"DP_ff4a9197-c12d-466e-a725-f739b31e594f", "name":"Active Value", "enabled":true, "loggingType":"ALL", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "changeType":{ "type":"NO_CHANGE", "startValue":"10" }, "settable":true }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "templateXid":"Numeric_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_f580c6c5-af80-45d6-b06b-ad6daf54a027", "defaultCacheSize":1, "deviceName":"Values To Send BACnet", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0.00" }, "tolerance":0.0 }, { "xid":"DP_9bb7dff1-9482-4053-90e7-5e8fe7b688e4", "name":"Inactive Value", "enabled":true, "loggingType":"ALL", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "changeType":{ "type":"NO_CHANGE", "startValue":"20" }, "settable":true }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "templateXid":"Numeric_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_f580c6c5-af80-45d6-b06b-ad6daf54a027", "defaultCacheSize":1, "deviceName":"Values To Send BACnet", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0.00" }, "tolerance":0.0 }, { "xid":"DP_200a62c6-3788-445d-ad71-52c443328447", "name":"BNS_1", "enabled":true, "loggingType":"ON_CHANGE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"INSTANT", "purgeType":"YEARS", "pointLocator":{ "dataType":"ALPHANUMERIC", "parameters":[ ], "dateParameterFormat":"yyyy-MM-dd'T'HH:mm:ss", "fieldName":"ADVSCH_1", "tableModifier":false, "timeOverrideName":"", "updateStatement":"" }, "eventDetectors":[ ], "plotType":"STEP", "rollup":"NONE", "unit":"", "templateXid":"Alphanumeric_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"TABLE", "limit":10 }, "dataSourceXid":"DS_e05d8adf-e887-4822-94f1-fe4c51187576", "defaultCacheSize":1, "deviceName":"ScheduleSelector", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":15, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"PLAIN", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "suffix":"" }, "tolerance":0.0 } ] }

      The Meta point is set up to run whenever the SQL point's value changes (when there is a new default weekly schedule set for the schedule), but would also run if one pressed refresh value (which you may wish to do if the inactive or active values change).

    • M

      BACnet string point

      BACnet4J general discussion
      • • • Mircea
      7
      0
      Votes
      7
      Posts
      2.9k
      Views

      M

      @phildunlap said in BACnet string point:

      BACnet module 3.3.1 is released!

      Thanks

    • M

      MangoES IP Address

      MangoES Hardware
      • • • Mircea
      6
      0
      Votes
      6
      Posts
      2.6k
      Views

      Jared WiltshireJ

      @psysak said in MangoES IP Address:

      Ya the new v3 interface has no way to edit up info?

      Correct, its on the TODO list. Please use the old UI for the time being, sorry for the inconvenience.

    • M

      Mongo stop recording

      User help
      • • • Mircea
      4
      0
      Votes
      4
      Posts
      1.6k
      Views

      JoelHaggarJ

      Here are some upgrade notes to follow: https://help.infiniteautomation.com/blog/mango-30-upgrade-notes

      There are significant improvements in BACnet in the latest version of Mango 3. You need to upgrade your core and all your modules. I would recommend to do an offline test of the upgrade and test all your custom dashboards since you might need to make some changes to be compatible. You'll also need to contact us at support@infiniteautomation.com for a new license for Mango 3.

    • M

      Gigabit Ethernet fix speed and full-duplex

      User help
      • • • Mircea
      3
      0
      Votes
      3
      Posts
      1.5k
      Views

      jeremyhJ

      Hi Mircea,

      Is this for a MangoES? If so, the following link may help: https://wiki.debian.org/NetworkConfiguration#Setting_the_speed_and_duplex

      As noted in that link, do be careful (particularly if this device is remote!) that you do not inadvertently lock yourself out of the device. Unstable link speeds can often be symptomatic of bad cabling, faulty termination, or intermittent noise and identifying and addressing the root cause may be called for.

      One other thing to note is that many switches and other bits of network gear allow you to set a 'manual' speed by effectively disabling some rates, eg. you could disable Gigabit on the switch port and auto-negotiation would max out at 100Base-TX.

    • M

      Mango box crash

      User help
      • • • Mircea
      20
      0
      Votes
      20
      Posts
      5.2k
      Views

      phildunlapP

      That may be for the best. When I started looking into doing this today I noticed the new BACnet4J was written using Java 8, while the 2.8.x series is limited to requiring Java 7.

      Also, you might be interested in checking out https://store.infiniteautomation.com/core

      But we'll have more announcements today.

    • M

      Restart Mango

      Mango Automation general Discussion
      • • • Mircea
      6
      0
      Votes
      6
      Posts
      2.3k
      Views

      JoelHaggarJ

      Hi Mircea,

      Submit the GUID and MangoES serial number if you have it at: http://infiniteautomation.com/index.php/support?layout=edit&id=50

    • M

      Points Error

      Mango Automation general Discussion
      • • • Mircea
      2
      0
      Votes
      2
      Posts
      1.2k
      Views

      phildunlapP

      Hi Mircea,

      This has been a known issue for a while: https://github.com/infiniteautomation/ma-core-public/issues/760

      it looks like it may be fairly simple to fix.

    • M

      Max temperature

      Hardware
      • • • Mircea
      2
      0
      Votes
      2
      Posts
      1.8k
      Views

      phildunlapP

      We have not tested it unto the point of failure on temperature (we did try from the OS to thermally fail (CPU ~95C for many hours), though, just not from roasting the computer over an open fire). The supplier of the major component suggests their board is suited to run from -10C to 70C, with thermal CPU throttling occurring at 95C and temperature shutdown at 110C.

    • M

      Mango AP Mode setings

      Mango Automation general Discussion
      • kbneeded • • Mircea
      8
      0
      Votes
      8
      Posts
      3.7k
      Views

      danD

      You might have to bridge the ethernet adapter on the mangoES with the usb WiFi adapter into br0 then give br0 the ip address of the mango instance.
      Then you should be able to see the machine from either interface.

      The default ethernet ip on mine is set in /etc/network/interfaces.d/eth0

      You would have to create a bridge interface, add the eth0 and wlan0 or whichever interface it comes up as to the bridge, then give the bridge the IP Address.

      Cheers
      Dan

    • M

      How to custom error page

      User help
      • • • Mircea
      3
      0
      Votes
      3
      Posts
      1.7k
      Views

      phildunlapP

      Also I believe the behavior you're describing is a bug on our part. I will submit an issue. Thanks for bringing it to our attention! Created: https://github.com/infiniteautomation/ma-core-public/issues/600