NEWS
Datenpukte Skalieren
-
Hallo zusammen.
So langsam verzweifel ich...
Seit Taggen google und suche ich nach einer vernünftigen Möglichkeit ein E/A-Feld zum Datenpunkt zu skalieren (umzurechnen).Hört sich recht einfach an, aus der Eingabe 1,0 den Wert 60000 zu übergeben, aber trotzdem nur 1,0 anzuzeigen, scheint aber mit VIS nicht so ohne zu sein.
Scheinbar geht soetwas über Alias-Datenpunkte
oder bearbeitung des RAW
oder über Script
oder über HTML (mein favorit)
oder 2 Felder und das input ist versteckt/durchsichtigwas wäre euere best-practice hierfür?
Bitte die Ausführung etwas beschreiben.Danke und Gruß
-
Hallo zusammen.
So langsam verzweifel ich...
Seit Taggen google und suche ich nach einer vernünftigen Möglichkeit ein E/A-Feld zum Datenpunkt zu skalieren (umzurechnen).Hört sich recht einfach an, aus der Eingabe 1,0 den Wert 60000 zu übergeben, aber trotzdem nur 1,0 anzuzeigen, scheint aber mit VIS nicht so ohne zu sein.
Scheinbar geht soetwas über Alias-Datenpunkte
oder bearbeitung des RAW
oder über Script
oder über HTML (mein favorit)
oder 2 Felder und das input ist versteckt/durchsichtigwas wäre euere best-practice hierfür?
Bitte die Ausführung etwas beschreiben.Danke und Gruß
@cybersurver Na Du ja nicht beschrieben, wie die Eingabe aussehen soll - also zum Beispiel zwischen 0 und 1.
Wenn die Anzeige max. 1 sein soll - dann ist der Wert aus Gründen der Sichtbarkeit doch irrelevant. Dann kannst doch einfach über Alias oder Skript diesen Wert mit 60000 multiplizieren und das wars dann. Wahrscheinlich habe ich das nicht verstanden?
Über einen Alias geht das auch easy:
{ "type": "state", "common": { "name": "skalierung", "role": "state", "type": "number", "read": true, "write": true, "alias": { "id": "0_userdata.0.skalierung", "read": "val/60000", "write": "val*60000" } }, "_id": "alias.0.Skalierung.skalierung", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1630921833869, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }In dem Aliaspunkt sind die Werte von 0-1 also aus der VIS. Im eigentlichen Datenpunkt - hier exemplarisch unter userdata die Werte zwischen 0 und 60000. Je nachdem was man verändert, ändert sich im Counterpart der Wert.

Man kann auch direkt über die Bindings Rechenoperationen durchführen:

ergibt dann in der Anzeige:

Für die Eingabe ist halt das Problem, dass das Widget selbst die Skalierung können muss und das hängt vom Widget ab, aber mit einem Datenpunkt geht das meines Erachtens.
In Kombination mit einem Slider ist dann mit dem Alias folgendes möglich:


während im userdata der Wert linear skaliert steht.

In dem Fall ändert sich der angezeigte Wert und der Slider auch automatisch, wenn man unter Userdata den Quellwert entsprechend verändert.
-
@cybersurver Na Du ja nicht beschrieben, wie die Eingabe aussehen soll - also zum Beispiel zwischen 0 und 1.
Wenn die Anzeige max. 1 sein soll - dann ist der Wert aus Gründen der Sichtbarkeit doch irrelevant. Dann kannst doch einfach über Alias oder Skript diesen Wert mit 60000 multiplizieren und das wars dann. Wahrscheinlich habe ich das nicht verstanden?
Über einen Alias geht das auch easy:
{ "type": "state", "common": { "name": "skalierung", "role": "state", "type": "number", "read": true, "write": true, "alias": { "id": "0_userdata.0.skalierung", "read": "val/60000", "write": "val*60000" } }, "_id": "alias.0.Skalierung.skalierung", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1630921833869, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }In dem Aliaspunkt sind die Werte von 0-1 also aus der VIS. Im eigentlichen Datenpunkt - hier exemplarisch unter userdata die Werte zwischen 0 und 60000. Je nachdem was man verändert, ändert sich im Counterpart der Wert.

Man kann auch direkt über die Bindings Rechenoperationen durchführen:

ergibt dann in der Anzeige:

Für die Eingabe ist halt das Problem, dass das Widget selbst die Skalierung können muss und das hängt vom Widget ab, aber mit einem Datenpunkt geht das meines Erachtens.
In Kombination mit einem Slider ist dann mit dem Alias folgendes möglich:


während im userdata der Wert linear skaliert steht.

In dem Fall ändert sich der angezeigte Wert und der Slider auch automatisch, wenn man unter Userdata den Quellwert entsprechend verändert.
@mickym
Danke für deine Antwort.Die Eingabe wäre komfortabelsten mit einer NKS von 0.0 bis 99.9
Dieser wert muss dann mit 60000 (Millisekunden) multipliziert werden, so das dann Minuten raus kommen.
Umgekehrt kommt z.B. ein Wert von 120000 vom
Datenpunkt und dann sollte 2.0 (oder 2,0) im Feld stehen. -
@cybersurver Na Du ja nicht beschrieben, wie die Eingabe aussehen soll - also zum Beispiel zwischen 0 und 1.
Wenn die Anzeige max. 1 sein soll - dann ist der Wert aus Gründen der Sichtbarkeit doch irrelevant. Dann kannst doch einfach über Alias oder Skript diesen Wert mit 60000 multiplizieren und das wars dann. Wahrscheinlich habe ich das nicht verstanden?
Über einen Alias geht das auch easy:
{ "type": "state", "common": { "name": "skalierung", "role": "state", "type": "number", "read": true, "write": true, "alias": { "id": "0_userdata.0.skalierung", "read": "val/60000", "write": "val*60000" } }, "_id": "alias.0.Skalierung.skalierung", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1630921833869, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }In dem Aliaspunkt sind die Werte von 0-1 also aus der VIS. Im eigentlichen Datenpunkt - hier exemplarisch unter userdata die Werte zwischen 0 und 60000. Je nachdem was man verändert, ändert sich im Counterpart der Wert.

Man kann auch direkt über die Bindings Rechenoperationen durchführen:

ergibt dann in der Anzeige:

Für die Eingabe ist halt das Problem, dass das Widget selbst die Skalierung können muss und das hängt vom Widget ab, aber mit einem Datenpunkt geht das meines Erachtens.
In Kombination mit einem Slider ist dann mit dem Alias folgendes möglich:


während im userdata der Wert linear skaliert steht.

In dem Fall ändert sich der angezeigte Wert und der Slider auch automatisch, wenn man unter Userdata den Quellwert entsprechend verändert.
@mickym
Danke für deine Antwort.Die Eingabe wäre komfortabelsten mit einer NKS von 0.0 bis 99.9
Dieser wert muss dann mit 60000 (Millisekunden) multipliziert werden, so das dann Minuten raus kommen.
Umgekehrt kommt z.B. ein Wert von 120000 vom
Datenpunkt und dann sollte 2.0 (oder 2,0) im Feld stehen. -
@cybersurver Na Du ja nicht beschrieben, wie die Eingabe aussehen soll - also zum Beispiel zwischen 0 und 1.
Wenn die Anzeige max. 1 sein soll - dann ist der Wert aus Gründen der Sichtbarkeit doch irrelevant. Dann kannst doch einfach über Alias oder Skript diesen Wert mit 60000 multiplizieren und das wars dann. Wahrscheinlich habe ich das nicht verstanden?
Über einen Alias geht das auch easy:
{ "type": "state", "common": { "name": "skalierung", "role": "state", "type": "number", "read": true, "write": true, "alias": { "id": "0_userdata.0.skalierung", "read": "val/60000", "write": "val*60000" } }, "_id": "alias.0.Skalierung.skalierung", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1630921833869, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }In dem Aliaspunkt sind die Werte von 0-1 also aus der VIS. Im eigentlichen Datenpunkt - hier exemplarisch unter userdata die Werte zwischen 0 und 60000. Je nachdem was man verändert, ändert sich im Counterpart der Wert.

Man kann auch direkt über die Bindings Rechenoperationen durchführen:

ergibt dann in der Anzeige:

Für die Eingabe ist halt das Problem, dass das Widget selbst die Skalierung können muss und das hängt vom Widget ab, aber mit einem Datenpunkt geht das meines Erachtens.
In Kombination mit einem Slider ist dann mit dem Alias folgendes möglich:


während im userdata der Wert linear skaliert steht.

In dem Fall ändert sich der angezeigte Wert und der Slider auch automatisch, wenn man unter Userdata den Quellwert entsprechend verändert.
@mickym
Danke für deine Antwort.Die Eingabe wäre komfortabelsten mit einer NKS von 0.0 bis 99.9
Dieser wert muss dann mit 60000 (Millisekunden) multipliziert werden, so das dann Minuten raus kommen.
Umgekehrt kommt z.B. ein Wert von 120000 vom
Datenpunkt und dann sollte 2.0 (oder 2,0) im Feld stehen. -
@mickym
Danke für deine Antwort.Die Eingabe wäre komfortabelsten mit einer NKS von 0.0 bis 99.9
Dieser wert muss dann mit 60000 (Millisekunden) multipliziert werden, so das dann Minuten raus kommen.
Umgekehrt kommt z.B. ein Wert von 120000 vom
Datenpunkt und dann sollte 2.0 (oder 2,0) im Feld stehen.@cybersurver Nun die Formel passen doch bereits bei der Alias Definition. Welchen Wert Du über VIS in den Alias schreibst ist doch Dir über lassen. Die Multiplikation bzw. Division durch 60000 gibt immer den Minutenwert im Alias und umgekehrt.
-
@cybersurver Nun die Formel passen doch bereits bei der Alias Definition. Welchen Wert Du über VIS in den Alias schreibst ist doch Dir über lassen. Die Multiplikation bzw. Division durch 60000 gibt immer den Minutenwert im Alias und umgekehrt.
Nun hab mich ich ganz vergessen mich bei Dir zu bedanken!
Ich habe es über den Adapter „Alias-Manager“ umgesetzt, welcher aber scheinbar nichts anderes im RAW macht, als Du in deiner
ersten Antwort gezeigt hast.
Somit läuft und nochmals Danke!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden