Weiter zum Inhalt

NEWS

  • News and Announcements for ioBroker and around the forum

    104 213
    104 Themen
    213 Beiträge
    BluefoxB
    Hallo zusammen, wir möchten, dass ioBroker auf „ioBroker“ hört, so wie Alexa auf „Alexa“. Und zwar komplett lokal: auf einem Raspberry Pi oder einem kleinen ESP32-Lautsprecher, ohne dass eure Sprache das Haus verlässt. Dafür trainieren wir Modelle mit den freien Projekten openWakeWord und microWakeWord. Damit das Wort bei allen zuverlässig erkannt wird, brauchen wir echte Stimmen, und zwar möglichst viele verschiedene. Künstlich erzeugte Stimmen gibt es fast nur auf Englisch, und sie klingen alle ähnlich. Deshalb bitten wir euch um Hilfe: 👉 https://wake.iobroker.in So läuft es ab Mitmachen dauert ab einer Minute und geht direkt im Browser, am PC, Laptop oder Smartphone. Du schreibst auf, wie du „ioBroker“ aussprichst: „I-O-Broker“, „Ei-O-Broker“, in einem Zug … Wenn du es mal so und mal so sagst, kannst du bis zu drei Aussprachen angeben. Dann nimmst du das Wort ein paar Mal auf (je 3 Sekunden): normal, schnell, langsam, leise und aus etwas Entfernung. Nach drei Aufnahmen darfst du schon aufhören, jede weitere hilft aber. Auf Wunsch sprichst du noch ein paar ähnlich klingende Wörter ein. Damit lernt das Modell, bei „Broker“ oder „Joker“ nicht anzuspringen. Besonders gesucht Je unterschiedlicher, desto besser: Frauen und Männer, jung und alt, mit Dialekt oder Akzent, aus Deutschland, Österreich und der Schweiz, mit Headset, Laptop-Mikrofon oder Handy. Gern dürfen auch Familienmitglieder mitmachen, über „Jemand anderes macht mit“ am Ende. Jede Person willigt dabei selbst ein. Datenschutz Wir fragen keinen Namen und keine E-Mail-Adresse ab. Alter, Geschlecht, Region und Mikrofon sind freiwillig, helfen uns aber, die Vielfalt im Blick zu behalten. Die Aufnahmen werden nicht veröffentlicht und nur für das Training verwendet. Veröffentlicht werden nur die fertigen Modelle, aus denen sich keine Aufnahmen wiederherstellen lassen. Gespeichert wird in der EU (AWS, Irland). Du bekommst einen Löschcode, mit dem du deine Aufnahmen jederzeit selbst löschen kannst. Bitte gut aufheben: Ohne ihn können wir deine Aufnahmen nicht zuordnen. Mitmachen ab 16 Jahren. Tipps Ein möglichst ruhiger Raum, erst nach dem Drücken sprechen, und vor dem Speichern kurz reinhören. Die fertigen Modelle stellen wir hier und in den Adaptern zur Verfügung. Fragen, Probleme oder Ideen gern hier im Thread. Danke fürs Mitmachen! 🎙️
  • 83k Themen
    1m Beiträge
    icebearI
    @dering said: Das geht schon heute, ganz ohne neue Funktion. Das Hintergrundbild kann seinen Wert aus einem Datenpunkt holen. Super, Danke für den Hinweis und den Denkanstoß, ich hab's gleich mal umgesetzt und es funktioniert einwandfrei. [image: EG_Widget.png] Jetzt hätte ich noch einen Punkt, wie du siehst, nutze ich die Bilder als Hintergrund für ein Universal-Widget und über die Spalten und Zeilen lasse ich mir dann noch andere Informationen in dem Widget anzeige (Temp, offene Fenster usw) jetzt würde ich gerne in jedem Raum ein Button (Bild oder Icon) einfügen mit dem ich bei 'Klick-Action' eine PopUp-View des jeweiligen Raums öffnen kann. Leider gibt es in der Auswahl die Option 'Button' nicht, siehe Bild: [image: auswahl.png] Kannst du das noch einfügen, oder gibt es eine andere Möglichkeit? Edit: Ich füg hier noch das Script (TypeScript) ein welches ich zum wechsel der Bilder benutze falls einer sowas ähnliches bauen möchte. // Datenpunkte definieren const dpState = '0_userdata.0.vis.VIS_Light_State.state_vis_widget'; const dpTarget = '0_userdata.0.Aura.lights'; const dpSunrise = '0_userdata.0.Astrodaten.Astro.sunrise'; const dpSunset = '0_userdata.0.Astrodaten.Astro.sunset'; // Mappings für Tag und Nacht const dayImages: { [key: number]: string } = { 0: 'vis-2.0/SmartHome/EG_Fertig2_Beleuchtung_test.png', 1: 'vis-2.0/SmartHome/EG_Light/hood.png', 2: 'vis-2.0/SmartHome/EG_Light/2_kueche.png', 3: 'vis-2.0/SmartHome/EG_Light/3_kueche_hood.png', 4: 'vis-2.0/SmartHome/EG_Light/wc.png', 5: 'vis-2.0/SmartHome/EG_Light/5_hood_gwc.png', 6: 'vis-2.0/SmartHome/EG_Light/8_tv_day.png', 7: 'vis-2.0/SmartHome/EG_Light/wz.png', 8: 'vis-2.0/SmartHome/EG_Light/wz_play.png', 9: 'vis-2.0/SmartHome/EG_Light/d_wz_hood.png', 10: 'vis-2.0/SmartHome/EG_Light/d_wz_play_hood.png', 11: 'vis-2.0/SmartHome/EG_Light/11_d_wz_play_cook.png', 12: 'vis-2.0/SmartHome/EG_Light/12_d_cook_gwc.png', 13: 'vis-2.0/SmartHome/EG_Light/13_d_cook_hood_gwc.png', 14: 'vis-2.0/SmartHome/EG_Light/14_d_wz_gwc.png', 15: 'vis-2.0/SmartHome/EG_Light/15_wz_play_gwc.png', 16: 'vis-2.0/SmartHome/EG_Light/16_d_wz_cook_gwc.png', 17: 'vis-2.0/SmartHome/EG_Light/17_d_wz_play_cook_gwc.png' }; const nightImages: { [key: number]: string } = { 0: 'vis-2.0/SmartHome/EG_Fertig2_light_tv.png', 1: 'vis-2.0/SmartHome/night/n_hood.png', 2: 'vis-2.0/SmartHome/night/n_cook_bergsee.png', 3: 'vis-2.0/SmartHome/night/n_kueche_kochen.png', 4: 'vis-2.0/SmartHome/night/n_wc.png', 5: 'vis-2.0/SmartHome/night/n_hood_wc.png', 6: 'vis-2.0/SmartHome/night/n_play.png', 7: 'vis-2.0/SmartHome/night/n_wz.png', 8: 'vis-2.0/SmartHome/night/n_liv.png', 9: 'vis-2.0/SmartHome/night/n_wz_hood.png', 10: 'vis-2.0/SmartHome/night/n_wz_play_hood.png', 11: 'vis-2.0/SmartHome/night/n_wz_play_bergsee.png', 12: 'vis-2.0/SmartHome/night/12_n_cook_gwc.png', 13: 'vis-2.0/SmartHome/night/13_n_cook_hood_gwc.png', 14: 'vis-2.0/SmartHome/night/14_n_wz_gwc.png', 15: 'vis-2.0/SmartHome/night/15_n_wz_play_gwc.png', 16: 'vis-2.0/SmartHome/night/16_n_wz_tv_bergsee_gwc_essen.png', 17: 'vis-2.0/SmartHome/night/17_n_wz_play_bergsee_gwc_treppe.png' }; // Hilfsfunktion zur Prüfung, ob es aktuell Tag ist (zwischen Sonnenaufgang und Sonnenuntergang) function isDayTime(): boolean { const now = new Date(); const currentTime = now.getHours() * 60 + now.getMinutes(); // Minuten seit Tagesbeginn const sunriseVal = getState(dpSunrise).val; const sunsetVal = getState(dpSunset).val; if (typeof sunriseVal !== 'string' || typeof sunsetVal !== 'string') { log('Astro-Daten (Sunrise/Sunset) haben kein gültiges String-Format!', 'warn'); return true; // Fallback auf Tag } // Erwartet Format "HH:MM" oder ISO-String; wir extrahieren die Uhrzeit const parseTimeToMinutes = (timeStr: string): number => { let hours = 0; let minutes = 0; if (timeStr.includes(':')) { const parts = timeStr.split(':'); hours = parseInt(parts[0], 10); minutes = parseInt(parts[1], 10); } else { // Falls es ein kompletter ISO-String ist const d = new Date(timeStr); hours = d.getHours(); minutes = d.getMinutes(); } return hours * 60 + minutes; }; const sunriseMinutes = parseTimeToMinutes(sunriseVal); const sunsetMinutes = parseTimeToMinutes(sunsetVal); return currentTime >= sunriseMinutes && currentTime < sunsetMinutes; } // Hauptfunktion zur Ermittlung und zum Schreiben des Bildpfades function updateLightImage() { const stateVal = getState(dpState).val; const stateIndex = Number(stateVal); if (isNaN(stateIndex)) { log(`Ungültiger Wert im Widget-State: ${stateVal}`, 'warn'); return; } const dayTime = isDayTime(); let imagePath = ''; if (dayTime) { imagePath = dayImages[stateIndex] || ''; } else { imagePath = nightImages[stateIndex] || ''; } if (imagePath) { setState(dpTarget, imagePath, true); log(`Bildpfad aktualisiert (${dayTime ? 'Tag' : 'Nacht'}, Index ${stateIndex}): ${imagePath}`, 'debug'); } else { log(`Kein passender Bildpfad für Index ${stateIndex} gefunden!`, 'warn'); } } // Event-Listener: Ausführen, wenn sich das Widget ändert on(dpState, () => { updateLightImage(); }); // Event-Listener: Ausführen, wenn sich die Astro-Zeiten aktualisieren on([dpSunrise, dpSunset], () => { updateLightImage(); }); // Initialer Aufruf beim Start des Scripts updateLightImage();
  • 361 Themen
    2k Beiträge
    bmuellerB
    New version 0.4.0 The Kanban adapter now supports templates for cards, and exporting and importing them lets you carry them over to other boards and instances. More details in the first post under "New in 0.4.0".
  • 634 Themen
    8k Beiträge
    Alex1808A
    Тест: адаптер ioBroker.max (мессенджер MAX) - нужны тестеры Всем привет! Ищу тестеров для адаптера ioBroker.max - бот мессенджера MAX для ioBroker, аналог адаптера Telegram. Адаптер уже в репозитории latest, текущая версия 0.1.12. Что умеет: сообщения пользователям, всем и в групповые чаты; картинки, видео, аудио, файлы (с диска или по ссылке, в том числе снимок IP-камеры); кнопки (меню) и команды с ответом только отправителю - communicate.request / communicate.response, как в Telegram; тихие сообщения (notify: false), ограничение доступа по ID, статус соединения, зашифрованный токен. Сертификат Минцифры для API MAX адаптер приносит с собой - на сервере ничего устанавливать не нужно. Требования: js-controller ≥ 6.0.11, Admin ≥ 7.6.20, Node.js ≥ 22, бот в MAX и его токен (создаётся через MasterBot). Установка Admin → Адаптеры → поиск max → установить (репозиторий latest должен быть включён). В настройках экземпляра max.0 вставить токен бота: [image: Screenshot_1.jpg] Настройки адаптера MAX Написать боту в MAX или нажать Старт - появится канал max.0.users.<ваш ID>. Для группы: добавить бота в групповой чат и написать там — появится max.0.chats.<ID группы>. [image: Screenshot_2.jpg] Объекты адаптера MAX Быстрая проверка // текст с проверкой результата (123456 — ваш ID, для группы: chatId: -987654321) sendTo('max.0', 'send', { userId: 123456, text: 'Проверка из ioBroker' }, res => { log('MAX: ' + JSON.stringify(res)); }); // картинка sendTo('max.0', 'send', { userId: 123456, image: 'http://192.168.1.20/snapshot.jpg', text: 'Камера' }); // меню из кнопок sendTo('max.0', 'send', { userId: 123456, text: 'Меню', keyboard: [['Бассейн', 'Температура']] }); Сообщение с кнопками в MAX Ответ {"result":"sent"} - сообщение принято. Если пришла ошибка, например 404: Chat not found (бот не состоит в группе), - она подробно описана в разделе Troubleshooting README. Что особенно интересно проверить группы: получение сообщений и ответы в группу; отправку файлов и видео разных размеров; кнопки и communicate.response; обновление со старых версий (≤ 0.1.11): при первом запуске 0.1.12 в логе должно один раз появиться The MAX bot token is now stored encrypted, после чего адаптер один раз перезапускается. Ошибки и пожелания - сюда в тему или в issues на GitHub. Если что-то не работает, приложите, пожалуйста, ответ sendTo и строки лога max.0 (уровень debug), без токена и личных данных. Ссылки: GitHub · README с примерами Спасибо всем, кто поможет протестировать!
  • 19 Themen
    111 Beiträge
    Henk-Jan van EsterikH
    @tanelkoth Ik zie dat je deze vraag hebt. Mocht je vraag nog actueel zijn, laat het even weten. Met behulp van een Blockly script kan je eenvoudig dit regelen.
  • Português Fórum de suporte

    4 20
    4 Themen
    20 Beiträge
    ldittmarL
    @polegato Estou devolta aqui :-) ... O exemplo do lobomau é perfeito. Vc tem que instalar o ioBroker.javascript para isso e fazer um Blockly. Com esse Blockly vc pode montar automacao como um quebra cabeca. Muito legal e depois de algums, ja fica bem mais fácil.

420

Online

33.1k

Benutzer

84.1k

Themen

1.4m

Beiträge