Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter: ioBroker.unifi

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter: ioBroker.unifi

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

      Ok, dann liegt es daran vermutlich auch nicht.

      Cloudkey Version 0.6.0

      Controller Software v5.4.11

      Irgendwas muß doch bei mir anders sein.

      Hast du noch eine Idee?

      Habe den Adapter gerade noch einmal gestartet:
      ` > unifi.0 2017-02-26 23:13:37.392 info cleaned everything up…

      unifi.0 2017-02-26 23:13:37.389 error at traverseArray (/opt/iobroker/node_modules/iobroker.unifi/main.js:165:7)

      unifi.0 2017-02-26 23:13:37.389 error at Array.every (native)

      unifi.0 2017-02-26 23:13:37.389 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:168:7

      unifi.0 2017-02-26 23:13:37.389 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)

      unifi.0 2017-02-26 23:13:37.389 error at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:178:27)

      unifi.0 2017-02-26 23:13:37.389 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:288:13

      unifi.0 2017-02-26 23:13:37.389 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)

      unifi.0 2017-02-26 23:13:37.389 error at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:184:7)

      unifi.0 2017-02-26 23:13:37.389 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32)

      unifi.0 2017-02-26 23:13:37.389 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57

      unifi.0 2017-02-26 23:13:37.389 error TypeError: Cannot read property 'subsystem' of null

      unifi.0 2017-02-26 23:13:37.379 error uncaught exception: Cannot read property 'subsystem' of null

      unifi.0 2017-02-26 23:13:37.333 info getSitesStats: default

      unifi.0 2017-02-26 23:13:34.172 info controller = 192.168.178.78:8443

      unifi.0 2017-02-26 23:13:34.171 info update_interval = 60

      unifi.0 2017-02-26 23:13:34.170 info Starting UniFi-Controller query

      unifi.0 2017-02-26 23:13:34.150 info starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v4.7.3

      unifi.0 2017-02-26 23:13:34.091 debug statesDB connected

      unifi.0 2017-02-26 23:13:33.950 debug objectDB connected

      unifi.0 2017-02-26 23:13:01.340 info cleaned everything up...

      unifi.0 2017-02-26 23:13:01.337 error at traverseArray (/opt/iobroker/node_modules/iobroker.unifi/main.js:165:7)

      unifi.0 2017-02-26 23:13:01.337 error at Array.every (native)

      unifi.0 2017-02-26 23:13:01.337 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:168:7

      unifi.0 2017-02-26 23:13:01.337 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)

      unifi.0 2017-02-26 23:13:01.337 error at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:178:27)

      unifi.0 2017-02-26 23:13:01.337 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:288:13

      unifi.0 2017-02-26 23:13:01.337 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)

      unifi.0 2017-02-26 23:13:01.337 error at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:184:7)

      unifi.0 2017-02-26 23:13:01.337 error at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32)

      unifi.0 2017-02-26 23:13:01.337 error at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57

      unifi.0 2017-02-26 23:13:01.337 error TypeError: Cannot read property 'subsystem' of null

      unifi.0 2017-02-26 23:13:01.326 error uncaught exception: Cannot read property 'subsystem' of null

      unifi.0 2017-02-26 23:13:01.278 info getSitesStats: default

      unifi.0 2017-02-26 23:12:57.854 info controller = 192.168.178.78:8443

      unifi.0 2017-02-26 23:12:57.853 info update_interval = 60

      unifi.0 2017-02-26 23:12:57.852 info Starting UniFi-Controller query

      unifi.0 2017-02-26 23:12:57.834 info starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v4.7.3

      unifi.0 2017-02-26 23:12:57.727 debug statesDB connected

      unifi.0 2017-02-26 23:12:57.584 debug objectDB connected `

      Die traverse Fehler machen mich stutzig.

      1 Reply Last reply Reply Quote 0
      • jens.maus
        jens.maus last edited by

        @tesso:

        Ok, dann liegt es daran vermutlich auch nicht.

        Cloudkey Version 0.6.0

        Controller Software v5.4.11

        Irgendwas muß doch bei mir anders sein.

        Hast du noch eine Idee?

        […]

        Die traverse Fehler machen mich stutzig. `

        Da scheint anscheinend ei json response grundsätzlich etwas anders zu sein als das bei mir/anderen der Fall ist. Kannst du mal bitte in /opt/iobroker/node_modules/iobroker.unifi/main.js reingehen und dort Zeile 283 mit dem "adapter.log.info()" Aufruf auskommentieren und dann schauen was er da für ein JSON ausgibt und dann bitte das posten. Gut wäre auch du könntest gleich dafür auf GitHub ein IssueTicket aufmachen und dort das JSON posten dann kann ich mir das geordneter anschauen.

        1 Reply Last reply Reply Quote 0
        • T
          tesso last edited by

          Mache ich heute Abend fertig und stelle es zur Verfügung. Kann etwas dauern, da ich gerade im Bootcamp bin.

          1 Reply Last reply Reply Quote 0
          • T
            tesso last edited by

            Das ist alles was ich im Log finde. Keine Spur eines json

            2017-02-27 23:38:21.691  - ESC[34mdebugESC[39m: unifi.0 objectDB connected
            2017-02-27 23:38:21.845  - ESC[34mdebugESC[39m: unifi.0 statesDB connected
            2017-02-27 23:38:21.956  - ESC[32minfoESC[39m: unifi.0 starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v4.7.3
            2017-02-27 23:38:21.975  - ESC[32minfoESC[39m: unifi.0 Starting UniFi-Controller query
            2017-02-27 23:38:21.976  - ESC[32minfoESC[39m: unifi.0 update_interval = 60
            2017-02-27 23:38:21.977  - ESC[32minfoESC[39m: unifi.0 controller = 192.168.178.78:8443
            2017-02-27 23:38:25.100  - ESC[32minfoESC[39m: unifi.0 getSitesStats: default
            2017-02-27 23:38:25.117  - ESC[32minfoESC[39m: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:38:25.121  - ESC[32minfoESC[39m: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:38:25.124  - ESC[32minfoESC[39m: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:38:25.127  - ESC[32minfoESC[39m: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:38:25.153  - ESC[31merrorESC[39m: unifi.0 uncaught exception: Cannot read property 'subsystem' of null
            2017-02-27 23:38:25.164  - ESC[31merrorESC[39m: unifi.0 TypeError: Cannot read property 'subsystem' of null
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32)
                at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:184:7)
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:288:13
                at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:178:27)
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:168:7
                at Array.every (native)
                at traverseArray (/opt/iobroker/node_modules/iobroker.unifi/main.js:165:7)
            2017-02-27 23:38:25.167  - ESC[32minfoESC[39m: unifi.0 cleaned everything up...
            2017-02-27 23:38:25.334  - ESC[31merrorESC[39m: host.pi01 instance system.adapter.unifi.0 terminated with code 0 (OK)
            2017-02-27 23:38:25.335  - ESC[32minfoESC[39m: host.pi01 Restart adapter system.adapter.unifi.0 because enabled
            
            

            Ich habe mal auch die ander logZeile ein paar Zeilen tiefer mit riengenommen. dann sieht es so aus

            2017-02-27 23:41:58.614  - info: unifi.0 Starting UniFi-Controller query
            2017-02-27 23:41:58.615  - info: unifi.0 update_interval = 60
            2017-02-27 23:41:58.616  - info: unifi.0 controller = 192.168.178.78:8443
            2017-02-27 23:42:01.798  - info: unifi.0 getSitesStats: default
            2017-02-27 23:42:01.813  - info: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:42:01.815  - info: unifi.0 __(1): default.health.wlan = [object Object] type: object
            2017-02-27 23:42:01.817  - info: unifi.0 __(2): default.health.wlan.num_adopted = 1 type: number
            2017-02-27 23:42:01.818  - info: unifi.0 __(2): default.health.wlan.num_ap = 1 type: number
            2017-02-27 23:42:01.819  - info: unifi.0 __(2): default.health.wlan.num_disabled = 0 type: number
            2017-02-27 23:42:01.819  - info: unifi.0 __(2): default.health.wlan.num_disconnected = 0 type: number
            2017-02-27 23:42:01.820  - info: unifi.0 __(2): default.health.wlan.num_guest = 0 type: number
            2017-02-27 23:42:01.821  - info: unifi.0 __(2): default.health.wlan.num_pending = 0 type: number
            2017-02-27 23:42:01.821  - info: unifi.0 __(2): default.health.wlan.num_user = 0 type: number
            2017-02-27 23:42:01.822  - info: unifi.0 __(2): default.health.wlan.rx_bytes-r = 0 type: number
            2017-02-27 23:42:01.823  - info: unifi.0 __(2): default.health.wlan.status = ok type: string
            2017-02-27 23:42:01.823  - info: unifi.0 __(2): default.health.wlan.subsystem = wlan type: string
            2017-02-27 23:42:01.824  - info: unifi.0 __(2): default.health.wlan.tx_bytes-r = 0 type: number
            2017-02-27 23:42:01.825  - info: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:42:01.825  - info: unifi.0 __(1): default.health.wan = [object Object] type: object
            2017-02-27 23:42:01.826  - info: unifi.0 __(2): default.health.wan.gw_mac = f0:9f:c2:11:50:53 type: string
            2017-02-27 23:42:01.827  - info: unifi.0 __(2): default.health.wan.num_adopted = 1 type: number
            2017-02-27 23:42:01.827  - info: unifi.0 __(2): default.health.wan.num_disconnected = 1 type: number
            2017-02-27 23:42:01.828  - info: unifi.0 __(2): default.health.wan.num_gw = 0 type: number
            2017-02-27 23:42:01.828  - info: unifi.0 __(2): default.health.wan.num_pending = 0 type: number
            2017-02-27 23:42:01.829  - info: unifi.0 __(2): default.health.wan.status = error type: string
            2017-02-27 23:42:01.831  - info: unifi.0 __(2): default.health.wan.subsystem = wan type: string
            2017-02-27 23:42:01.832  - info: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:42:01.833  - info: unifi.0 __(1): default.health.www = [object Object] type: object
            2017-02-27 23:42:01.834  - info: unifi.0 __(2): default.health.www.gw_mac = f0:9f:c2:11:50:53 type: string
            2017-02-27 23:42:01.835  - info: unifi.0 __(2): default.health.www.status = error type: string
            2017-02-27 23:42:01.835  - info: unifi.0 __(2): default.health.www.subsystem = www type: string
            2017-02-27 23:42:01.836  - info: unifi.0 _(2): default.health = [object Object] type: object
            2017-02-27 23:42:01.837  - info: unifi.0 __(1): default.health.lan = [object Object] type: object
            2017-02-27 23:42:01.838  - info: unifi.0 __(2): default.health.lan.lan_ip = null type: object
            2017-02-27 23:42:01.866  - error: unifi.0 uncaught exception: Cannot read property 'subsystem' of null
            2017-02-27 23:42:01.877  - error: unifi.0 TypeError: Cannot read property 'subsystem' of null
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32)
                at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:184:7)
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:288:13
                at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:178:27)
                at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
                at /opt/iobroker/node_modules/iobroker.unifi/main.js:168:7
                at Array.every (native)
                at traverseArray (/opt/iobroker/node_modules/iobroker.unifi/main.js:165:7)
            2017-02-27 23:42:01.880  - info: unifi.0 cleaned everything up...
            2017-02-27 23:42:02.018  - error: host.pi01 instance system.adapter.unifi.0 terminated with code 0 (OK)
            2017-02-27 23:42:02.019  - info: host.pi01 Restart adapter system.adapter.unifi.0 because enabled
            
            

            Vielleicht hilft es

            1 Reply Last reply Reply Quote 0
            • S
              slax last edited by

              Hallo zusammen,

              ich versuche mich mit dem AP zu verbinden,jedoch taucht folgende Fehlermeldung auf:

              raspberrypi	2017-03-01 22:37:23.009	error	host.raspberrypi instance system.adapter.unifi.0 terminated with code 0 (OK)
              unifi.0	2017-03-01 22:37:22.974	info	unifi.0 controller = 192.168.6.70:8443
              unifi.0	2017-03-01 22:37:22.974	info	unifi.0 update_interval = 60
              unifi.0	2017-03-01 22:37:22.973	info	unifi.0 Starting UniFi-Controller query
              unifi.0	2017-03-01 22:37:22.970	info	unifi.0 starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v4.7.0
              raspberrypi	2017-03-01 22:37:20.724	info	host.raspberrypi instance system.adapter.unifi.0 started with pid 28203
              host.raspberrypi	2017-03-01 21:37:17.468	info	Restart adapter system.adapter.unifi.0 because enabled
              

              Muss ich nicht bestimmte Einstellungen im Controller vornehmen?

              Ich habe einen neuen Admin angelegt und versuche mich darüber zu connecten.

              Vielen Dank.

              Gruß

              1 Reply Last reply Reply Quote 0
              • T
                tesso last edited by

                Bei mir zeigt der Adapter plötzlich Daten an.

                Ich habe durch Zufall nach einem Update des Linux auf dem Raspberry mal wieder den Adapter gestartet und er zeigt Daten.

                das einzige was mir auffiel, daß ein Update von node 4.7.3 auf node 4.8.0 durchgeführt wurde.

                1 Reply Last reply Reply Quote 0
                • eric2905
                  eric2905 last edited by

                  H Jens,

                  kommt der Adapter auch mit dem Unifi Video Comtroller zurecht?

                  Meine erste Kamera wird Montag oder Dienstag geliefert [emoji6]

                  Gruß,

                  Eric

                  1 Reply Last reply Reply Quote 0
                  • U
                    uvex last edited by

                    Der Adapter funktioniert super ich hab nur ein Problem das wenn er läuft im iobroker kommt zu viele Ereignisse jemand ne idee was man dort machen kann?

                    Unifi Cloudkey, 4 UAPs, 48 Port Unifi Switch und Access Gateway

                    1 Reply Last reply Reply Quote 0
                    • M
                      Micky79 last edited by

                      @uvex

                      Das Problem mit dem zu vielen Ereignissen habe ich auch.

                      Wenn Du viele Netzwerkgeräte hast, werden auch eine Menge Events durch den Controller erzeugt.

                      Evtl wäre es eine Lösung, wenn der Adapter die Daten aufteilt und über einen längeren Zeitraum aktualisiert.

                      Also Portionsweise.

                      1 Reply Last reply Reply Quote 0
                      • eric2905
                        eric2905 last edited by

                        Die Meldung hat keinen Einfluss auf die Daten als solches - es handelt sich um ein Darstellungsproblem im Admin.

                        Es sind einfach zu viele, zu schnell.

                        Sucht mal im Forum - das Thema ist hier hinlänglich diskutiert worden.

                        Gruß,

                        Eric

                        Von unterwegs getippert

                        1 Reply Last reply Reply Quote 0
                        • M
                          mimquadrat last edited by

                          Hi zusammen,

                          kann leider jetzt nich den ganz thread lesen aber:

                          1. Infos zum System gibt er hier ganz gut: https://www.youtube.com/watch?v=H-H_6dKQxkE&t=20s

                          2. Ich hab selber eine relativ umfangreiche Ausstattung und bin begeistert! AVM hat da was verschlafen…

                          3. Hab den Controller auf einem Raspi laufen - funktioniert perfekt (Läuft aber auch über Docker auf einer Synology)

                          4. würde auch gern mittesten

                          1 Reply Last reply Reply Quote 0
                          • S
                            sgrouch last edited by

                            Hallo

                            Ich versuche über den Unifi-Adapter eine kleine Anwesenheitssteuerung zu erstellen.

                            Ich hatte gehofft über unifi.0.default.clients.MAC-ADR.last_seen die Timestamp mit der aktuellen zu vergleichen um zu sehen ob der Client angemeldet ist.

                            Das Problem, die Timestamp haut nicht wirklich hin. Der Client wird im Controller als online angezeigt und ich bekomme eine Timestamp von gestern Abend …. :?:

                            gibt es da ein besseres Weg?

                            1 Reply Last reply Reply Quote 0
                            • lobomau
                              lobomau last edited by

                              @jens.maus:

                              @ykuendig:

                              Was die Steuerung angeht: Wäre echt cool, wenn man da was Steuern kann. Ich kann mir aber vorstellen das die Entscheidung, was wofür und wie zu steuern ist, noch Gesprächsstoff abgibt. Auch hier ein Kompromissvorschlag: Vielleicht kannst Du in einer ersten Version ein Datenfeld definieren, wo man sich ein Steuersatz als JSON zB {"wlangroup_id_ng":"<wlan group/id="">","wlan_overrides":[]} hinschreibt. Und der Adapter bespricht das dann mit dem Controller. :idea: `

                              Da gibts eigentlich wenig Gesprächsstoff 🙂 Es wird das alles umgesetzt was die UniFi-App auf dem iPhone z.B. auch zulässt und dann dann mittels spezieller Kommando states die man dann nur triggern muss und schon passiert die Aktion dann entsprechend.</wlan> `
                              Hi. Den Adapter habe ich laufen. Gab keine Probleme, habe Unif AP Pro und den Controller laufen.

                              Aber wie schalte ich nun die Werte? Sind alle auf "read". Einfach auch "write" anklicken? Welche "speziellen Kommando states" meinst du?

                              Wo steht bei den clients die Information zur Sende/Empfangsstärke? noise, rssi, signal? Am liebsten wären mir die "%" oder die z.B. "-44 dBm" wie in der Handy App (android). `

                              1 Reply Last reply Reply Quote 0
                              • lobomau
                                lobomau last edited by

                                @lobomau:

                                @jens.maus:

                                @ykuendig:

                                Was die Steuerung angeht: Wäre echt cool, wenn man da was Steuern kann. Ich kann mir aber vorstellen das die Entscheidung, was wofür und wie zu steuern ist, noch Gesprächsstoff abgibt. Auch hier ein Kompromissvorschlag: Vielleicht kannst Du in einer ersten Version ein Datenfeld definieren, wo man sich ein Steuersatz als JSON zB {"wlangroup_id_ng":"<wlan group/id="">","wlan_overrides":[]} hinschreibt. Und der Adapter bespricht das dann mit dem Controller. :idea: `

                                Da gibts eigentlich wenig Gesprächsstoff 🙂 Es wird das alles umgesetzt was die UniFi-App auf dem iPhone z.B. auch zulässt und dann dann mittels spezieller Kommando states die man dann nur triggern muss und schon passiert die Aktion dann entsprechend.</wlan> `
                                Hi. Den Adapter habe ich laufen. Gab keine Probleme, habe Unif AP Pro und den Controller laufen.

                                Aber wie schalte ich nun die Werte? Sind alle auf "read". Einfach auch "write" anklicken? Welche "speziellen Kommando states" meinst du?

                                Wo steht bei den clients die Information zur Sende/Empfangsstärke? noise, rssi, signal? Am liebsten wären mir die "%" oder die z.B. "-44 dBm" wie in der Handy App (android). Also ich stehe weiterhin auf dem Schlauch. Ich habe mal einige checkboxen für write angeklickt, aber der eingetragene Wert springt dann beim nächsten Durchlauf wieder auf den Ursprungswert zurück. Ich habe ausprobiert die Sendestärke, die ich auch per Handyapp ändern kann zu ändern. Oder ist der Adapter nur um Werte zu lesen und nicht zu schreiben?

                                1 Reply Last reply Reply Quote 0
                                • P
                                  pix last edited by

                                  Hallo,

                                  ich habe den Adapter seit wenigen Wochen installiert. Er zeigte den grünen Punkt, legte aber keine Objekte an.

                                  Der Fehler war immer dieser:

                                  api.err.Invalid
                                  

                                  Nach etwas https://github.com/BapCat/UniFi/issues/1 fand ich die Lösung: invalid username or password

                                  Da aber Passwort und Username definitiv korrekt waren, habe ich das Passwort im Controller mal geändert (kein Umlaut mehr). Und siehe da: es läuft. :lol:

                                  Übrigens: mich stört, dass der yahka-Adapter u.a. auch die Einstellungen dieses Adapters inkl. Passwort im Klartext im Log speichert. :x

                                  Jedenfalls danke an den Entwickler, tolle Arbeit.

                                  Gruß

                                  Pix

                                  LordMonoxide created this issue in BapCat/UniFi

                                  open API Error Codes #1

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    plazmatic07 last edited by

                                    Hallo Zusammen,

                                    gibt es über den Adapter die Möglichkeit einen Neustarts der Als zu triggern?

                                    Ich habe mal alles durchgeschaut aber genaueres nicht gefunden.

                                    Grüße

                                    1 Reply Last reply Reply Quote 0
                                    • lobomau
                                      lobomau last edited by

                                      Ich würde ja gerne in Abhängigkeit meiner Anwesenheit die APs einzeln AN und ABschalten. Wie ist das möglich?

                                      1 Reply Last reply Reply Quote 0
                                      • J
                                        jensus11 last edited by

                                        @ Jens

                                        so wie schon im Homematic Forum gefragt, wie machst du jetzt deine Anwesenheitssteuerung?

                                        Erkläre das doch mal bitte.

                                        1 Reply Last reply Reply Quote 0
                                        • jens.maus
                                          jens.maus last edited by

                                          @jensus11:

                                          so wie schon im Homematic Forum gefragt, wie machst du jetzt deine Anwesenheitssteuerung?

                                          Erkläre das doch mal bitte. `

                                          Das ganze mache ich momentan über das "node-unifi" nodejs Modul und nicht über mein unifi iobroker Adapter. Voraussetzung ist, das man im js-controller als Zusatzpaket eben "node-unifi" angegeben hat (siehe Einstellung des js-controller). Dann kann man folgendes Skript nutzen um eine an hm_pdetect angelehnte Anwesenheitserkennung durchzuführen und Systemvariablen in der CCU/RaspberryMatic setzen zu lassen:

                                          `/*
                                           * unifi_pdetect v0.1 (29.09.2017)
                                           * 
                                           * Copyright (c) 2017 Jens Maus <mail@jens-maus.de>*
                                           */
                                          
                                          /* define actual user devices here */
                                          var user_devices = [];
                                          user_devices['AA:BB:CC:DD:EE:FF'] = 'John';
                                          user_devices['AA:BB:CC:DD:EE:FF'] = 'Jane';
                                          
                                          /* define here devices that you 'know', thus should
                                           * be ignored
                                           */
                                          var known_devices=[ "AA:BB:CC:DD:EE:FF",
                                                              "AA:BB:CC:DD:EE:FF",
                                                              "AA:BB:CC:DD:EE:FF"];
                                          
                                          /* Enum list of all combinations of users+guest */
                                          var enum_list = [];
                                          enum_list[0] = "Nobody";
                                          enum_list[1] = "John";
                                          enum_list[2] = "Jane";
                                          enum_list[3] = "John,Jane";
                                          enum_list[4] = "Guest";
                                          enum_list[5] = "John,Guest";
                                          enum_list[6] = "Jane,Guest";
                                          enum_list[7] = "John,Jane,Guest";
                                          
                                          /* Path to system variables on CCU */
                                          var sysvar_prefix= "Anwesenheit";
                                          var sysvar_user  = "hm-rega.0.35037"/*Anwesenheit.Nutzer*/;
                                          var sysvar_guest = "hm-rega.0.15785"/*Anwesenheit.Gast*/;
                                          var sysvar_str   = "hm-rega.0.31854"/*Anwesenheit.string*/;
                                          var sysvar_list  = "hm-rega.0.31853"/*Anwesenheit.list*/;
                                          
                                          /* Unifi controller settings */
                                          var unifi_ip   = "192.168.X.X";
                                          var unifi_port = 8443;
                                          var unifi_user = "admin";
                                          var unifi_pw   = "XxxxxxxX";
                                          
                                          /***********************************/
                                          /* Don't modify anything from here */
                                          function check_presence() {
                                          
                                              var unifi = require('node-unifi');
                                              var controller = new unifi.Controller(unifi_ip, unifi_port);
                                          
                                              var guest_found = false;
                                              var users_found = [];
                                          
                                              var tmp = known_devices.join('~').toUpperCase();
                                              known_devices = tmp.split('~');
                                          
                                              // LOGIN
                                              controller.login(unifi_user, unifi_pw, function(err) {
                                          
                                                  if(err) {
                                                      console.log('ERROR: ' + err);
                                                      return;
                                                  }
                                          
                                                  // GET SITE STATS
                                                  controller.getSitesStats(function(err, sites) {
                                                      // GET CLIENT DEVICES
                                                      controller.getClientDevices(sites[0].name, function(err, client_data) {
                                                          //log('curtime: ' + Math.floor((new Date).getTime()/1000));
                                                          for (var i=0; i < client_data[0].length; i++) {
                                                              if(typeof(client_data[0][i].ip) !== 'undefined' && client_data[0][i].ip) {
                                                                  if(typeof(client_data[0][i]._last_seen_by_uap) !== 'undefined' && client_data[0][i]._last_seen_by_uap) {
                                                                      //log(client_data[0][i].mac + " " + client_data[0][i]._last_seen_by_uap + " " + client_data[0][i].idletime + " " + client_data[0][i].ip + " " + client_data[0][i].hostname + " " + client_data[0][i].is_guest);
                                          
                                                                      var user_device = user_devices[client_data[0][i].mac.toUpperCase()];
                                                                      if(typeof(user_device) !== 'undefined') {
                                                                          //log('user device[' + user_device + ']: ' + client_data[0][i].mac.toUpperCase() + ' ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                                          users_found.push(user_device);
                                                                      }
                                                                      else if(known_devices.indexOf(client_data[0][i].mac.toUpperCase()) === -1)
                                                                      {
                                                                          //log('guest device found: ' + client_data[0][i].mac.toUpperCase() + ': ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                                          guest_found = true;
                                                                      }
                                                                  }
                                                              }
                                                          }
                                          
                                                          controller.logout();
                                          
                                                          if(getState(sysvar_user).val !== (users_found.length > 0)) {
                                                              setState(sysvar_user, (users_found.length > 0));
                                                          }
                                          
                                                          var presence_string = "";
                                                          var num_presence = 0;
                                                          for (var j in user_devices) {
                                                              var user_present = users_found.indexOf(user_devices[j]) !== -1;
                                          
                                                              if(user_present === true) {
                                                                  if(num_presence > 0) 
                                                                      presence_string += ",";
                                                                  presence_string += user_devices[j];
                                                                  num_presence++;
                                                              }
                                          
                                                              var id = getIdByName(sysvar_prefix + '.' + user_devices[j]);
                                                              if(typeof(id) !== 'undefined' && id) {
                                                                  if(getState(id).val !== user_present) {
                                                                      setState(id, user_present);
                                                                      log("User '" + user_devices[j] + "' changed present state: " + user_present);
                                                                  }
                                                              }
                                                          }
                                          
                                                          // find out if guest mode is already on or off and then we switch it
                                                          // accordingly
                                                          if(getState(sysvar_guest).val !== guest_found) {
                                                              setState(sysvar_guest, guest_found);
                                                              log('Guest mode set to ' + guest_found);
                                                          }
                                                          if(guest_found === true) {
                                                              if(num_presence > 0)
                                                                  presence_string += ",";
                                                              presence_string += "Gast";
                                                          }
                                          
                                                          if(getState(sysvar_str).val !== presence_string) {
                                                              setState(sysvar_str, presence_string);
                                                          }
                                          
                                                          var enum_id = enum_list.indexOf(presence_string);
                                                          if(enum_id === -1)
                                                              enum_id = 0;
                                                          if(getState(sysvar_list).val !== enum_id) {
                                                              setState(sysvar_list, enum_id);
                                                          }
                                                      });
                                                  });
                                              });
                                          }
                                          
                                          schedule("*/15 * * * * *", function () { // Execute every 15 seconds
                                              check_presence();
                                          });</mail@jens-maus.de>` 
                                          
                                          Ich hoffe das sollte selbsterklärend sein. Wie gesagt, momentan nur ein Anfang und ohne Beteiligung des unifi iobroker Adapters von mir, aber es sollte äquivalent zu hm_pdetect gehen. Voraussetzung ist wie gesagt das man das 'node_unifi' nodejs einbindet (js-controller einstellungen) und das man natürlich die gleichen Systemvariablen verwendet wie mit hm_pdetect. Ggf. werde ich das ganze noch etwas erweitern/verbessern und ggf. sogar in den unifi iobroker Adapter direkt integrieren damit man hier kein extra Skript machen muss sondern der Adapter das direkt anbietet. Aber dafür fehlt mir momentan die Zeit.
                                          
                                          Viel Spass damit. Und ich freue mich wie immer über Feedback.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            jensus11 last edited by

                                            Wie muss das genau heissen node-unifi oder node_unifi?

                                            Wenn man in dem Script den Userdaten ausfüllt, wird ja die Mac Adresse verwendet und muss der Name genau so heißen wie der im Unifi Controller?

                                            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

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            unifi
                                            170
                                            998
                                            306632
                                            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