=====Storing Event and Report values to a file in TransSECS Devices===== Whenever an Event is received the script associated with that event is called. {{:pasted:20240320-160626.png?400}} When an event is received, the value of the incoming variable (incoming value) is a JSON representation of the event, including all reports and values. For example, the script shown may print something like: Report Received { "COMPLETED": [ { "RPTID0": [ {"CLOCK":"2024032014462593", "type":20 },{"GasFlow":"1.883", "type":44 },{"LOTID":"", "type":20 } ], "rptid":100} ], "ceid":7502, "timestamp":"2024-03-20 14:46:25.955"} Similarly, when a Report is received a script is called on the report. This will be called if the report is part of any event or requested manually. {{:pasted:20240320-160145.png?400}} The value here is slightly different. The value itself is the report Id, for example, 100. The data associated with the report is retrieved by calling var map = incomingValue.getProperty("MAP"); You can get string representation of the map with var mapString = map.toString(); If you print that string you might get something like: {CLOCK=2024032015172190, GasFlow=1.955, LOTID=, CEID=7502, EventName=COMPLETED} We can save either the Event JSON or the map to a file, appending a line as each new value is received. If we want to save the event, then our string is: var stringToSave = incomingValue.getStringValue(); and the script is placed in the script block for the CEID. For the Report, the string to save is: var stringToSave = incomingValue.getProperty("MAP").toString(); The code then goes in the Report Script block. The code is about the same for both blocks: // Import the Java FileWriter and BufferedWriter classes var FileWriter = Java.type("java.io.FileWriter"); var BufferedWriter = Java.type("java.io.BufferedWriter"); /** * Appends the provided string to a file, followed by a newline. * @param {String} stringToSave The string representation of the data to append. */ function appendMapStringToFile(stringToSave) { // Specify the file path where you want to save or append the map's string representation var filePath = "path/to/your/file.txt"; try { // Create a FileWriter in append mode (the boolean true enables appending) var writer = new BufferedWriter(new FileWriter(filePath, true)); // Write the map's string representation to the file, and append a new line writer.write(stringToSave + "\n"); // Adding "\n" to ensure the string ends with a newline // Always close the writer to flush and release system resources writer.close(); print("Successfully wrote to the file."); } catch (e) { print("An error occurred: " + e); } } // Example usage of the function // This is for a report var stringToSave = incomingValue.getProperty("MAP").toString(); // for an event the code would be: //var stringToSave = incomingValue.getStringValue(); appendMapStringToFile(stringToSave); incomingValue; // always "return" a value Each time a report, or event is received a new line is added to the log file. So after a few reports the file may look like this: {CLOCK=2024032015392720, GasFlow=2.004, LOTID=, CEID=7502, EventName=COMPLETED} {CLOCK=2024032015392774, GasFlow=1.974, LOTID=, CEID=7502, EventName=COMPLETED} {CLOCK=2024032015392799, GasFlow=1.974, LOTID=, CEID=7502, EventName=COMPLETED}