leere / neue Zeichenkette abfragen.

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
Sebastian65432
Beiträge: 116
Registriert: 14.05.2018, 19:50
Danksagung erhalten: 8 Mal

leere / neue Zeichenkette abfragen.

Beitrag von Sebastian65432 » 21.06.2018, 09:29

Guten Morgen,

ich stehe mal wieder auf den Schlauch. Warscheinlich ist die Lösung ganz einfach, aber ich bastel hier schon zwei Stunden und finde auch in der Suche nichts. Ich habe eine neue Systemvariable angelegt (z.B. "Test"). Diese wurde als Zeichenkette angelegt. In Test kommen Berechnungen, die aber erst am Ende eines Monats oder Jahres ablaufen. Bis dahin möchte ich automatisch einen Text hinterlegen. Ordnet man die Variable einem Kanal zu, dann werden zu diesem Zeitpunkt nur Fragezeichen abgedruckt. Da auch das einzigen mit WriteLine(Test) den Wert "???" ergab, habe ich folgendes versucht.

Code: Alles auswählen

  object a = dom.GetObject("Test");
  if (a=="???") {a.state("Wert noch nicht ermittelt");
klappt eben so wenig wie

Code: Alles auswählen

  var a = dom.GetObject("Test");
  if (a=="???") {a.state("Wert noch nicht ermittelt");
oder mit if (a=="") {a.state("Wert noch nicht ermittelt");

Alternativ habe ich anders herum geschaut. Später kommt in die Variable unter anderem ein Wert bestehend aus einer Zahl und der Einheit.

Code: Alles auswählen

var vgausgabe = vg.ToString(2) # " kWh, " # vgeuro.ToString(2) # " Euro";
a.State(vgausgabe);
was dann so aussehen kann: 0.44 kWh, 0.11 Euro. Ich finde nur keine Funktion oder so, mit der ich schauen kann, ob die letzten 4 Zeichen "Euro" sind.

Zusammengefasst: So lange noch kein Wert berechnet wurde, soll da nicht "???" sondern "Noch kein Wert" oder so stehen.

Kann mir jemand helfen?

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: leere / neue Zeichenkette abfragen.

Beitrag von Black » 21.06.2018, 10:39

der Datenpunkt heist a.State () und nicht a.state () . das Dingen ist Case sensitiv !!!!

die Abfrage auf endet mit geht mit if (a.State().EndsWith ("Euro")) {WriteLine ("Ich ende mit "Euro"); }

alternatic gugg dir mal in meiner sig den Script Developer an, dort hast du einen Script editor aufm PC inkl. Tool, welches in der bisher fertigen Version dort schon mal recht tief mit Systemvariablen umgehen kann.

gruss, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Sebastian65432
Beiträge: 116
Registriert: 14.05.2018, 19:50
Danksagung erhalten: 8 Mal

Re: leere / neue Zeichenkette abfragen.

Beitrag von Sebastian65432 » 21.06.2018, 11:24

Vielen Dank!

hat mit Ends.With geklappt.

Dabei kam mir noch eine Idee für eine andere Umsetzung. Wenn ich mit dem Code:

Code: Alles auswählen

var vgausgabe = vg.ToString(2) # " kWh, " # vgeuro.ToString(2) # " Euro";
a.State(vgausgabe);
diesen Ausdruck hier erzeuge: "0.44 kWh, 0.11 Euro". Komme ich dann irgendwie wieder an den Wert (hier 0.44) als Zahl dran? Ich könnte natürlich "vg" in eine Systemvariable speichern, aber davon lege ich schon so viele an. Ich dachte da an sowas:
"Lese die ersten Zeichen, so lange es Zahlen sind und behandel sie auch als Zahlen". Die Anzahl der Ziffern ist halt leider nicht bestimmbar. Es könnte auch so etwas erzeugt werden: "508.58 kWh, 127.15 Euro"

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“