Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Status der Docker Container Abfragen

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    1.7k

  • Neuer ioBroker-Blog online: MonatsrĂŒckblick MĂ€rz/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.3k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.2k

Status der Docker Container Abfragen

Geplant Angeheftet Gesperrt Verschoben Off Topic
11 BeitrÀge 5 Kommentatoren 957 Aufrufe 7 Beobachtet
  • Ä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.
  • David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von
    #1

    Hallo,

    hat jemand ein Script am laufen um seine Docker Container abzufragen und um deren Status zu sehen?

    Ich nutze Portainer. Da gibt's ja eine Api.
    Nur da reichen meine Skills leider nicht (zumindest so lange Blockly kein http post kann)^^.

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen fĂŒr eure Visualisierung klick

    GlasfaserG OliverIOO 2 Antworten Letzte Antwort
    0
    • David G.D David G.

      Hallo,

      hat jemand ein Script am laufen um seine Docker Container abzufragen und um deren Status zu sehen?

      Ich nutze Portainer. Da gibt's ja eine Api.
      Nur da reichen meine Skills leider nicht (zumindest so lange Blockly kein http post kann)^^.

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      schrieb am zuletzt editiert von
      #2

      @david-g sagte in Status der Docker Container Abfragen:

      hat jemand
      um seine Docker Container abzufragen und um deren Status zu sehen?

      Ja ... , siehe hier :

      Anzeige Status Docker Container

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      David G.D 1 Antwort Letzte Antwort
      0
      • GlasfaserG Glasfaser

        @david-g sagte in Status der Docker Container Abfragen:

        hat jemand
        um seine Docker Container abzufragen und um deren Status zu sehen?

        Ja ... , siehe hier :

        Anzeige Status Docker Container

        David G.D Online
        David G.D Online
        David G.
        schrieb am zuletzt editiert von David G.
        #3

        @glasfaser

        Danke, schaue ich mir mal an.

        Nach einer Stunde ChatGPT bin ich so weit gekommen 😅

        docker@docker:~$ docker ps -a --format '{"IMAGE":"{{.Image}}","STATUS":"{{index (split .Status " ") 0}}","LAUFZEIT":"{{if gt (len (split .Status " ")) 2}}{{index (split .Status " ") 1}} {{index (split .Status " ") 2}}{{end}}","STATUS2":"{{if gt (len (split .Status " ")) 3}}{{index (split .Status " ") 3}}{{end}}","CREATED":"{{.CreatedAt}}","NAME":"{{.Names}}"}' | sed '1s/^/[/' | sed '$s/$/]/' | awk '{ printf "%s%s", sep, $0; sep=",\n" }'
        
        [{"IMAGE":"frooodle/s-pdf:latest","STATUS":"Up","LAUFZEIT":"45 hours","STATUS2":"","CREATED":"2024-01-10 03:00:35 +0100 CET","NAME":"Stirling_PDF"},
        {"IMAGE":"jc21/nginx-proxy-manager:latest","STATUS":"Up","LAUFZEIT":"3 days","STATUS2":"","CREATED":"2024-01-08 03:01:12 +0100 CET","NAME":"nginx"},
        {"IMAGE":"linuxserver/heimdall:latest","STATUS":"Up","LAUFZEIT":"About an","STATUS2":"hour","CREATED":"2024-01-06 03:00:41 +0100 CET","NAME":"heimdall"},
        {"IMAGE":"postgres:14-alpine","STATUS":"Up","LAUFZEIT":"5 days","STATUS2":"","CREATED":"2024-01-06 03:00:35 +0100 CET","NAME":"planka_db"},
        {"IMAGE":"jc21/mariadb-aria:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-26 23:05:46 +0100 CET","NAME":"nginx_db"},
        {"IMAGE":"ghcr.io/plankanban/planka:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-21 03:00:44 +0100 CET","NAME":"planka"},
        {"IMAGE":"containrrr/watchtower","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"(healthy)","CREATED":"2023-12-13 20:15:38 +0100 CET","NAME":"WatchTower"},
        {"IMAGE":"portainer/portainer-ce:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-13 20:01:09 +0100 CET","NAME":"portainer"}]
        

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen fĂŒr eure Visualisierung klick

        1 Antwort Letzte Antwort
        0
        • David G.D David G.

          Hallo,

          hat jemand ein Script am laufen um seine Docker Container abzufragen und um deren Status zu sehen?

          Ich nutze Portainer. Da gibt's ja eine Api.
          Nur da reichen meine Skills leider nicht (zumindest so lange Blockly kein http post kann)^^.

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #4

          @david-g

          um die frage nach der API noch zu vervollstÀndigen hier ein javascript um den containerstatus abzufragen

          const axios = require('axios').default;
          
          
          (async ()=>{
              let domain="http://192.168.1.61:9100";
              let environment="1";
              let containerid="0726906071e2470ac11c7fc031759e59a43163c75a6932adb36be93977cdfd81";
              let token="ptr_rNn6d/Z/JcOCLA7UV0jNRLqEUiDCGHew4Dr5OCtax0g=";
              console.log(await health(domain,environment,containerid,token));
          }
          )();
          
          async function health(domain,environment,containerid,token) {
              let url = `${domain}/api/endpoints/${environment}/docker/containers/${containerid}/json`;
              try {
                  let reponse = await axios.get(url,{
                      responseType: 'json',
                      headers: {"X-API-Key":token}
                  });
                  return reponse.data.State.Health.Status=="healthy";
              } catch (error) {
                  console.error(error);
              }
          }
          
          

          fĂŒr die funktion muss man ein paar parameter vorbereiten

          1. domain = die adresse eures portainers mit protokoll und port
          2. environment = meist nur 1 ihr könnt diesen wert ebenfalls aus der browseradresse des containers ablesen bspws hier ist es der nÀchste parameter nach #! http://192.168.1.61:9100/#!/1/docker/....., also 1
          3. containerID = diesen wert könnt ihr aus der browseradresse ablesen, wenn ihr in portainer euch den container anschaut
          4. der portainer mĂŒsst ihr euch einmalig fĂŒr euren user generieren
          • oben rechts auf euren usernamen klicken
          • my account auswĂ€hlen
          • im abschnitt Access tokens euch einen generieren
          • den wert sofort kopieren und im skript eintragen. ihr könnt den wert nur einmal anschauen

          das RĂŒckgabeobjekt reponse.data in der funktion health enthĂ€lt natĂŒrlich noch eine menge mehr informationen, die ihr so entsprechend auslesen könnt

          die containerid per api ĂŒber den containernamen ermitteln mĂŒsste theoretisch auch funktionieren. mehr dazu in der doku https://docs.portainer.io/api/examples#list-all-containers

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          GlasfaserG 1 Antwort Letzte Antwort
          1
          • OliverIOO OliverIO

            @david-g

            um die frage nach der API noch zu vervollstÀndigen hier ein javascript um den containerstatus abzufragen

            const axios = require('axios').default;
            
            
            (async ()=>{
                let domain="http://192.168.1.61:9100";
                let environment="1";
                let containerid="0726906071e2470ac11c7fc031759e59a43163c75a6932adb36be93977cdfd81";
                let token="ptr_rNn6d/Z/JcOCLA7UV0jNRLqEUiDCGHew4Dr5OCtax0g=";
                console.log(await health(domain,environment,containerid,token));
            }
            )();
            
            async function health(domain,environment,containerid,token) {
                let url = `${domain}/api/endpoints/${environment}/docker/containers/${containerid}/json`;
                try {
                    let reponse = await axios.get(url,{
                        responseType: 'json',
                        headers: {"X-API-Key":token}
                    });
                    return reponse.data.State.Health.Status=="healthy";
                } catch (error) {
                    console.error(error);
                }
            }
            
            

            fĂŒr die funktion muss man ein paar parameter vorbereiten

            1. domain = die adresse eures portainers mit protokoll und port
            2. environment = meist nur 1 ihr könnt diesen wert ebenfalls aus der browseradresse des containers ablesen bspws hier ist es der nÀchste parameter nach #! http://192.168.1.61:9100/#!/1/docker/....., also 1
            3. containerID = diesen wert könnt ihr aus der browseradresse ablesen, wenn ihr in portainer euch den container anschaut
            4. der portainer mĂŒsst ihr euch einmalig fĂŒr euren user generieren
            • oben rechts auf euren usernamen klicken
            • my account auswĂ€hlen
            • im abschnitt Access tokens euch einen generieren
            • den wert sofort kopieren und im skript eintragen. ihr könnt den wert nur einmal anschauen

            das RĂŒckgabeobjekt reponse.data in der funktion health enthĂ€lt natĂŒrlich noch eine menge mehr informationen, die ihr so entsprechend auslesen könnt

            die containerid per api ĂŒber den containernamen ermitteln mĂŒsste theoretisch auch funktionieren. mehr dazu in der doku https://docs.portainer.io/api/examples#list-all-containers

            GlasfaserG Offline
            GlasfaserG Offline
            Glasfaser
            schrieb am zuletzt editiert von Glasfaser
            #5

            @oliverio sagte in Status der Docker Container Abfragen:

            um die frage nach der API noch zu vervollstÀndigen

            Cooler Vorschlag .... kann man viel mit spielen :)

            zu /containers/json ,

            f9a8ebb6-ea81-4102-af87-0ebcee988488-grafik.png
            .hier ist auch die Liste dazu :

            https://docs.docker.com/engine/api/v1.41/#tag/Container/operation/ContainerInspect

            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

            1 Antwort Letzte Antwort
            1
            • David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #6

              Hier mein aktueller Stand.

              Screenshot_20240114_114728_Fully Kiosk Browser.jpg

              Beim Namen kann man sich ĂŒber den Pfeil das Image anzeigen lassen.

              Beim Status falls vorhanden, noch weitere Infos. Ebenfalls ĂŒber den Pfeil.

              L. Update, zeigt wann der Container zuletzt aktualisiert worden ist. So bekommt man auch mit, wenn der Dev da die Updates eingestellt hat. (Ich kĂŒmmere mich nicht selber nicht um die Updates, das macht bei mir WatchTower).

              EDIT:
              Hab die Tabelle nochmal ziemlich ĂŒberarbeitet.
              Hab sie jetzt unter dem Link in meiner Signatur bereitgestellt.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen fĂŒr eure Visualisierung klick

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                ToK
                schrieb am zuletzt editiert von
                #7

                @oliverio, @glasfaser - Danke, fĂŒr eure Skripte.
                Bei einem Raspi 5 mit 6 Portainer Container, wobei in einem Container der ioBroker lÀuft, möchte ich einen Container-Status auslesen.
                Entsprechend eurem Post "OliverIO schrieb am 13. Jan. 2024, 19:16" versuche ich den Staus der Container in einem ioBroker JS Skript auszulesen.
                Die unter den Punkten 1 bis 4 angefĂŒhrten Anpassungen sind umgesetzt:

                const axios = require('axios').default; 
                 
                (async ()=>{
                    let domain="http://192.168.xxx.xxx:9443";  <= link zum Portainer Container
                    let environment="2";
                    let containerid="hier-steht-die-Container-id";
                    let token="hier-steht-der-ptr_token";
                    console.log(await health(domain,environment,containerid,token));
                }
                )();
                 
                async function health(domain,environment,containerid,token) {
                    let url = `${domain}/api/endpoints/${environment}/docker/containers/${containerid}/json`;
                    try {
                        let reponse = await axios.get(url,{
                            responseType: 'json',
                            headers: {"X-API-Key":token}
                        });
                        return reponse.data.Config.Hostname;
                    } catch (error) {
                        console.error(error);
                    }
                }
                
                

                Bekomme hiermit folgende Fehlermeldungen:

                AxiosError: Request failed with status code 400
                    at settle (/opt/iobroker/node_modules/axios/lib/core/settle.js:19:12)
                    at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/axios/lib/adapters/http.js:798:11)
                    at IncomingMessage.emit (node:events:531:35)
                    at endReadableNT (node:internal/streams/readable:1698:12)
                    at processTicksAndRejections (node:internal/process/task_queues:90:21)
                    at Axios.request (/opt/iobroker/node_modules/axios/lib/core/Axios.js:45:41)
                    at processTicksAndRejections (node:internal/process/task_queues:105:5)
                    at health (script.js.Portainer_1:17:23)
                    at script.js.Portainer_1:10:17 {
                  isAxiosError: true,
                  code: 'ERR_BAD_REQUEST',
                  config: {
                    transitional: {
                      silentJSONParsing: true,
                      forcedJSONParsing: true,
                      clarifyTimeoutError: false
                    },
                    adapter: [ 'xhr', 'http', 'fetch' ],
                    transformRequest: [ [Function: transformRequest] ],
                    transformResponse: [ [Function: transformResponse] ],
                    timeout: 0,
                    xsrfCookieName: 'XSRF-TOKEN',
                    xsrfHeaderName: 'X-XSRF-TOKEN',
                    maxContentLength: -1,
                    maxBodyLength: -1,
                    env: { FormData: [Function [FormData]], Blob: [class Blob] },
                    validateStatus: [Function: validateStatus],
                    headers: Object [AxiosHeaders] {
                      Accept: 'application/json, text/plain, */*',
                      'Content-Type': undefined,
                      'X-API-Key': '"hier-steht-der-ptr_token"',
                      'User-Agent': 'axios/1.13.4',
                      'Accept-Encoding': 'gzip, compress, deflate, br'
                    },
                    responseType: 'json',
                    method: 'get',
                    url: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                    allowAbsoluteUrls: true,
                    data: undefined
                  },
                  request: <ref *1> ClientRequest {
                    _events: [Object: null prototype] {
                      abort: [Function (anonymous)],
                      aborted: [Function (anonymous)],
                      connect: [Function (anonymous)],
                      error: [Function (anonymous)],
                      socket: [Function (anonymous)],
                      timeout: [Function (anonymous)],
                      finish: [Function: requestOnFinish]
                    },
                    _eventsCount: 7,
                    outputData: [],
                    outputSize: 0,
                    writable: true,
                    destroyed: false,
                    _last: true,
                    chunkedEncoding: false,
                    shouldKeepAlive: false,
                    maxRequestsOnConnectionReached: false,
                    _defaultKeepAlive: true,
                    useChunkedEncodingByDefault: false,
                    sendDate: false,
                    _removedConnection: false,
                    _removedContLen: false,
                    _removedTE: false,
                    strictContentLength: false,
                    _contentLength: 0,
                    _hasBody: true,
                    _trailer: '',
                    finished: true,
                    _headerSent: true,
                    _closed: false,
                    _header: 'GET /api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json HTTP/1.1\r\n' +
                      'Accept: application/json, text/plain, */*\r\n' +
                      'X-API-Key: "hier-steht-der-ptr_token"\r\n' +
                      'User-Agent: axios/1.13.4\r\n' +
                      'Accept-Encoding: gzip, compress, deflate, br\r\n' +
                      'Host: 192.168.100.210:9443\r\n' +
                      'sentry-trace: 301ec8a1aacd413baaf80e975c472092-8492738104ae694b\r\n' +
                      'baggage: sentry-environment=production,sentry-release=iobroker.javascript%409.0.18,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=301ec8a1aacd413baaf80e975c472092\r\n' +
                      'Connection: keep-alive\r\n' +
                      '\r\n',
                    _keepAliveTimeout: 0,
                    _onPendingData: [Function: nop],
                    agent: Agent {
                      _events: [Object: null prototype],
                      _eventsCount: 2,
                      _maxListeners: undefined,
                      options: [Object: null prototype],
                      defaultPort: 80,
                      protocol: 'http:',
                      requests: [Object: null prototype] {},
                      sockets: [Object: null prototype],
                      freeSockets: [Object: null prototype] {},
                      keepAliveMsecs: 1000,
                      keepAlive: true,
                      maxSockets: Infinity,
                      maxFreeSockets: 256,
                      scheduling: 'lifo',
                      maxTotalSockets: Infinity,
                      totalSocketCount: 1,
                      agentKeepAliveTimeoutBuffer: 1000,
                      [Symbol(shapeMode)]: false,
                      [Symbol(kCapture)]: false
                    },
                    socketPath: undefined,
                    method: 'GET',
                    maxHeaderSize: undefined,
                    insecureHTTPParser: undefined,
                    joinDuplicateHeaders: undefined,
                    path: '/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                    _ended: true,
                    res: IncomingMessage {
                      _events: [Object],
                      _readableState: [ReadableState],
                      socket: [Socket],
                      httpVersionMajor: 1,
                      httpVersionMinor: 0,
                      httpVersion: '1.0',
                      complete: true,
                      rawHeaders: [],
                      rawTrailers: [],
                      joinDuplicateHeaders: undefined,
                      aborted: false,
                      upgrade: false,
                      url: '',
                      method: null,
                      statusCode: 400,
                      statusMessage: 'Bad Request',
                      client: [Socket],
                      _consuming: true,
                      _dumped: false,
                      req: [Circular *1],
                      _eventsCount: 4,
                      responseUrl: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      redirects: [],
                      [Symbol(shapeMode)]: true,
                      [Symbol(kCapture)]: false,
                      [Symbol(kHeaders)]: {},
                      [Symbol(kHeadersCount)]: 0,
                      [Symbol(kTrailers)]: null,
                      [Symbol(kTrailersCount)]: 0
                    },
                    aborted: false,
                    timeoutCb: [Function: emitRequestTimeout],
                    upgradeOrConnect: false,
                    parser: null,
                    maxHeadersCount: null,
                    reusedSocket: false,
                    host: '192.168.100.210',
                    protocol: 'http:',
                    _redirectable: Writable {
                      _events: [Object],
                      _writableState: [WritableState],
                      _options: [Object],
                      _ended: true,
                      _ending: true,
                      _redirectCount: 0,
                      _redirects: [],
                      _requestBodyLength: 0,
                      _requestBodyBuffers: [],
                      _eventsCount: 3,
                      _onNativeResponse: [Function (anonymous)],
                      _currentRequest: [Circular *1],
                      _currentUrl: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      _timeout: null,
                      [Symbol(shapeMode)]: true,
                      [Symbol(kCapture)]: false
                    },
                    [Symbol(shapeMode)]: false,
                    [Symbol(kCapture)]: false,
                    [Symbol(kBytesWritten)]: 0,
                    [Symbol(kNeedDrain)]: false,
                    [Symbol(corked)]: 0,
                    [Symbol(kChunkedBuffer)]: [],
                    [Symbol(kChunkedLength)]: 0,
                    [Symbol(kSocket)]: Socket {
                      connecting: false,
                      _hadError: false,
                      _parent: null,
                      _host: null,
                      _closeAfterHandlingError: false,
                      _events: [Object],
                      _readableState: [ReadableState],
                      _writableState: [WritableState],
                      allowHalfOpen: false,
                      _eventsCount: 8,
                      _sockname: null,
                      _pendingData: null,
                      _pendingEncoding: '',
                      server: null,
                      _server: null,
                      timeout: 0,
                      parser: null,
                      _httpMessage: [Circular *1],
                      write: [Function: writeAfterFIN],
                      [Symbol(async_id_symbol)]: 75883994,
                      [Symbol(kHandle)]: null,
                      [Symbol(lastWriteQueueSize)]: 0,
                      [Symbol(timeout)]: Timeout {
                        _idleTimeout: -1,
                        _idlePrev: null,
                        _idleNext: null,
                        _idleStart: 89245129,
                        _onTimeout: null,
                        _timerArgs: undefined,
                        _repeat: null,
                        _destroyed: true,
                        [Symbol(refed)]: false,
                        [Symbol(kHasPrimitive)]: false,
                        [Symbol(asyncId)]: 75883993,
                        [Symbol(triggerId)]: 75883942,
                        [Symbol(kAsyncContextFrame)]: undefined,
                        [Symbol(kResourceStore)]: undefined
                      },
                      [Symbol(kBuffer)]: null,
                      [Symbol(kBufferCb)]: null,
                      [Symbol(kBufferGen)]: null,
                      [Symbol(shapeMode)]: true,
                      [Symbol(kCapture)]: false,
                      [Symbol(kSetNoDelay)]: true,
                      [Symbol(kSetKeepAlive)]: true,
                      [Symbol(kSetKeepAliveInitialDelay)]: 60,
                      [Symbol(kBytesRead)]: 76,
                      [Symbol(kBytesWritten)]: 598
                    },
                    [Symbol(kOutHeaders)]: [Object: null prototype] {
                      accept: [Array],
                      'x-api-key': [Array],
                      'user-agent': [Array],
                      'accept-encoding': [Array],
                      host: [Array],
                      'sentry-trace': [Array],
                      baggage: [Array]
                    },
                    [Symbol(errored)]: null,
                    [Symbol(kHighWaterMark)]: 65536,
                    [Symbol(kRejectNonStandardBodyWrites)]: false,
                    [Symbol(kUniqueHeaders)]: null
                  },
                  response: {
                    status: 400,
                    statusText: 'Bad Request',
                    headers: Object [AxiosHeaders] {},
                    config: {
                      transitional: [Object],
                      adapter: [Array],
                      transformRequest: [Array],
                      transformResponse: [Array],
                      timeout: 0,
                      xsrfCookieName: 'XSRF-TOKEN',
                      xsrfHeaderName: 'X-XSRF-TOKEN',
                      maxContentLength: -1,
                      maxBodyLength: -1,
                      env: [Object],
                      validateStatus: [Function: validateStatus],
                      headers: [Object [AxiosHeaders]],
                      responseType: 'json',
                      method: 'get',
                      url: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      allowAbsoluteUrls: true,
                      data: undefined
                    },
                    request: <ref *1> ClientRequest {
                      _events: [Object: null prototype],
                      _eventsCount: 7,
                      outputData: [],
                      outputSize: 0,
                      writable: true,
                      destroyed: false,
                      _last: true,
                      chunkedEncoding: false,
                      shouldKeepAlive: false,
                      maxRequestsOnConnectionReached: false,
                      _defaultKeepAlive: true,
                      useChunkedEncodingByDefault: false,
                      sendDate: false,
                      _removedConnection: false,
                      _removedContLen: false,
                      _removedTE: false,
                      strictContentLength: false,
                      _contentLength: 0,
                      _hasBody: true,
                      _trailer: '',
                      finished: true,
                      _headerSent: true,
                      _closed: false,
                      _header: 'GET /api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json HTTP/1.1\r\n' +
                        'Accept: application/json, text/plain, */*\r\n' +
                        'X-API-Key: "hier-steht-der-ptr_token"\r\n' +
                        'User-Agent: axios/1.13.4\r\n' +
                        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
                        'Host: 192.168.100.210:9443\r\n' +
                        'sentry-trace: 301ec8a1aacd413baaf80e975c472092-8492738104ae694b\r\n' +
                        'baggage: sentry-environment=production,sentry-release=iobroker.javascript%409.0.18,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=301ec8a1aacd413baaf80e975c472092\r\n' +
                        'Connection: keep-alive\r\n' +
                        '\r\n',
                      _keepAliveTimeout: 0,
                      _onPendingData: [Function: nop],
                      agent: [Agent],
                      socketPath: undefined,
                      method: 'GET',
                      maxHeaderSize: undefined,
                      insecureHTTPParser: undefined,
                      joinDuplicateHeaders: undefined,
                      path: '/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      _ended: true,
                      res: [IncomingMessage],
                      aborted: false,
                      timeoutCb: [Function: emitRequestTimeout],
                      upgradeOrConnect: false,
                      parser: null,
                      maxHeadersCount: null,
                      reusedSocket: false,
                      host: '192.168.xxx.xxx',
                      protocol: 'http:',
                      _redirectable: [Writable],
                      [Symbol(shapeMode)]: false,
                      [Symbol(kCapture)]: false,
                      [Symbol(kBytesWritten)]: 0,
                      [Symbol(kNeedDrain)]: false,
                      [Symbol(corked)]: 0,
                      [Symbol(kChunkedBuffer)]: [],
                      [Symbol(kChunkedLength)]: 0,
                      [Symbol(kSocket)]: [Socket],
                      [Symbol(kOutHeaders)]: [Object: null prototype],
                      [Symbol(errored)]: null,
                      [Symbol(kHighWaterMark)]: 65536,
                      [Symbol(kRejectNonStandardBodyWrites)]: false,
                      [Symbol(kUniqueHeaders)]: null
                    },
                    data: 'Client sent an HTTP request to an HTTPS server.\n'
                  },
                  status: 400
                }
                

                Was lÀuft hier falsch ...

                Marc BergM 1 Antwort Letzte Antwort
                0
                • T ToK

                  @oliverio, @glasfaser - Danke, fĂŒr eure Skripte.
                  Bei einem Raspi 5 mit 6 Portainer Container, wobei in einem Container der ioBroker lÀuft, möchte ich einen Container-Status auslesen.
                  Entsprechend eurem Post "OliverIO schrieb am 13. Jan. 2024, 19:16" versuche ich den Staus der Container in einem ioBroker JS Skript auszulesen.
                  Die unter den Punkten 1 bis 4 angefĂŒhrten Anpassungen sind umgesetzt:

                  const axios = require('axios').default; 
                   
                  (async ()=>{
                      let domain="http://192.168.xxx.xxx:9443";  <= link zum Portainer Container
                      let environment="2";
                      let containerid="hier-steht-die-Container-id";
                      let token="hier-steht-der-ptr_token";
                      console.log(await health(domain,environment,containerid,token));
                  }
                  )();
                   
                  async function health(domain,environment,containerid,token) {
                      let url = `${domain}/api/endpoints/${environment}/docker/containers/${containerid}/json`;
                      try {
                          let reponse = await axios.get(url,{
                              responseType: 'json',
                              headers: {"X-API-Key":token}
                          });
                          return reponse.data.Config.Hostname;
                      } catch (error) {
                          console.error(error);
                      }
                  }
                  
                  

                  Bekomme hiermit folgende Fehlermeldungen:

                  AxiosError: Request failed with status code 400
                      at settle (/opt/iobroker/node_modules/axios/lib/core/settle.js:19:12)
                      at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/axios/lib/adapters/http.js:798:11)
                      at IncomingMessage.emit (node:events:531:35)
                      at endReadableNT (node:internal/streams/readable:1698:12)
                      at processTicksAndRejections (node:internal/process/task_queues:90:21)
                      at Axios.request (/opt/iobroker/node_modules/axios/lib/core/Axios.js:45:41)
                      at processTicksAndRejections (node:internal/process/task_queues:105:5)
                      at health (script.js.Portainer_1:17:23)
                      at script.js.Portainer_1:10:17 {
                    isAxiosError: true,
                    code: 'ERR_BAD_REQUEST',
                    config: {
                      transitional: {
                        silentJSONParsing: true,
                        forcedJSONParsing: true,
                        clarifyTimeoutError: false
                      },
                      adapter: [ 'xhr', 'http', 'fetch' ],
                      transformRequest: [ [Function: transformRequest] ],
                      transformResponse: [ [Function: transformResponse] ],
                      timeout: 0,
                      xsrfCookieName: 'XSRF-TOKEN',
                      xsrfHeaderName: 'X-XSRF-TOKEN',
                      maxContentLength: -1,
                      maxBodyLength: -1,
                      env: { FormData: [Function [FormData]], Blob: [class Blob] },
                      validateStatus: [Function: validateStatus],
                      headers: Object [AxiosHeaders] {
                        Accept: 'application/json, text/plain, */*',
                        'Content-Type': undefined,
                        'X-API-Key': '"hier-steht-der-ptr_token"',
                        'User-Agent': 'axios/1.13.4',
                        'Accept-Encoding': 'gzip, compress, deflate, br'
                      },
                      responseType: 'json',
                      method: 'get',
                      url: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      allowAbsoluteUrls: true,
                      data: undefined
                    },
                    request: <ref *1> ClientRequest {
                      _events: [Object: null prototype] {
                        abort: [Function (anonymous)],
                        aborted: [Function (anonymous)],
                        connect: [Function (anonymous)],
                        error: [Function (anonymous)],
                        socket: [Function (anonymous)],
                        timeout: [Function (anonymous)],
                        finish: [Function: requestOnFinish]
                      },
                      _eventsCount: 7,
                      outputData: [],
                      outputSize: 0,
                      writable: true,
                      destroyed: false,
                      _last: true,
                      chunkedEncoding: false,
                      shouldKeepAlive: false,
                      maxRequestsOnConnectionReached: false,
                      _defaultKeepAlive: true,
                      useChunkedEncodingByDefault: false,
                      sendDate: false,
                      _removedConnection: false,
                      _removedContLen: false,
                      _removedTE: false,
                      strictContentLength: false,
                      _contentLength: 0,
                      _hasBody: true,
                      _trailer: '',
                      finished: true,
                      _headerSent: true,
                      _closed: false,
                      _header: 'GET /api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json HTTP/1.1\r\n' +
                        'Accept: application/json, text/plain, */*\r\n' +
                        'X-API-Key: "hier-steht-der-ptr_token"\r\n' +
                        'User-Agent: axios/1.13.4\r\n' +
                        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
                        'Host: 192.168.100.210:9443\r\n' +
                        'sentry-trace: 301ec8a1aacd413baaf80e975c472092-8492738104ae694b\r\n' +
                        'baggage: sentry-environment=production,sentry-release=iobroker.javascript%409.0.18,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=301ec8a1aacd413baaf80e975c472092\r\n' +
                        'Connection: keep-alive\r\n' +
                        '\r\n',
                      _keepAliveTimeout: 0,
                      _onPendingData: [Function: nop],
                      agent: Agent {
                        _events: [Object: null prototype],
                        _eventsCount: 2,
                        _maxListeners: undefined,
                        options: [Object: null prototype],
                        defaultPort: 80,
                        protocol: 'http:',
                        requests: [Object: null prototype] {},
                        sockets: [Object: null prototype],
                        freeSockets: [Object: null prototype] {},
                        keepAliveMsecs: 1000,
                        keepAlive: true,
                        maxSockets: Infinity,
                        maxFreeSockets: 256,
                        scheduling: 'lifo',
                        maxTotalSockets: Infinity,
                        totalSocketCount: 1,
                        agentKeepAliveTimeoutBuffer: 1000,
                        [Symbol(shapeMode)]: false,
                        [Symbol(kCapture)]: false
                      },
                      socketPath: undefined,
                      method: 'GET',
                      maxHeaderSize: undefined,
                      insecureHTTPParser: undefined,
                      joinDuplicateHeaders: undefined,
                      path: '/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                      _ended: true,
                      res: IncomingMessage {
                        _events: [Object],
                        _readableState: [ReadableState],
                        socket: [Socket],
                        httpVersionMajor: 1,
                        httpVersionMinor: 0,
                        httpVersion: '1.0',
                        complete: true,
                        rawHeaders: [],
                        rawTrailers: [],
                        joinDuplicateHeaders: undefined,
                        aborted: false,
                        upgrade: false,
                        url: '',
                        method: null,
                        statusCode: 400,
                        statusMessage: 'Bad Request',
                        client: [Socket],
                        _consuming: true,
                        _dumped: false,
                        req: [Circular *1],
                        _eventsCount: 4,
                        responseUrl: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                        redirects: [],
                        [Symbol(shapeMode)]: true,
                        [Symbol(kCapture)]: false,
                        [Symbol(kHeaders)]: {},
                        [Symbol(kHeadersCount)]: 0,
                        [Symbol(kTrailers)]: null,
                        [Symbol(kTrailersCount)]: 0
                      },
                      aborted: false,
                      timeoutCb: [Function: emitRequestTimeout],
                      upgradeOrConnect: false,
                      parser: null,
                      maxHeadersCount: null,
                      reusedSocket: false,
                      host: '192.168.100.210',
                      protocol: 'http:',
                      _redirectable: Writable {
                        _events: [Object],
                        _writableState: [WritableState],
                        _options: [Object],
                        _ended: true,
                        _ending: true,
                        _redirectCount: 0,
                        _redirects: [],
                        _requestBodyLength: 0,
                        _requestBodyBuffers: [],
                        _eventsCount: 3,
                        _onNativeResponse: [Function (anonymous)],
                        _currentRequest: [Circular *1],
                        _currentUrl: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                        _timeout: null,
                        [Symbol(shapeMode)]: true,
                        [Symbol(kCapture)]: false
                      },
                      [Symbol(shapeMode)]: false,
                      [Symbol(kCapture)]: false,
                      [Symbol(kBytesWritten)]: 0,
                      [Symbol(kNeedDrain)]: false,
                      [Symbol(corked)]: 0,
                      [Symbol(kChunkedBuffer)]: [],
                      [Symbol(kChunkedLength)]: 0,
                      [Symbol(kSocket)]: Socket {
                        connecting: false,
                        _hadError: false,
                        _parent: null,
                        _host: null,
                        _closeAfterHandlingError: false,
                        _events: [Object],
                        _readableState: [ReadableState],
                        _writableState: [WritableState],
                        allowHalfOpen: false,
                        _eventsCount: 8,
                        _sockname: null,
                        _pendingData: null,
                        _pendingEncoding: '',
                        server: null,
                        _server: null,
                        timeout: 0,
                        parser: null,
                        _httpMessage: [Circular *1],
                        write: [Function: writeAfterFIN],
                        [Symbol(async_id_symbol)]: 75883994,
                        [Symbol(kHandle)]: null,
                        [Symbol(lastWriteQueueSize)]: 0,
                        [Symbol(timeout)]: Timeout {
                          _idleTimeout: -1,
                          _idlePrev: null,
                          _idleNext: null,
                          _idleStart: 89245129,
                          _onTimeout: null,
                          _timerArgs: undefined,
                          _repeat: null,
                          _destroyed: true,
                          [Symbol(refed)]: false,
                          [Symbol(kHasPrimitive)]: false,
                          [Symbol(asyncId)]: 75883993,
                          [Symbol(triggerId)]: 75883942,
                          [Symbol(kAsyncContextFrame)]: undefined,
                          [Symbol(kResourceStore)]: undefined
                        },
                        [Symbol(kBuffer)]: null,
                        [Symbol(kBufferCb)]: null,
                        [Symbol(kBufferGen)]: null,
                        [Symbol(shapeMode)]: true,
                        [Symbol(kCapture)]: false,
                        [Symbol(kSetNoDelay)]: true,
                        [Symbol(kSetKeepAlive)]: true,
                        [Symbol(kSetKeepAliveInitialDelay)]: 60,
                        [Symbol(kBytesRead)]: 76,
                        [Symbol(kBytesWritten)]: 598
                      },
                      [Symbol(kOutHeaders)]: [Object: null prototype] {
                        accept: [Array],
                        'x-api-key': [Array],
                        'user-agent': [Array],
                        'accept-encoding': [Array],
                        host: [Array],
                        'sentry-trace': [Array],
                        baggage: [Array]
                      },
                      [Symbol(errored)]: null,
                      [Symbol(kHighWaterMark)]: 65536,
                      [Symbol(kRejectNonStandardBodyWrites)]: false,
                      [Symbol(kUniqueHeaders)]: null
                    },
                    response: {
                      status: 400,
                      statusText: 'Bad Request',
                      headers: Object [AxiosHeaders] {},
                      config: {
                        transitional: [Object],
                        adapter: [Array],
                        transformRequest: [Array],
                        transformResponse: [Array],
                        timeout: 0,
                        xsrfCookieName: 'XSRF-TOKEN',
                        xsrfHeaderName: 'X-XSRF-TOKEN',
                        maxContentLength: -1,
                        maxBodyLength: -1,
                        env: [Object],
                        validateStatus: [Function: validateStatus],
                        headers: [Object [AxiosHeaders]],
                        responseType: 'json',
                        method: 'get',
                        url: 'http://192.168.xxx.xxx:9443/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                        allowAbsoluteUrls: true,
                        data: undefined
                      },
                      request: <ref *1> ClientRequest {
                        _events: [Object: null prototype],
                        _eventsCount: 7,
                        outputData: [],
                        outputSize: 0,
                        writable: true,
                        destroyed: false,
                        _last: true,
                        chunkedEncoding: false,
                        shouldKeepAlive: false,
                        maxRequestsOnConnectionReached: false,
                        _defaultKeepAlive: true,
                        useChunkedEncodingByDefault: false,
                        sendDate: false,
                        _removedConnection: false,
                        _removedContLen: false,
                        _removedTE: false,
                        strictContentLength: false,
                        _contentLength: 0,
                        _hasBody: true,
                        _trailer: '',
                        finished: true,
                        _headerSent: true,
                        _closed: false,
                        _header: 'GET /api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json HTTP/1.1\r\n' +
                          'Accept: application/json, text/plain, */*\r\n' +
                          'X-API-Key: "hier-steht-der-ptr_token"\r\n' +
                          'User-Agent: axios/1.13.4\r\n' +
                          'Accept-Encoding: gzip, compress, deflate, br\r\n' +
                          'Host: 192.168.100.210:9443\r\n' +
                          'sentry-trace: 301ec8a1aacd413baaf80e975c472092-8492738104ae694b\r\n' +
                          'baggage: sentry-environment=production,sentry-release=iobroker.javascript%409.0.18,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=301ec8a1aacd413baaf80e975c472092\r\n' +
                          'Connection: keep-alive\r\n' +
                          '\r\n',
                        _keepAliveTimeout: 0,
                        _onPendingData: [Function: nop],
                        agent: [Agent],
                        socketPath: undefined,
                        method: 'GET',
                        maxHeaderSize: undefined,
                        insecureHTTPParser: undefined,
                        joinDuplicateHeaders: undefined,
                        path: '/api/endpoints/2/docker/containers/"hier-steht-die-containerid"/json',
                        _ended: true,
                        res: [IncomingMessage],
                        aborted: false,
                        timeoutCb: [Function: emitRequestTimeout],
                        upgradeOrConnect: false,
                        parser: null,
                        maxHeadersCount: null,
                        reusedSocket: false,
                        host: '192.168.xxx.xxx',
                        protocol: 'http:',
                        _redirectable: [Writable],
                        [Symbol(shapeMode)]: false,
                        [Symbol(kCapture)]: false,
                        [Symbol(kBytesWritten)]: 0,
                        [Symbol(kNeedDrain)]: false,
                        [Symbol(corked)]: 0,
                        [Symbol(kChunkedBuffer)]: [],
                        [Symbol(kChunkedLength)]: 0,
                        [Symbol(kSocket)]: [Socket],
                        [Symbol(kOutHeaders)]: [Object: null prototype],
                        [Symbol(errored)]: null,
                        [Symbol(kHighWaterMark)]: 65536,
                        [Symbol(kRejectNonStandardBodyWrites)]: false,
                        [Symbol(kUniqueHeaders)]: null
                      },
                      data: 'Client sent an HTTP request to an HTTPS server.\n'
                    },
                    status: 400
                  }
                  

                  Was lÀuft hier falsch ...

                  Marc BergM Online
                  Marc BergM Online
                  Marc Berg
                  Most Active
                  schrieb am zuletzt editiert von Marc Berg
                  #8

                  @ToK sagte in Status der Docker Container Abfragen:

                  let domain="http://192.168.xxx.xxx:9443

                  der Port 9443 ist der SSL verschlĂŒsselte.

                  Also entweder

                  let domain="https://192.168.xxx.xxx:9443

                  oder

                  let domain="http://192.168.xxx.xxx:9000 (oder welcher Port auch immer bei dir unverschlĂŒsselt ist)

                  NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                  Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                  Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    ToK
                    schrieb am zuletzt editiert von
                    #9

                    @Marc Berg
                    Danke fĂŒr den Hinweis! Im Portainer Container habe ich nur den HTTPS Port 9443 aktiviert - leider nicht auch den Port 9000.
                    Mit let domain="https://192.168.xxx.xxx:9443"; erhalte ich jetzt die Fehlermeldung => AxiosError: self-signed certificate
                    Dies lĂ€sst sich zwar mit einem HĂ€kchen unter der Instanz javascript deaktivieren - aber gibt es hierfĂŒr nicht einen besseren bzw. sicheren Weg unter JavaScript - eben fĂŒr diese Funktion self-signed certificate zulassen?
                    VorĂŒbergehend teste ich mit dem aktivierten HĂ€kchen weiter und der Skript lĂ€uft ohne Fehlermeldung durch - aber return liefert mit nur "false" als Ergebnis - wobei der Container definitiv "healthy" ist und somit der Status "true" sein sollte ... ?

                    OliverIOO 1 Antwort Letzte Antwort
                    0
                    • T ToK

                      @Marc Berg
                      Danke fĂŒr den Hinweis! Im Portainer Container habe ich nur den HTTPS Port 9443 aktiviert - leider nicht auch den Port 9000.
                      Mit let domain="https://192.168.xxx.xxx:9443"; erhalte ich jetzt die Fehlermeldung => AxiosError: self-signed certificate
                      Dies lĂ€sst sich zwar mit einem HĂ€kchen unter der Instanz javascript deaktivieren - aber gibt es hierfĂŒr nicht einen besseren bzw. sicheren Weg unter JavaScript - eben fĂŒr diese Funktion self-signed certificate zulassen?
                      VorĂŒbergehend teste ich mit dem aktivierten HĂ€kchen weiter und der Skript lĂ€uft ohne Fehlermeldung durch - aber return liefert mit nur "false" als Ergebnis - wobei der Container definitiv "healthy" ist und somit der Status "true" sein sollte ... ?

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von
                      #10

                      @ToK

                      Welche Sicherheit erhoffst du dir denn von HTTPS im LAN?
                      Hast du jemanden mit Router Zugriff, der den ganzen Verkehr mitschneidet und analysiert?
                      Ssl macht meiner Meinung nach nur im Internet Sinn.

                      Aber wenn du es dennoch unnötig kompliziert machen möchtest, gÀbe es die folgende Methode:
                      Dem axios Aufruf das Public Zertifikat deines selbst signierten SchlĂŒssels mitgeben

                      Oder

                      die ÜberprĂŒfung des SSLschlĂŒssels fĂŒhr den request abschalten.

                      Beides sind ein wenig mehr Zeilen Code

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        ToK
                        schrieb am zuletzt editiert von
                        #11

                        Korrektur bzw. ErgÀnzung zum letzten Post von gestern
                        Der oben angefĂŒhrte javascript lĂ€uft in einem Blockly "JS-Funktion mit Ergebnis" und lautet "Status".
                        Das "return reponse.data.State.Health.State=="healthy" sollte als Ergebnis true oder false liefern - bekomme im Debus (Info) aber die Meldung "undefined"
                        Ersuche um eure UnterstĂŒtzung

                        1 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        505

                        Online

                        32.9k

                        Benutzer

                        83.2k

                        Themen

                        1.3m

                        BeitrÀge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2026
                        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