ich habe eine String Variable, da ich über das Webfront bzw. mein Mobile Front imme rdie Zählerwerte eines Zählers manuell eintrage. Da ich nun gemerkt habe, dass ich mit einer String Variable keinen Graphen erzeugen kann, wollte ich fragen, wie ich aus der Variable eine Integer machen kann ohne die bereits erfassten Werte zu verlieren…
Da wirst du nicht drum herum kommen die CSV mit den geloggten Daten anzupacken…
Du willst ja vmtl. nicht nur alle alten String Werte einfach wieder in eine neue Integer-Variable schreiben (das wäre einfach), sondern du willst ja sicher auch die Timestamps behalten…und da wird es dann kompliziert und du musst die CSV mit dem Log bearbeiten bzw. neu machen.
EDIT: Für andere für die Zukunft >> Bzgl. des Eingabefeldes im WebFront. Hier hättest du aus der Hilfs-String-Variable mit ~TextBox direkt alles in eine Integer-Variable überführen müssen (per Event/Script) und mit SetValue($VarID, (int)$_IPS[„VALUE“]) dann in die Integer-Variable schreiben müssen.
Nicht mit Symcon. Da bekommt man bei geloggten String Variablen nur eine Art „Text-Historie“.
Mit z.B. HightCharts…evtl. mit Anpassungen. Dass man dort beim Auslesen der Daten aus dem String einen Integer macht. Wäre aber nur ein Pfusch um den alten Pfusch „auszumerzen“. Also eher ungünstig. Ich würde es lieber ordentlich machen und die CSV anpassen. Fällt einem sonst früher oder später eh wieder auf die Füße
Bzgl. CSV „anpassen“ musst du mal hier im Forum schauen. Da gab es hin und wieder mal was in der Richtung, auch wenn nicht genau deine Problemstellung. Aber vlt. bekommst du so wenigstens einen Ansatz.
EDIT: Hast du mal versucht die String-Variable einfach über Archive-Control in eine Integer-Variable zu überführen? Also die geloggten Daten… Vlt gibt es da ja ein „Schlupfloch“?! Ich denke aber eher nicht
OK - im Grund langt es mir mit den korrekten Daten ab 2018 …
Nun zur Umsetzung:
Ich erstelle eine Variable (Textbox oder String mit ID 58558 ), so dass ich mittels Webfront Zahlen erfassen kann. Dann hinterlege ich ein Aktions-Skript:
Den Zwischenschritt kannst du dir sparen!
Wenn du den Wert gar nicht in der String-Variable stehen haben magst, dann kannst du direkt im IPS SENDER WebFront Teil das (int)$_IPS[„VALUE“] in die Integer-Variable schreiben.
Oder halt in String- und Integer-Variable schreiben. Wie du willst.
1.) String-Variable anlegen mit Variablenprofil ~TextBox (z.B. ID 11111)
2.) Integer-Variable anlegen und diese Daten loggen (z.B. ID 22222)
3.) Der String-Variable ein Action Script hinterlegen mit folgendem Inhalt
<?
if ($_IPS["SENDER"] == "WebFront")
{
//SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]); // Kommentierung wegnehmen, wenn du die Zahl als Text auch in der String Variable haben willst
SetValue(22222, (int)$_IPS["VALUE"]);
}
?>
4.) String-Variable ins WebFront verknüpfen und deine Zahl eingeben
5.) Wenn du das Eingabefeld „abschickst“, dann landet die Zahl in der Integer-Variable…oder wenn Kommentierung weg, dann auch in der String-Variable
Das GetValue brauchst du nicht, du weißt in dem Script ja was in $_IPS[„VALUE“] steht. Also das Script weiß es Und das kannst du hinschreiben wo du willst…auch in eine Integer Variable