Scheduled Headless scripts are typically used to generate new timeseries data from existing timeseries data.
Scheduled Interval
This Script uses the start_timestamp and end_timestamp of the std_input of the Context object to process data.
Code
<?php //use Model Node of the PHP API use \TiqUtilities\Model\Node; //this is required for the Context object require_once 'thinkiq_context.php'; //get Script Context Object $context = new Context(); //get the start and end time of the interval to process from the std_inputs $start = $context->std_inputs->start_timestamp; $end = $context->std_inputs->end_timestamp; //check to see if the end time is NOT in the future if (strtotime($end->format('Y-m-d H:i:s')) < time()){ //get the instance of this script $script_parent = new Node($context->std_inputs->node_id); //get attributes from $script_parent //required to populate the attributes propety of the Node object $script_parent->getAttributes(); //get the setpoint_publish Attribute object from $script_parent $setpoint_publish = $script_parent->attributes['setpoint_publish']; //get value stream from $setpoint_publish given $start and $end $setpoint_publish_vs = $setpoint_publish->getTimeSeries($start, $end); //number of data changes found in the value stream $data_changes_found = count($setpoint_publish_vs); //get the data_change_count Attribute object from $script_parent $data_change_count = $script_parent->attributes['data_change_count']; //insertTimeSeries is expecting arrays; the following couple of lines only insert a single value/timestamp $value = array($data_changes_found); $timestamp = array($end); //insert the single element arrays for both value and timestamp $data_change_count->insertTimeSeries($value, $timestamp); //$context->return_data() must be used $context->return_data(); } //else, the end time is in the future else{ //return start timestamp to keep the interval from advancing and cliping the end_timestamp $return_data_array = array('start_timestamp' => $start->format(DateTimeInterface::RFC3339_EXTENDED)); //$context->return_data with start_timestamp $context->return_data($return_data_array); }
Output
This Script writes the number of data changes counted on the setpoint_publish Attribute to the data_change_count Attribute. It does so for the Interval defined by the start_timestamp and end_timestamp of the Context object.