Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Dynamischer Objektbaum

    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

    Dynamischer Objektbaum

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

      Hallo zusammen,

      ich bräuchte euren Rat.

      Ich bin gerade dabei einen Adapter für die Kommunikation mit OpenWrt-Geräte zu erstellen:
      https://github.com/Schnup89/ioBroker.openwrt

      Ich bekomme json-Resultate über die API welche ich Element für Element in die Objekt-Datenbank schreibe.
      Als Beispiel das Resultat des zweiten Kommandos (ubus call hostapd.wlanX get_clients):
      https://github.com/Schnup89/ioBroker.openwrt/wiki/ubus-commands

      Dort bekomme ich die Wlan-Clients als JSON-Liste "clients" ist hier Parent ausgegeben.

      1. Eintrag "ec:fa:bc:9a:xx:xx"
      2. Eintrag "84:f3:eb:3e:yy:yy"

      Bei nächsten Datenabruf über die API ist Client "84:f3:eb:3e:yy:yy" nicht mehr dabei da er nicht mehr mit dem WLAN verbunden ist.
      Dieser wurde aber vorher schon im Objektbaum erstellt.

      Wie gehe ich am besten vor? Der Eintrag muss weg, aber wie?

      Was ich mir Vorstellen kann:

      1. Nach dem schreiben des letzten Objekts alle Objekte in dem "Ordner" per lastModified prüfen, wenn älter als letzter Datenabruf, dann das betreffende Objetkt löschen
      • Das ist etwas mehr Code aber meiner Meinung nach einer der besseren Weg.
      1. Alle Objekte löschen und neu anlegen
      • Das wird meiner Meinung nach blöd, da z.B. die "Historie" Einstellung auf einem state/objekt dann auch gelöscht wird, oder?

      Danke und Gruß
      Schnup

      ? braindead 2 Replies Last reply Reply Quote 0
      • ?
        A Former User @Schnup89 last edited by

        @Schnup89 Hi, arbeite gerade mit deinem Adapter, funktioniert super!
        ( js-controller 3.1.6, Node 12 ).

        Ich möchte gerne die Werte, die mit "iwinfo" abgerufen werden können, darstellen, ist es möglich, dass du das noch einbaust?

        Per option unter den "ubus" commands gehts leider nicht.
        Per "command" bekomme ich die Rückmeldung, also im Prinzip funktionierts.

        {"id":null,"result":"wlan0     ESSID: \"SSID\"          Access Point: F4:F2:6D:C7:C7:C7         Mode: Master  Channel: 1 (2.412 GHz)          Tx-Power: 14 dBm  Link Quality: 55/70          Signal: -55 dBm  Noise: -95 dBm          Bit Rate: 40.1 MBit/s          Encryption: mixed WPA/WPA2 PSK (CCMP)          Type: nl80211  HW Mode(s): 802.11bgn          Hardware: unknown [Generic MAC80211]          TX power offset: unknown          Frequency offset: unknown          Supports VAPs: yes  PHY name: phy0","error":null}
        
        Schnup89 1 Reply Last reply Reply Quote 0
        • Schnup89
          Schnup89 @Guest last edited by

          @ilovegym Servus!

          Schön dass der Adapter einen nutzen findet.
          Zum Glück gibt es bei openwrt für fast alles ubus Kommandos 🙂
          Das dürfte das ubus Kommando zum Ziel sein:

          ubus call network.wireless status

          Viele Grüße
          Schnup

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

            @Schnup89 Hi,
            Das Kommando hab ich schon drin, aber das zeigt nur die config, nicht die Werte, bei Channel ist "Auto" gesetzt, iwinfo zeigt mir, welcher Channel aktiv ist, und ubus network.wireless Status ergibt nur Auto 🙈

            Das gleiche mit Link quality ..etc..

            Ich hab kein ubus command gefunden dafür..

            Schnup89 1 Reply Last reply Reply Quote 0
            • braindead
              braindead Developer @Schnup89 last edited by

              @Schnup89 said in Dynamischer Objektbaum:

              Bei nächsten Datenabruf über die API ist Client "84:f3:eb:3e:yy:yy" nicht mehr dabei da er nicht mehr mit dem WLAN verbunden ist.
              Dieser wurde aber vorher schon im Objektbaum erstellt.

              Wie gehe ich am besten vor? Der Eintrag muss weg, aber wie?

              In meinem Unifi Adapter habe ich exakt das selbe Problem. Meine Lösung ist, dass das Objekt nicht gelöscht wird und es stattdessen für jeden Client einen is_online State gibt, der true oder false ist. Natürlich brauchst Du dann in Deinem Code eine Logik, der Clients, die nicht mehr im JSON auftauchen auch auf false setzt.

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

                @ilovegym Okay stimmt!

                Funktioniert bei mir zwar nicht, aber evtl. hast du mehr Glück mit der RPC Erweiterung für iwinfo:
                https://openwrt.org/docs/guide-developer/ubus/iwinfo

                opkg update
                opkg install rpcd-mod-iwinfo

                !reboot!

                ubus list
                *Hier sollte dann iwinfo erscheinen

                ubus call iwinfo wlan0 info
                Wenn der dir Daten ausspuckt kannst du das Kommando nehmen, bei mir gibt's da aber ein "parse error" 😕

                @braindead
                Danke das ist eine gute Idee und gar nicht mal so viel Programmieraufwand, danke dir!

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

                  @Schnup89
                  Hi,
                  vielen Dank, geht bei mir auch nicht, auch parse error.

                  Ein "iwinfo wlan0 info" funktioniert, wobei das Ergebnis das gleich wie einfach nur ein iwinfo ist.
                  Muss ich mir ein javascript basteln, das das commando alle Minute hinschickt und das Ergebnis auswertet, die Datenpunkte sind ja im Adapter drin.

                  Übrigens, stell doch deinen Adapter mal der Mehrheit hier im Forum vor, da gibts ganz viele helle Köpfe, die nette Ideen und fixes liefern.. 🙂
                  Ein Fehler ist das nicht.

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

                    @ilovegym
                    Hab mir das nochmal mit dem ubus monitor angesehen während ich die Webseite offen hatte.
                    Schau mal ob der folgende ubus Befehl dir das gewünschte Ergebnis bringt:

                    ubus call luci-rpc getWirelessDevices

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

                      @Schnup89
                      Hi,
                      nee, leider geht das auch nicht bei mir....

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

                        @ilovegym
                        Bekommst du deine Werte nicht, oder generell keinen output?

                         "radio1": {
                                        "up": true,
                                        "pending": false,
                                        "autostart": true,
                                        "disabled": false,
                                        "retry_setup_failed": false,
                                        "iwinfo": {
                                                "signal": -50,
                                                "noise": -95,
                                                "channel": 1,
                                                "country": "DE",
                                                "phy": "phy1",
                                                "txpower": 20,
                                                "frequency": 2412,
                                                "hwmodes": [
                                                        "b",
                                                        "g",
                                                        "n"
                                                ],
                                                "htmodes": [
                                                        "HT20",
                                                        "HT40"
                                                ]
                                        }
                        

                        Folgende Pakete sind bzgl. RPC installiert:

                        root@OpenWrt:~# opkg list-installed | grep rpc
                        rpcd - 2020-05-26-67c8a3fd-1
                        rpcd-mod-file - 2020-05-26-67c8a3fd-1
                        rpcd-mod-iwinfo - 2020-05-26-67c8a3fd-1
                        rpcd-mod-luci - 20191114
                        rpcd-mod-rrdns - 20170710
                        root@OpenWrt:~# opkg list-installed | grep ubus
                        libubus-lua - 2019-12-27-041c9d1c-1
                        libubus20191227 - 2019-12-27-041c9d1c-1
                        ubus - 2019-12-27-041c9d1c-1
                        ubusd - 2019-12-27-041c9d1c-1
                        
                        ? 2 Replies Last reply Reply Quote 0
                        • ?
                          A Former User @Schnup89 last edited by

                          @Schnup89 kommen einfach keine Werte und kein Fehler.
                          Wollte den Router updaten und jetzt isser voll und ich kann keine Pakete mehr installieren..
                          hmpff. was kann ich denn löschen, ohne gleich das ganze Teil platt zu machen? Der ist so schön eingebaut..

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

                            @Schnup89 übrigens, openwrt 18.06.08 ..
                            TP-Link 941ND v6

                            er läuft ja noch.. und solange bleibt er jetzt.. ansonsten kann man das Netzteil bestimmt für was anderes gebrauchen 🙂

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

                              @ilovegym
                              Ich hab die neuste drauf.
                              Lass die installiere Pakete anzeigen mit:

                              opkg list-installed
                              

                              Hier kannst du schauen ob da was dabei was du nicht benötigst (vpn z.B.) und löschen

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

                                @Schnup89 ja, ich weiss, aber genau das geht nicht, weil der overlay voll ist.. den kann ich zwar löschen, aber dann ist das Setup weg. Muss ich mal in Ruhe schauen.

                                Hast du auch den TP-Link 941ND v6,. ??? Der hat ja nur 4/32mb und da ist das die neueste Version... oder gibts n Trick?

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

                                  @ilovegym
                                  Nein ich habe den Archer C7, da kann ich 10MB für Packages nutzen. Da bin ich leider zu wenig im Thema um dir weiterhelfen zu können. evtl. funktionierts mit der neusten openwrt version out-of-the-box... aber dafür muss auch erstmal updaten 🙂

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  922
                                  Online

                                  31.9k
                                  Users

                                  80.1k
                                  Topics

                                  1.3m
                                  Posts

                                  api json requests objects
                                  3
                                  15
                                  1275
                                  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