Community Tip - Learn all about the Community Ranking System, a fun gamification element of the PTC Community. X
For some reason, the performance charts do not reflect the asset status history anymore.
The expressions for the asset are set programatically during asset provisioning as follows:
Things[UserInputSerialNumber].EXP_E_Running = "\"" + UserInputSerialNumber + ":AssetStatus\"=2";
Things[UserInputSerialNumber].EXP_E_NotConfigured = "false";
Things[UserInputSerialNumber].EXP_E_Unavailable = "true";
Things[UserInputSerialNumber].EXP_E_PlannedDowntime = "\"" + UserInputSerialNumber + ":AssetStatus\"=4";
Things[UserInputSerialNumber].EXP_E_UnplannedDowntime = "\"" + UserInputSerialNumber + ":AssetStatus\"=3";
Things[UserInputSerialNumber].EXP_E_Unavailable = "\"" + UserInputSerialNumber + ":AssetStatus\"=5";
When the property "AssetStatus" is updated, the property "statusTimestamp" is also updated with the current datetime.
Am I missing something?
Solved! Go to Solution.
Hi @slangley
The case # is C15366984.
I was able to get the correct status value. It seems that I had the expressions for 2 statuses swapped, causing unexpected status outcomes. I am now also using CalculateStatus instead of manually setting the status and statusTimestamp values. I have a new issue where I'm not able to edit the expression for state "5" which is "Unavailable". This is also in C15366984.
Additional information:
When I update the status, I update the following properties:
AssetStatus
status
statusTimestamp
Example:
Things[thingname].AssetStatus = 4;
Things[thingname].status = 4; //I update this manually so that the asset advisor status reflects the asset status immediately instead of waiting for asset advisor to scan the expression for the status and update the status.
Things[thingname].statusTimestamp = new Date( );
Hi @Willie
The status expressions are evaluated in the order that they appear in the table. The first expression to evaluate to true determines the state of the equipment. Could you please change the order of the status expression. I could see that from the above post that unavailable status is above the PlannedDowntime. Additionally, could you please verify the value of properties Status, StatusTimestamp and EXP_E_PlannedDowntime from composer.
Thanks
Abhishek
Hi @abhkumar
I just removed some extra lines that were unnecessary.
*******new set of lines to set properties for status expressions******
Things[UserInputSerialNumber].EXP_E_Running = "\"" + UserInputSerialNumber + ":AssetStatus\"=2";
Things[UserInputSerialNumber].EXP_E_PlannedDowntime = "\"" + UserInputSerialNumber + ":AssetStatus\"=4";
Things[UserInputSerialNumber].EXP_E_UnplannedDowntime = "\"" + UserInputSerialNumber + ":AssetStatus\"=3";
Things[UserInputSerialNumber].EXP_E_Unavailable = "\"" + UserInputSerialNumber + ":AssetStatus\"=5";
********************************************************************************
This doesn't affect the issue I'm having though. Also, I don't think the order of the properties I set during asset provisioning affects the order they appear in the table. The order they appear in the table is set by default. Please see below:
The issue I'm having is not specific to "Planned Downtime" status. Regardless of what the current status is, the performance chart does not update anymore. The properties status, statusTimestamp, and the expressions all have the correct values; however, the status and statusTimestamp do not reflect these values.
Is there a service that I can call to get asset advisor to scan the status expressions of a particular thing?
Hi @Willie
The Service GetDefaultStatusExpressionsConfiguration gives you the default expression of your Asset. You can overwrite the service to customize your own Status. Service GetStatusConfiguration gives you current status of Asset and service GetStatusExpressions provides to current status of Asset with order of execution. Service CalculateStatus returns numeric result as per the current status for asset defined on Status property,
0 = Not Configured, 1 = Warning, 2 = Running, 3 = Planned Downtime, 4 = Unplanned Downtime, 5 = Unavailable, 6 = Custom1, 7 = Custom2, 8 = Custom3
If you are entitled to open a support case with PTC, then open a support case so that available TSE will further assist you in the investigation of this issue.
Thanks
Abhishek
Hi @abhkumar
I tried calling the CalculateStatus service, but for some reason, it is not outputting the correct status value. It seems that it does not evaluate the expression correctly. I will open a support case. Thanks.
Hi @Willie.
Please let us know the case number so we can track it for updating this post once a solution is known.
Regards.
--Sharon
Hi @slangley
The case # is C15366984.
I was able to get the correct status value. It seems that I had the expressions for 2 statuses swapped, causing unexpected status outcomes. I am now also using CalculateStatus instead of manually setting the status and statusTimestamp values. I have a new issue where I'm not able to edit the expression for state "5" which is "Unavailable". This is also in C15366984.
Hi @Willie ,
Unavailable expression is not editable as per the product design
As per the status functionality, anyone of the asset status should be true for displaying asset status in asset advisor. In case if none of the above expressions are true, then asset status will be Unavailable (Hardcoded 5 to true) and this will be evaluated in the last when all OOTB and custom expressions gets evaluated.
Thanks,
Himanshu
If the above response has answered your question, please mark as Accepted Solution, for the benefit of others who may have the same question.