NEWS
gehen komplexere Objektinfos in Blockly
-
Jetzt hab ich auch Probleme einen sinnvollen Threadtitel zu finden.
Nachdem ich in den letzten Tagen erstmalig meine Klimaanlage zum Heizen gebraucht habe, schwebt mir ein Programm zur Steuerung meiner Multisplit-Klimaanlage für die Heizung in der Übergangszeit vor um möglichst effizient zu arbeiten.
Leider verhält sich die Anlage im Heizmodus anders als im Kühlmodus, so dass die Steuerung komplexer wird.
Ich möchte immer mehrere (2 oder 3) Inneneinheiten parallel betreiben, da der Gesamtstromverbrauch niedriger als die Summe der einzelnen Geräte ist.
Als ersten Schritt wollte ich die Zimmertemperauren vergleichen.
Das klappt soweit, auch das Auffinden des kältesten Raums.
auch die zwei kältesten
RäumeTemperaturen bekomme ich raus
jetzt würde ich gerne noch den zugehörigen Raum herausbekommen (ggf. auch die ID oder der common name)
geht so etwas?
-
@homoran hab es jetzt mal auf die umständliche Art des Wertevergleichs versucht
sieht richtig aus, muss es aber nicht sein.
spätestens bei 2 gleichen Werten und der Suche nach dem zweitkältesten Raum wird das wohl nicht mehr klappen. -
@homoran sagte: den zugehörigen Raum herausbekommen
Inhalt von roomName(id):
let room = getObject(id, 'rooms').enumNames[0]; if(typeof room == 'object') room = room.de; return room;
-
@homoran
Muss es denn Blockly sein? Da sind die Möglichkeiten ja doch recht beschränkt.
JS oder TS sind keine Alternative?Ich lerne ja gerade erst JS - wäre ja vielleicht 'ne interessante Übung.
In "meiner Welt" würde ich zunächst an sowas wie eine eigene Listenklasse denken, die nicht nur Temperaturen sondern gleich ganze Objekte hält.
Die ließe sich dann anhand der Temperaturen innerhalb der Objekte sortieren.
Der Rest dürfte dann einfach sein: Die ersten n-Elemente der Liste lesen und los ...Aber heute nicht mehr
Die Expähden haben da aber sicher noch ganz andere tollen Ideen
Gruß
Bernd -
@paul53 Danke!
wieso habe ich gewusst dass du mit einer js-Funktion kommen wirstDas werde ich mir mal näher ansehen und als Grundlage nehmen.
warum das mit dem minimum Vergleich hab ich noch nicht verstanden. -
@codierknecht sagte in gehen komplexere Objektinfos in Blockly:
Muss es denn Blockly sein? Da sind die Möglichkeiten ja doch recht beschränkt.
ja! ich kann kein js. Auch unter Strafandohung nicht. Nachvollziehen ja, selber schreiben nicht!
auch wenn ich nicht aus deiner Welt kommen hatte ich mir den Rest ähnlich vorgestellt.
aber zwei listen über i und j iterieren wobei eine umsortiert wird habe ich nicht synchronisiert bekommen. -
@homoran sagte: das mit dem minimum Vergleich hab ich noch nicht verstanden.
Die Variable
minimum
enthält die minimale Temperatur. Sie wird hier in einer Schleife ermittelt. -
@paul53 das hab ich schon verstanden, aber wo ist der Vorteil zu meinem Versuch mit Minimum der Liste?
edit: deine Liste enthält ja nur IDs!
-
@homoran sagte in gehen komplexere Objektinfos in Blockly:
Auch unter Strafandohung nicht
Vielleicht ja nicht für das komplette Script.
Es würde ja reichen, eine nach Temperatur sortierte Liste der DP zu generieren (in einer JS-Funktion).
Mit dieser Liste kann man doch dann in Blockly weiterarbeiten - oder? -
@homoran sagte: wo ist der Vorteil zu meinem Versuch mit Minimum der Liste?
Vorteil: In der Schleife lässt sich nebenbei auch die zugehörige ID ermitteln.
-
@codierknecht sagte in gehen komplexere Objektinfos in Blockly:
@homoran sagte in gehen komplexere Objektinfos in Blockly:
Auch unter Strafandohung nicht
Vielleicht ja nicht für das komplette Script.
Es würde ja reichen, eine nach Temperatur sortierte Liste der DP zu generieren (in einer JS-Funktion).
Mit dieser Liste kann man doch dann in Blockly weiterarbeiten - oder?das scheint @paul53 so vorzuhaben
-
@paul53 ja! hab ich dann auch gesehen, zu langsam
geht da auch noch der zweitkälteste Raum?
gib mir Zeit bis morgen -
@homoran sagte in gehen komplexere Objektinfos in Blockly:
auch wenn ich nicht aus deiner Welt kommen hatte ich mir den Rest ähnlich vorgestellt.
aber zwei listen über i und j iterieren wobei eine umsortiert wird habe ich nicht synchronisiert bekommen.Mal ein gaaaanz platter Ansatz:
Statt nur die Temp. in die Liste zu packen, baut man einen (normierten) string zusammen - nach dem Muster:
19.20|73wcb745vb74wv74s
21.00|xsck5888z449wvw9h
Das sind die Listenelemente. Die kann man prima sortieren und dann von rechts die id rausprömpeln. -
@codierknecht hatte ich auch schon als json versucht, dann damit aber nicht das Minimum über die Listenfunktion gefunden.
-
@homoran
Nix JSON - einfacher Text. Das sollte ja trotzdem korrekt sortiert werden.
Und dann von rechts x-Zeichen oder ab dem Tennzeichen im string ("|") den Rest. -
@codierknecht klar! gefällt mir.
json geht ja nicht, hier vorne die Zahlen auch als String, alphanumerisch sortieren ist kein Problem.
splitten an der pipe wenn die Zahlen nicht gleiche Zifferzahl haben (in blockly machbar, wenn auch umständlich.könnte von mir sein die Idee
-
@homoran
Sieht zwar echt krude aus und hat mit "Clean" nix zu tun ... aber das wird ja auch keine Raketensteuerung -
@codierknecht ich sach doch: könnte von mir sein
-
@homoran
Wobei mich wundert, dass JSON nicht funzt.
Wenn z.B. die Liste so aussieht:'{"temp":19.2,"id":"12345"}', '{"temp":20.1,"id":"23456"}', '{"temp":18.0,"id":"34567"}'
Dann sollte sich diese Liste doch trotzdem korrekt sortieren lassen.
Das JSON müsste halt komprimiert sein. -
@codierknecht sagte in gehen komplexere Objektinfos in Blockly:
Dann sollte sich diese Liste doch trotzdem korrekt sortieren lassen.
möglich, aber nicht mit dem listen sortieren Block.
Aber wäre das recht so
wenn jetzt noch, was ich nicht zu hoffen wage, 19,0 geschrieben würde ist das aufwändige suchen und splitten nach der pipe nicht nötig.