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)); -
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.VPVdefiniert?
Was ist eigentlicheigene?
Wo kommt(Spannung)her? -
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.VPVdefiniert?
Was ist eigentlicheigene?
Wo kommt(Spannung)her?@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)); }); -
@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.0Edit: Die Werte sollten zur Sicherheit noch in Fließkommazahlen gewandelt werden.
-
@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
@paul53 sagte in JS mit Kommastellen:
Einfacher, da ohne Skript: Alias
Wenn er das sowieso per Script auseinanderfummeln muss, kann er auch gleich rechnen ;-)
-
@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
-
@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. -
@paul53 sagte in JS mit Kommastellen:
Einfacher, da ohne Skript: Alias
Wenn er das sowieso per Script auseinanderfummeln muss, kann er auch gleich rechnen ;-)
@codierknecht sagte: kann er auch gleich rechnen
Das kann er auch im Alias per "alias.read".
JSON.parse(val).VPV / 1000 -
@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? -
@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?
-
@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. -
@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

-
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?
-
@curtis777 sagte: der erste Teil klappt bereits
Mit Alias oder Skript?
-
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:
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); -
@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").
-
@curtis777 sagte: Warnung
Ändere den Typ des DP "Status" von Zahl("number") in Zeichenkette("string").
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