Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Dynamischer Objektbaum

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Dynamischer Objektbaum

Geplant Angeheftet Gesperrt Verschoben Entwicklung
api json requests objects
15 Beiträge 3 Kommentatoren 1.6k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Schnup89S Schnup89

    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

    ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von
    #2

    @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}
    
    Schnup89S 1 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      @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}
      
      Schnup89S Offline
      Schnup89S Offline
      Schnup89
      schrieb am zuletzt editiert von
      #3

      @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 Antwort Letzte Antwort
      0
      • Schnup89S Schnup89

        @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

        ? Offline
        ? Offline
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von
        #4

        @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..

        Schnup89S 1 Antwort Letzte Antwort
        0
        • Schnup89S Schnup89

          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

          braindeadB Offline
          braindeadB Offline
          braindead
          Developer
          schrieb am zuletzt editiert von
          #5

          @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 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @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..

            Schnup89S Offline
            Schnup89S Offline
            Schnup89
            schrieb am zuletzt editiert von
            #6

            @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 Antwort Letzte Antwort
            0
            • Schnup89S Schnup89

              @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!

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #7

              @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.

              Schnup89S 1 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @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.

                Schnup89S Offline
                Schnup89S Offline
                Schnup89
                schrieb am zuletzt editiert von
                #8

                @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 Antwort Letzte Antwort
                0
                • Schnup89S Schnup89

                  @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

                  ? Offline
                  ? Offline
                  Ein ehemaliger Benutzer
                  schrieb am zuletzt editiert von
                  #9

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

                  Schnup89S 1 Antwort Letzte Antwort
                  0
                  • ? Ein ehemaliger Benutzer

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

                    Schnup89S Offline
                    Schnup89S Offline
                    Schnup89
                    schrieb am zuletzt editiert von
                    #10

                    @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 Antworten Letzte Antwort
                    0
                    • Schnup89S Schnup89

                      @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
                      
                      ? Offline
                      ? Offline
                      Ein ehemaliger Benutzer
                      schrieb am zuletzt editiert von
                      #11

                      @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 Antwort Letzte Antwort
                      0
                      • Schnup89S Schnup89

                        @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
                        
                        ? Offline
                        ? Offline
                        Ein ehemaliger Benutzer
                        schrieb am zuletzt editiert von
                        #12

                        @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 :-)

                        Schnup89S 1 Antwort Letzte Antwort
                        0
                        • ? Ein ehemaliger Benutzer

                          @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 :-)

                          Schnup89S Offline
                          Schnup89S Offline
                          Schnup89
                          schrieb am zuletzt editiert von
                          #13

                          @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 Antwort Letzte Antwort
                          0
                          • Schnup89S Schnup89

                            @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

                            ? Offline
                            ? Offline
                            Ein ehemaliger Benutzer
                            schrieb am zuletzt editiert von
                            #14

                            @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?

                            Schnup89S 1 Antwort Letzte Antwort
                            0
                            • ? Ein ehemaliger Benutzer

                              @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?

                              Schnup89S Offline
                              Schnup89S Offline
                              Schnup89
                              schrieb am zuletzt editiert von
                              #15

                              @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 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              385

                              Online

                              32.4k

                              Benutzer

                              81.4k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe