Setting the value property to VAR{val} will only change the knob's value depending on the custom variable "val", which can be set using setVal(). This variable doesn't take the knob's value without an explicit instruction.
What you want is simpler: in the knob's script property, the value variable represents its value and can be used directly:
// knob.script
console.log("Knob " + getProp("this", "id") + ": " + value)
set("text_id", value) // pass value to another widget
Alternatively, you could write @{knob_id} in the text widget's value. (no script needed).