NEWS
Alias oder JS
-
Eine Frage an die Optimierungsprofis. Was ist den Ressourcen schonender: ein komplexes alias mit Konvertierung oder ein Javascript welches einen Datenpunkt überwacht, auswertet und dann einen anlegt.
-
Naja, bei beiden läuft JavaScript, der Alias ist letztendlich auch nichts anderes bzw. dahinter baut ja eine Logik das auseinander.
Ich arbeite viel mit JavaScript weil da mein Skript z.B. einen JSON einliest und den auf 10 Datenpunkte schreibt.
Bei einem Alias - soweit ich das verstanden habe - würde sich jeder Alias-Datenpunkt seinen Wert einzeln ziehen, mein JSON oben also 10fach entweder abgefragt oder es triggert 10fach etwas um die Punkte wegzuschreiben.Da die JavaScript-Instanzen jeweils eigene Prozesse sind könnte man hier sogar optimieren indem man die Skripte auf mehrere Instanzen verteilt. Würde sich aber wohl nur bei sehr prozessorintensiven Skripten lohnen.
Meine 10 Datenpunkte per JavaScript zu zerlegen dauert laut Log (Debug Meldung davor und danach) jedenfalls um die 0.001 Sekunden ...
Bei mir laufen ca. 400 Skripte auf 2 Instanzen - bei mir hat jede Steckdose mit Tasmota sein eigenes Skript mit 6 Triggern. Plus diverses was man sonst noch steuern will oder das Summieren der Solaranlage und anderer Zähler im 15 Sekunden Takt. Das mit dem jeweils eigenem Skript ist zwar - bei Updates von Skripts - durchaus mühsam, skaliert aber besser als wenn ein Adapter das alleine macht.Alias ist natürlich so ein "Einrichten und vergessen bis sich die Quelle ändert" Ding.
In meinen Skripten prüfe und korrigiere ich oft halt noch mehr, dank der Suche (man kann ja nach allen über alle Skripte suchen) finde ich auch so schnell alle Stellen wo ich einmal etwas ändern müsste, z.B. wenn ein Sensor nicht mehr hinterzigbee.0
sondernzigbee.1
steht. Die Datenpunkte lege ich am Scriptanfang alle in Variablen und verwende nur diese weiter unten im Skript. So muss ich imme rnur im Kopf es abändern. -
@peterk34 sagte in Alias oder JS:
Was ist den Ressourcen schonender
Da man für das Alias-Feature und die Konvertierungen gar keine Adapter braucht (passiert ja im js-controller), ist die Frage relativ leicht zu beantworten
Scripts sind aber deutlich flexibler und können auch Infos "überspringen", was im Alias nicht geht. Oder Daten aus mehreren Datenpunkten zusammenführen, was im Alias auch nicht geht. Es kommt also drauf an, was man vor hat.
-
dann machts also durchaus Sinn auch etwas komplexere Dinge wie
'<div class="tblZelle txtWKB ' + (val <= 0 ? 'bgInaktiv' : 'bgAktiv' ) + '"><span>' +(val <=0 ? 'Entladung<br>' : 'Ladung<br>' ) + ((val <1000 && val>-1000) ? Math.round(val) + 'W' : (Math.round(val/100)/10) + 'kW') + '</span></div>'
über alias zu lösen und dann wenn verschiedene Berechnungen oder Anpassungen erforderlich sind ins JS
Danke Matthias
-
Danke für die ausführliche Erklärung. Ich hab ja auch schon einen ganzen A... voll scripts. Jetzt bin ich grad dabei mein VIS zu sanieren und das ergibt wieder viele mehr. Kann man aber wohl auch gut mit Alias lösen - zumindest zum Teil
-
@peterk34 Ja, wobei ich Fan von Template literals bin:
`<div class="tblZelle txtWKB ${val <= 0 ? 'bgInaktiv' : 'bgAktiv'}"><span>${val <= 0 ? 'Entladung' : 'Ladung'}<br>${val < 1000 && val > -1000 ? Math.round(val) : (Math.round(val / 100) / 10) + 'k'}W</span></div>`
-
@haus-automatisierung @peterk34 wobei das ja schon wieder interessant sein könnte ob es von Vorteil ist/sein könnte die Werte in der VIS berechnen zu lassen (das macht Ihr doch an der Stelle mit Binding, oder?). Ich habe ja alles gerne in Datenpunkten.
-
@bananajoe Ja, könnte man schon machen. Ich finde es auch nicht so schön, HTML in Datenpunkten zu haben.
-
@haus-automatisierung @BananaJoe wenn ich diese Formel mit bindings mache rufe ich den Wert aus dem Datenpunkt mehrmals ab. Ich hab’s dann als alias probiert und diesen Datenpunkt mittels binding in ein html Widget geholt. Die Klassen sind im css definiert. Es ist deutlich schneller über den alias als wenn ich’s im vis 2 vollständig berechne. Insgesamt ist’s eine Tabelle mit acht solchen Feldern- da ist der Unterschied nicht nur meßbar sondern deutlich merkbar