Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Major Update] UniFi Adapter v0.5.0

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Major Update] UniFi Adapter v0.5.0

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      maniac @liv-in-sky last edited by

      @liv-in-sky sagte in [Major Update] UniFi Adapter v0.5.0:

      @maniac

      habe keinen switch zum testen - aber evtl ist das was für dich

      https://nerdig.es/usw-poe-per-script-steuern/
      Danke.

      Ich habe mir das mal angeschaut.
      Es funktioniert soweit wenn ich per ssh im IOBroker dieses Script

      #!/bin/bash
      
      function usage {
              echo
              echo $"Usage: $0  <on|off> "
              echo
              echo "Example: $0 192.168.178.12 on 8"
      
              echo
      }
      
      function is_number {
              [[ "$1" =~ ^[0-9]+$ ]] && return 0 || return 1
      }
      
      function is_host {
              [[ "$1" =~ ^[0-9a-zA-Z.:-]+$ ]] && return 0 || return 1
      }
      
      function valid_action {
              [[ "${1,,}" =~ ^on|off$ ]] && return 0 || return 1
      }
      
      
      # check if hostname or IP is provided as target switch
      if ! is_host "$1"; then
             usage
             echo -e "ERROR: Target switch must be a valid host name or IPv4/v6 address!\n"
             exit 2
      fi
      
      # check if on or off is provided as action
      if ! valid_action "$2"; then
             usage
             echo -e "ERROR: action must be on or off!\n"
             exit 2
      fi
      
      # check if port-parameter is number
      if ! is_number "$3" ; then
              usage
              echo -e "ERROR: portnumber contains non-numerical characters!\n"
              exit 3
      fi
      
      cmd_pre="enable\n$password\nconfigure\n"
      
      cmd_on="interface 0/$3\npoe opmode auto\nexit"
      cmd_off="interface 0/$3\npoe opmode shutdown\nexit"
      cmd_status="show poe status 0/$3"
      
      cmd_post="\nexit\nexit\n"
      
      case "${2,,}" in
              on)
                      ssh admin@$1 '(echo "enable" ; echo "configure" ; echo "interface 0/'$3'" ; echo "poe opmode auto" ; echo "exit" ; echo "exit"; echo "exit"  ) | telnet localhost 23 ; exit;'
                      ;;
              off)
                      ssh admin@$1 '(echo "enable" ; echo "configure" ; echo "interface 0/'$3'" ; echo "poe opmode shutdown" ; echo "exit" ; echo "exit"; echo "exit"  ) | telnet localhost 23 ; exit;'
                      ;;
              *)
                      usage
                      exit 2
                      ;;
      esac
      
      

      mit

      ./cam_aus_an <IP-SWITCH> on 20 oder ./cam_aus_an <IP-SWITCH> off 20
      

      starte.

      Aber wie führe ich diese dann im IOBroker aus? Möchte gerne per VIS die Kameras an-/ausschalten.

      Ich habe es mit sshexec versucht, da ich damit schon meine Synologys herunter fahre. Das mit den Synologys funktioniert auch soweit.

      var SSH = require('simple-ssh');
       
      var ssh = new SSH({
          host: 'IP Synology',
          port: 22,
          user: 'synologyuser',
          pass: 'synologypass'
      });
      
      setStateDelayed("javascript.0.scriptEnabled.Controlling.An-Aus.NAS1-Shutdown"/*javascript.0.scriptEnabled.Controlling.An-Aus.NAS1-Shutdown*/, false, 5000, false);
      sendTo("telegram.0", "send", {
          text: 'NAS aus',
          user: 'Frank'
      });
      
      
      ssh.exec('echo "synologypass"|sudo -S shutdown -h now').start();
      

      Das ganze habe ich nun so mit den Kameras versucht.

      var SSH = require('simple-ssh');
      var ssh = new SSH({
          host: 'IP IOBroker',
          port: 22,
          user: 'iobrokeruser',
          pass: 'iobrokerpass'
      });
      
      sendTo("telegram.0", "send", {
          text: 'Kameras aus',
          user: 'Frank'
      });
      
      ssh.exec('echo "iobrokerpass"|sudo ./opt/iobroker/iobroker-data/scripte_ssh/cam_aus_an 192.168.222.2 off 20').start();
      
      

      Die Telegram Meldung kommt auch an, aber der Port wird nicht geschaltet.

      Ich habe es auch versucht ohne das große Script oben mit

       ssh admin@IP-Switch '(echo "enable" ; echo "configure" ; echo "interface 0/8" ; echo "poe opmode auto" ; echo "exit" ; echo "exit"; echo "exit"  ) | telnet localhost 23 ; exit;'
      

      Funktioniert direkt per ssh im IOBroker auch. Nur nicht aus Javascript heraus.
      Jemand eine Idee wo mein Denkfehler ist?

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @maniac last edited by liv-in-sky

        @maniac habe dir eine chatnachricht gesendet

        was ich noch nicht ganz verstehe : das funktionierende bash script liegt auf dem iobroker server - damit du das aufrufen kannst, braucht es eigentlich nur einen exec() befehl -am besten mal testen ob der exec - allein funktioniert - evtl gibt es da noch rechte themen aber prinzipiell sollte es so laufen - das bashscript baut ja die ssh verbindung auf - daher brauchen wir nur dieses script mit exec() aufrufen

        dann legst du dir einen eigenen datenpunkt an - logic - der in der vis zur verfügung gestellt wird

        Image 2.png

        object id in diesem blockly musst du mit deinem eigenen datenpunkt "füttern"

        <block xmlns="https://developers.google.com/blockly/xml" type="on" id="}Y9S}nOO/_cW)`#anT9U" x="37.528259277343636" y="137.415069580078">
         <field name="OID">Object ID</field>
         <field name="CONDITION">any</field>
         <field name="ACK_CONDITION"></field>
         <statement name="STATEMENT">
           <block type="controls_if" id=";D}D,=~IcSS:bfS@`@Jk">
             <mutation else="1"></mutation>
             <value name="IF0">
               <block type="get_value" id="Ie_H*~n?bGrmq4H-:jGY">
                 <field name="ATTR">val</field>
                 <field name="OID">ID auswählen</field>
               </block>
             </value>
             <statement name="DO0">
               <block type="exec" id="J8DQN@ppQBzKoU!_g-3f">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                 <field name="WITH_STATEMENT">FALSE</field>
                 <field name="LOG"></field>
                 <value name="COMMAND">
                   <shadow type="text" id="V#OuEg-xaxd+Qmqt3Si*">
                     <field name="TEXT">sudo bash /opt/iobroker/iobroker-data/scripte_ssh/cam_aus_an 192.168.222.2 on 20</field>
                   </shadow>
                 </value>
               </block>
             </statement>
             <statement name="ELSE">
               <block type="exec" id="0h6B?B4}#cLZw[,Pt(Xb">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                 <field name="WITH_STATEMENT">FALSE</field>
                 <field name="LOG"></field>
                 <value name="COMMAND">
                   <shadow type="text" id="},j(+b}._Fe*Go/3Ve;9">
                     <field name="TEXT">sudo bash /opt/iobroker/iobroker-data/scripte_ssh/cam_aus_an 192.168.222.2 off 20</field>
                   </shadow>
                 </value>
               </block>
             </statement>
           </block>
         </statement>
        </block>
        

        das ganze sollte funktionieren, wenn du eine console auf iobroker öffnest und dort in die console

        ./cam_aus_an <IP-SWITCH> on 20 oder ./cam_aus_an <IP-SWITCH> off 20
        

        einen der beiden befehle ausführen kannst - wenn das funktioniert, sollte der exec befehl im blockly funktionieren

        M 2 Replies Last reply Reply Quote 0
        • M
          maniac @liv-in-sky last edited by maniac

          @liv-in-sky

          Funktioniert nicht. Bekomme im IOBroker Terminal Adapter den Fehler.

          6daa56db-49e5-4d4b-b7af-05949e5cf5ac-grafik.png

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @maniac last edited by

            @maniac

            hast du wie hier beschrieben, https://nerdig.es/usw-poe-per-script-steuern/ , dass mit dem ssh-key gemacht ? irgendwie ist der key nicht bekannt. wir haben kein homeassistant sonder iobroker - sollte aber theoretisch genau so funktionieren

            das bashscript muss natürlich in der iobroker console ausführbar sein

            Image 3.png

            das hier muss als iobroker user im terminal ausgeführt werden - es gibt einen terminal adapter für iobroker- das terminal kannst du dann über den admin aufrufen und darin das beschriebene vorgehen ausprobieren

            Image 4.png

            M 1 Reply Last reply Reply Quote 0
            • Feuersturm
              Feuersturm @maniac last edited by

              @maniac sagte in [Major Update] UniFi Adapter v0.5.0:

              Moin zusammen.

              Ich nutze den Adapter schon eine Weile um meine WLANs per VIS ein-/auszuschalten. Das geht ja über den DP:

              unifi.0.default.wlans.NAMEWLAN.enabled

              und funktioniert einwandfrei bisher.

              Ich habe mir gerade ein Gäste WLAN erstellt. Sobald ich dieses deaktiviere wird auch mein normales WLAN abgeschaltet und es dauert etwas bis dieses wieder verfügbar ist.
              Hast du auch dieses Verhalten?

              liv-in-sky M 2 Replies Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Feuersturm last edited by liv-in-sky

                @Feuersturm

                https://forum.iobroker.net/post/493077

                ich denke, daher arbeitet man bei unifi mit den vouchers - da muss nix neugestartet werden

                Feuersturm 1 Reply Last reply Reply Quote 1
                • Feuersturm
                  Feuersturm @liv-in-sky last edited by

                  @liv-in-sky Danke für den Link. Da hab ich wohl zu schnell über die nachfolgenden Beiträge drüber gelesen.
                  Ja das mit den Vouchers ist dann auch mein Plan B.

                  1 Reply Last reply Reply Quote 0
                  • M
                    maniac @liv-in-sky last edited by

                    @liv-in-sky sagte in [Major Update] UniFi Adapter v0.5.0:

                    @maniac

                    hast du wie hier beschrieben, https://nerdig.es/usw-poe-per-script-steuern/ , dass mit dem ssh-key gemacht ? irgendwie ist der key nicht bekannt. wir haben kein homeassistant sonder iobroker - sollte aber theoretisch genau so funktionieren

                    Ja, habe ich direkt per ssh auf dem iobroker gemacht. Mit welchem Nutzer muss das denn gemacht werden?
                    Ich habe es mit meinem Anmeldenamen gemacht.

                    das bashscript muss natürlich in der iobroker console ausführbar sein

                    das hier muss als iobroker user im terminal ausgeführt werden - es gibt einen terminal adapter für iobroker- das terminal kannst du dann über den admin aufrufen und darin das beschriebene vorgehen ausprobieren

                    Da bekomme ich nur

                    c1b9a04d-c0ec-4e02-85a6-7a7e4c361d21-grafik.png

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • M
                      maniac @Feuersturm last edited by

                      @Feuersturm sagte in [Major Update] UniFi Adapter v0.5.0:

                      Ich habe mir gerade ein Gäste WLAN erstellt. Sobald ich dieses deaktiviere wird auch mein normales WLAN abgeschaltet und es dauert etwas bis dieses wieder verfügbar ist.
                      Hast du auch dieses Verhalten?

                      Ja, das ist dummerweise ein normales Verhalten bei Unifi.

                      1 Reply Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @maniac last edited by

                        @maniac sudo -u iobroker ssh ....

                        M 2 Replies Last reply Reply Quote 0
                        • M
                          maniac @liv-in-sky last edited by

                          @liv-in-sky sagte in [Major Update] UniFi Adapter v0.5.0:

                          @maniac sudo -u iobroker ssh ....

                          Ja, na klar.

                          5a3e9006-4d4d-47c9-bb89-7c3b961acf5d-grafik.png

                          Aber so ganz richtig verhält sich das Terminal nicht. Hat etwas gedauert bis der Key erstellt wurde, da manchmal keine Ausgabe erfolgte, bzw. nachdem ich den cam Befehl eingegeben hatte kam nochmal das mit der passphrase.

                          Den Key habe ich jetzt aber im Controller drin, aber trotzdem geht es nicht. 😞

                          6f2190d6-30c5-4f92-ae55-8e3db4aebab7-grafik.png

                          liv-in-sky 1 Reply Last reply Reply Quote 0
                          • M
                            maniac @liv-in-sky last edited by

                            @liv-in-sky

                            Kann ich mich irgendwie als user iobroker am System anmelden? Also direkt per ssh am IOBroker Server?
                            mit su iobroker geht es nicht.
                            Das würde das probieren etwas einfacher machen.

                            liv-in-sky 1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @maniac last edited by

                              @maniac deshalb den terminal adapter - das nutzt den iobrker user - sonst geht das nicht, weil iobroker als service user genutzt wird und wir kein passwort dafür haben

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                maniac @liv-in-sky last edited by

                                @liv-in-sky sagte in [Major Update] UniFi Adapter v0.5.0:

                                @maniac deshalb den terminal adapter - das nutzt den iobrker user - sonst geht das nicht, weil iobroker als service user genutzt wird und wir kein passwort dafür haben

                                Das funktioniert aber leider nicht so richtig.
                                Wenn ich den Key erstelle, kommt mal die Frage wohin, mal nicht. Dann kommt einmal Passwortvergabe, manchmal auch nicht. Die zweite Kontrollpasswortvergabe kommt gar nicht anscheinend.
                                Wenn ich den Befehl 4-5 Mal in die Konsole eingebe, kommt plötzlich die zweite Passwortbestätigung und dann manchmal auch die Meldung Key wurde erstellt. Da muss was schiefgehen.
                                1966d149-ea70-437b-8fa3-20d70f0f016e-grafik.png

                                liv-in-sky 1 Reply Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @maniac last edited by

                                  @maniac

                                  sorry ich bin mit diesen key sachen auch nicht so sicher - hatte meist mit passwort gearbeitet - dazu müßten wir das bashscript ändern - was wenig sinn macht - leider kann ich das ganze auch nicht nachstellen bei mir

                                  ich kann dir nur anbieten am WE oder heute spätnachmittag mal zusammen darauf zu schauen , würden wir schon irgendwie mit google hinbekommen

                                  evtl muss man sich den iobroker user im switch einrichten und das ganze dann anstatt mit admin@... mit iobroker@... machen - müßte man ausprobieren

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    maniac @liv-in-sky last edited by

                                    @liv-in-sky

                                    Danke für das Angebot, würde ich gerne machen, bin aber am WE jetzt unterwegs.
                                    Ich würde evtl. später nochmal darauf zurückkommen wenn es dann noch nicht läuft.

                                    Ich habe jetzt jedenfalls nochmal per Snapshot beide Systeme zurück gesetzt und komplett neu gemacht.

                                    Den Key - wieder mit den Problemen- im Web Terminal erstellt, der liegt direkt unter opt/iobroker. Kann das richtig sein?

                                    Geht noch nicht. Ich gebe noch nicht auf... 🙂

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

                                      Ich habe gerade einmal die Zugriffssteuerung für mein Gäste W-Lan über Vouchers aktiviert und konnt den Zugriffscode über die Webmaske auch erfolgreich generieren und auf meinem Handy verwenden.
                                      Wenn ich in der ioBroker Adminoberfläche für die Objekte den Button für den Datenpunkt unifi.0.default.vouchers.create_vouchers betätige bekomme ich folgenden Fehler im Log:

                                      unifi.0	2020-09-25 22:37:29.880	error	at Request.emit (events.js:315:20)
                                      unifi.0	2020-09-25 22:37:29.880	error	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1154:10)
                                      unifi.0	2020-09-25 22:37:29.880	error	at Request.EventEmitter.emit (domain.js:483:12)
                                      unifi.0	2020-09-25 22:37:29.880	error	at Request.emit (events.js:315:20)
                                      unifi.0	2020-09-25 22:37:29.880	error	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                                      unifi.0	2020-09-25 22:37:29.880	error	at Request._callback (/opt/iobroker/node_modules/node-unifi/unifi.js:2844:13)
                                      unifi.0	2020-09-25 22:37:29.880	error	at next (/opt/iobroker/node_modules/node-unifi/node_modules/async/dist/async.js:4450:29)
                                      unifi.0	2020-09-25 22:37:29.880	error	at /opt/iobroker/node_modules/node-unifi/node_modules/async/dist/async.js:321:20
                                      unifi.0	2020-09-25 22:37:29.880	error	at /opt/iobroker/node_modules/node-unifi/unifi.js:2858:11
                                      unifi.0	2020-09-25 22:37:29.880	error	at cb (/opt/iobroker/node_modules/iobroker.unifi/main.js:1111:28)
                                      unifi.0	2020-09-25 22:37:29.880	error	(26712) error: api.err.IncorrectNumberRange, stack: Error: api.err.IncorrectNumberRange
                                      

                                      Ich verwende die folgenden Versionen:
                                      Unifi Controller: 5.13.32 (Build: atag_5.13.32_13646)
                                      Unifi Adapter: 5.0.8

                                      Muss ich noch irgendwas besonderes im Unifi Controller einstellen, damit die Codes erzeugt werden können?
                                      In ioBroker sehen in der Unifi Instanz die Einstellungen wie folgt aus:
                                      d852fd2b-0159-46e8-b111-001938e0eaf7-grafik.png

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        maniac @liv-in-sky last edited by

                                        @liv-in-sky sagte in [Major Update] UniFi Adapter v0.5.0:

                                        @maniac habe dir eine chatnachricht gesendet

                                        das ganze sollte funktionieren, wenn du eine console auf iobroker öffnest und dort in die console

                                        ./cam_aus_an <IP-SWITCH> on 20 oder ./cam_aus_an <IP-SWITCH> off 20
                                        

                                        einen der beiden befehle ausführen kannst - wenn das funktioniert, sollte der exec befehl im blockly funktionieren

                                        Ich bin einen Schritt weiter.
                                        Im Terminal Adapter kann ich das Script nun starten und der Port wird geschaltet.

                                        Der entscheidende Hinweis kommt von hier

                                        Im speziellen habe ich das Script temporär angepasst, indem ich den Aufruf mit diesem Code erweitert habe.

                                        ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no adminuser@xxx.xxx.xxx.xxx
                                        

                                        Die ganze Zeile sah dann so aus.

                                        ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@$1 '(echo "enable" ; echo "configure" ; echo "interface 0/'$3'" ; echo "poe opmode auto" ; echo "exit" ; echo "exit"; echo "exit"  ) |
                                        

                                        Danach wurde auch die KnownHosts Datei im /home/iobroker/.ssh angelegt.
                                        Dann habe ich das Script wieder in den Ursprungszustand zurück gesetzt und nun funktioniert es im Terminal Adapter.

                                        Wenn ich allerdings das Blockly triggere, bekomme ich im Log einen Fehler.
                                        Im Javascript Adapter habe ich das "exec" erlaubt.

                                        28.9.2020, 10:25:00.126	[error]: javascript.0 (1090) script.js.Kameras.Bewegung: exec: sudo bash /opt/iobroker/cam.sh 192.168.222.2 off 20
                                        

                                        Passt hier der Aufruf im Blockly noch nicht?

                                        sudo bash /opt/iobroker/cam.sh 192.168.222.2 off 20
                                        

                                        cd954e31-db1d-49dd-9041-22936bfd0d11-grafik.png

                                        liv-in-sky 2 Replies Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @maniac last edited by liv-in-sky

                                          @maniac - klasse, dass du schon weiter bist

                                          WICHTIGER HINWEIS https://forum.iobroker.net/post/496428 - bessere Lösung - nicht "bash" frei geben sondern pfad zum script selbst

                                          spontan : kontrolliere mal das sudoers file

                                          nano /etc/sudoers.d/iobroker

                                          da steht kein bash drin - daher ein eigenes file anlegen - bei mir

                                          Image 5.png

                                          Image 6.png

                                          vielleicht ist damit was zu machen

                                          du kannst auch versuchen das log im exec-blockly zu aktivieren - vielleicht steht da mehr

                                          Image 7.png

                                          und der klassiker - im setting des javascriptadapters muss exec ausführen erlaubt sein

                                          WICHTIGER HINWEIS https://forum.iobroker.net/post/496428 - bessere Lösung

                                          M 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @maniac last edited by

                                            @maniac
                                            ach ja
                                            hatte gestern erst etwas gemacht - da brauchte ich bash garnicht - siehe post darüber - das blockly

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            831
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            unifi
                                            54
                                            510
                                            84707
                                            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