NEWS
Homeseer Devices in IObroker Datenpunkte schreiben
-
Hallo,
ich suche noch immer die beste Möglichkeit den jeweilgen Status meiner Homeseer Geräte in IObroker anzuzeigen.
Momentan frage ich bei einer Änderung eines Homeseer-Gerätewertes immer noch alle Geräte einzeln ab.
Hierfür benutze ich Blockly und hole mir mittels "request url" den jeweilgen Wert und schreibe ihn in ein Objekt.
Bei der hohen Anzahl meiner Geräte sind das viele Anfragen gleichzeitig.
Ich würde bei Änderung eines Gerätewertes lieber mittels einem einzigen request ALLE werte in einen Datenpunkt schreiben und von dort dann jeden Status aktualisieren.
Das Problem ist nur, dass der Json-Baum zwar übersichtlich nummeriert ist, die einzelnen Geräte sich aber hinter den fortlaufenden Nummern verstecken, die sich ändern können wenn beispielsweise in Homeseer ein Gerät gelöscht oder hinzugefügt wird.
Kann mir jemand weiterhelfen oder hat eine Idee wie man abhängig von der RefID (die ändert sich nicht) den jeweiligen Wert liest? -
@Joesch80 sagte in Homeseer Devices in IObroker Datenpunkte schreiben:
Kann mir jemand weiterhelfen oder hat eine Idee wie man abhängig von der RefID (die ändert sich nicht) den jeweiligen Wert liest?
Direkt Abhängig von der Ref Id den Wert lesen ist wahrscheinlich schwierig. Das musst du aber auch nicht.
Versuch mal den Folgenden Ablauf:
Mit diesem Ablauf wird alle 10 sekunden das gesamte JSON Durchgesucht und der Status von allen Homeseer Geräten entsprechend im Objektbaum hinterlegt. Das kannst du natürlich auch in einen Trigger pressen, wobei du aufpassen solltest das der nicht zu oft kommt.
Kritisch ist (und da bin ich kein Experte) ob / in wie weit Blockly in der Lage ist die entsprechenden Datenpunkte zu erzeugen wenn sie nicht existieren. Ansonsten musst du natürlich sicher stellen das für jedes Gerät die entsprechenden Datenpunkte existieren, da wirklich ALLE Homeseer Geräte abgefragt werden. Auch muss jedes Gerät die Attribute "Location", "Name" und "Status" im JSON besitzen.
Das wuerde ich über Typescript oder direkt JS abbilden.
A.
-
Habe mit einer so schnellen Antwort nicht gerechnet, werds am Wochenende testen.
Vielen Dank für die Hilfe -
Habe gerade mal nachgeschaut, 660 Geräte müsste ich anlegen, das ist dann doch ein wenig zu viel.
Wirklich brauchen tu ich ungefähr 50 Werte.
Ein Homeseer-Adapter, in dessen Einstellung man die Geräte auswählen könnte wär natürlich der Hammer
Gibt es eventuell die Möglichkeit eine Deviceliste anzulegen um dann nur die gewünschten abzufragen?
Falls dies ginge, würde ich gerne dort die Ref eintragen, die ändert sich nicht. Ein Name oder Location könnte sich ändern.
Gruß -
@Joesch80
Klar geht das. Du musst halt an einer Stelle die gewünschten RefID's hinterlegen. Dann kannst das Skript in der Listen nach den RefID's suchen und nur die States anlegen die auch benötigt werden. So eine Liste kannst du erst einmal im Skript anlegen. Ich hab das beispielhaft für 3 RefID's gemacht, du kannst das ja erweitern.Folgendes Blockly macht das, ABER:
Die Namen der States werden jedesmal wieder gesetzt, du kannst sie also im Objektbaum nicht selber umbenennen. Weiterhin musst du beachten das so wie es geschrieben ist die Kombination aus 'location' und 'name' eindeutig sein muss, sonst werden einzelne States überschrieben.Hinter dem ersten Block versteckt sich eine einfache kleine JS Funktion:
Hinter dem Spoiler der Code zum direkt einfügen.
Viel Spass damit.
-
Super, herzlichen Dank