Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Javascript Anfängerfrage

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Javascript Anfängerfrage

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by A Former User

      Hallo liebe Leser,
      ich bin noch sehr neu in iobroker, besitze aber bereits mehrere Geräte, die ich darüber steuern möchte.
      In Teilen funktioniert dieses auch. Zur Steuerung nutze ich Javascript, wobei ich blutiger Anfänger in dieser Sprache bin (Grundlagen in anderen Sprachen sind vorhanden). Ich möchte kein Blocky verwenden, da ich gerne verstehe, was ich tue. Und daran scheitert es gerade.

      Problem:
      Ich habe eine CCU3 erworben und möchte hierüber u.a. eine Homematic IP Indoor-Sirene steuern. Das Gerät findet sich auch in den Objekten. Leider konnte ich dieser bislang aber nicht einmal ein kleines Blinken entlocken.
      Unter der ID.0 befinden sich allgemeine Geräteinformationen, unter der ID.3 die Einstellungen für den Alarm.
      hm-rpc.0.000AD8A997F4CB.3.ACOUSTIC_ALARM_ACTIVE
      hm-rpc.0.000AD8A997F4CB.3.ACOUSTIC_ALARM_SELECTION
      hm-rpc.0.000AD8A997F4CB.3.DURATION_UNIT
      hm-rpc.0.000AD8A997F4CB.3.DURATION_VALUE
      hm-rpc.0.000AD8A997F4CB.3.OPTICAL_ALARM_ACTIVE
      hm-rpc.0.000AD8A997F4CB.3.OPTICAL_ALARM_SELECTION

      In der Doku zu HM-RPC finden sich die nachstehenden Beispiele.

      sendTo('hm-rpc.0', 'putParamset', {ID: 'OEQ1861203', paramType: 'MASTER', params: {'ENDTIME_FRIDAY_1': 700}}, res => {log(JSON.stringify(res));});

      sendTo('hm-rpc.1', 'setValue', {ID: '000453D77B9EDF:1', paramType: 'SET_POINT_TEMPERATURE', params: 15}, res => {log(JSON.stringify(res));});

      Demnach kann ich die Geräte offenbar nicht mit einem setState-Befehl ansprechen, sondern muss den sendTo-Befehl verwenden. Aber wo findet sich mehr Dokumentation hierüber oder erarbeitet man sich die Ergebnisse mittels Trial and Error?

      Mein Versuch mit:
      sendTo('hm-rpc.0', 'setValue', {ID: '000AD8A997F4CB.3', paramType: 'OPTICAL_ALARM_ACTIVE', params: true}, res => {log(JSON.stringify(res));})

      führte zu der Fehlermeldung: faultcode: -2, Invalid Device

      Ich würde mich sehr freuen, wenn mir jemand ein paar Tipps über geeignete Doku-Quellen oder noch besser konkrete Hilfestellungen geben kann.

      Vielen Dank im Voraus (alleine für das Lesen bis zu dieser Stelle ;-))

      Fritz74

      Homoran paul53 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Guest last edited by

        @fritz74

        Wie hast du denn die rpc-Instanz konfiguriert?

        Der Datenpunkt sollte schon drin sein.
        Bitte screenshot

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Guest last edited by

          @fritz74 sagte in Javascript Anfängerfrage:

          kann ich die Geräte offenbar nicht mit einem setState-Befehl ansprechen

          Doch, Datenpunkte werden per setState(id, val) angesprochen. sendTo() muss man auf Nicht-Datenpunkte (z.B. MASTER-Parameter) anwenden. Man muss dann genau wissen, wie diese MASTER-Parameter benannt sind und wie sie zugeordnet sind (Gerät oder Kanal).

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Guest last edited by

            @fritz74 sagte:

            sendTo('hm-rpc.0', 'setValue', {ID: '000AD8A997F4CB.3', paramType: 'OPTICAL_ALARM_ACTIVE', params: true}, res => {log(JSON.stringify(res));})
            führte zu der Fehlermeldung

            Zwischen der Seriennummer und dem Kanal muss ein Doppelpunkt stehen (kein Punkt).

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User last edited by

              Anbei ein Screenshot, der hoffentlich hilft.
              Ich habe die Werte für die Einheit, Sekunden usw. von Hand eingetragen.
              Diese bleiben aber rot und bei einem Mouseover steht dort immer "Bestätigt: false"
              Wer müsste dieses bestätigen und was kann ich tun, damit es bestätigt wird?
              Habe ich vielleicht noch einen Fehler in der Konfiguration der CCU?

              Objekte.png

              Danke schon Mal für eure unglaublich schnelle Reaktion.

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User @paul53 last edited by

                @paul53
                Dann müsste ein

                setState('hm-rpc.0.000AD8A997F4CB.3.OPTICAL_ALARM_ACTIVE', true)

                doch eigentlich den gewünschten Start erzielen, oder?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Guest last edited by paul53

                  @fritz74 sagte in:

                  Dann müsste ein
                  setState('hm-rpc.0.000AD8A997F4CB.3.OPTICAL_ALARM_ACTIVE', true)
                  doch eigentlich den gewünschten Start erzielen, oder?

                  Ja, wenn er auch in der CCU ankommt, das durch diese bestätigt würde, was offenbar aber nicht der Fall ist. Zeigen andere Datenpunkte unter hm-rpc.0 Werte der CCU ? Die Doku kennst Du ?

                  1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User last edited by

                    Ich habe noch einen Thermostaten an HM-RPC.0 angeschlossen. Der zeigt mir korrekt die Werte der aktuellen Temperatur, den eingestellten Wert usw.
                    Wenn ich dort einen neuen Wert eintrage (von Hand oder mittels setState) wird dieser sofort übernommen und bestätigt. ?!?
                    Danke für den Link auf die Doku. Diese hatte ich aber in ähnlicher Form schon gelesen.

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Guest last edited by

                      @fritz74
                      Ist der Datenpunkt "OPTICAL_ALARM_ACTIVE" überhaupt beschreibbar (common.write: true) ?

                      1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User last edited by A Former User

                        Leider habe ich keine Ahnung, wie ich dieses herausfinde.
                        Aber dein Ansatz scheint ins Schwarze zu treffen.
                        Auf der Objektseite kann ich für die anderen Parameter ein Häkchen bei Bestätigung setzen (wie mache ich dieses eigentlich in Javascript).
                        Nur bei den Datenpunkten "Acoustic_Alarm_Active" und "Optical_Alarm_Active" besteht diese Option nicht.
                        Ich nehme an, dass man irgendwo konfigurieren kann, ob man dieses zulassen will oder nicht.

                        Es hat auch schon jemand hinbekommen. Ich hatte auch gelesen, dass dieses nicht mit dem Homematic IP Acces Point möglich sei aber mit der CCU. Ich hatte mir u.a. extra deswegen die geholt. 😉

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Guest last edited by paul53

                          @fritz74 sagte in Javascript Anfängerfrage:

                          keine Ahnung, wie ich dieses herausfinde.

                          Im Reiter "Objekte" beim Datenpunkt rechts auf die Eigenschaften (den Bleistift) klicken. Wenn bei "Schreiben erlaubt" kein Haken ist, dann kann der Wert in ioBroker nur gelesen werden. Allerdings kann man ihn dann nur im Expertenmodus manuell ändern / eintragen.

                          1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User last edited by

                            Habe jetzt von Hand die Schreibrechte auf den Wert gesetzt.
                            Allerdings erhalte ich im Log die Fehlermeldung:
                            hm-rpc.0 2019-12-15 22:10:37.773 error (28238) Error: XML-RPC fault: Invalid parameter or value
                            hm-rpc.0 2019-12-15 22:10:37.773 error (28238) xmlrpc -> setValue ["3","OPTICAL_ALARM_ACTIVE",true] BOOL
                            Ich habe jetzt erst einmal die Sirene getestet. Nicht, dass die defekt ist und ich suche mir 'nen Wolf. 😉
                            Geht aber.

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @Guest last edited by

                              @fritz74 sagte:

                              Habe jetzt von Hand die Schreibrechte auf den Wert gesetzt.

                              Das nutzt nichts, denn dann nimmt die CCU den Wert trotzdem nicht an. Wenn vom Adapter beim Einlesen der Eigenschaften von der CCU keine Schreibrechte vergeben wurden, dann sendet die CCU nur Werte und nimmt keine Werte entgegen.

                              1 Reply Last reply Reply Quote 0
                              • ?
                                A Former User last edited by

                                Da hast du leider recht. Gibt es denn eine Möglichkeit die CCU davon zu überzeugen, die Werte entgegen zu nehmen?
                                Ich habe in den Sicherheitseinstellungen einen Vollzugriff auf die APIs gestattet und die Geräte nochmal neu eingelesen. Leider ohne Erfolg.
                                Es müsste doch möglich sein, sich per ssh auf die CCU zu verbinden und dort entsprechende Rechte zu setzen. Aber ich mag auch nicht völlig im Nebel rumstochern. 😉

                                1 Reply Last reply Reply Quote 0
                                • ?
                                  A Former User last edited by

                                  Ich habe die Frage einmal im Homematic-Forum gepostet. Dort hat mich ein User auf die mir unbekannte (weil Unwissender) Idee gebracht, dieses mit den CCU eigenen virtuellen Tastern zu lösen. Ich habe somit jetzt in der CCU mehrere Direktverbindungen zur Sirene mit unterschiedlichen Signalen erzeugt und diesen entsprechenden Tastern zugeordnet. Diese wurden bei der Erstinitialisierung schon eingebunden und besitzen per se Schreibrechte. Somit spreche ich jetzt mit den "setState-Befehlen" die virtuellen Taster an, welche die gewünschten Aktionen ausführen.
                                  Viele Grüße
                                  Fritz

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  877
                                  Online

                                  31.8k
                                  Users

                                  80.0k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  756
                                  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