• E
    etantonio

    Using a Meta Data Source I think could be possible to format the date as I need but how I can then map to an epoch as required when the user for example change the hour?

    posted in Scripting general Discussion read more
  • E
    etantonio

    Hi,
    I've a modbus slave talking to mango 2.8.8 , I want to show on the web interface an epoch coming from the slave, I've done this using the datapoint rendering

    0_1602451661204_2f47759f-9565-4639-8089-4656d6572ae1-immagine.png

    0_1602451721846_f198e747-5e88-466b-9daf-fc8950c2244e-immagine.png

    0_1602451751110_1a759389-49c8-43b9-ab46-46f31a33b2af-immagine.png

    but this is not a clean solution because:

    1. I can't show the right time including locale without showing the locale itself
    2. to modify the value on the slave I've to send to it an epoch and not a formatted date

    What is the cleanest way to obtain this behaviour (modify an epoch on a modbus slave)?
    Is there some example for this?
    Thanks,
    Antonio

    posted in Scripting general Discussion read more
  • E
    etantonio

    Hi,
    In Mango 2.8.8 I've a string on 4 register in Modbus, I've used Mango automation "Fixed lenght string" data type to read there 4 register (8 characters) but the resulting string (HEB_DEFA) is showed reversed (AFED_BEH).
    What is the simplest way to reverse this string and show HEB_DEFA?
    This is also a read/write variable, so it must be possible to store the right value.
    Thanks,
    Antonio

    0_1602451242092_7136cb54-8165-4f61-93c0-972e3c6b839a-immagine.png

    0_1602451034753_1310fca5-f605-4527-83ed-ece9b195ccfc-immagine.png

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Good Morning,
    In Mango 2.8.8 I want to format a unix datetime in Mango to take in account also the locale,
    for example I've the following representation:

    0_1601466599654_5941da6d-4ff4-4092-97ce-185eea7cf901-immagine.png

    Instead if possible I want to see directly the datetime 30/09/2020 13:49:52

    The datapoint is defined this way

    0_1601466712263_7a898d9f-26c5-4e92-8a5a-883ad5e97dab-immagine.png

    0_1601466742579_98a0a91c-8203-4bc4-8da5-af6be34cf8a7-immagine.png

    instead the html is just

          <md-grid-tile class="gray">
            <h5>{{BCKcurrentTime.renderedValue}}</h5>
          </md-grid-tile>
    

    How can I have showed 30/09/2020 13:49:52 instead of 30/09/2020 15:49:52

    Thanks,
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hi Fox and thanks for your answer,
    the stm32 and it's mango are 400km away from me, I've not a so long cable to debug it using stlink, but maybe there's a way to do it over internet using openocd but I've to study about it, I was looking for a quick solution.
    in Mango 2.8.8. the datapoint is defined as

    0_1598249250295_5b55b1ef-dc26-46ea-8ea3-faf329108bf9-immagine.png

    but it is a float, I don't think it use character encoding Ascii.
    It is modbus TCP.

    In any case I don't think it is a Mango problem but an STM32 FW bug because the datapoint is read_only.
    For Mango just a bit of confuzione in the yellow fields

    0_1598249509491_9faea6c7-f308-44f6-9355-ad6f8525baa2-immagine.png

    For me is important to undeestand the value that fall outside the IF statement

    if (new_elevation_position[EL_MAIN] < 0.5f || new_elevation_position[EL_MAIN] > 89.5f){
          ... bugManager();
    }
    

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    I'm becoming crazy on this datapoint,
    Elevation position have to be an angle between 0 and 90 degrees,
    due to some bug that actually I can't discover, it happens that I've a strange value in Elevation Position,
    it seems to be 0 but it is not

    0_1598132085435_850db682-039f-42cc-9be6-781390419a23-immagine.png

    in my C code connected to mango via Modbus, I've the following patch:
    #define EL_MAIN 0
    #define NUM_OF_ELEVATION_AXES 2
    float new_elevation_position[NUM_OF_ELEVATION_AXES] = { 0.0, 0.0 };
    if (new_elevation_position[EL_MAIN] < 0.5f || new_elevation_position[EL_MAIN] > 89.5f){
    ----
    }

    but the stm32 doesn't enter inside the IF, so , how I can understand the value inside elevation_position? By my point of view a float container can only produce numbers, so there's no way to do not fall inside the IF.

    Please share me your suggestment, it is no possible for me to see the raw value because the board is about 4000kms far away from me.
    Thanks,
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Thanks, at the end the problem was solved on network side, it was really too slow. Thanks

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hy, thanks for your answer, it is 2.8.4 version

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hi,
    for some reason my remote network is really slow,
    I'm trying to load my remote mango page but it is blocked by three js

    0_1594390712262_d80abebc-f5ab-4ae1-a2a0-59b8fb2a3a51-immagine.png

    is there a way to solve this problem? at least use cached version of these js?
    Thanks,
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hy, I can't understand why using Firefox or Edge or Chrome I've the following wrong representation of the datasource page (mango 2.8.8)

    0_1589815080093_3ba37115-f01f-4aca-815d-dbba7ba97045-immagine.png

    instead using old Internet Explorer it is ok

    0_1589815633071_e667d266-31f0-43a4-8778-8c5ad6e205ef-immagine.png

    I think it is due to some update in these browsers because in the past I had no problem with Firefox or Edge or Chrome on the datasource page.

    Thanks for your help,
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hy,
    concerning mango 2.8.8 I'm using the following script to show the production of each month of the year

    <div ng-if="energy ==2">
            <ma-point-values point-xid="FML01-energy-smart" point="energyYear" values="energyYearValues"
              from="theTimeNow | moment:'startOf':'year'"
              to="theTimeNow | moment:'endOf':'year'" rollup="DELTA" rollup-interval="1 months">
            </ma-point-values>
            <ma-serial-chart style="height: 250px; width: 98%" series-1-values="energyYearValues"
              default-balloon-text="Monthly Energy: [[value]] kWh" export="true" balloon="true"
              series-1-point="energyYear" series-1-color="#277527" default-type="column" time-format="MMM"
              options="{export: {'dateFormat': 'MM/YYYY', 'fileName': 'Energy in year'},
              valueAxes:[{title:'[kWh]', gridColor:'#444343', axisColor:'#444343',titleColor:'#165A87'}],
              titles:[{text:'Energy chart',color:'#165A87'}],
              categoryAxis:{gridColor:'#444343', axisColor:'#444343', startEffect:'elastic'}
              }">
            </ma-serial-chart>
    

    but the result is not as expected, in fact for example today it is shown only the production of today (300kWh) and not the sum of all January month (8000kWh):

    0_1580479408753_f893baef-f599-4c11-9545-a91f214a8f5d-immagine.png

    Any idea about where's the problem?

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    It's not working for me, I'll solve this repeating the page for any "trackerRowColumn" in the plant instead of creating a template to use for all the plant, thanks anyway.
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    It seems that the first time the page is executed the

    <ma-point-values point-xid="{{plantNameAcronym.value}}_TRK-{{trackerRowColumn.value}}_FML01-power-smart"

    becomes:

    <ma-point-values point-xid="TER_TRK-6.4_FML01-power-smart"

    but ma-point-values is evaluated just when I switch from a graph type to the other.

    I've tried to use ng-init in an outer div to evaluate the point xid before but the result is always a blank graph.

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hi,
    I've a chart where I want to show the power of an inverter, this is a template page named "home.html" I want to use it for several different inverter, so I calculate the datapoint xid using other two datapoints "plantNameAcronym" and "trackerRowColumn":

    <div flex layout="column" layout-gt-sm="row" layout-align="space-between" ng-init="live=1; energy=0">
      <md-card flex="100" flex-gt-sm="50">
    
        <md-card-title>
          <md-button ng-class="{'selected': live === 1, 'not-selected':live!==0}" ng-mousedown="live=1; from=theTimeNow">LIVE</md-button>
          <mdp-date-picker mdp-placeholder="Day" ng-click="live=0" mdp-open-on-click="" mdp-format="ll" ng-model="from"></mdp-date-picker>
        </md-card-title>
    
    
        <md-card-content class="graph-content">
          <div ng-if="live ==0">
            <ma-point-values point-xid="{{plantNameAcronym.value}}_TRK-{{trackerRowColumn.value}}_FML01-power-smart" point="powerPast" values="powerPastValues"
                  from="from | moment:'startOf':'day' | moment:'add':3:'hours'"
                  to="from | moment:'endOf':'day'" rollup="LAST" rollup-interval="1 minutes">
             </ma-point-values>
          
          
             <ma-serial-chart style="height: 250px; width: 98%" series-1-values="powerPastValues" series-1-color="#F88F24" series-1-point="powerPast" series-1-type="line"
                legend="false" default-balloon-text="Power: [[value]] kW" balloon="true" export="true"  stack-type="regular"
                options="{export: {'dateFormat': 'DD/MM/YYYY H:mm ', 'fileName': 'Power'},
                titles:[{text:'Power chart',color:'#165A87'}],
                valueAxes:[{title:'[kW]', gridColor:'#444343', axisColor:'#444343',titleColor:'#165A87'}],
                categoryAxis:{gridColor:'#444343', axisColor:'#444343', startEffect:'elastic'}
                    }">
            </ma-serial-chart>
          </div>
    
          <div ng-if="live ==1">
            <ma-point-values point-xid="{{plantNameAcronym.value}}_TRK-{{trackerRowColumn.value}}_FML01-power-smart" point="powerLive" values="powerLiveValues"
              from="theTimeNow | moment:'startOf':'day' | moment:'add':3:'hours'"
              to="theTimeNow" rollup="LAST" rollup-interval="1 minutes">
            </ma-point-values>
    
            <ma-serial-chart style="height: 250px; width: 98%" series-1-values="powerLiveValues" series-1-color="#F88F24" series-1-point="powerLive" series-1-type="line"
              legend="false" default-balloon-text="Power: [[value]] kW" balloon="true" export="true"  stack-type="regular"
              options="{export: {'dateFormat': 'DD/MM/YYYY H:mm ', 'fileName': 'Power'},
              titles:[{text:'Power chart',color:'#165A87'}],
              valueAxes:[{title:'[kW]', gridColor:'#444343', axisColor:'#444343',titleColor:'#165A87'}],
              categoryAxis:{gridColor:'#444343', axisColor:'#444343', startEffect:'elastic'}
              }">
            </ma-serial-chart>
          </div>
        </md-card-content>
      </md-card>
          </div>
    

    instead in another file customized for each inverter (6.4 in this case) I've something like this:

    <ma-get-point-value point-xid="TER_TRK-6.4_ConfigRPI-tracker-rowColumn" point="trackerRowColumn"></ma-get-point-value>
    <ma-get-point-value point-xid="TER_TRK-6.4_ConfigRPI-plantNameAcronym" point="plantNameAcronym"></ma-get-point-value>
    <div ng-include="'templates/home.html'"></div>
    

    My problem is that on first loading (live=1) the graph is not showed

    0_1580222892428_3cf14b86-3940-4d82-b7ae-d20b58a38adf-immagine.png

    but clicking on "Day" an then again on "Live" the graph is showed correctly

    0_1580222974610_5edd3313-d77c-44d3-b981-7cf2213b0c24-immagine.png

    is seems to be an initialization problem but I can't realize where's the problem, using directly point-xid="TER_TRK-6.4_FML01-power-smart" works without problems:

    <ma-point-values point-xid="TER_TRK-6.4_FML01-power-smart" point="powerLive" values="powerLiveValues"
              from="theTimeNow | moment:'startOf':'day' | moment:'add':3:'hours'"
              to="theTimeNow" rollup="LAST" rollup-interval="1 minutes">
            </ma-point-values>
    

    Any idea about how to solve the problem?
    Thanks,
    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    Hi,
    I'm using mango 2.8.8,
    I would like to avoid such logs in ma.log

    WARN  2019-10-31 22:27:08,989 (com.serotonin.m2m2.rt.publish.PublishQueue.sizeCheck:101) - Publisher queue Pub_TRK-0.1 discarded 64 entries 
    WARN  2019-10-31 22:27:13,990 (com.serotonin.m2m2.rt.publish.PublishQueue.sizeCheck:101) - Publisher queue Pub_TRK-0.1 discarded 57 entries
    

    this is the publisher configuration:

    0_1573135838713_5d8edb9e-2acf-42b2-a4f6-88b1a62dfbd8-immagine.png

    is there a way to avoid such logs?

    posted in How-To read more
  • E
    etantonio

    yes, you're right, the following code it's ok. thanks,

    var ssdao = new com.serotonin.m2m2.db.dao.SystemSettingsDao();
       ssdao.setValue("emailFromName", "Etantonio");
    

    instead for excelReport:

    var voExcelReport = com.infiniteautomation.mango.excelreports.dao.ExcelReportTemplateDao.instance.getByXid("My_DailyReport")
    voExcelReport.setName("Etantonio")
    com.infiniteautomation.mango.excelreports.dao.ExcelReportTemplateDao.instance.save(voExcelReport);  
    

    Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    At the end I choose to use a scripting datasource to update datasource properties:

    var dsvoMain = com.serotonin.m2m2.db.dao.DataSourceDao.instance.getByXid("FML01-main");
        dsvoMain.host = "172.16.0.12";
        com.serotonin.m2m2.db.dao.DataSourceDao.instance.saveDataSource(dsvoMain);
    

    and the same for the publisher:

    var voPublisher = com.serotonin.m2m2.db.dao.PublisherDao.instance.getByXid("Pub_TRK-0.1")
        voPublisher.port              = "8811";
        com.serotonin.m2m2.db.dao.PublisherDao.instance.savePublisher(voPublisher);
    

    but I can't update instead systemSettings,
    I've tried with the following:

    com.serotonin.m2m2.db.dao.SystemSettingsDao.setValue("emailFromName", "Etantonio");
    

    but the result is:

    0_1572511885915_c97ce613-c790-42db-ab07-72ec0ef03a57-immagine.png

    but the method seems to be there in

    https://github.com/infiniteautomation/ma-core-public/blob/2.8.x/Core/src/com/serotonin/m2m2/db/dao/SystemSettingsDao.java

    0_1572511990311_1ce1aedf-d313-4853-bcbe-f25636247fd2-immagine.png

    do you have an idea about where's the problem?

    And also, there's a similar way to update excelReport properties on table excelReportTemplates?

    Thanks, Antonio

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    OK, thanks anyway, I will search for a different approach to change datasource properties from outside Mango 2.8. I've tried to read the blob with the following python script:

    #!/usr/bin/python3
    
    import pymysql
    import json
    
    def write_file(data, filename):
        with open(filename, 'wb') as f:
            f.write(data)
    
    
    def read_blob(filename):
        # select photo column of a specific author
        query = "SELECT data FROM mangoTerlizzi.dataSources where xid='FML01-main'"
    
        try:
            # Open database connection
            db = pymysql.connect("localhost","user","pwd","mangoTerlizzi" )
    
            # prepare a cursor object using cursor() method
            cursor = db.cursor()
    
            # execute SQL query using execute() method.
            cursor.execute(query)
            
            # Fetch a single row using fetchone() method.
            data = cursor.fetchone()[0]
      
            # write blob data into a file
            write_file(data, filename)
            
            with open(filename) as json_file:
              data = json.load(json_file)
       
        except Error as e:
            print(e)
     
        finally:
            cursor.close()
            db.close()
            
                    
    
    read_blob("datasourceDescription.json")
    

    but maybe it is not all the stuff, in fact I've the following error:

    solergy@Tracker_0-1:~ $ python3 dbConnection.py
    Traceback (most recent call last):
      File "dbConnection.py", line 34, in read_blob
        data = json.load(json_file)
      File "/usr/lib/python3.5/json/__init__.py", line 265, in load
        return loads(fp.read(),
      File "/usr/lib/python3.5/codecs.py", line 321, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 0: invalid start byte
    

    posted in Mango Automation general Discussion read more
  • E
    etantonio

    at the end of all the simplest working solution for me seems to be

    <ma-now update-interval="1 minutes" output="theTimeNow"></ma-now>
    <ma-calc input="theTimeNow | moment:'subtract':24:'hours'" output="theTimeADayAgo"></ma-calc>
    

    and then:

    <md-grid-list
          md-cols="11"
          md-gutter="0px"
          md-row-height="35px" ng-if="theTimeADayAgo.isBefore(TRK_0_1_automa_state.time)">
    

    posted in Mango Automation general Discussion read more