Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Homeseer Devices in IObroker Datenpunkte schreiben

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Homeseer Devices in IObroker Datenpunkte schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • Joesch80
      Joesch80 last edited by

      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?

      3.jpg 2.jpg 1.jpg

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @Joesch80 last edited by

        @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:

        Screenshot 2020-09-15 at 07.54.17.png

        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.

        Joesch80 2 Replies Last reply Reply Quote 0
        • Joesch80
          Joesch80 @Asgothian last edited by

          @Asgothian

          Habe mit einer so schnellen Antwort nicht gerechnet, werds am Wochenende testen.
          Vielen Dank für die Hilfe

          1 Reply Last reply Reply Quote 0
          • Joesch80
            Joesch80 @Asgothian last edited by

            @Asgothian

            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ß

            Asgothian 1 Reply Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @Joesch80 last edited by

              @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.

              Screenshot 2020-09-16 at 08.23.45.png

              Hinter dem ersten Block versteckt sich eine einfache kleine JS Funktion:

              Screenshot 2020-09-16 at 08.27.34.png

              Hinter dem Spoiler der Code zum direkt einfügen.

              Viel Spass damit.

              Export selected blocks
              
              <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defcustomnoreturn" id="|0=g`][tgywU_,#RCr+J" x="63" y="38">
               <mutation statements="false">
                 <arg name="StateName" varid="^]dDc,j[I|N{kC|6J(:h"></arg>
                 <arg name="ClearName" varid="mRK(@W$xVD]R9mB|!wJi"></arg>
                 <arg name="TargetValue" varid="UHD;umNeqxwsm;mCX2la"></arg>
               </mutation>
               <field name="NAME">CreateAndSetState</field>
               <field name="SCRIPT">Y3JlYXRlU3RhdGUoU3RhdGVOYW1lLCB7bmFtZTogQ2xlYXJOYW1lLCB0eXBlOiB0eXBlb2YoVGFyZ2V0VmFsdWUpfSwgZnVuY3Rpb24gKCkgewogIHNldFN0YXRlKFN0YXRlTmFtZSwgVGFyZ2V0VmFsdWUpOwp9KTs=</field>
               <comment pinned="false" h="80" w="160">Describe this function...</comment>
              </block>
              

              Joesch80 1 Reply Last reply Reply Quote 0
              • Joesch80
                Joesch80 @Asgothian last edited by

                @Asgothian

                Super, herzlichen Dank

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                805
                Online

                32.0k
                Users

                80.5k
                Topics

                1.3m
                Posts

                2
                6
                286
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo