Ich finde den eigentlich Recht praktisch, weil man so in NR für die einzelnen Attribute Trigger für Wertänderungen setzen kann. Auch zusätzliche Werte lasse sich dann einfach in den flow einbringen.
@Micha wie machst du das eigentlich dann ohne? Also zusätzliche Werte in den flow einbringen? (Bsp.: Jeden Tag um 6 soll was geschaltet werden, aber nur, wenn der bwm xy true meldet. Dieses true musst du ja irgendwo her bekommen )
Kann mir das so spontan nur über die vom homee node bereitgestellte global.homee variable vorstellen. Aber muss man die dann nicht jedesmal mit nem for loop durchsuchen, um die passenden Werte zu finden? Eine Sortierung ist ja nicht vorhanden und die Reihenfolge kann sich auch ständig ändern.
Hey @cru8602,
du siehst das schon völlig richtig.
Der Auslöser ist die Zeit und deine Bedingung ist das True.
Der Auslöser triggert ein Switch node und hier wird gefragt ob die globale xy mit dem angegebenen Wert wahr ist. Wenn ja wird die Nachricht durchgeleitet und wenn es falsch ist dann wird diese verworfen.
Das kann man auch in einer Funktion sauber abbilden und bedarf keine. Loop.
Alternativ kann man sich auch die gewünschten Werte selber in den context speichern und abrufen.
Jedes Attribut das homee sendet hat eine eindeutige ID und so kannst du ohne suchen dieses Attribut finden und den current_value dazu.
Kannst du mal ein Beispiel posten wie der switch node im inneren aussieht?
vllt. denke ich auch falsch, aber wenn ich da
global.homee.nodes[X].attributes[Y].current_value //der Pfad ist nur aus dem Gedächtnis...
abfrage hab ich ja das Problem, das ich mit dem Wert X ja auch daneben greifen kann, da sich die Reihenfolge in dem Array „nodes“ ja ändern kann. Vllt sehe ich den Wald aber auch vor lauter Bäumen nicht…
Nein die Attribute und node Id ändern sich nicht.
Schicke dir aber gerne ein Beispiel
genau, die ids sind fest aber nicht die position der objekte in den arrays.
deswegen: ich bin gespannt wie du das gelöst hast
Denkst noch dran?
ja heute Abend, hatte ich völlig vergessen.
[{"id":"6214e953.18aab8","type":"function","z":"8e420576.72ba58","name":"Attribut current_value","func":"const attributes = global.get('homee.attributes');\nmsg = {payload: (attributes.find(attribute => attribute.id === 348)).current_value }\nreturn msg","outputs":1,"noerr":0,"x":620,"y":1100,"wires":[["e95b4b91.329378"]]},{"id":"333628a2.c5f3a8","type":"inject","z":"8e420576.72ba58","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":440,"y":1100,"wires":[["6214e953.18aab8"]]},{"id":"e95b4b91.329378","type":"debug","z":"8e420576.72ba58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":1100,"wires":[]}]
Leider war ich beim switch node etwas auf dem Holzweg.
Daher hier eine Funktion zur Suche des eines Attributes und zur Ausgabe des current_value.
Hier eine Alternative Funktion als Switch Node.
[{"id":"6214e953.18aab8","type":"function","z":"8e420576.72ba58","name":"Attribut current_value","func":"const attributes = global.get('homee.attributes');\nif((attributes.find(attribute => attribute.id === 348)).current_value === 0){return msg}","outputs":1,"noerr":0,"x":620,"y":1100,"wires":[["e95b4b91.329378"]]},{"id":"333628a2.c5f3a8","type":"inject","z":"8e420576.72ba58","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":440,"y":1100,"wires":[["6214e953.18aab8"]]},{"id":"e95b4b91.329378","type":"debug","z":"8e420576.72ba58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":1100,"wires":[]}]
Du musst nur die Attribut ID und den value eintragen und schon werden nur die Nachrichten durchgelassen wenn deine Vorgabe wahr ist.
VG
Hi @Micha
das funktioniert (teilweise), wird aber natürlich unsauber dargestellt. Ich kann das Thermostat in der CCU einstellen, bekomme aber kein Feedback aus der CCU bzw. manuell vom Gerät in Homee.
Ich probiere das weiter. Hast Du eine Idee woran es liegen kann?
LG
Hey @LeopoldKoenig,
Was genau wird unsauber dargestellt und wo?
Welches Feedback fehlt dir?
Du kannst in homee die Temperatur einstellen und diese wird dann an dein Thermostat gesendet.
Wenn du lokal am Thermostat eine Einstellung vor nimmst dann wird diese nicht übernommen im homee?
Kannst du mal deinen Flow komplett einstellen und die ccu Node mit dem jeweiligen Ereignis beschriften? Damit Ich weiß was du wie an das Thermostat sendest.
VG
Super Danke!
Da hab ich jetzt auf jeden Fall was dazu gelernt, denn das man über die find()
Methode mit einer inneren Funktion bzw. Pfeilfunktion auch die Wertpaare von Objekten finden kann wusste ich noch nicht.
Ich war auch immer etwas komplizierter ran gegangen, weil ich mir den Inhalt von global.homee.attributes
nie so genau angeguckt hatte und immer über global.homee.nodes
gegangen war. was dann aber zwei for
loops nach sich zog.
Da kann ich jetzt ein paar Funktionen nochmal optimieren .
Hallo
gibt es eigentlich die Möglichkeit die Attribute umzubenennen? Oder neue anzulegen im virtuellen homee?
Grüße
Ja ab der 2.30 wohl von homee aus.
Das wäre schön…
@stfnhmplr kann es sein, daß teilweise Units bei den Attributen nicht richtig gespeichert werden?
Aufgefallen ist es mir beim Dimmniveau. Da steht die Unit per default auf „n/a“ (wünschenswert wäre hier „%“). Ändere ich es auf „%“, steht nach 1-2x Deploy wieder „n/a“ drin.
Ich bin mir nicht sicher, aber war es nicht nötig die Zeichencodierung für URL’s zu nutzen? Aus „%“ wird dann „%25“.
Ist nicht mehr nötig.
Mir selbst ist das noch nicht aufgefallen, kann aber sein, dass da etwas nicht in Ordnung ist. Passiert das nur beim Dimmlevel oder auch bei anderen Attributen? Hat das sonst noch jemand beobachten können? Für die Fehlersuche wäre es hilfreich, wenn du mir das virtuelle Gerät mal per PN schickst.
Du hast eine PN.