# Ignition Exchange: Playback functionality

**URL:** <https://forum.inductiveautomation.com/t/ignition-exchange-playback-functionality/72336>\
**Category:** Ignition Exchange\
**Tags:** perspective, ignition81\
**Created:** [April 12, 2023, 5:57am UTC](https://forum.inductiveautomation.com/t/ignition-exchange-playback-functionality/72336 "2023-04-12T05:57:04Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![simon.goovaerts](https://avatars.discourse-cdn.com/v4/letter/s/3da27b/32.png) [@simon.goovaerts](https://forum.inductiveautomation.com/u/simon.goovaerts)\
**Post date:** [April 12, 2023, 5:57am UTC](https://forum.inductiveautomation.com/t/ignition-exchange-playback-functionality/72336/1 "2023-04-12T05:57:04Z")

</div>

In our project (made in Perspective) we want to establish a playback function using the 'Perspective Historical Playback' control I found on the Ignition Exchange platform. This control is made by Kevin McClusky.

It works fine for read-only tags, but I wonder how you can do the same playback functionality for read/write tags (for instance a parameter setting 'max pressure'). When the control is in real-time mode, you still want to be able to change the actual tag. When the control is in historical mode, you want to see the value of the parameter at a certain date/time. So you can make the binding dynamic with an expression binding, but expression bindings cannot be made bi-directional, so writing to a tag (when in realtime mode) does not work. I also tried scripting but then it was getting really complex and was not able to find a workable method.

I believe I'm not the only one who wants to establish a Playback function for both readable and writable tags, so are there any solutions for this? Maybe Kevin has a workaround that we aren't aware of.

Any advices?

Thanks

---

<div class="post-metadata">

**Author:** ![Brad\_Fischer](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/brad_fischer/32/84857_2.png) [@Brad\_Fischer](https://forum.inductiveautomation.com/u/Brad_Fischer)\
**Post date:** [April 13, 2023, 5:38pm UTC](https://forum.inductiveautomation.com/t/ignition-exchange-playback-functionality/72336/2 "2023-04-13T17:38:58Z")

</div>

As built, this resource exposes a value for each specified tag. In historical mode, this is using Tag History and in Realtime mode it is reading the current tag value. However, as you've noted, there is no provision to write data back to the tag when bound to this value.

Assuming you are binding to an input component like a Numeric Entry Field, you could configure an event on the component to write an entered value to the proper tag. For the Numeric Entry Field component, right click on the component and selected "Configure Events..." then choose `onActionPerformed` and add a new `Script` action. The script could be as simple as  
`system.tag.writeBlocking("[Provider]My/Tag/Path", self.props.value)`.

Note that you'll most likely want to prevent this from firing when the playback controller is in historical mode. You could bind the Numeric Entry Field's `enabled` property to the `historicalMode` prop and add a transform to invert it so that when `historicalMode = True`, the entry box is disabled (but still displays historical values during playback).
