Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Fragen / Antworten rund um die neue Alias Funktion

    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

    Fragen / Antworten rund um die neue Alias Funktion

    This topic has been deleted. Only users with topic management privileges can see it.
    • Garfonso
      Garfonso Developer @McBeath last edited by

      @mcbeath
      Naja, die Fehler im log sind, weil du einen Teil des Controllers mit deinem Code abschießt. Deshalb schreibt der da auch nix in den Datenpunkt... sei lieber mal froh, dass der js-controller mittlerweile so gut gebaut ist, dass er da nicht komplett abschmiert.

      Ich würde empfehlen, du überlegst dir schon einen Wert für "ignorieren", z.B. null.
      Dann könntest du es so machen:
      val === 0 ? 1 : val === 1 ? 0 : null
      null ist in Javascript ein Platzhalter für "nix" und, soweit ich weiß, auch als state.val erlaubt (eigentlich wäre es sauberer den ganzen state auf null zu setzen, aber das geht, AFAIK, mit Alias-read Funktionen nicht). Du müsstest dann nur hoffen bzw. den Maintainer des Adapters / dein Skript anpassen, dass da null ignoriert wird.
      Im Grunde ist das ja "nur" ein Problem bei der Anzeige / beim lesen. Beim Schreiben kannst du doch selber dafür sorgen, dass nur 0 / 1 bzw. 2 / 3 reingehen, indem du min/max setzt und selber nicht mit scripts oder so da Unsinn machen 😉 .

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

        @garfonso sagte: Wert für "ignorieren", z.B. null

        Meckert der js-controller dann nicht den Typ an? Denn "typeof null" liefert "object".

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

          @paul53

          ich bräuchte hier auch einmal deine Hilfe: Ich habe eine Rollladensteuerung die für open,close,stop genau einen DP hat.

          0: open
          1: close
          2: stop
          d158d864-fa14-4cd3-a79d-5dae84f2d583-grafik.png

          Ich Alias Manager muss ich diese separat definieren. Hast du eine Idee welche Funktion ich da enstprechend eintragen muss?

          val == 2 ? true
          

          Klappt bei stop leider nicht

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @cdn last edited by Codierknecht

            @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

            val == 2 ? true

            Wenn schon, dann musst Du das auch komplett formulieren.

            val == 2 ? true : false
            

            Das Ding heißt "ternärer Operator" und benötigt deshalb auch 3 Operanden.

            Geht dann aber auch kürzer:

            val == 2
            

            Liefert true wenn in val eine 2 steht und in allen anderen Fällen false.

            1 Reply Last reply Reply Quote 2
            • C
              cdn last edited by

              @codierknecht
              Ach so nein ich steuer damit. Also möchte quasi die Aktion STOP, CLOSE, OPEN ausführen.

              Im DP steht
              STOP (2)
              ZZ (0)
              FZ (1)

              Wobei ZZ auf und ZZ zu ist.
              Wobei jetzt der DP auf true gesetzt wird. Was ja nicht funktioniert.

              Codierknecht 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @cdn last edited by

                @cdn
                Das heißt, Du willst die 3 DP in einem einzigen zusammenführen?
                Das geht nur per Script.

                1 Reply Last reply Reply Quote 0
                • C
                  cdn last edited by

                  @codierknecht

                  Nein ich habe einen DP und der hat die 3 Zustände. Ich nutze aber lovelace im NSPanel um das Rollo zu steuern. Und da gibt es entsprechend 3 Buttons (auf, zu, stop). Diese will ich ansteuern, habe aber nur den einen DP 🙂

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @cdn last edited by Codierknecht

                    @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                    Und da gibt es entsprechend 3 Buttons

                    Und die brauchen dann 3 DP?
                    Ich kenne lovelace nicht.

                    Diese will ich ansteuern, habe aber nur den einen DP

                    Das geht mit Alias nicht.

                    Ich würde das per Script machen.
                    Je nachdem welcher Button geklickt wird, wird der Ziel-DP auf 0, 1 oder 2 gesetzt.

                    Wenn der Ziel-DP sich ändert (weil z.B. ein vorhandener "echter" Schalter bedient wird) werden die 3 DP für lovelace auf true/false gesetzt (sofern das überhaupt benötigt wird)

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      cdn @Codierknecht last edited by

                      @codierknecht said in Fragen / Antworten rund um die neue Alias Funktion:

                      ckt wird, wird der Ziel-DP auf 0, 1 oder 2 gesetzt.
                      Wenn der Ziel-DP sich ändert (weil z.B. ein vorhandener "echter" Schalter bedient wird) werd

                      Nein die brauchen ein "Gerät".
                      In dem Gerät kann ich ja für verschiedene "Funktionen" wie bspw. STOP, OPEN, CLOSE einen jeweiligen DP angeben.

                      Der Adapter liefert mir aber nur einen Datenpunkt. Diesen Datenpunkt muss ich dann statt wie sonst üblich mit true/false mit 1,2,3 steuern.

                      Hier ein Auszug aus dem DP:

                      {
                        "type": "state",
                        "common": {
                          "type": "number",
                          "states": {
                            "0": "ZZ",
                            "1": "FZ",
                            "2": "STOP"
                          },
                          "read": true,
                          "write": true,
                          "name": "mach_operate",
                          "role": "level"
                      
                      Codierknecht 1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @cdn last edited by Codierknecht

                        @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                        Nein die brauchen ein "Gerät".
                        In dem Gerät kann ich ja für verschiedene "Funktionen" wie bspw. STOP, OPEN, CLOSE einen jeweiligen DP angeben.

                        Das "Gerät" wäre "rollo" - mit 3 DP (Logikwert) "auf", "zu" und "stop".
                        Ein Gerät kann man ja auch selbst anlegen.

                        8a608af4-ae67-48fe-92cb-c05dc9102926-image.png

                        a71cb208-2776-49ad-aa22-4f6e7570b2b0-image.png

                        C 1 Reply Last reply Reply Quote 0
                        • C
                          cdn @Codierknecht last edited by

                          @codierknecht Puh gibt es hier keine smartere Lösung direkt über die Geräte? Möchte ja eigentlich nur, dass wenn der Zustand bspw. Stop getriggert wird, der Wert auf 2 gesetzt wird.

                          Ich habe hier 30 Rollos....

                          Codierknecht 1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @cdn last edited by Codierknecht

                            @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                            Ich habe hier 30 Rollos....

                            Du wohnst in 'nem Schloss?

                            Lässt sich mit Funktionen bzw. Auflistungen vermutlich noch optimieren.
                            Versuch's mal für 1 Rollo - den Rest kriegen wir dann sicher noch zusammengeklöppelt.

                            Mit Aliasen geht das so nicht, da Du 3 verschiedene States auf einen mappen musst.
                            Zum Lesen kein Problem, aber schreiben geht nicht.

                            C 1 Reply Last reply Reply Quote 0
                            • C
                              cdn @Codierknecht last edited by

                              @codierknecht Also kann man dem nicht sagen: Schreib da ne 2 rein, wenn Stop ausgelöst wird?

                              Ne ist ein Büro. Da kommen schnell so viele zusammen 🙂

                              Codierknecht 1 Reply Last reply Reply Quote 0
                              • Codierknecht
                                Codierknecht Developer Most Active @cdn last edited by Codierknecht

                                @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                                Also kann man dem nicht sagen: Schreib da ne 2 rein, wenn Stop ausgelöst wird?

                                Doch - per Script ... nicht per Alias. Man kann einen Alias ja schließlich nicht auf 3 DP horchen lassen.

                                Die eigentliche Arbeit besteht darin, die Struktur unterhalb von 0_userdata.0 sinnvoll anzulegen.
                                Aber das musst Du ja wegen lovelace eh machen, wenn ich das richtig verstanden habe.
                                Den Rest kriegt man dann im Script (z.B. über einen passenden Selektor) recht elegant gelöst.

                                C 1 Reply Last reply Reply Quote 0
                                • C
                                  cdn @Codierknecht last edited by

                                  @codierknecht Gut dann mache ich das mal so.

                                  Gibt es die Möglichkeit irgendwie Ordner zu kopieren?

                                  Codierknecht 1 Reply Last reply Reply Quote 0
                                  • Codierknecht
                                    Codierknecht Developer Most Active @cdn last edited by

                                    @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                                    Gibt es die Möglichkeit irgendwie Ordner zu kopieren?

                                    Über Umwege.
                                    Exportieren, dann mit 'nem Editor entsprechend ändern und wieder importieren.

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      cdn @Codierknecht last edited by

                                      @codierknecht Das wäre mal ne schöne Funktion....

                                      Codierknecht 2 Replies Last reply Reply Quote 0
                                      • Codierknecht
                                        Codierknecht Developer Most Active @cdn last edited by

                                        @cdn
                                        e6e9fd19-4a0c-4400-89e6-bf082ef19fbe-image.png

                                        Man kann natürlich auch gleich alle im Editor eintragen und dann auf einen Schlag importieren.
                                        Macht's einfacher 😉

                                        1 Reply Last reply Reply Quote 0
                                        • Codierknecht
                                          Codierknecht Developer Most Active @cdn last edited by

                                          @cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:

                                          Das wäre mal ne schöne Funktion....

                                          Mach ein Issue auf 😉

                                          1 Reply Last reply Reply Quote 0
                                          • Codierknecht
                                            Codierknecht Developer Most Active last edited by Codierknecht

                                            @cdn

                                            Wenn man in die description der einzelnen DP (auf, zu, stop) jeweils die ID des zu steuernden Ziel-DP einträgt, sollte das damit funktionieren:

                                            17292cbf-bb9a-4e0c-afdb-f9869af2c27e-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            822
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            alias js-controller
                                            87
                                            615
                                            142040
                                            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