NEWS
JS mit Kommastellen
-
Liebe Profis,
Ich habe ein Skript welches mir die Solarwerte permanent abholt und in Datenpunkte setzt.
jetzt kommt leider statt 20,490V ein Wert von 20490 raus.wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?
setState('eigene.0.SolaranlageVictron.VPV', (Spannung));
-
@curtis777
Bisschen wenig Info, oder?Wo holt das Script die Datenpunkte her?
Wie ist der DPeigene.0.SolaranlageVictron.VPV
definiert?
Was ist eigentlicheigene
?
Wo kommt(Spannung)
her? -
@curtis777 sagte: wie setze ich hier die /1000 richtig ein um den Wert als 20,490 zu bekommen ?
setState('0_userdata.0.SolaranlageVictron.VPV', Spannung / 1000, true);
Einfacher, da ohne Skript: Alias
-
@codierknecht Verzeihung,
Dachte das ich hier nur ein / 1000 dazu mache.Das Skript holt die Daten aus einem String welcher per MQTT kommt und soll die einzelnen Werte aufteilen in Datenpunkte.
on({id: 'mqtt.0.Solar.Victron.act.data', change: "any"}, function (obj) { var Spannung var Strom var Yesterday var Today var Power try {obj = JSON.parse(getState('mqtt.0.Solar.Victron.act.data').val); } catch (e) { console.error('Cannot parse: ' + getState('mqtt.0.Solar.Victron.act.data').val); return; } Spannung = obj.VPV; Strom = obj.CUR; setState('eigene.0.SolaranlageVictron.VPV', (Spannung)); setState('eigene.0.SolaranlageVictron.Ladestrom', (Strom)); });
-
@curtis777
1.) Vor "Spannung" und "Strom" fehlt einvar
2.) Die beiden Variablen brauchst Du nicht zu klammernvar Spannung = parseFloat(obj.VPV); var Strom = parseFloat(obj.CUR); setState('eigene.0.SolaranlageVictron.VPV', Spannung / 1000); setState('eigene.0.SolaranlageVictron.Ladestrom', Strom);
Du hast meine Frage damit aber noch nicht beantwortet: Was ist
eigene
?
Eigentlich landen eigene DP unter0_userdata.0
Edit: Die Werte sollten zur Sicherheit noch in Fließkommazahlen gewandelt werden.
-
@paul53 sagte in JS mit Kommastellen:
Einfacher, da ohne Skript: Alias
Wenn er das sowieso per Script auseinanderfummeln muss, kann er auch gleich rechnen
-
@paul53 genial,
Hat funktioniert.
Danke wie meinst du Alias?Kann der das von sich aus selbst aufteilen auf einzelne Datenpunkte ?
-
@curtis777 sagte in JS mit Kommastellen:
Kann der das von sich aus selbst aufteilen auf einzelne Datenpunkte ?
Aufteilen nicht - aber rechnen.
Aber da Du eh mit 'nem Script da ran musst, wäre das sinnbefreit. -
@codierknecht sagte: kann er auch gleich rechnen
Das kann er auch im Alias per "alias.read".
JSON.parse(val).VPV / 1000
-
@paul53
Das ist klar. Aber er braucht ja eh ein Script. Wozu dann noch einen Alias? -
@codierknecht sagte: Aber er braucht ja eh ein Script.
Wozu?
-
@paul53 sagte in JS mit Kommastellen:
@codierknecht sagte: Aber er braucht ja eh ein Script.
Wozu?
Stimmt! Ist mir gerade auch aufgefallen.
@Curtis777
Paul hat natürlich Recht. Du bräuchtest statt des Scriptes lediglich 2 Alias-Datenpunkte.
Die kannst Du sinnvoll benennen und über die Konvertierungsfunktion die Werte aus dem JSON lesen. -
@codierknecht
es kommen hier natürlich noch mehr Werte dazu deshalb das Skript.
Ich kann euch leider nicht folgen.
Könnt ihr es für Dummies schreiben Bitte... -
Ich bin gerade erst am Anfang.
Ich muss z.b. einen Wert umkonvertieren.
es kommt eine Ziffer von 1-5 raus und die ist natürlich nicht aussagekräftig für mich1 = laden
2 = entladen
3 = float
....aber der erste Teil klappt bereits danke
-
@curtis777 sagte: der erste Teil klappt bereits
Mit Alias oder Skript?
-
@paul53 mit deinem Skript.
Wie gesagt bin nicht so fit in dem Thema wie ihr schau mir das mit den Alias gerade nebenbei an -
@curtis777 sagte:
1 = laden
2 = entladen
3 = floatlet status = 'ungültig'; switch(obj.STATE) { case 1: status = 'laden'; break; case 2: status = 'entladen'; break; // usw. } setState('0_userdata.0.SolaranlageVictron.Status', status, true);
-
@paul53 said in JS mit Kommastellen:
setState('0_userdata.0.SolaranlageVictron.Status', status, true);
genial welches Wissen ihr in dem Punkt habt...
er überträgt die Werte soweit allerdings wirft er einen Fehler / Warnung -
@curtis777 sagte: Warnung
Ändere den Typ des DP "Status" von Zahl("number") in Zeichenkette("string").
-
Danke dir,
Es läuft....Wie du von der minimalen Fehlermeldung auf die Ursache kommst ist mir noch schleierhaft.
Aber ich danke dir Vielmals für deine Rasche und vorallem tolle Hilfe!