How to set the tag quality in Python scripting in the WebDev module?

I'm gonna test that right now

edit:
Doesn't seem to work. I can write just fine to tag.quality but it doesn't seem to change the quality.


qpaths = ["{}.quality".format(p) for p in paths]
qualities = [getattr(QualityCode, q, 'Uncertain') for q in qualities]
qualities
system.tag.writeBlocking(qpaths, qualities)
system.tag.readBlocking(paths)

gives me this:

[Bad_Stale, Bad]
[Good, Good]
[[24, Good, Tue May 03 16:30:23 CEST 2022 (1651588223563)], [42, Good, Tue May 03 16:30:33 CEST 2022 (1651588233940)]]

Ok, I found the Script Console... Sorry, newbie at Ignition...

from com.inductiveautomation.ignition.common.model.values import BasicQualifiedValue, QualityCode

paths = "[SolidRed]/Path/To/Device/MyString"
values = system.tag.readBlocking(paths)
qualities = { "Bad" }
qvals = [qv.derive(getattr(QualityCode, quality, 'Uncertain')) for qv, quality in zip(values, qualities)]

values
qualities
qvals

result = system.tag.writeBlocking(paths, qvals)

Gives:

>>> 
[[MyString, Good, Tue May 03 09:13:32 CEST 2022 (1651562012495)]]
set(['Bad'])
[[MyString, Bad, Tue May 03 09:13:32 CEST 2022 (1651562012495)]]
>>>

Which looks good to me.

And a popup with the following error message:

Error writing to tag(s): Gateway Comm Mode is not Read/Write.

Edit:
Got it fixed with:
system.util.setConnectionMode( 3 )

It is actually working from the Script Console and not from Web Dev. Have to investigate further...

Edit 2:
Ok, got it working in Web Dev as well. Probably did something wrong earlier...

Minor bug:

qvals = [qv.derive(getattr(QualityCode, quality, "Uncertain")) for qv, quality in zip(values, qualities)]

should be:

qvals = [qv.derive(getattr(QualityCode, quality, getattr(QualityCode, "Uncertain"))) for qv, quality in zip(values, qualities)]

You're right, though QualityCode.Uncertain seems simpler than getattr(QualityCode, "Uncertain")

1 Like

Even better... :grinning:

Thank you for your help! Much appreciated!