Weiter zum Inhalt

ioBroker Allgemein

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

NEWS

  • Iobroker start 5:04 und 22:56 abstellen Wie

    15
    1
    0 Stimmen
    15 Beiträge
    340 Aufrufe
    skvarelS
    Ich würde den Cron bei Telegram lassen und nur die Meldung ausschalten. Mache ich seit Jahren so. [image: 1786178015687-bf5450f7-ce46-4dba-8056-21292469a556-image.jpeg] [image: 1786178078384-9482aed6-91db-4f72-8ed0-379c1b63fe4a-image.jpeg]
  • Alexa Adapter

    alexa adapter fehler probleme
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    M
    Moien, gibt es Aktuell Probleme mit dem Alexa 2.0 Adapter ? Ich bekomme mit der Aktuellen Version v3.28.3 keine neuen Cookies mehr aktiviert. Bis vor zwei Tagen ist es ohne Problem gelaufen, da war der Adapter Morgens auf Gelb, na dachte ich mir machst du mal einen neuen Cookie . Aber die Seite wo man sich eigendlich anmeldet bleibt Schwarz ! Das Kommt nach einer Zeit Proxy-Error: Error: connect ETIMEDOUT 198.18.2.14:443 Ich hab auch schon den Adapter gelöscht und neu Installiert !
  • Dropdown-Widget

    2
    0 Stimmen
    2 Beiträge
    68 Aufrufe
    OliverIOO
    @Holger-Etzel Du kannst dir mal https://github.com/oweitman/ioBroker.vis-jsontemplate Das kann nicht nur json abfragen sondern auch datenpunkte. An die common states kommt es wahrscheinlich dran. Müsste ich mal schauen Durch das Template System bist du relativ frei im Design. Ich habe auch eine Doku wie man sich so ein Template mit ki erstellen lassen kann. https://github.com/oweitman/ioBroker.vis-jsontemplate
  • Host Meldung: Probleme mit dem freien Speicherplatz

    16
    0 Stimmen
    16 Beiträge
    274 Aufrufe
    B
    Dein Hinweis bezüglich des Datums der Meldung war hilfreich! Mir war nicht klar, dass durch die Bestätigung die Meldung verschwindet. Sie ist nun nicht mehr aufgetaucht.
  • Matter: Allgemeine Fragen und Diskussionen

    Verschoben
    422
    3 Stimmen
    422 Beiträge
    74k Aufrufe
    T
    @ioT4db … unfassbar … da habe ich nicht dran gedacht, nochmal nachzusehen. Hatte sich abgemeldet. Jetzt ist Cloud Adapter grün und anlegen einer weiteren Bridge möglich … jetzt scheitert es am Koppeln der Bridge im HomeKit … immer wieder was Neues … Aber Danke erstmal … so einfach es war … ich bin nicht drauf gekommen.
  • Nach Umstieg auf Vis-2 funktioniert iobroker.net nicht mehr.

    70
    1
    0 Stimmen
    70 Beiträge
    1k Aufrufe
    M
    @Homoran sagte: Steht da eine 2 drin? Ja [image: 1786002151038-17c1c91e-12a0-4cf6-9843-acd4862aea43-image.jpeg]
  • map für xiaomi / roborock Staubsauger

    mihome map staubsauger
    16
    0 Stimmen
    16 Beiträge
    285 Aufrufe
    haselchenH
    @fastfoot DAS sich etwas tut ist super. Leider passen die Voraussetzungen für viele, auch für mich nicht. Welche habe ich unter dem Post vom Entwickler geschrieben.
  • [Erledigt] backitup Komponente wurde nicht gestartet

    backitup
    17
    0 Stimmen
    17 Beiträge
    269 Aufrufe
    amg_666A
    @Thomas-Braun sagte: oder per klick Cool, das mit dem Refresh-Button hatte ich noch garnicht gesehen, da stand bei mir "vor 23 Stunden" Jetzt zeigt er mir auch das verfügbare Update an und ich konnte es probemlos installieren. Danke für den Support, ich setze den Thread auf erledigt. Ich lass die 4.0.0 jetzt mal laufen und checke morgen ob und wie das backup gelaufen ist.
  • Lösung für: Alexa Anfragen nach Chat-GPT umleiten

    10
    1 Stimmen
    10 Beiträge
    352 Aufrufe
    Andreas HochstögerA
    /************************************************************ * Groq (Llama 3.3) – Alexa Fallback (SMART-HOME-FIX VERSION) ************************************************************/ const ns = { MODEL_ID: 'llama-3.3-70b-versatile', QUESTION_DP_ID: '0_userdata.0.Manuelle_Datenpunkte.KI.Question', ANSWER_DP_ID: '0_userdata.0.Manuelle_Datenpunkte.KI.Answer', APIKEY_DP_ID: '0_userdata.0.Manuelle_Datenpunkte.KI.ApiKey', ALEXA_HISTORY_TRIGGER: 'alexa2.0.History.#trigger', ALEXA_SUMMARY_DP_ID: 'alexa2.0.History.summary', ALEXA_ANSWERTEXT_DP_ID: 'alexa2.0.History.answerText', ALEXA_CREATIONTIME_DP_ID:'alexa2.0.History.creationTime', ALEXA_SERIAL_DP_ID: 'alexa2.0.History.serialNumber', DEFAULT_SERIAL: 'Hier die Serialnummer von der Alexa eingeben', POLL_INTERVAL_MS: 15000, MAX_AGE_MS: 120000 }; ns.https = require('https'); let lastProcessedQuestion = ''; let lastProcessedTime = 0; /* ===================== Auto-Setup ===================== */ async function setupDataPoints() { const statesToSetup = [ { id: ns.QUESTION_DP_ID, name: 'KI Frage (Input)', def: '' }, { id: ns.ANSWER_DP_ID, name: 'KI Antwort (Output)', def: '' }, { id: ns.APIKEY_DP_ID, name: 'Groq API Key', def: '' } ]; for (const state of statesToSetup) { const obj = await getObjectAsync(state.id); if (!obj) { await createStateAsync(state.id, state.def, false, { name: state.name, type: 'string', role: 'text', read: true, write: true }); console.log('✅ Datenpunkt erstellt: ' + state.id); } } } /* ===================== Sprachausgabe ===================== */ function speak(text, serial) { let targetSerial = String(serial || '').trim(); if (!targetSerial || !getObject('alexa2.0.Echo-Devices.' + targetSerial)) { console.log('⚠️ Seriennummer ungültig (' + targetSerial + '). Nutze Standard-Gerät.'); targetSerial = ns.DEFAULT_SERIAL; } const speakId = 'alexa2.0.Echo-Devices.' + targetSerial + '.Commands.speak'; console.log('🔊 AUSGABE ÜBER: ' + speakId); setState(speakId, text, false); } /* ===================== Groq API Call ===================== */ function callGroq(inputText, callback) { const apiKey = getState(ns.APIKEY_DP_ID).val; if (!apiKey || String(apiKey).trim().length < 10) { callback(null, 'Fehler: API-Key fehlt'); return; } const payload = JSON.stringify({ model: ns.MODEL_ID, messages: [{ role: 'user', content: inputText }], temperature: 0.5, max_tokens: 150 }); const options = { hostname: 'api.groq.com', path: '/openai/v1/chat/completions', method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + apiKey } }; const req = ns.https.request(options, res => { let data = ''; res.on('data', chunk => { data += chunk; }); res.on('end', () => { try { const json = JSON.parse(data); if (json.error) { callback(null, 'Groq Fehler: ' + json.error.message); return; } let answer = 'Keine Antwort'; if (json.choices && json.choices.length > 0) { answer = json.choices[0].message.content.trim(); } callback(answer, null); } catch (e) { callback(null, 'JSON Parse Error'); } }); }); req.on('error', () => callback(null, 'HTTP Error')); req.write(payload); req.end(); } /* ===================== Prompts ===================== */ function askKI(question, callback) { const prompt = 'Du bist die Sprachausgabe eines Smart-Speakers. Der Nutzer kann NICHT antworten oder nachfragen – ' + 'deine Antwort wird einmalig vorgelesen und die Interaktion ist danach beendet. ' + 'Beantworte die folgende Frage deshalb IMMER mit einer konkreten Aussage in maximal 1-2 Sätzen (unter 40 Wörtern). ' + 'Stelle unter keinen Umständen eine Rückfrage und bitte nicht um weitere Details. ' + 'WICHTIGER KONTEXT: Wenn der Nutzer nach "io broker", "i. o. broker" oder "iobroker" fragt, meint er die bekannte Open-Source Smart-Home-Plattform ioBroker, NICHT einen Finanzmakler oder "in Ordnung". ' + 'Frage: ' + question; callGroq(prompt, callback); } /* ===================== Klassifikation ===================== */ function istWeissNichtAntwort(answerText, callback) { const prompt = 'Analysiere die Antwort eines Sprachassistenten. ' + 'Konnte der Assistent die Frage NICHT beantworten oder hat er unsinnigen Standard-Text ausgegeben (z.B. "weiß ich nicht", "kann ich nicht helfen", ' + '"wie ich dir dabei helfen kann", "habe ich nicht verstanden", "Es konnte keine Zeit erkannt werden", "probiere es mit")? ' + 'Antworte AUSSCHLIESSLICH mit diesem JSON-Objekt: {"failed": true} oder {"failed": false}. ' + 'Kein Markdown, keine Erklärungen! ' + 'Antwort des Assistenten: "' + answerText + '"'; callGroq(prompt, (result, error) => { if (error) { console.log('🔴 Klassifikation API Fehler: ' + error); callback(false); return; } console.log('🟣 KI RAW ANTWORT: ' + result); let failed = false; try { const match = String(result).match(/\{[\s\S]*\}/); if (match) { failed = JSON.parse(match[0]).failed === true; } } catch (e) { console.log('🔴 JSON Parsing Fehler: ' + e); } callback(failed); }); } /* ===================== Smart-Home-Erkennung ===================== */ function istSmartHomeBefehl(question, answerText) { const lowerQuestion = question.toLowerCase(); const lowerAnswer = String(answerText || '').toLowerCase(); // Smart-Home-Trigger-Wörter const smartHomeKeywords = [ 'schalte', 'schalt', 'mache', 'mach', 'stelle', 'stell', 'setze', 'setz', 'licht', 'lampe', 'lampen', 'leuchte', 'leuchten', 'ein', 'aus', 'an', 'hell', 'dunkel', 'dimme', 'dimmen', 'temperatur', 'heizung', 'thermostat', 'klima', 'steckdose', 'steckdosen', 'schalter', 'szene', 'szenen', 'modus', 'öffne', 'schließe', 'tor', 'tür', 'garage', 'rollo', 'rollladen', 'vorhang', 'starte', 'stoppe', 'pause', 'musik', 'radio', 'playlist', 'timer', 'wecker', 'erinnere', 'erinnerung' ]; // Prüfe, ob die Frage Smart-Home-Wörter enthält const hatSmartHomeKeyword = smartHomeKeywords.some(keyword => lowerQuestion.includes(keyword) ); // Prüfe, ob die Antwort eine Bestätigung ist (oder leer = Aktion ausgeführt) const istBestaetigung = !answerText || answerText.trim() === '' || lowerAnswer.includes('eingeschaltet') || lowerAnswer.includes('ausgeschaltet') || lowerAnswer.includes('ok') || lowerAnswer.includes('fertig') || lowerAnswer.includes('erledigt') || lowerAnswer.includes('wird') || lowerAnswer.includes('habe ich') || lowerAnswer.length < 10; // Sehr kurze Antworten sind oft Bestätigungen const istSmartHome = hatSmartHomeKeyword && istBestaetigung; if (istSmartHome) { console.log('🏠 SMART-HOME-BEFEHL ERKANNT – kein KI-Fallback nötig.'); } return istSmartHome; } /* ===================== Direkt-KI-Phrasen ===================== */ const KI_TRIGGER_PHRASES = [ 'frag gpt', 'frage gpt', 'frag chatgpt', 'frage chatgpt', 'frag chat', 'frage chat', 'frag die ki', 'frage die ki', 'frag ki', 'frage ki', 'frag jarvis', 'frage jarvis', 'frag google', 'frage google', 'frag gemini', 'frage gemini', 'frag llama', 'frage llama' ]; /* ===================== History-Eintrag verarbeiten ===================== */ function processHistoryEntry(summary, answerText, serial) { const now = Date.now(); if (summary === lastProcessedQuestion && (now - lastProcessedTime) < 10000) { console.log('⏳ DEBOUNCE: Frage wurde gerade erst bearbeitet. Ignoriere doppelten Trigger.'); return; } const lower = summary.toLowerCase(); const sorted = [...KI_TRIGGER_PHRASES].sort((a, b) => b.length - a.length); const treffer = sorted.find(p => lower.startsWith(p + ' ') || lower === p); // 1) Direkte KI-Anfrage (z.B. "Alexa, frag Jarvis ...") if (treffer) { const question = summary.slice(treffer.length).trim().replace(/^,\s*/, ''); if (question.length >= 2) { console.log('🎯 Direkte KI-Anfrage erkannt: ' + question); lastProcessedQuestion = summary; lastProcessedTime = now; setState(ns.ANSWER_DP_ID, 'Bitte warten …', true); askKI(question, (answer, err) => { const text = err || answer; console.log('🏆 KI ANTWORT: ' + text); setState(ns.ANSWER_DP_ID, text, true); speak(text, serial); }); return; } } // 2) WICHTIG: Ist es ein Smart-Home-Befehl? Dann KEIN Fallback! if (istSmartHomeBefehl(summary, answerText)) { lastProcessedQuestion = summary; lastProcessedTime = now; return; // Abbruch – Alexa hat die Aktion erfolgreich ausgeführt } // 3) Fallback: Alexa-Antwort war komplett leer (bei Wissensfragen) if (!answerText || answerText.trim() === '') { console.log('⚠️ Keine Alexa-Antwort in der History (leer). Leite sicherheitshalber an KI weiter.'); lastProcessedQuestion = summary; lastProcessedTime = now; setState(ns.ANSWER_DP_ID, 'Bitte warten …', true); askKI(summary, (answer, err) => { if (err) { setState(ns.ANSWER_DP_ID, err, true); return; } console.log('🏆 KI ANTWORT (bei leerem Alexa-Text): ' + answer); setState(ns.ANSWER_DP_ID, answer, true); speak('Aber ich hab mal nachgefragt: ' + answer, serial); }); return; } // 4) Normaler Fallback: Hat Alexa eine Ausrede gegeben? istWeissNichtAntwort(answerText, failed => { console.log('🟣 PRÜFUNG ERGEBNIS (Alexa versagt?): ' + failed); if (!failed) { console.log('✅ Alexa wusste Rat – kein Fallback nötig.'); return; } lastProcessedQuestion = summary; lastProcessedTime = now; console.log('🚨 ALEXA WUSSTE ES NICHT! Frage an KI: ' + summary); setState(ns.ANSWER_DP_ID, 'Bitte warten …', true); askKI(summary, (answer, err) => { if (err) { setState(ns.ANSWER_DP_ID, err, true); return; } console.log('🏆 KI ANTWORT: ' + answer); setState(ns.ANSWER_DP_ID, answer, true); speak('Aber ich hab mal nachgefragt: ' + answer, serial); }); }); } /* ===================== Init ===================== */ async function init() { console.log('### 🚀 SCRIPT START (SMART-HOME-FIX VERSION) ###'); await setupDataPoints(); on({ id: ns.QUESTION_DP_ID, change: 'any' }, obj => { const question = String(obj.state.val || '').trim(); if (!question || question.length < 2) return; console.log('🟢 MANUELLE FRAGE: ' + question); setState(ns.ANSWER_DP_ID, 'Bitte warten …', true); askKI(question, (answer, err) => { setState(ns.ANSWER_DP_ID, err || answer, true); }); }); setState(ns.ALEXA_HISTORY_TRIGGER, true); setInterval(() => { setState(ns.ALEXA_HISTORY_TRIGGER, true); }, ns.POLL_INTERVAL_MS); console.log('🔄 History-Polling aktiv (alle ' + (ns.POLL_INTERVAL_MS / 1000) + ' Sekunden)'); on({ id: ns.ALEXA_CREATIONTIME_DP_ID, change: 'ne' }, obj => { const creationTime = obj.state.val; console.log('📥 Neuer History-Eintrag: ' + creationTime); const t = new Date(creationTime).getTime(); if (!isNaN(t) && (Date.now() - t) > ns.MAX_AGE_MS) { console.log('⚠️ Eintrag ist zu alt – wird ignoriert.'); return; } setTimeout(() => { const summary = String(getState(ns.ALEXA_SUMMARY_DP_ID).val || '').trim(); const answerText = String(getState(ns.ALEXA_ANSWERTEXT_DP_ID).val || '').trim(); const serial = String(getState(ns.ALEXA_SERIAL_DP_ID).val || '').trim(); console.log('🟡 DEINE FRAGE: ' + summary); console.log('🔵 ALEXAS ANTWORT: ' + answerText); console.log('📱 FRAGENDES GERÄT: ' + serial); if (!summary || summary.length < 2) return; processHistoryEntry(summary, answerText, serial); }, 700); }); console.log('### 🟢 ALLES AKTIV – TESTE JETZT! ###'); } init();
  • Matter – IPv6, Hubs und sonstige Vorbedingungen

    Verschoben
    262
    1 Stimmen
    262 Beiträge
    59k Aufrufe
    OliverIOO
    @Robschii sagte: wir haben glasfaser telekom, frau kann linkedin nicht öffnen bei mir laden seiten extrem langsam, evtl die souces nicht erreichbar? @Robschii sagte: Es lässt sich aktuell kein adapter per npm installieren. scheinbar nicht erreichbar Hört sich nach generellen Netzwerkproblemen an. Ich habe jetzt herausgelesen, das mehrere Geräte schwierigkeiten mit dem Internet haben. Prüfe mal den router, wie da die Leitungsqualität ist, auch im system oder ereignis log mal nach hinweisen zu schauen (viele disconnects/neustarts). Wenn dort da alles in Ordnung ist, könnte die Ursache in deinem Netzwerk liegen oder an den Geräten. Deine Probleme in chatgpt beschreiben um eine netzwerk analyse durchzuführen und dich leiten lassen. idR wirst du aufgefordert diverse Befehle auf der bspw windows Kommandozeile Befehle einzutippen und die Ergebnisse dann zur analyse wieder an chatgpt zu übergeben.
  • [Frage] Realisierung Adapter UDP Keba Wallbox

    Verschoben
    1k
    0 Stimmen
    1k Beiträge
    589k Aufrufe
    Q
    @gto Kannst du deine komplette Lösung zu dem Thema mal in einem eigenen Thread vorstellen ? Ich vermute du regelst das über Blockly Scripte richtig ? Ich wäre sehr daran interessiert, wie du das umgesetzt hast. Danke. Beste Grüße
  • ABL em4 OCPP Adapter

    4
    0 Stimmen
    4 Beiträge
    74 Aufrufe
    HomoranH
    @LJSven Hmm, der Adapter schickt anscheinend jede Minute einen Test um die ABL zu testen. Es kommt auch sofort eine Antwort, wenn erreichbar. Der call um ca. 18:25:43 fehlt jedoch, entsprechend kommt dann um 18:26 ein timeout Was da genau schiefläuft kann ich da auch nicht sehen
  • Proxmox - Fehler im Log

    16
    1
    0 Stimmen
    16 Beiträge
    384 Aufrufe
    MartinPM
    @Asgothian sagte: @MartinP zu proxmox meine ich gar nix. Da bin ich raus. A. Sorry, Namensverwechselung. Habe Dich mit @arteck verwechselt... einfach zu Heiß aktuell ;-)
  • Welchen Hub für Matter?

    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    arteckA
    @deta sagte: Eigentlich soll Matter ja alles einfacher machen ach ja .. die Werbeversprechen...
  • Instanz Devices ist manchmal off und dann wieder on

    2
    2
    0 Stimmen
    2 Beiträge
    77 Aufrufe
    sigi234S
    https://github.com/ioBroker/ioBroker.devices/issues/603
  • EuSec / Eufy Camera Foto + Livestream in VIS einbinden

    4
    0 Stimmen
    4 Beiträge
    688 Aufrufe
    MartinSUM
    Noch eine Ergänzung. In der Zwischenzeit weiß ich, dass die Kameras mit der Homebase ein eigenes WLAN aufbauen. Nachteit ist, dass man die Kameras nicht mit einem Repeater "verlängern" kann. Entweder die Kameras haben Empfang mit der Homebase => dann klappt alles, oder eine/mehrere Kameras haben keinen Kontakt zur Homebase => verloren. Ich habe 3 Solocam S220 und eine Homebase. Mit der Zeit stellen sich doch einige Nachteile des System heraus. Eufy meint, dass der ioBroker kein offiziell unterstütztes System ist, dadurch ändern die plötzlich einige Sachen ohne Benachrichtigung. Heute würde ich mir INSTAR Kameras kaufen, mit MQTT usw. Möchte jemand meine 3 Solocam S220 und meine Homebase 3, 8 Monate alt mit Garantie, kaufen?
  • [gelöst][VIS-2] Kartenwidget um Traccar-Route darzustellen

    23
    0 Stimmen
    23 Beiträge
    814 Aufrufe
    OliverIOO
    @icebear Zur Info Ich habe dem adapter vis-mapwidgets ein Timeline Location widget hinzugefügt https://forum.iobroker.net/topic/82214/test-iobroker-vis-mapwidgets/61?_=1785536265812 Adapter muss von npm über den Katzenknopf in den Experteneinstellungen installiert werden, er befindet sich noch nicht im beta repo
  • Tastersimulation mit YAHKA-Adapter

    21
    0 Stimmen
    21 Beiträge
    2k Aufrufe
    AsgothianA
    @Jimbo21 sagte: toHomekit: return false; toIoBroker: return true; Hab es so abgeändert, verhalten das selbe. Es funktioniert 1x und dann nicht mehr. Aber Tür öffnet auch nicht, reagiert nicht. Komisch, es hatte schonmal geklappt, aber auch irgendwie nur sporadisch, dass man in Apple Homekit die Tür dann öffnen konnte. Im ioBroker unter den Objekten kann ich die Tür öffnen, wenn ich den Button zum öffnen klicke. Option B - Meinst du ein Script per Blockly, weil damit kenne ich mich überhaupt nicht aus. Blockly, JS, Rules. Irgend etwas. Du musst halt sicherstellen das Homekit den Button zurück setzt. Wenn die Datenpunkte das alleine nicht hergeben wird es mit 'Boardmitteln' bei Yahka nicht gehen. A.
  • Samsung smartthings Adapter

    samsung smartthings
    19
    0 Stimmen
    19 Beiträge
    4k Aufrufe
    C
    Ich musste meinen samsung smartthings Token erneuern, aber die URL im Adapter liefert jetzt eine etwas anders aufgebaute URL nach dem samsung Login. Kann es sein das die Generierung des Token nicht mehr klappt? Ich habe es in verschiedenen Browsern versucht.
  • Gelöst: Alexa Adpter v3.27.4: Keine History

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    183 Aufrufe
    D
    Lösung gefunden: Mann muss die History im Adapter aktivieren. [image: 1785498476983-1b23d679-0c39-4432-95b5-b17c5e563f1a-image.jpeg]

541

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge