Skip to content

ioBroker Allgemein

Integrationtsplattform für IoT
29.3k Themen 429.8k Beiträge

NEWS

  • Panasonic Comfort Cloud Adapter läuft nicht

    3
    1
    0 Stimmen
    3 Beiträge
    27 Aufrufe
    I
    2F habe ich nicht aktiviert.
  • No connection to database

    5
    0 Stimmen
    5 Beiträge
    44 Aufrufe
    T
    Danke euch für die Hinweise. Nein Redis verwende ich nicht. Aber tatsächlich habe ich nur auf der produktiven Instanz den VM gestoppt. Die IP ist wahrscheinlich noch reserviert und die neue VM verwendet die gleiche IP
  • Skripte Seite lässt sich nicht öffnen

    5
    1
    0 Stimmen
    5 Beiträge
    54 Aufrufe
    Arne DieckmannA
    Top, Danke. Bin wieder bei 9.0.11, läuft wieder.
  • Shelly Adapter - genereller Support

    mcm1957 shelly
    291
    4 Stimmen
    291 Beiträge
    21k Aufrufe
    D
    Das war es. Vielen Dank für die Hilfe.
  • Ring Adapter aktualisiert keine Datenpunkte

    4
    1
    0 Stimmen
    4 Beiträge
    37 Aufrufe
    Eduard77E
    Tut mir leid, hab ich übersehen.
  • TRMNL Display Adapter

    2
    0 Stimmen
    2 Beiträge
    56 Aufrufe
    P
    Da muss ich hier auch mal nachfragen. Hat da einer schon was mit gemacht? Anscheinend kann man da mit ESP Home was machen, weiß aber nicht ob man Daten aus dem iobroker da anzeigen lassen kann. Aber sonst, ein schönes Epaper das TRMNL 7.5", ne bischen 3D Druck noch und fertig.
  • TibberLink Adapter

    631
    1 Stimmen
    631 Beiträge
    198k Aufrufe
    L
    Hi, falls jemand Interesse hat hier mal zwei Diagramme zum Nachbauen für flexcharts Jahr: // ============================================================================ // Tibber Jahresübersicht + eCharts VIS-Widget // ---------------------------------------------------------------------------- // - Erstellt 12 Datenpunkte für Kosten, Verbrauch, Preis // - Liest tibber Monthly JSON aus // - Ergänzt/überschreibt aktuellen Monat aus 0_userdata-Datenpunkten // - Erstellt eCharts-Konfiguration für VIS // - Tooltip mit 2 Nachkommastellen // ============================================================================ // =================== KONFIG =================== const jsonMonthlyDP = 'tibberlink.0.Homes.xxxxxxxxxxxxx.Consumption.jsonMonthly'; const rootDP = '0_userdata.0.Tibber.Jahreswerte'; const visDP = `${rootDP}.eCharts_Monatsbalken`; // Userdata aktuelle Monatswerte const dpPriceThisMonth = '0_userdata.0.Tibber.AvgUnitPriceThisMonth'; const dpConsThisMonth = '0_userdata.0.Tibber.SumConsumptionThisMonth'; const dpCostThisMonth = '0_userdata.0.Tibber.SumUnitCostThisMonth'; // =================== 12 Monats-Datenpunkte erzeugen =================== function createMonthDPs() { for (let m = 1; m <= 12; m++) { createState(`${rootDP}.Cost.M${m}`, 0, { name: `Kosten Monat ${m}`, type: 'number', unit: '€', role: 'value' }); createState(`${rootDP}.Cons.M${m}`, 0, { name: `Verbrauch Monat ${m}`, type: 'number', unit: 'kWh', role: 'value' }); createState(`${rootDP}.Price.M${m}`,0, { name: `Durchschnittspreis M${m}`, type: 'number', unit: '€/kWh', role: 'value' }); } createState(visDP, '', { name: 'eCharts Config Monatsbalken', type: 'string', role: 'text' }); } createMonthDPs(); // =================== Hauptfunktion =================== function updateYearValues() { try { const raw = getState(jsonMonthlyDP).val; if (!raw) return log("Keine Monatsdaten vorhanden", "warn"); const data = JSON.parse(raw); const currentYear = new Date().getFullYear(); const currentMonth = new Date().getMonth() + 1; let arrCost = Array(12).fill(0); let arrCons = Array(12).fill(0); let arrPrice = Array(12).fill(0); // ========== JSON durchlaufen ========== data.forEach(entry => { if (!entry.from) return; const d = new Date(entry.from); const year = d.getFullYear(); const month = d.getMonth() + 1; if (year !== currentYear) return; const cost = parseFloat(entry.totalCost) || 0; const cons = parseFloat(entry.consumption) || 0; const price = parseFloat(entry.unitPrice) || 0; arrCost[month - 1] = parseFloat(cost.toFixed(2)); arrCons[month - 1] = parseFloat(cons.toFixed(2)); arrPrice[month - 1] = parseFloat(price.toFixed(2)); setState(`${rootDP}.Cost.M${month}`, cost, true); setState(`${rootDP}.Cons.M${month}`, cons, true); setState(`${rootDP}.Price.M${month}`, price, true); }); // ============================================================= // **AKTUELLEN MONAT MIT USERDATA ÜBERSCHREIBEN** // ============================================================= const uPrice = parseFloat(getState(dpPriceThisMonth).val) || 0; const uCons = parseFloat(getState(dpConsThisMonth).val) || 0; const uCost = parseFloat(getState(dpCostThisMonth).val) || 0; arrCost[currentMonth - 1] = parseFloat(uCost.toFixed(2)); arrCons[currentMonth - 1] = parseFloat(uCons.toFixed(2)); arrPrice[currentMonth - 1] = parseFloat(uPrice.toFixed(2)); setState(`${rootDP}.Cost.M${currentMonth}`, uCost, true); setState(`${rootDP}.Cons.M${currentMonth}`, uCons, true); setState(`${rootDP}.Price.M${currentMonth}`, uPrice, true); // ===================================================================== // eCharts VIS-Konfiguration // ===================================================================== const option = { textStyle: { color: '#FFFFFF' }, tooltip: { trigger: 'axis', textStyle: { color: '#525252' }, formatter: function(params) { return params.map(p => { let unit = '€/kWh'; if (p.seriesName.includes('€')) unit = '€'; else if (p.seriesName.includes('kWh')) unit = 'kWh'; return `${p.seriesName}: ${p.value.toFixed(2)} ${unit}`; }).join('<br/>'); } }, legend: { textStyle: { color: '#FFFFFF' } }, xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], axisLabel: { color: '#FFFFFF' } }, yAxis: [ { type: 'value', name: 'Kosten / Verbrauch', axisLabel: { color: '#FFFFFF' }, nameTextStyle: { color: '#FFFFFF' }, splitLine: { show: true, lineStyle: { color: '#525252' } }, axisLine: { lineStyle: { color: '#ccc' } } }, { type: 'value', name: 'Preis', position: 'right', axisLabel: { color: '#FFFFFF' }, nameTextStyle: { color: '#FFFFFF' }, splitLine: { show: true, lineStyle: { color: '#525252' } }, axisLine: { lineStyle: { color: '#ccc' } } } ], series: [ { name: 'Kosten (€)', type: 'bar', data: arrCost }, { name: 'Verbrauch (kWh)', type: 'bar', data: arrCons }, { name: 'Preis (€/kWh)', type: 'line', yAxisIndex: 1, data: arrPrice } ] }; setState(visDP, JSON.stringify(option), true); log("Jahreswerte + aktueller Monat + eCharts VIS aktualisiert", "info"); } catch (e) { log("Fehler JSON: " + e, "error"); } } // =================== TRIGGER =================== updateYearValues(); on({ id: jsonMonthlyDP, change: 'any' }, () => updateYearValues()); on({ id: [dpPriceThisMonth, dpConsThisMonth, dpCostThisMonth], change: 'ne' }, () => updateYearValues()); Monat: // ============================================================================ // Tibber Daily Übersicht für VIS eCharts // ---------------------------------------------------------------------------- // - ALLE Daten aus Tibbers jsonDaily // - Linke Achse: Kosten (€) + Verbrauch (kWh) // - Rechte Achse: Preis (€/kWh) // - Schriftfarbe X/Y weiß, Y-Hilfslinien #525252 // - Rechte Y-Achse Maximalwert auf 3 Nachkommastellen // - Preislinie nicht geglättet // ============================================================================ const jsonDailyDP = 'tibberlink.0.Homes.xxxxxxxxxxx.Consumption.jsonDaily'; const dpBase = '0_userdata.0.Tibber.Daily.'; const dpDates = dpBase + 'Dates'; const dpCost = dpBase + 'Cost'; const dpUsage = dpBase + 'Usage'; const dpUnitPrice = dpBase + 'UnitPrice'; const dpEchart = dpBase + 'EchartConfig'; // =================== Hilfsfunktion =================== function ensureDP(id) { if (!existsState(id)) createState(id, '', { type: 'string', read: true, write: true }); } [dpDates, dpCost, dpUsage, dpUnitPrice, dpEchart].forEach(ensureDP); // =================== Datum formatieren TT.MM. =================== function formatDateTTMM(fromStr) { const d = new Date(fromStr); if (isNaN(d)) return ''; const day = ('0' + d.getDate()).slice(-2); const month = ('0' + (d.getMonth() + 1)).slice(-2); return `${day}.${month}`; } // =================== Hauptfunktion =================== async function buildTibberDailyChart() { const raw = await getStateAsync(jsonDailyDP); if (!raw || !raw.val) { log('⚠ jsonDaily leer oder nicht verfügbar', 'warn'); return; } let daily; try { daily = JSON.parse(raw.val); if (!Array.isArray(daily)) { log('❌ JSON ist kein Array', 'error'); return; } } catch (e) { log('❌ Fehler beim Parsen von jsonDaily: ' + e, 'error'); return; } const dates = []; const cost = []; const usage = []; const price = []; daily.forEach(entry => { dates.push(formatDateTTMM(entry.from)); cost.push(Number(entry.totalCost || 0).toFixed(2)); usage.push(Number(entry.consumption || 0).toFixed(2)); price.push(Number(entry.unitPrice || 0).toFixed(3)); }); // Datenpunkte aktualisieren setState(dpDates, JSON.stringify(dates), true); setState(dpCost, JSON.stringify(cost), true); setState(dpUsage, JSON.stringify(usage), true); setState(dpUnitPrice, JSON.stringify(price), true); // Rechte Y-Achse Maximalwert für Preis berechnen (3 Nachkommastellen) let maxPrice = Math.max(...price.map(p => Number(p))) * 1.1; // 10% Puffer maxPrice = Number(maxPrice.toFixed(3)); // Linke Achse: Maximalwert für Kosten und Verbrauch const maxLeft = Math.max( ...cost.map(c => Number(c)), ...usage.map(u => Number(u)) ) * 1.1; const echartConfig = { textStyle: { color: '#FFFFFF' }, tooltip: { trigger: 'axis', textStyle: { color: '#525252' }, formatter: function(params) { const day = params[0].axisValue; const kosten = params.find(p => p.seriesName === 'Kosten (€)')?.value || 0; const verbrauch = params.find(p => p.seriesName === 'Verbrauch (kWh)')?.value || 0; const preis = params.find(p => p.seriesName === 'Preis (€/kWh)')?.value || 0; return `${day} → Kosten: ${Number(kosten).toFixed(2)} € | Verbrauch: ${Number(verbrauch).toFixed(2)} kWh | Preis: ${Number(preis).toFixed(3)} €/kWh`; } }, legend: { textStyle: { color: '#FFFFFF' }, data: ['Kosten (€)', 'Verbrauch (kWh)', 'Preis (€/kWh)'] }, xAxis: { type: 'category', data: dates, axisLabel: { color: '#FFFFFF' } }, yAxis: [ { type: 'value', name: 'Kosten / Verbrauch', min: 0, max: maxLeft, axisLabel: { color: '#FFFFFF' }, nameTextStyle: { color: '#FFFFFF', align: 'center' }, // linksbündig splitLine: { show: true, lineStyle: { color: '#525252' } } }, { type: 'value', name: 'Preis', position: 'right', min: 0, max: maxPrice, axisLabel: { color: '#FFFFFF', formatter: function(value) { return Number(value).toFixed(3) + ' €/kWh'; } }, nameTextStyle: { color: '#FFFFFF' }, splitLine: { show: true, lineStyle: { color: '#525252' } } } ], series: [ { name: 'Kosten (€)', type: 'bar', data: cost, yAxisIndex: 0 }, { name: 'Verbrauch (kWh)', type: 'bar', data: usage, yAxisIndex: 0 }, { name: 'Preis (€/kWh)', type: 'line', data: price, yAxisIndex: 1 } // nicht geglättet ] }; setState(dpEchart, JSON.stringify(echartConfig), true); log('✔ Tibber Daily für VIS aktualisiert – ' + daily.length + ' Einträge'); } // =================== Trigger =================== on({ id: jsonDailyDP, change: 'any' }, () => buildTibberDailyChart()); buildTibberDailyChart(); [image: 1764762204365-98722c8f-52b3-4fd1-9b07-5c78fd6ea9c3-image.png] [image: 1764762241930-3600ee57-f496-4ba8-a5cc-36fb941763eb-image.png]
  • callmebot - keine WhatsApp mehr

    34
    0 Stimmen
    34 Beiträge
    4k Aufrufe
    B
    Hmm, ich zahle ja für WhatsApp über callmebot... müsste bei der Frau wieder extra Pushover installieren :), aber ja Pushover läuft seit Jahren stabil. Hab gerade mal über die Website per API probiert: Service is down (410): Sorry for the inconvenience. There is a technical problem and I am working on it. The service will be back in 24-48hs (on December 3rd or sooner) Also kennen sie zumindest das Problem.
  • Alexa-Adapter Datenpunkte zeigen nichts an

    6
    1
    0 Stimmen
    6 Beiträge
    86 Aufrufe
    skvarelS
    @FredF .. vielen Dank für die Info. Das war mir noch gar aufgefallen.
  • (Gelöst) Zigbee2Mqtt bleibt gelb - Frontend läuft

    12
    0 Stimmen
    12 Beiträge
    147 Aufrufe
    1Topf1
    @homoran @arteck sagte in (Gelöst) Zigbee2Mqtt bleibt gelb - Frontend läuft: RTFM :-)
  • 1Wire-OWFS Temperaturwert ohne Komma an

    20
    0 Stimmen
    20 Beiträge
    71 Aufrufe
    HomoranH
    @Salzmicha sagte in 1Wire-OWFS Temperaturwert ohne Komma an: verstehe ich nicht Vielleicht hilft das https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge
  • Nach Update auf JS-Adapter 9.0.12 keine Skript-Anzeige mehr

    2
    1
    0 Stimmen
    2 Beiträge
    95 Aufrufe
    S
    https://github.com/ioBroker/ioBroker.javascript/issues/2067
  • Ist mein Zigbee noch aktuell ? Suche Hilfe ;)

    16
    0 Stimmen
    16 Beiträge
    298 Aufrufe
    H
    @skvarel Danke. Ja es gab dazu auch eine Einstellung im Z2M . Jetzt sind alle geräte auch als Online deklariert. Danke für deine Hilfe. @arteck auch an dich vielen Dank ;) @asgothian an dich ebenfalls ;) Kurz noch ein Update. Durch meine uralt konstellation lief mein alter Z2M ja als docker auf meiner NAS. Durch den Umzug ist die Reaktionszeit des gesamten Zigbee Netzwerkes echt schnell geworden.
  • Zigbee Bosch Thermostat "Mode" funktioniert nicht mehr

    36
    2
    0 Stimmen
    36 Beiträge
    215 Aufrufe
    N
    Hallo Zusammen, vielen Dnak für Euer Feedback. Leider muss ich kurzfristig auf Dienstreise, sodass ich erst am WE wieder dazu komme, das zu testen. Ich werde mich dann wieder melden. Eine schöne Restwoche und nochmals vielen Dankk
  • Samsung TizenOS TV Adapter(MJ>=2016)

    Gesperrt
    5
    0 Stimmen
    5 Beiträge
    206 Aufrufe
    HomoranH
    @mcm1957 sagte in Samsung TizenOS TV Adapter(MJ>=2016): Bitte hier schließen erledigt!
  • Daten aus der Fritzbox visualisieren

    113
    0 Stimmen
    113 Beiträge
    18k Aufrufe
    M
    @Ro75 sagte in Daten aus der Fritzbox visualisieren: @dr-pie sagte in Daten aus der Fritzbox visualisieren: leider gibt der Adapter von AVM (tr064) die erforderlichen Daten nicht preis Hallo, das stimmt so definitiv nicht. Der tr-64 Adapter kann dir alles liefern. Es ist immer nur die Frage wie. Versuche es mal so: const NewByteReceiveRate = '0_userdata.0.FritzBox.NewByteReceiveRate'; const NewByteSendRate = '0_userdata.0.FritzBox.NewByteSendRate'; const L1DownMaxRate = '0_userdata.0.FritzBox.Layer1DownstreamMaxBitRate'; const L1UpMaxRate = '0_userdata.0.FritzBox.Layer1UpstreamMaxBitRate'; const ReceiveR = '0_userdata.0.FritzBox.Charts.Receive'; const SendR = '0_userdata.0.FritzBox.Charts.Send'; @ro75 Ich nutze auch dein script und bin mich am fragen was über den tr064 noch abfragbar ist? Ich suche die möglichkeit die Klingel der Türstation, die an der FB hängt ab zu fragen. Da ja leider die Türrufe als intern gelten tauch sie nicht in der Anrufliste auf. Dein "Der tr-64 Adapter kann dir alles liefern." macht mir da etwas hofnung :) Geht das auch vielleicht auch mit dem TR064?
  • Adapter -> Error in GUI!

    31
    0 Stimmen
    31 Beiträge
    225 Aufrufe
    E
    Ich werde das alles mal im Laufe der nächsten Tage versuchen zu posten. Im Moment sind andere Dinge viel wichtiger.
  • Node.js Update gelingt nicht - Downgrade nach Update

    6
    0 Stimmen
    6 Beiträge
    79 Aufrufe
    Thomas BraunT
    @bullemausberlin Ja, 'keep updating'! Irgendwann wird wohl auch wieder eine 22.x.y vorbeischwimmen.
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    35 Aufrufe
    Niemand hat geantwortet
  • Fragen zum Radar2 Adapter

    9
    0 Stimmen
    9 Beiträge
    564 Aufrufe
    lobomauL
    Ich habe die Lösung des Problems gefunden. Am radar2-Adapter hat es nicht gelegen. Scheinbar wurde beim Upgrade von debian 12 auf 13 Bluetooth blockiert bzw. ausgeschaltet. Auf bluetoothctl show folgte: Powered: no PowerState: off-blocked Dann die Eingabe von: sudo rfkill unblock bluetooth sudo bluetoothctl power on War das Ergebnis von bluetoothctl show Powered: yes PowerState: on

757

Online

32.4k

Benutzer

81.6k

Themen

1.3m

Beiträge