Wertebereich Variablen? IPS vs. Designer vs. RRD

Hallo,
ich denke es würde allen sehr helfen, wenn an einer Stelle der offiziellen Dokumentation eine Aussage zum akzeptierten Wertebereich der Variablen gemacht werden würde, z.B. hier:

http://www.ipsymcon.de/~hjh/HelpStudio/html/IPS-Manual/Variablen.html
aber ggf. auch in der Designer-Doku, wenn diese davon abweichend sind.

Ich glaube zwar, dazu schon mal was gelesen zu haben hier im Forum, kann es aber per Suche weder im Forum noch in den beiden Dokus finden (oder: bin mal wieder blind, dann sorry)

Hintergrund:
Der Helligkeitssensor S2500H liefert Integer 0…200.000. Natürlich ist das kein klassisches Integer mehr (-32.xxx … +32.xxx), aber als Ganzzahlen-Wert mit Erhalt aller Stellen. Die direkte Verwendung dieses Wertes an einer Trackbar im Designer schlägt auch prompt fehl. Sobald die Werte leicht über 30k steigen, werden sie einfach ignoriert, und der Slider bleibt links kleben, und SelStart/-Ende erscheinen nicht mehr.

Andererseits werden selbst Werte > 60k im IPS als „Interger“-Variablen noch sauber angenommen. Im Test: selbst der Wert 1.666.123.456 wird noch gehalten.

Also weichen hier offenbar die akzeptierten Wertebereiche zwischen IPS-Variablen und Designer voneinander ab?

Wäre schön, wenn man das nachlesen könnte, bezw. wenn das doch irgendwo versteckt stehen würde, das man das dann auch auf den Hilfeseiten zu „Variablen“ zumindest als Link erreichen würde bzw. als Treffer auf Suche nach einem entsprechenden Schlüsselwort wie „Wertebereich“.

Auch das RRD-Tool / WIIPS scheint da ein ähnliches, wenn auch wieder anderes Problem zu haben.
Vorgestern war hier krasse Sonne auf frischem Schnee. Erstmals seit ich den Helligkeitssensor einsetze, wurden (am frühen Vormittag) Werte bis knapp über 60.000 Lx erreicht. Kurve stieg schön sauber an (nachmittags ab diesem Wert auch wieder schöner Abstieg). Dazwischen aber über den Tagesbereich gab es plötzlich einen Bruch, so als ob bei allen Werten über 2*maxInteger ein Offset abgezogen worden wäre, und die Kurve verlief in diesem Zeitabschnitt viel tiefer (Sonne schien aber weiter, auch kein Dunst!).

Ein aus den Rohwerten errechneter (x / 1000) Float-Wert mit Maximumerkennung hat auch ein entsprechend höheres Maximum verzeichnet (knapp 68,5k), also kam zumindest dieser Wert schonmal an vom Sensor.
(Wer nun vermutet, das das die Umschaltung der Sensorbereiche beim S2500H sind: die haben lt. ELV andere Grenzen (Vielfache von 10)

Auch hier (RRD, WIIPS) wäre es wichtig zu wissen, bis zu welchen Wertebereichen da gearbeitet werden kann, da offenbar wiederum andere Grenzen gelten.

Jetzt bitte nicht empfehlen: nimm doch Float, Wert / 1000. Hab ich ja längst gemacht, und damit funzt alles auch wieder. Aber: Wann muß ich genau sowas künftig bei anderen Sachen machen?

Wo liegen die akzeptierten Grenzwerte der Variablentypen im IPS, im Designer und im RRD?

Gruß Gerd

…nur mal so als Idee, wegen dem (eigentlich sonst sinnlosen) Mega-Wertebereich am Helligkeitssensor:

Das macht doch nur wirklich Sinn bei logarithmischer Anzeige. Nicht umsonst liefert der Sensor gerade dazu Wertebereiche. Daraus folgt:

Kann (künftig / Wunsch) eine Trackbar auch Werte logarithmisch anzeigen? Oder ist das sowieso vom Ansatz her (Win-API) nicht möglich? Müßte aber doch Problem der Wertelieferung (das könnte ja noch jeder selbst per Script) bzw. der Skalendarstellung sein, oder?

RRD kann das ja, wenn auch im WIIPS (noch?) nicht genutzt (ich weiß: „Gerd, baue es doch ein…“)

Gruß Gerd

Hallo Gerd,

ganz einfach, die Grenzwerte liegen achsenbezogen an. Dazu brauchste nur im Wettermodul die Achse zu betrachten, das sind die jeweiligen Min und Maxwerte. Und beim Sonnensensor wird davon ausgegangen, dass der Werte von 0…200000 liefern kann.

Wo liegen die akzeptierten Grenzwerte der Variablentypen im IPS, im Designer und im RRD?

Gruß Gerd

Grenzwerte hat nix mit RRD zu tun, RRD akzeptiert die Werte, die man uebergibt. So einfach ist das ganze also nicht. Deshalb gabs auch manchmal Aussreiser in den Graphen.

32.768! Oha… Das ja noch 16Bit… 32 Bit Betriebssysteme (ab Win95) schaffen „ein bisschen mehr“. Und wir stehen mittlerweile an der Schwelle zu 64Bit Systemen… :o

2^32 - Das sind Grundlagen der Informatik und die lassen sich überall im Netz finden. Für den Normal IPS-User reicht IMO die Info, dass es Wahnsinnig viel ist…

Gruß,

Toni

mir ist die Theorie dahinter schon klar, auch die Weiterentwicklung der Systeme, die ich selber aus tgl. Praxis kenne. ABER

  • ich sehe, dass das offenbar in IPS-Variablen, Designer und RRD unterschiedlich behandelt wird / Fehler verursacht
  • sehe Grenzen, noch dazu unterschiedliche (offenbar Trackbar: 16bit-Int mit Vorzeichen, also als positiver Wert nicht 2^32 sondern nur 2^31, RRD dagegen 2^32, IPS-Variablen offenbar double; RRD offenbar negativer Offset oberhalb 2^32)
  • ich möchte (als normaler, selber darauf Scripts aufsetzender Anwender), um da entsprechend reagieren zu können, einfach nur mal eine ganz normale Aussage dazu
  • so eine Angabe gehört einfach in eine Dokumentation, damit nicht jeder wieder neu das erforschen, oder noch schlimmer: da reinfallen muß

Darauf hab ich mir lediglich erlaubt, mal als IDEE hinzuweisen, das doch evtl. dort zu ergänzen, bzw. als „ACHTUNG, da gibt es offenbar Abweichungen zwischen verschiedenen IPS-Komponenten“, wobei für „ganz normale direkte Verwendung von Sensorwerten“ (wie es ein Normalanwender tun würde) diese eben offenbar NICHT wahnsinnig groß (genug) sind. Siehe S2500H --> Designer-Trackbar

Gruß Gerd

Edit:

…als offizielle Aussage hätte das auch den Vorteil, bei darauf aufsetzenden Eigenentwicklungen von einer Stabilität dieser Aussage bzgl. künftiger Versionen auszugehen. Klartext: muß ich nun alles auf den kleinsten Fall (Designer: max. +32xxx) begrenzen, oder kann ich davon ausgehen, das Werte bis max xxx ganzzahlig (auch künftig) verarbeitet werden können? Ich will das natürlich nicht wegen dem Helligkeitssensor wissen, da ist das nur sehr einfach und nachvollziehbar aufgefallen. Wenn ich statistische Probenmengen aus der Visualisierung der Datamining-Moduln meiner Backgroundprozesse als Beispiel nennen würde, würdet ihr mir sowieso maximal nen Vogel zeigen, falls das überhaupt jemand lesen würde :slight_smile:

Versteh mich nicht falsch. Ich hab auch nicht gesagt, dass die Idee nicht gut wär, lediglich wo du Antworten auf deine Fragen bekommst…

Integer lässt sowohl positive alsauch negative Werte zu. Also round about 2^31 positive und 2^31 negative. wenn du sie alle, Positive und Negative, zählst kommst du auf 4.294.967.296 unterschiedlicher Werte. Das entspricht 2^32. Hier die Details.

Alle Programmiersprachen und Datenbanken - die ich kenne - geben aber auch den „unsigned“ Bereich her. Das bedeutet es gibt keine negativen Zahlen und die 4.294.967.296 Werte gehen von 0 bis 4.294.967.295. Diese Variante wird von IPS, soweit ich weiss, nicht unterstützt. Das ist in meinen Augen auch okay so.

das von dir angesprochene Double wiederum beschreibt eine Fließkommazahl (infos dazu gibts hier) mit doppelter Genauigkeit. Auch dieser Begriff ist eine fest stehend Größe in der Informatik und sollte reichlich hits bei google bringen. Der einfachheit halber unterscheidet IPS nicht zwischen den ganzen verschiedenen „Fließkomma Standards“ sondern stellt nur die eine Große bereit, was den „Normalusern“, die in meinen Augen wohl die eigentliche Zielgruppe der Software darstellt, sehr entgegen kommen dürfte.

Zur Kompartibilität mit dem RRDTool. Tja wie es im leben nun mal immer so ist passt nicht immer alles auf Anhieb zusammen. Antworten zum RRDTool bekommst du am besten beim Hersteller.

Toni

Edit:

Ich kann mir nicht vorstellen, dass der Designer intern nur mit 16Bit arbeitet. Habs aber nicht probiert. Damit wäre er (theoretisch) kompatibel zu Win3.1, was er nicht ist :wink:

Hallo Gerd,

an der Stelle muss ich auch nochmal ein kurzes Statement abgeben: Als Anwender kann man denjenigen, der hier diese Details wissen will, schon nicht mehr bezeichnen, da dies bereits in die Untiefen der professionellen Programmierung geht. Und genau da sind wir an einem Punkt, wo es zur Ausbildung eines Informatikers gehoert, sich solches Wissen zu erarbeiten oder es einfach zu haben. Du kannst niemals erwarten, dass eine IPS oder sonstige Dokumentation diese Details beinhaltet, da viele der Infos von unterschiedlichen Systemen vorgegeben sind, einmal ist es Windows, mal Delphi, mal RRD und damit vielleicht sogar Perl usw. Hier hilft wirklich nur die Erfahrung und Grenzwissen, wenn das nicht vorhanden, dann einfach probieren.

sorry, aber das sehe ich etwas anders.

Ich würde dem zustimmen, wenn es wirklich nur um „selbstverursachte spezielle Weiterverarbeitung“ ginge. Geht es aber nicht.

Ein Sensor wird angeschlossen, ganz linear und ohne Schnickschnack oder Scripts dazwischen. Alles was dazwischen zu beachten ist, wird korrekt beachtet, aber sowohl die Visualisierung im Designer, als auch im WIIPS sind bei Werten oberhalb eines jeweils unterschiedlichen Grenzwertes (aber bei sensorseitig immer noch korrekten Werten) --> falsch.

Ergo gibt es da wohl jeweils einen Bug, den es zu beheben gilt, bzw. wenn durch Grenzwert-Überschreitung verursacht, wo ein entsprechender Hinweis auf diesen dann wohl fehlt.

Natürlich ahne ich und weiß auch sehr schnell, woran es liegt, und kann das auch selber bei mir beheben. Aber was spricht eigentlich DAGEGEN, hier in die Dokus gleich diese einfache Information mit reinzuschreiben?


Variablen: 
 Integer im Bereich von ... bis
 String: Längen bis...
 ...

Designer: 
 Integer von ... bis
 ...

RRD
 ...

bei Bedenken kann ja drunter noch stehen
"Angaben vorbehaltlich Weiterentwicklung"

Und gut ist? Da spricht doch wohl nichts dagegen, etwas Gutes durch Vervollständigung der Informationen noch besser zu machen, oder?

Ich bezweifle sehr, dass das nur „professionelle Programmierer“ interessiert. Den Helligkeitssensor z.B. setze ich nämlich nur zu Hause ein und bisher bei keinem Kunden :slight_smile:

…oder wär diese Information für irgendwen von Nachteil? Wenn die Windows-API der Trackbars z.B. keine größeren Werte als Int zuläßt, ok, dann kann da doch (ausser Bill Gates Mannen) niemand was dafür! Man muß es eben nur wissen. Ich würde das dann ggf. ins WIKI aufnehmen (oder eben HJH bitten, das auch in die Dokus reinzunehmen)

Und bevor ich das aber da reinschreibe, mache ich hier genau das, was Toni vorschlägt. Nämlich den Hersteller danach fragen, dass er mir die „gefundenen Werte“ wenigstens bestätigt. Da es IPS betrifft, den von IPS. Und auch den vom WIIPS. Hier in diesem Forum. Mit diesem Thema.

Und: Es ist eine Frage, mehr nicht. Auch eine Antwort „weiß ich nicht / stimmt aber, betrifft ja wirklich reale Werte real existierender Sensoren, also müssen wir das vielleicht mal im Auge behalten künftig, momentan können wir nur empfehlen…“ wäre ja auch eine Antwort. Oder?

Übrigens: Ein Informatiker kann nur dann sein erworbenes Wissen anwenden, wenn er auch Einblick in die Quellen hat. Natürlich weiß ich wie Werte in Programmen intern bereichsmäßig behandelt werden und definiert sind. Aber ich glaube es ist wohl recht überzogen, zu erwarten, dass ich nun auch noch ein Rekompiling mache, um das intern im Code zu analysieren. Von rechtlichen Aspekten oder Sinnfälligkeit dabei mal ganz abgesehen.

Warten wir doch einfach mal ab, bis Paresy nach der CeBit wieder etwas Luft hat. Ich wette, das beantwortet er in 3 Zeilen :slight_smile:

…ich mir auch nicht. Aber es ist so. Wenn der Designer neu gestartet wird, während Werte >> 30.000 anliegen, bleiben sowohl Slider links kleben, als auch selStart /-End ganz weg.

Das hat aber nix mit den „kleben des Sliders bei Maximum/unten“ bei inversen senkrechten Trackbars zu tun, denn die Variablenwerte ändern sich zwischenzeitlich. Als $a=(float)$x / 1000; vorverarbeitet, läuft auch alles korrekt.

Vielleicht doch ein Bug? Wenn ja, betrifft das nur die Trackbars, oder auch noch andere (Progressbars?) Auch ein Grund, warum ich das frage. Vielleicht schaut da nochmal wer drauf.

Genauso: Welche Frage soll ich eigentlich dem Hersteller eines Werkzeuges (RRD-Tool) stellen, wenn ich ihm die Frage nicht sauber formulieren kann. Denn weiß ich, ob das schon bei Vorverarbeitung oder Parameterübergabe, oder beim Datenspeichern oder erst beim Graphen-generieren passiert, und welche Aufrufe und Methoden da intern angewendet werden? Also weise ich doch erstmal denjenigen, der das wiederum genau gemacht hat und wissen sollte, darauf hin…

Gruß Gerd

Wertebereiche IP-Symcon

Boolean = True/False
Integer = -2,147,483,648 to 2,147,483,647 (32Bit signed Int) [ Mehr kann PHP nicht ]
Float (V1) = Single (7 significant digits, exponent -38 to +38)
Float (V2) = Double (15 significant digits, exponent -308 to +308) [ Mehr kann PHP nicht ]
String (V1) = ANSI String
String (V2) = Unicode String (wird es geben, sobald D2008 mit richtigem Unicode Support rauskommt) [ Kommt erst mit PHP6 ]

Wenn der Designer das nicht kann, ist es ein Bug.
Könntest du dazu einen Post im Bugreport eröffnen? Dann gucke ich mir das genauer an. Auf die Schnelle konnte ich mit Max = 600000 und Position = 400000 keine Probleme feststellen.

Für RRDTool weiß ich keine genauen Zahlen, bin mir aber ziemlich sicher, dass es mit den IPS Werten ohne Probleme klar kommt.

paresy

klar.

(ok, waren 15 Zeilen. Hab Wette verloren. :slight_smile: )

Nichts… immer ran. Die Wiki ist für alle da - lesend und schreibend. :slight_smile:

Toni