Weiter zum Inhalt

ioBroker Allgemein

29.9k Themen 440.7k Beiträge
Integrationtsplattform für IoT

NEWS

  • Taico Batterie über iobroker auslesen

    3
    0 Stimmen
    3 Beiträge
    484 Aufrufe
    G
    Hallo Stefan, ich stand vor dem gleichen Problem und die Software von Taico hat mich nach nun über einem Jahr Nervenkosten zur "Eigenentwicklung" mit KI Unterstützung gebracht. Hier mein aktuelles Github dazu. Ich habe gestern angefangen und der aktuelle Stand ist schon ordentlich. https://github.com/Gesiima/taico-bms-unleashed/tree/main Die Integration in iobroker läuft einfach per MQTT [image: 1782677953026-e56e6071-e614-4eaa-86ec-c84cbaffc44e-image.jpeg] [image: 1782677970034-eff14f06-e1d0-40c1-8fd6-5b6a326c68db-image.jpeg] [image: 1782678043575-b20b99d0-3cc6-42ff-a2f9-9089b8f31db3-image.jpeg]
  • Erfahrungen mit Alexa+?

    42
    0 Stimmen
    42 Beiträge
    2k Aufrufe
    RoboCopR
    Meine Aqara WSDCGQ11LM Temperature and humidity sensor übernehmen nicht mehr die "aktuellen Temperaturen". Die Sensoren sind in IOT verknüpft, und neue werden nicht mehr in Alexa 2.0 verbunden.
  • Matter Adapter und SLZB-MR4U als OBTR

    9
    0 Stimmen
    9 Beiträge
    350 Aufrufe
    apollon77A
    @maloross sagte: @apollon77 sagte: "OPerational Dataset" ... oist auch ein langer Hex-String Innerhalb der BLE-Konfiguration werden im Matter-Adapter vorab WLAN-Einstellungen (kenn ich) und Bluetooth HCI ID (daran bin ich gescheitert) abgefragt. Als Dataset habe ich die Hex-Zahl aus dem MR5u angegeben. Danach war der Matter-Adapter lange Zeit am suchen - nach 5 Minuten habe ich das dann abgebrochen. Dann müsster man log schauen bzw das TLV mal genau checken ob das das richtige ist. Naja in ner woche habich meine Geräte ud ich schaue selbst
  • nach Update kann IOB nicht mehr starten....

    3
    0 Stimmen
    3 Beiträge
    125 Aufrufe
    Thomas BraunT
    @ralle Und wenn der user anleget ist, die Kiste einmal sauber neugestartet wurde schaust du dir den Output von iob diag an. Vermutlich liegt da noch mehr im Argen.
  • TibberLink Adapter

    650
    1 Stimmen
    650 Beiträge
    270k Aufrufe
    C
    @TobW also bei mir wird noch immer kein live Meassurement Wert geliefert. 2026-06-28 10:21:34.627 - info: host.raspberrypi instance system.adapter.tibberlink.0 in version "7.1.3" started with pid 79766 2026-06-28 10:21:39.179 - info: tibberlink.0 (79766) starting. Version 7.1.3 in /opt/iobroker/node_modules/iobroker.tibberlink, node: v22.22.2, js-controller: 7.2.2 2026-06-28 10:21:40.276 - info: tibberlink.0 (79766) Tibber Data API: vehicle polling started every 5 minute(s) 2026-06-28 10:22:39.805 - warn: tibberlink.0 (79766) Error on Tibber feed: Unknown error 2026-06-28 10:22:39.807 - warn: tibberlink.0 (79766) [tibberPulse]: received null liveMeasurement from Tibber feed — skipping 2026-06-28 10:24:39.619 - warn: tibberlink.0 (79766) Error on Tibber feed: Unknown error 2026-06-28 10:24:39.620 - warn: tibberlink.0 (79766) [tibberPulse]: received null liveMeasurement from Tibber feed — skipping 2026-06-28 10:26:39.698 - warn: tibberlink.0 (79766) Error on Tibber feed: Unknown error 2026-06-28 10:26:39.699 - warn: tibberlink.0 (79766) [tibberPulse]: received null liveMeasurement from Tibber feed — skipping 2026-06-28 10:28:40.074 - warn: tibberlink.0 (79766) Error on Tibber feed: Unknown error 2026-06-28 10:28:40.075 - warn: tibberlink.0 (79766) [tibberPulse]: received null liveMeasurement from Tibber feed — skipping 2026-06-28 10:30:39.536 - warn: tibberlink.0 (79766) Error on Tibber feed: Unknown error 2026-06-28 10:30:39.537 - warn: tibberlink.0 (79766) [tibberPulse]: received null liveMeasurement from Tibber feed — skipping 2026-06-28 10:31:39.540 - warn: tibberlink.0 (79766) A feed was disconnected very often. I keep trying to reconnect with incremental delay - Error text sent by Tibber: Disconnected from Tibber feed. Funktioniert der Adapter bei dir? Ich habe den Log-Auszug mal bei github zu dem issue angehängt.
  • echarts: Label um 90° drehen

    echarts
    2
    1
    0 Stimmen
    2 Beiträge
    124 Aufrufe
    M
    @WG25 Das kann man nur mit flexCharts machen. flexCharts installieren Skript in javascript einfügen, HISTORY und DATA_POINT anpassen, Skript starten Aufruf im Browser mit der unteren Adresse (Protocoll und IP anpassen) Beispiel Skript in javascript einfügen Skript für javascript // --------------------------------------------------------- // Einstellungen // --------------------------------------------------------- const HISTORY_INSTANCE = 'history.0'; // Hier den festen Datenpunkt eintragen const DATA_POINT = 'DEIN DATENPUNKT MIT HISTORY'; // Name für den Flexcharts-Aufruf const MESSAGE_NAME = 'verbrauchHistory'; // Anzahl der angezeigten Kalendertage const DAYS = 14; // Ein aggregierter History-Wert pro Tag const STEP_MS = 24 * 60 * 60 * 1000; // Anzahl der Nachkommastellen const DECIMALS = 2; // Diagrammüberschrift const TITLE = `Verbrauch der letzten ${DAYS} Tage`; // --------------------------------------------------------- // Einheit sicher aus common.unit lesen // --------------------------------------------------------- function getDataPointUnit(id) { const object = getObject(id); if (!object) { console.warn(`Das Objekt ${id} wurde nicht gefunden.`); return ''; } if (object.type !== 'state') { console.warn( `${id} ist kein State, sondern vom Typ "${object.type}".` ); return ''; } /* * Reflect.get vermeidet den Typfehler des Editors. * Es wird damit object.common.unit gelesen. */ const unit = Reflect.get(object.common, 'unit'); return typeof unit === 'string' ? unit.trim() : ''; } const UNIT = getDataPointUnit(DATA_POINT); if (UNIT) { console.info( `Einheit von ${DATA_POINT}: ${UNIT}` ); } else { console.warn( `Für ${DATA_POINT} wurde keine Einheit gefunden.` ); } // --------------------------------------------------------- // Zahlenwert deutsch formatieren // --------------------------------------------------------- function formatNumber(value) { const number = Number(value); if (!Number.isFinite(number)) { return ''; } return number.toLocaleString('de-DE', { minimumFractionDigits: DECIMALS, maximumFractionDigits: DECIMALS }); } // --------------------------------------------------------- // Zahlenwert mit Einheit formatieren // --------------------------------------------------------- function formatValue(value) { const formattedNumber = formatNumber(value); if (!formattedNumber) { return ''; } return UNIT ? `${formattedNumber} ${UNIT}` : formattedNumber; } // --------------------------------------------------------- // Flexcharts-Anfrage empfangen // --------------------------------------------------------- onMessage(MESSAGE_NAME, (_httpParams, callback) => { const end = Date.now(); /* * Beginn des ersten angezeigten Tages auf * 00:00 Uhr setzen. */ const startDate = new Date(); startDate.setHours(0, 0, 0, 0); startDate.setDate( startDate.getDate() - (DAYS - 1) ); const start = startDate.getTime(); getHistory( HISTORY_INSTANCE, { id: DATA_POINT, start: start, end: end, /* * Tagesmaximum: * * Geeignet für einen Tageszähler, der während * des Tages hochzählt und nachts zurückgesetzt wird. */ aggregate: 'max', // Ein Wert pro Tag step: STEP_MS, timeout: 10000, // Keine zusätzlichen Werte außerhalb des Zeitraums removeBorderValues: true, // Fehlende Werte nicht künstlich auffüllen ignoreNull: false }, (error, result) => { if (error) { console.error( `History-Fehler bei ${DATA_POINT}: ` + JSON.stringify(error) ); callback( createErrorChart( 'Die History-Daten konnten nicht geladen werden.' ) ); return; } if (!Array.isArray(result) || result.length === 0) { callback( createErrorChart( 'Für den gewählten Zeitraum wurden keine Daten gefunden.' ) ); return; } const historyData = result .filter(item => { const timestamp = Number(item?.ts); return ( Number.isFinite(timestamp) && timestamp >= start && timestamp <= end ); }) .sort((a, b) => { return Number(a.ts) - Number(b.ts); }); if (historyData.length === 0) { callback( createErrorChart( 'Es wurden keine gültigen History-Einträge gefunden.' ) ); return; } const labels = []; const seriesData = []; for (const item of historyData) { const timestamp = Number(item.ts); const date = new Date(timestamp); labels.push( date.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit' }) ); if ( item.val === null || item.val === undefined || item.val === '' ) { seriesData.push({ value: null, label: { show: false } }); continue; } const value = Number(item.val); if (!Number.isFinite(value)) { seriesData.push({ value: null, label: { show: false } }); continue; } const roundedValue = Number( value.toFixed(DECIMALS) ); /* * Der fertige Beschriftungstext wird direkt * am jeweiligen Datenwert gespeichert. * * Dadurch ist keine JavaScript-Formatterfunktion * innerhalb des ECharts-Objekts erforderlich. */ seriesData.push({ value: roundedValue, label: { formatter: formatValue(roundedValue) } }); } const hasValidValues = seriesData.some(item => { return item.value !== null; }); if (!hasValidValues) { callback( createErrorChart( 'Für die ausgewählten Tage wurden keine Zahlenwerte gefunden.' ) ); return; } const seriesName = UNIT ? `Verbrauch (${UNIT})` : 'Verbrauch'; const option = { backgroundColor: 'transparent', textStyle: { fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal' }, title: { text: TITLE, left: 'center', textStyle: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'bold', fontSize: 16, textBorderWidth: 0, textShadowBlur: 0 } }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, textStyle: { fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal' } }, grid: { left: 60, right: 30, // Platz für die senkrechten Beschriftungen top: 120, bottom: 70, containLabel: true }, xAxis: { type: 'category', data: labels, axisLabel: { interval: 0, rotate: 0, hideOverlap: true, color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontSize: 11, textBorderWidth: 0, textShadowBlur: 0 }, axisLine: { lineStyle: { color: '#000000' } }, axisTick: { alignWithLabel: true, lineStyle: { color: '#000000' } } }, yAxis: { type: 'value', // Einheit automatisch aus dem Datenpunkt name: UNIT, min: 0, nameTextStyle: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontSize: 12, textBorderWidth: 0, textShadowBlur: 0 }, axisLabel: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontSize: 11, textBorderWidth: 0, textShadowBlur: 0 }, axisLine: { show: true, lineStyle: { color: '#000000' } }, splitLine: { lineStyle: { opacity: 0.25 } } }, dataZoom: [ { type: 'inside', start: 0, end: 100 } ], series: [ { name: seriesName, type: 'bar', data: seriesData, barMaxWidth: 35, label: { show: true, // Wert um 90 Grad drehen rotate: 90, // Wert oberhalb des Balkens anzeigen position: 'top', distance: 8, align: 'left', verticalAlign: 'middle', // Schwarze Schrift color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'bold', fontSize: 12, // Keine Textumrandung textBorderWidth: 0, textBorderColor: 'transparent', // Kein Texthintergrund backgroundColor: 'transparent', borderWidth: 0, // Kein Textschatten textShadowBlur: 0, textShadowColor: 'transparent', textShadowOffsetX: 0, textShadowOffsetY: 0 }, itemStyle: { borderRadius: [4, 4, 0, 0] }, emphasis: { label: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'bold', textBorderWidth: 0, textBorderColor: 'transparent', backgroundColor: 'transparent', borderWidth: 0, textShadowBlur: 0, textShadowColor: 'transparent' } } } ] }; callback(option); } ); }); // --------------------------------------------------------- // Fehlerdiagramm erzeugen // --------------------------------------------------------- function createErrorChart(message) { return { backgroundColor: 'transparent', textStyle: { fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal' }, title: { text: 'Flexcharts-Fehler', subtext: message, left: 'center', top: 'middle', textStyle: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'bold', textBorderWidth: 0, textShadowBlur: 0 }, subtextStyle: { color: '#000000', fontFamily: 'Arial, sans-serif', fontStyle: 'normal', fontWeight: 'normal', textBorderWidth: 0, textShadowBlur: 0 } }, xAxis: { show: false }, yAxis: { show: false }, series: [] }; } Eintrag im Browser https://192.168.178.150:8082/flexcharts/echarts.html?source=script&message=verbrauchHistory&darkmode=auto
  • [gelöst] Neuer Ordner unter Benutzerdaten

    admin ordner erstellen
    3
    1
    0 Stimmen
    3 Beiträge
    139 Aufrufe
    DolomitiD
    Ah, OK. Danke für den Hinweis. Hab nicht dran gedacht bei den Issues zu schauen. Auf meinem Testsystem mit Admin 7.9.10 geht es. Dann warte ich entweder auf die nächste stable oder stell mal kurz um auf beta.
  • goE-Adapter - Phasenumschaltung ?

    16
    1
    0 Stimmen
    16 Beiträge
    707 Aufrufe
    HumidorH
    hatte da Fehler im blockly, aktuell läuft das mit der httpGet Variante.
  • Update auf Node.js 22.x / Webinterface nicht erreichbar

    61
    0 Stimmen
    61 Beiträge
    3k Aufrufe
    Thomas BraunT
    @arnold Versuch es mal mit iob nodejs-update 22 Aber ich vermute, du musst das System neu aufsetzen, weil du da ein 32bit-Setup fährst.
  • Tankerkönig schweigt seit 7.3.26

    11
    0 Stimmen
    11 Beiträge
    617 Aufrufe
    H
    Ich habe gerade mal nachgeschaut, löppt wieder.
  • Seit Controller Update viele Fehler

    24
    0 Stimmen
    24 Beiträge
    1k Aufrufe
    mcm1957M
    Da sieht eher nach 'nem bug in hm-rpc aus ..
  • influxdb - Datenhunger? bei 143 DP - 3MB/s ??

    45
    1
    0 Stimmen
    45 Beiträge
    2k Aufrufe
    HumidorH
    die 20MB/s kommen aktuell nicht mehr, ich habe allerdings auch massive Beschränkungen bei der Aufzeichnung im Influx gemacht. im Schnitt würde ich sagen 1MB/s auf den SSD im NAS, das geht würd ich meinen [image: 1782277750197-bildschirmfoto-2026-06-24-um-07.08.08.png]
  • TIPP - ioBroker Web-UI Seitenleiste weiß (Firefox)

    1
    1
    0 Stimmen
    1 Beiträge
    89 Aufrufe
    Niemand hat geantwortet
  • Datenpunkt zeigt History Wert nur für aktuellen Tag

    4
    0 Stimmen
    4 Beiträge
    153 Aufrufe
    mcm1957M
    Soweit ich weiß ja. Es geht nicht um die Aufzeichnung - da gibts kein Limit (abgesehen vom Speicherplatz). Es geht nur um die Anzeige direkt im Admin. Gibt aber wahrscheinlich kompetentere Leute dir genaueres sagen können. (1x Minute sind ca 8,5h Anzeige wenn ich mich nicht irre). Und ja eine unlimitieret Anzeige ohne eine VIS bauen zu müssen wäre durchaus wünschenwert...
  • ObjectLimit erhöhen [gelöst]

    3
    0 Stimmen
    3 Beiträge
    432 Aufrufe
    J
    Danke, das war's. Deine Bilder haben geholfen. War auf dem falschen Weg, nicht im System, sondern direkt in den alexa2 objekten. Und ja ich habe so viele Objekte.
  • "GELÖST" Echarts - keine Oberfläche nach Kopieren

    2
    2
    0 Stimmen
    2 Beiträge
    100 Aufrufe
    S
    Hat sicher erledigt. Ich habe das defekte Present in der Konsole gelöscht: iobroker object delete "echarts.0.Temperatur_Kopieren"
  • Fehlermeldungen modbus > Solaredge

    2
    2
    0 Stimmen
    2 Beiträge
    150 Aufrufe
    M
    Bin ich der einzige mit diesen Problemen?
  • Modbus Solvis Abbrüche

    1
    0 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Anzahl Datenpunkte für einen Adapter erhöhen

    3
    0 Stimmen
    3 Beiträge
    197 Aufrufe
    mcm1957M
    @klassisch Check aber in jedem Fall auch warum der Fronius Adapter so viele States hat. Wenn der Adapter typisch so voiele States haben sollte leg ein Issue beim Adapter an damit der Maintaienr den Defaultwert für das Limit ggF anpassen kann
  • Dringend geforderter Update auf JS Controller 7.2.2

    30
    1
    0 Stimmen
    30 Beiträge
    2k Aufrufe
    Thomas BraunT
    @klassisch javascript latest: 9.3.1 for 3 days stable: 9.0.18 for 5 months Hätte also von schon seit Monaten aktualisiert sein müssen...

308

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge