Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Adapter Architektur von ioBroker?

NEWS

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

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

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

Adapter Architektur von ioBroker?

Adapter Architektur von ioBroker?

Scheduled Pinned Locked Moved Entwicklung
29 Posts 4 Posters 6.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    wrote on last edited by
    #21

    Hi Bluefox,

    ich habe einen Punkt, an dem ich gerade hänge.

    Bist auf den history Channel habe ich alle Datenpunkte in der io-package.json definiert.

    Wenn ich den Fritzboxadapter in ioBroker installiere werden auch die Channels und die Objekte angelegt.

    In ioBroker sehe ich unter "Zustände" die Werte. In den ioBroker/Objekten bleiben die Werte leer 😞

    Den Datenpunkt schreibe ich mit:

        adapter.setState('call.counterActualCalls.ringCount',        ringCount ,                 true);
    
    

    327_2015-06-20_zust_nde.png

    327_2015-06-20_objekte.png

    Die io-package.json sieht so aus:

    {
      "common": {
        "name": "fritzbox",
        "version": "0.0.1",
        "title": "fritzbox Adapter",
        "desc": {
          "en": "Adapter verarbeitet die Anrufinformation der Fritzbox über tcp, Port 1012 (Callmonitor in der Fritzbox mit #96*5* aktivieren)",
          "de": "Adapter verarbeitet die Anrufinformation der Fritzbox über tcp, Port 1012 (Callmonitor in der Fritzbox mit #96*5* aktivieren)",
          "ru": "Adapter verarbeitet die Anrufinformation der Fritzbox über tcp, Port 1012 (Callmonitor in der Fritzbox mit #96*5* aktivieren)"
        },
        "authors": [
          "ruhr <ruhr@digheim.de>"
        ],
        "license": "MIT",
        "platform": "Javascript/Node.js",
        "mode": "daemon",
        "availableModes": [
          "daemon"
        ],
        "readme": "https://github.com/ioBroker/.../README.md",
        "loglevel": "debug",
        "icon": "fritzbox.png",
        "keywords": [
          "fritzbox",
          "cdr",
          "callmonitor"
        ],
        "extIcon": "",
        "type": "communication"
      },
      "native": {
        "devices": [],
        "interval": 60000
      },
      "objects": [],
      "instanceObjects": [
        {
          "_id": "message",
          "type": "state",
          "common": {
            "name": "Last fritzbox message",
            "type": "string",
            "role": "message",
            "read": true,
            "write": false,
            "desc": "last message from fritzbox as string"
          },
          "native": {}
        },
        {
          "_id": "calls",
          "type": "channel",
          "common": {
            "name": "calls",
            "role": "call info"
          },
          "native": {}
        },
        {
          "_id": "calls.ring",
          "type": "state",
          "common": {
            "name": "ring activ?",
            "type": "boolean",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "ring activ?"
          },
          "native": {}
        },
        {
          "_id": "calls.missedCount",
          "type": "state",
          "common": {
            "name": "Counter: rings missed",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": true,
            "desc": "Counter: rings missed"
          },
          "native": {}
        },
        {
          "_id": "calls.ringActualNumber",
          "type": "state",
          "common": {
            "name": "actual last ringing number",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "actual last ringing number"
          },
          "native": {}
        },
        {
          "_id": "calls.ringActualNumbers",
          "type": "state",
          "common": {
            "name": "actual ringing numbers",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "actual ringing numbers"
          },
          "native": {}
        },
        {
          "_id": "calls.ringLastNumber",
          "type": "state",
          "common": {
            "name": "ring last number",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "ring last number"
          },
          "native": {}
        },
        {
          "_id": "calls.ringLastMissedNumber",
          "type": "state",
          "common": {
            "name": "ring last missed number",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "ring last missed number"
          },
          "native": {}
        },
        {
          "_id": "calls.callLastNumber",
          "type": "state",
          "common": {
            "name": "call last number",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "call last number"
          },
          "native": {}
        },
        {
          "_id": "calls.connectNumber",
          "type": "state",
          "common": {
            "name": "actual last connected number",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "actual last connected number"
          },
          "native": {}
        },
        {
          "_id": "calls.connectNumbers",
          "type": "state",
          "common": {
            "name": "actual last connected numbers",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "actual last connected numbers"
          },
          "native": {}
        },
        {
          "_id": "calls.counterActualCalls",
          "type": "channel",
          "common": {
            "name": "calls",
            "role": "call info"
          },
          "native": {}
        },
        {
          "_id": "calls.counterActualCalls.allActiveCount",
          "type": "state",
          "common": {
            "name": "Counter: all active Calls",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "Counter: all active Calls"
          },
          "native": {}
        },
        {
          "_id": "calls.counterActualCalls.connectCount",
          "type": "state",
          "common": {
            "name": "actual activ onnects",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "Counter: actual activ connected calls"
          },
          "native": {}
        },
        {
          "_id": "calls.counterActualCalls.ringCount",
          "type": "state",
          "common": {
            "name": "actual ring count",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "Counter: actual ring"
          },
          "native": {}
        },
        {
          "_id": "calls.counterActualCalls.callCount",
          "type": "state",
          "common": {
            "name": "actual activ calls",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "Counter: actual activ calls"
          },
          "native": {}
        },
        {
          "_id": "calls.telLinks",
          "type": "channel",
          "common": {
            "name": "calls",
            "role": "call info"
          },
          "native": {}
        },
        {
          "_id": "calls.telLinks.ringLastNumberTel",
          "type": "state",
          "common": {
            "name": "ring last number tel:link",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "ring last number tel:link"
          },
          "native": {}
        },
        {
          "_id": "calls.telLinks.callLastNumberTel",
          "type": "state",
          "common": {
            "name": "call last number tel:link",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "call last number tel:link"
          },
          "native": {}
        },
        {
          "_id": "calls.telLinks.ringLastMissedNumberTel",
          "type": "state",
          "common": {
            "name": "ring last missed number tel:link",
            "type": "string",
            "role": "call info",
            "read": true,
            "write": false,
            "desc": "ring last missed number tel:link"
          },
          "native": {}
        },
        {
          "_id": "history",
          "type": "channel",
          "common": {
            "name": "history calls",
            "role": "history calls"
          },
          "native": {}
        },
        {
          "_id": "history.allTableHTML",
          "type": "state",
          "common": {
            "name": "history of calls as HTML",
            "type": "string",
            "role": "history",
            "read": true,
            "write": false,
            "desc": "history of calls as HTML"
          },
          "native": {}
        },
        {
          "_id": "history.allTableJSON",
          "type": "state",
          "common": {
            "name": "history of calls as JSON",
            "type": "string",
            "role": "history",
            "read": true,
            "write": false,
            "desc": "history of calls as JSON"
          },
          "native": {}
        }
      ]
    }</ruhr@digheim.de>
    

    Ich hoffe, es ist nur eine Kleinigkeit 😉

    Viele Grüße und danke schon einmal 🙂

    Michael

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #22

      Dein Namens-Model ist durcheinander:

      States                        Objects
      ---------------------------------------------
      fritzbox.0.system.deltaTime   ???
      call                          calls
      
      
      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #23

        Guten Morgen Bluefox,

        sorry, ich verstehe es noch nicht…

        Vielleicht habe ich noch ein generelles Verständnisproblem von den Channels und Objekten.

        Der Channel (type:channel):

        fritzbox.0.system

        Und das Objekt (type:state):

        fritzbox.0.system.deltaTime

        fehlten in der Tat in meiner io-packages.json Datei.

        Ich habe dies in der JSON ergänzt:

            {
              "_id": "system",
              "type": "channel",
              "common": {
                "name": "history calls",
                "role": "history calls"
              },
              "native": {}
            },
            {
              "_id": "system.deltaTime",
              "type": "state",
              "common": {
                "name": "delta time in seconds between fritzbox and ioBroker",
                "type": "string",
                "role": "seconds",
                "read": true,
                "write": false,
                "desc": "delta time in seconds between fritzbox and ioBroker"
              },
              "native": {}
            },
        
        

        Und schon wird das Objekt angelegt und über den Adapter gefüllt.

        Aber warum funktioniert das im Channel Calls nicht?

        Da habe ich Tomaten auf den Augen.

        Da ist in der JSON folgendes angelegt:

        Der Channel (type:channel):

        fritzbox.0.calls

        Und das Objekt (type:state):

        fritzbox.0.system.ring

            {
              "_id": "calls",
              "type": "channel",
              "common": {
                "name": "calls",
                "role": "call info"
              },
              "native": {}
            },
            {
              "_id": "calls.ring",
              "type": "state",
              "common": {
                "name": "ring activ?",
                "type": "boolean",
                "role": "call info",
                "read": true,
                "write": false,
                "desc": "ring activ?"
              },
              "native": {}
            },
        
        

        Hier wird das Objekt nicht gefüllt.

        Der einzige Unterschied, der mit auffällt, ist dass ich in dem Channel Calls noch weitere Channels angelegt habe.

        Der Channel (type:channel):

        fritzbox.0.calls

        enthält z.B. noch einen Channel:

        fritzbox.0.calls.telLinks

        sorry. ich habe es versucht, bin aber mit Deiner Antwort nicht weiter gekommen :?

        VG,

        Michael

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          wrote on last edited by
          #24

          Dein Objekt heißt "calls" und dein Zustand heißt "call"

          1 Reply Last reply
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            wrote on last edited by
            #25

            oh Gott…

            Das nenne ich blind... :shock: 😮

            Danke Dir Bluefox! Da hatte ich wirklich Tomaten auf den Augen. Zigmal drüber geschaut...

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Reply Last reply
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              wrote on last edited by
              #26

              Hi Bluefox,

              ich habe leider noch einen Punkt, an dem ich nicht weiter komme 😞

              Ich möchte Dein Tabellen Widget nutzen und dafür ein JSON schreiben. Leider komt dies nie in den ioBroker Objekten an. Ich hoffe, es ist nicht wieder ein einfacher Schreibfehler. :?

              Zum Test wird ein Array mit einem einfachen Objekt befüllt:

                      var lineHistoryAllJson = {
                          "Uhrzeit" : call[id].date,
                          "Anrufer" : call[id].externalNumber
                      };
              
                      historyListAllJson.unshift(lineHistoryAllJson);
                      if (historyListAllJson > configHistoryAllLines) {
                          historyListAllJson.length = configHistoryAllLines;
                      }
              
              

              So will ich es in Richtung ioBroker schreiben:

                      adapter.setState('history.allTableJSON',        historyListAllJson,                 true);
              
              

              Und zum Test lass ich mir jeweils das erste Objekt im Log ausgeben:

                      adapter.log.info("historyListAllJson[0] " + historyListAllJson[0].Uhrzeit + " " + historyListAllJson[0].Anrufer);
              
              

              Als Ergebnis erhalte ich im Log:

              2015-06-21 22:55:24.126  - info: fritzbox.0 historyListAllJson[0] 21.06.15 22:55:24 040207714031
              

              So ist das Objekt in der io-package.json definiert:

                  {
                    "_id": "history.allTableJSON",
                    "type": "state",
                    "common": {
                      "name": "history of calls as JSON",
                      "type": "object",
                      "role": "table",
                      "read": true,
                      "write": false,
                      "desc": "history of calls as JSON"
                    },
                    "native": {}
                  },
              
              

              In ioBroker bekomme ich meine Tabellen als html und txt im selben Channel. Nur das Objekt history.allTableJSON will einfach nicht funktionieren.

              Nach dem call/calls traue ich mich schon fast gar nicht mehr zu fragen… momentan hänge ich aber leider an der Stelle.

              VG,

              Michael

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Reply Last reply
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                wrote on last edited by
                #27

                Versuch mal:

                adapter.setState('history.allTableJSON',        JSON.stringify(historyListAllJson),                 true);
                
                1 Reply Last reply
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  wrote on last edited by
                  #28

                  Hi Bluefox,

                  die tägliche Frage… :mrgreen: :?

                  Ich habe jetzt soweit den Node-Red Flow komplett für den Adapter umgesetzt und um einige Ausgaben ergänzt.

                  Jetzt stehe ich mangels Wissen wieder vor einer kleinen Hürde...

                  Im Node-red Flow hatte ich im Callmonitor die Gesprächssekunden der bestehenden Verbindungen hochgezählt. Dies würde ich noch gerne realisieren, bevor ich mich an der Config-Webseite versuche. Mir fehlt aber jede Idee.

                  D.h., wenn ein Connect aktiv ist, möchte ich einen Wert jede Sekunde hochzählen. Das Programm muss in der Zeit aber ganz normal weiter ausgeführt werden (parallele Calls).

                  Ein kleiner Tipp... 😉 ...für einen Einsteiger...

                  Wenn das gelöst ist, wären die nächsten Schritte:

                  (1)

                  • Config über die Webseite

                  • Dokumentation der einzelnen Objekte/Datenpunkte

                  • (mal drüber sehen, ob die Objekte so Sinn machen)

                  • veröffentlichen?

                  (2)

                  Dann als nächstes folgende Erweiterungen für eine Version 2:

                  • Telefonbuchimport und Verarbeitung

                  • Verfeinerung der Config für den Anwender

                  • (möglichst keine Änderungen an den Objekten/Datenpunkten)

                  327_2016-06-22_adapter_ist-stand.png

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Reply Last reply
                  0
                  • BluefoxB Offline
                    BluefoxB Offline
                    Bluefox
                    wrote on last edited by
                    #29

                    @ruhr70:

                    Hi Bluefox,

                    die tägliche Frage… :mrgreen: :?

                    Ich habe jetzt soweit den Node-Red Flow komplett für den Adapter umgesetzt und um einige Ausgaben ergänzt.

                    Jetzt stehe ich mangels Wissen wieder vor einer kleinen Hürde...

                    Im Node-red Flow hatte ich im Callmonitor die Gesprächssekunden der bestehenden Verbindungen hochgezählt. Dies würde ich noch gerne realisieren, bevor ich mich an der Config-Webseite versuche. Mir fehlt aber jede Idee.

                    D.h., wenn ein Connect aktiv ist, möchte ich einen Wert jede Sekunde hochzählen. Das Programm muss in der Zeit aber ganz normal weiter ausgeführt werden (parallele Calls).

                    Ein kleiner Tipp... 😉 ...für einen Einsteiger...

                    Wenn das gelöst ist, wären die nächsten Schritte:

                    (1)

                    • Config über die Webseite

                    • Dokumentation der einzelnen Objekte/Datenpunkte

                    • (mal drüber sehen, ob die Objekte so Sinn machen)

                    • veröffentlichen?

                    (2)

                    Dann als nächstes folgende Erweiterungen für eine Version 2:

                    • Telefonbuchimport und Verarbeitung

                    • Verfeinerung der Config für den Anwender

                    • (möglichst keine Änderungen an den Objekten/Datenpunkten)

                    filename="2016-06-22 Adapter Ist-Stand.png" index="0">~~ `

                    var intervalRunningCall = null;
                    
                    if (callStarted && !intervalRunningCall) {
                        // Do it every second
                        intervalRunningCall = setInterval(function () {
                              adapter.getState('call.time', function(err, state) {
                                   adapter.setState('call.time', state.val + 1);
                              });
                        }, 1000);
                    } else if (!callStarted && intervalRunningCall) {
                       // Stop interval
                       clearInterval(intervalRunningCall);
                       intervalRunningCall = null;
                    }
                    
                    
                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    595

                    Online

                    32.4k

                    Users

                    81.3k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe