Mal wieder virtuelle Geräte - jetzt aber richtig!

Also einen anderen Trigger suchen.
:blush:

Ja, definitv. Das war auch nur ein Überbleibsel aus den Restart-Test. Ich teste gern Sachen bevor ich Sie wirklich brauche. Macht auch keinen wirklichen Sinn den Trigger intern vom Homee auszulösen. Wenn dann muss der Zustand des Homees über den Pi (also extern) überwacht und je nach definierten Bedarf direkt über node-red ausgelöst werden. Derzeit läuft mein Homee in der Auslastung recht stabil, so dass ich den Flow erstmal nur im Hinterkopf behalte.

1 „Gefällt mir“

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.

1 „Gefällt mir“

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.

1 „Gefällt mir“

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… :thinking:

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 :+1:

11 Beiträge wurden in ein neues Thema verschoben: Virtueller homee wird von homee nicht erkannt

Denkst noch dran? :wink::smile:

:see_no_evil: ja heute Abend, hatte ich völlig vergessen.

1 „Gefällt mir“
[{"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

1 „Gefällt mir“

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 :+1:.

2 „Gefällt mir“

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.