NEWS
mein Kampf mit true und false
-
Hallo,
ich kämpfe ständig mit 0, 1 - true, false, "true"- "false" ; usw.
Gerät A verlangt eine Zahl 0 oder 1 zum steuern,
Gerät B verlangt ein bool true oder false zum steuern.
Gerät C verlangt ein string "true" oder "false"
in der VIS gibt es auch diverse unterschiede, mal 0 - 1, mal "true" - "false"ich kovertiere mich hier einen Wolf weiß aber nie so richtig was wo hin gehört.
Beispiel: Gerät A:
in der VIS(1) ein Widget bool sendet true oder false, Gerät benötigt Zahl 0 - 1, Alias Konvertierung zum schreiben val === true ? 1 : 0. (wird in der VIS auch richtig dargestellt)
Gleiches Gerät gleicher Datenpunkt (Alias xy) andere View in der Vis zur besseren Darstellung anderes Widget. Dieses Widget mach Zahl 0-1, was macht jetzt die Konvertierung?
Was passiert wenn aus einem Script dieser Datenpunkt geschaltet wird ?
Was sende ich von einem script aus steuere 0 -1 oder true - false?Ich habe es bisher immer hinbekommen, aber nicht durch logik sondern durch probieren.
Da passieren dann Dinge die ich nicht verstehe, VIS zeigt nichts an wenn über script geschaltet wird oder Gerät reagiert nicht auf die VIS
Was gibt es für Lösungen die man auch später noch versteht?Ich habe es bisher immer hinbekommen, aber nicht durch logik
...und dort sollte (zumindest in dem von dir beschriebenen Fall) die implizite Typkonvertierung greifen.
Lediglich
"1"ist und bleibt ein StringVIS zeigt nichts an wenn über script geschaltet wird oder Gerät reagiert nicht auf die VIS
Das könnte an dem (nicht vorhandenen) Ack=true liegen.
Einige Widgets erwarten dies anscheinend bevor es angezeigt wird.Außerdem habe ich vereinzelte Widgets, die ihren Dienst versagen, wenn man sich auch an anderen Stellen außerhalb der Legalität bewegt.
So werden Datenpunkte in eigenen Strukturen, die noch aus der vor-0_userdata-Zeit stammen, nicht mehr angezeigt. -
Hallo,
ich kämpfe ständig mit 0, 1 - true, false, "true"- "false" ; usw.
Gerät A verlangt eine Zahl 0 oder 1 zum steuern,
Gerät B verlangt ein bool true oder false zum steuern.
Gerät C verlangt ein string "true" oder "false"
in der VIS gibt es auch diverse unterschiede, mal 0 - 1, mal "true" - "false"ich kovertiere mich hier einen Wolf weiß aber nie so richtig was wo hin gehört.
Beispiel: Gerät A:
in der VIS(1) ein Widget bool sendet true oder false, Gerät benötigt Zahl 0 - 1, Alias Konvertierung zum schreiben val === true ? 1 : 0. (wird in der VIS auch richtig dargestellt)
Gleiches Gerät gleicher Datenpunkt (Alias xy) andere View in der Vis zur besseren Darstellung anderes Widget. Dieses Widget mach Zahl 0-1, was macht jetzt die Konvertierung?
Was passiert wenn aus einem Script dieser Datenpunkt geschaltet wird ?
Was sende ich von einem script aus steuere 0 -1 oder true - false?Ich habe es bisher immer hinbekommen, aber nicht durch logik sondern durch probieren.
Da passieren dann Dinge die ich nicht verstehe, VIS zeigt nichts an wenn über script geschaltet wird oder Gerät reagiert nicht auf die VIS
Was gibt es für Lösungen die man auch später noch versteht?@ubecker [sagte]: kämpfe ständig mit 0, 1 - true, false, "true"- "false"
Dafür gibt es Alias:
Datenpunkte, die nur zwei Werte annehmen können, definiert man im Alias immer als Logikwert ("boolean") und wendet bei Zahlen und Strings Konvertierung an, wobei beim Lesen automatisch konvertiert wird. Schreibkonvertierung:val ? 1 : 0 // Original als Zahl val ? 'true' : 'false' // Original als String -
Das ist leider in drei Punkten unschön
- kein einheitliches Vorgehen
- nicht selten eine schlechte Dokumentation, oder sie ist schlecht auffindbar
- Sender UND Empfänger müssen sich einig sein.
Eine für mich zufriedenstellende Lösung habe ich bisher auch noch nicht gefunden
Aber so etwas ist ja eine (von vielen) Aufgabe eines Brokers - der soll das "runde" passend zum "eckigen" machen ;-)
kein einheitliches Vorgehen
nicht selten eine schlechte Dokumentation, oder sie ist schlecht auffindbar
Sender UND Empfänger müssen sich einig sein.hast ja recht, aber solche systeme wachsen nun mal. Bisher hab ich es ja geschaft das runde ins eckige zu kriegen, sogar auch anders rum.
Mein Problem war jetzt aktuell. Ich musste ein Gerät tauschen da das alte defekt war. (kommt vor). Nur das neue bruchte die 0 und 1 zur Steuerung das alte bool true - false. Da ich in scripten dieses Gerät verwendet habe wollte ich natürlich so wenig wie möglich änderungen machen. Scripte sollten gleich bleiben und die VIS auch.
-
kein einheitliches Vorgehen
nicht selten eine schlechte Dokumentation, oder sie ist schlecht auffindbar
Sender UND Empfänger müssen sich einig sein.hast ja recht, aber solche systeme wachsen nun mal. Bisher hab ich es ja geschaft das runde ins eckige zu kriegen, sogar auch anders rum.
Mein Problem war jetzt aktuell. Ich musste ein Gerät tauschen da das alte defekt war. (kommt vor). Nur das neue bruchte die 0 und 1 zur Steuerung das alte bool true - false. Da ich in scripten dieses Gerät verwendet habe wollte ich natürlich so wenig wie möglich änderungen machen. Scripte sollten gleich bleiben und die VIS auch.
-
kein einheitliches Vorgehen
nicht selten eine schlechte Dokumentation, oder sie ist schlecht auffindbar
Sender UND Empfänger müssen sich einig sein.hast ja recht, aber solche systeme wachsen nun mal. Bisher hab ich es ja geschaft das runde ins eckige zu kriegen, sogar auch anders rum.
Mein Problem war jetzt aktuell. Ich musste ein Gerät tauschen da das alte defekt war. (kommt vor). Nur das neue bruchte die 0 und 1 zur Steuerung das alte bool true - false. Da ich in scripten dieses Gerät verwendet habe wollte ich natürlich so wenig wie möglich änderungen machen. Scripte sollten gleich bleiben und die VIS auch.
Mein Problem war jetzt aktuell. Ich musste ein Gerät tauschen da das alte defekt war. (kommt vor). Nur das neue bruchte die 0 und 1 zur Steuerung das alte bool true - false. Da ich in scripten dieses Gerät verwendet habe wollte ich natürlich so wenig wie möglich änderungen machen. Scripte sollten gleich bleiben und die VIS auch.
Und für genau diesen Fall sind die von @paul53 erwähnten Aliase gedacht. Da braucht man nur den Ziel-DP und ggf. die Konvertierung anpassen. Aber eben nur an dieser einen Stelle.
Aber das muss man dann bereits im Vorfeld berücksichtigen. Oder aber JETZT auf Alias umstellen und nur noch 1x Scripte und VIS anpassen. Dann hat man zumindest für die Zukunft Ruhe. -
@ubecker [sagte]: kämpfe ständig mit 0, 1 - true, false, "true"- "false"
Dafür gibt es Alias:
Datenpunkte, die nur zwei Werte annehmen können, definiert man im Alias immer als Logikwert ("boolean") und wendet bei Zahlen und Strings Konvertierung an, wobei beim Lesen automatisch konvertiert wird. Schreibkonvertierung:val ? 1 : 0 // Original als Zahl val ? 'true' : 'false' // Original als StringDafür gibt es Alias:
Datenpunkte, die nur zwei Werte annehmen können, definiert man im Alias immer als Logikwert ("boolean") und wendet bei Zahlen und Strings Konvertierung an, wobei beim Lesen automatisch konvertiert wird. Schreibkonvertierung:Das heißt: Der Alias mit zwei Werten 0 - 1 , true -false , "online - "offline" sollte immer als bool erstellt werden? und dann eine schreib - lese Konvertierung gemacht werden?
Erscheint logisch. Bisher habe ich den Alias immer als das erstellt was das Original war. (Zahl, String, bool)Bin ich noch nicht rauf gekommen, aber dann bleibt so ein Chaos wie bei mir aus
Danke
-
Mein Problem war jetzt aktuell. Ich musste ein Gerät tauschen da das alte defekt war. (kommt vor). Nur das neue bruchte die 0 und 1 zur Steuerung das alte bool true - false. Da ich in scripten dieses Gerät verwendet habe wollte ich natürlich so wenig wie möglich änderungen machen. Scripte sollten gleich bleiben und die VIS auch.
Und für genau diesen Fall sind die von @paul53 erwähnten Aliase gedacht. Da braucht man nur den Ziel-DP und ggf. die Konvertierung anpassen. Aber eben nur an dieser einen Stelle.
Aber das muss man dann bereits im Vorfeld berücksichtigen. Oder aber JETZT auf Alias umstellen und nur noch 1x Scripte und VIS anpassen. Dann hat man zumindest für die Zukunft Ruhe.Und für genau diesen Fall sind die von @paul53 erwähnten Aliase gedacht. Da braucht man nur den Ziel-DP und ggf. die Konvertierung anpassen. Aber eben nur an dieser einen Stelle.
Aber das muss man dann bereits im Vorfeld berücksichtigen. Oder aber JETZT auf Alias umstellen und nur noch 1x Scripte und VIS anpassen. Dann hat man zumindest für die Zukunft Ruhe.Ich habe schon von Anfang an Aliase benutzt wenn ich Datenpunkte von Geräten oder selbst erstellte in scripten verwende. Nur mit dem Hintergrund wenn ein Gerät getauscht wird das einfach zu realisieren. Aber noch nicht um immer eine Konvertierung durchzuführen (wenn nötig)
-
Hallo,
ich kämpfe ständig mit 0, 1 - true, false, "true"- "false" ; usw.
Gerät A verlangt eine Zahl 0 oder 1 zum steuern,
Gerät B verlangt ein bool true oder false zum steuern.
Gerät C verlangt ein string "true" oder "false"
in der VIS gibt es auch diverse unterschiede, mal 0 - 1, mal "true" - "false"ich kovertiere mich hier einen Wolf weiß aber nie so richtig was wo hin gehört.
Beispiel: Gerät A:
in der VIS(1) ein Widget bool sendet true oder false, Gerät benötigt Zahl 0 - 1, Alias Konvertierung zum schreiben val === true ? 1 : 0. (wird in der VIS auch richtig dargestellt)
Gleiches Gerät gleicher Datenpunkt (Alias xy) andere View in der Vis zur besseren Darstellung anderes Widget. Dieses Widget mach Zahl 0-1, was macht jetzt die Konvertierung?
Was passiert wenn aus einem Script dieser Datenpunkt geschaltet wird ?
Was sende ich von einem script aus steuere 0 -1 oder true - false?Ich habe es bisher immer hinbekommen, aber nicht durch logik sondern durch probieren.
Da passieren dann Dinge die ich nicht verstehe, VIS zeigt nichts an wenn über script geschaltet wird oder Gerät reagiert nicht auf die VIS
Was gibt es für Lösungen die man auch später noch versteht?leider ist es bei vis1 so das die meisten datenpunkte immer als string ankommen, egal welcher typ man am datenpunkt konfiguriert hat.
deswegen am besten immer konvertieren.
Damit man nicht raten muss, empfiehlt es sich in einem html widget so ein test zu bauen (die ersten 2 Zeilen)typeof v {v:0_userdata.0.val1;typeof v}</br> v {v:0_userdata.0.val1;v}</br></br> new Boolean(v) {v:0_userdata.0.val1;new Boolean(v)}</br> new Boolean(v)==true {v:0_userdata.0.val1;new Boolean(v)==true}</br> new Boolean(v)==false {v:0_userdata.0.val1;new Boolean(v)==false}</br> v=="true" {v:0_userdata.0.val1;v=="true"}</br>in der runtime ansicht sieht man dann 2 zeilen
mit typeof wird der datentyp angezeigt
in der zweiten zeile der inhalt.in meinem test soeben wurde aus einem boolean datenpunkt ein string

die 3 weiteren Zeilen zeigen wie man dann aus einem string in vis wieder ein boolean macht mit 2 weiteren tests.
auf string testen reciht aber auch, also mit v=="true" -
leider ist es bei vis1 so das die meisten datenpunkte immer als string ankommen, egal welcher typ man am datenpunkt konfiguriert hat.
deswegen am besten immer konvertieren.
Damit man nicht raten muss, empfiehlt es sich in einem html widget so ein test zu bauen (die ersten 2 Zeilen)typeof v {v:0_userdata.0.val1;typeof v}</br> v {v:0_userdata.0.val1;v}</br></br> new Boolean(v) {v:0_userdata.0.val1;new Boolean(v)}</br> new Boolean(v)==true {v:0_userdata.0.val1;new Boolean(v)==true}</br> new Boolean(v)==false {v:0_userdata.0.val1;new Boolean(v)==false}</br> v=="true" {v:0_userdata.0.val1;v=="true"}</br>in der runtime ansicht sieht man dann 2 zeilen
mit typeof wird der datentyp angezeigt
in der zweiten zeile der inhalt.in meinem test soeben wurde aus einem boolean datenpunkt ein string

die 3 weiteren Zeilen zeigen wie man dann aus einem string in vis wieder ein boolean macht mit 2 weiteren tests.
auf string testen reciht aber auch, also mit v=="true"
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