Weiter zum Inhalt

Tester

1.2k Themen 201.5k Beiträge

In dieser Kategorie werden Adapter Versionen vorgestellt die der Entwickler zum Testen Frei gibt.

NEWS

Unterkategorien


  • In dieser Kategorie werden Adapter Versionen, die noch nicht in offiziellen Repos sind, vorgestellt.

    46 2k
    46 Themen
    2k Beiträge
    J
    Version 0.5.4 ist installiert und läuft soweit super. Verbindung von BlueIris zu den Kameras ist jetzt problemlos möglich. Main- und Substream funktionieren beide. Steuern der Beleuchtung funktioniert auch problemlos, lediglich der Status der DP's ändert sich nicht wenn ich das Licht über die App schalte. Oder ich war zu ungeduldig. Was mir noch als Bug aufgefallen ist, der DP motion_active wird nicht true wenn ich die Kamera auslöse. Der timestamp last_motion_at kommt aber. Darüber werte ich gerade im Skript eine Bewegung aus. Ansonsten würde ich jetzt ein paar Tage beobachten ob der Stream stabil in BlueIris läuft. Falls Probleme auftreten melde ich mich sofort. Vielen Dank für den super Support und den wirklich sehr guten Adapter!
  • Test Adapter mitsubishi-local-control v1.0.x Latest

    Verschoben
    42
    3
    2 Stimmen
    42 Beiträge
    2k Aufrufe
    P
    @Black-Thunder sagte in Test Adapter mitsubishi-local-control v1.0.x Latest: Alles klar, ich habe gerade v1.0.6 freigegeben. Dort ist nun als Minimum für "targetTemperature" 10 festgelegt. Dazu bitte einmalig nach dem Update den State löschen, damit er korrekt neu angelegt werden kann. sieht gut aus, habe das jetzt noch mal durchgespielt und keine Fehler festgestellt. Besten Dank für die schnelle Bearbeitung
  • Test Adapter Hoymiles-wifi

    Verschoben
    86
    1 Stimmen
    86 Beiträge
    33k Aufrufe
    EisteeE
    Ich hab auch einen Adapter für diese Wechselrichter erstellt der die Funktionen der App komplett abbildet und Live Daten nahezu im Sekunden Takt ermöglicht: https://forum.iobroker.net/topic/84142/neuer-adapter-hoymiles-hms-wechselrichter
  • Test Adapter Shelly 10.6.x (LATEST / BETA)

    Verschoben mcm1957 shelly
    99
    6 Stimmen
    99 Beiträge
    11k Aufrufe
    mcm1957M
    Version 10.6.1 wurde ins Stable Repository aufgenommen
  • Test Adapter PV Notifications GitHub/Latest

    Verschoben
    1
    3
    0 Stimmen
    1 Beiträge
    82 Aufrufe
    Niemand hat geantwortet
  • Test Myenergi Adapter

    Verschoben
    99
    4
    0 Stimmen
    99 Beiträge
    18k Aufrufe
    oswibzO
    HAllo zusammen - ich versuche auch gerade die EDDI in BOOST mode zu bringen - ich kriege es aber nicht hin - hat jemand eine Idee wie man das machen könnte? gerne per Blockly oder mit Javascript.
  • Test Adapter OpenLigaDB

    Verschoben adapter openligadb test
    716
    1
    6 Stimmen
    716 Beiträge
    179k Aufrufe
    OliverIOO
    @Meister-Mopper @chronos81 Wenn ihr mir einen Zeitpunkt habt bzw. noch besser ein log vom openligadb adapter im debug modus, kann ich da mal nachschauen. wahrscheinlich ist es ein problem wenn der openligadb server nicht zur verfügung steht oder eine andere fehlermeldung produziert, das die nicht ordentlich abgefangen wird. wenn das ein paar mal hintereinander passiert, dann stoppt iobroker den adapter. habe ich aber in den letzten paar tagen in meinen logs nichts finden können.
  • Test Adapter powerfox2 v0.0.x GitHub/Latest

    Verschoben energie powerfox strom stromzähler
    154
    0 Stimmen
    154 Beiträge
    29k Aufrufe
    A
    Hallo zusammen, brauche jemanden der einen Flow im Einsatz hat und mir ein paar Daten zur Verfügung stellen kann. Den Teil xxxxxxxxx mit deiner ID ersetzen (solltest du entweder in deiner Powerfox App irgendwo sehen oder in den Einstellungen des Powerfox2 Adapters). A: die JSON Ausgabe von https://backend.powerfox.energy/api/2.0/my/xxxxxxxxx/report B: die JSON Ausgabe von https://backend.powerfox.energy/api/2.0/my/xxxxxxxxx/report?day=0&month=0&year=0&fromhour=0 C: die JSON Ausgabe von https://backend.powerfox.energy/api/2.0/my/all/devices D: die JSON Ausgabe von https://backend.powerfox.energy/api/2.0/my/main/current (wenn der was gasmäßiges liefert wäre das mein Favorit, da schon im Code verwendet) Dann kann ich mal versuchen ob ich die FLOW Werte in den Adapter bekomme. Gruß AxLED
  • Betatest Bright Sky v1.1.x

    Verschoben
    209
    10 Stimmen
    209 Beiträge
    23k Aufrufe
    T
    1.1.0 (2026-03-23) (ticaki) Fixed: DWD station ID was incorrectly logged as WMO station ID fixes #91 (cavernerg) Added nested hourly forecast data under daily.XX.hourly.YY (0 = disabled) (cavernerg) Added configurable number of forecast days (forecastDays, default 7) (cavernerg) Admin UI restructured into labeled sections (Location, Forecast, Current Weather, Radar)
  • Frigate Adapter für ioBroker

    Verschoben
    375
    1
    2 Stimmen
    375 Beiträge
    117k Aufrufe
    crunchipC
    hab es heute nochmal mit der v2.1.3 versucht, trotzdem 100%js-controller Auslastung, da laut Instanz kein docker mehr erkannt wird. Issue ist bereits erstellt
  • vis-2-widgets-collection

    Verschoben
    383
    6
    8 Stimmen
    383 Beiträge
    89k Aufrufe
    tseroT
    @Homoran kann schon sein, aber die Spaltenbreiten sind 80, 75, 75, 75, 75 - ergibt 380px in Summe. Das geht sich auch auf dem iPhone mit 393px aus - und wenn es sich ausgeht, würde ich erwarten, dass Spalten gemäß der konfigurierten Werte angezeigt wird.
  • Test Adapter apsystems-ez1 v0.2.4 GitHub/Latest

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    190 Aufrufe
    black.falcon87B
    @Thomas-Braun sagte in Test Adapter apsystems-ez1 v0.2.4 GitHub/Latest: Da würde ich eher empfehlen, beim Admin ein Issue zu eröffen und anzuregen, dass die Sortierung nach den Adapternamen erfolgen soll und nicht nach den Beschreibungen. @skvarel sagte in Test Adapter apsystems-ez1 v0.2.4 GitHub/Latest: Das fällt dann auch nur auf, wenn Entwickler unterschiedliche Benennungen bei "name" und "titleLang" nutzen. Oh das wusste ich nicht. Danke für die Info. @tt-zhi Ansonsten läuft der Adapter bisher ganz normal und empfängt fehlerfrei Daten :-) [image: 1774173915843-87c7701b-5c6e-4309-9e83-610774633145-image-resized.png]
  • Test Adapter mihome-cloud

    Verschoben
    235
    4
    1 Stimmen
    235 Beiträge
    54k Aufrufe
    bahnuhrB
    @tombox Guten Morgen, bekommt man mit dem Adapter irgendwie die map vom Staubsaugerroboter raus. Erkannt wurde dieser und es wurden zahlreiche DP erstellt. Geht dies? Wenn ja, wie müsste man da vorgehen ? mfg Dieter
  • Test eCharts Adapter

    Verschoben echarts
    666
    1
    10 Stimmen
    666 Beiträge
    209k Aufrufe
    Siggi0904S
    Hallo zusammen, ich steige gerade neu in den echarts-Adapter ein. Wenn ich die vorhandenen Daten aus dem SQL-Adpater nach Räume sortieren lasse, sortiert der Adapter alles unter andere ein. Kann der Adapter auch die Räume des übergeordneten Raumes aus dem Gruppen-Ordner verwenden? Oder wäre das umsetzbar als neues Feature? Bei mir sieht ein DeConz-Datenpunkt z.B. so aus: [image: 1774122293023-1a87b494-090a-49a0-800d-462e16ced1db-grafik.png] Da sieht man die Zuordnung auf die Gruppe, aber nicht auf jeden Datenpunkt. Danke im Voraus.
  • Test Adapter LG ThinQ

    Verschoben
    936
    2
    2 Stimmen
    936 Beiträge
    330k Aufrufe
    L
    @Thomas-Diederichs Da könnte man mal nachschauen wie die APP die Daten berechnet. Dazu musst du aber erstmal Daten bekommen. Das Thema hatten wir hier im Thread schon einmal, finde aber die Posts nicht. Die APP fragt beim öffnen den aktuellen Monat ab. Beispiel: täglich 2026.01.01 2026.01.31 Versuche auch mal monatlich oder jährlich Gruß//Lucky
  • Test Adapter Autodarts

    Gesperrt Verschoben
    50
    3
    1 Stimmen
    50 Beiträge
    3k Aufrufe
    HomoranH
    @skvarel sagte in Test Adapter Autodarts: Auch wieder in dieser Rubrik, richtig? ja! und ich mach hier zu
  • Test Adapter frontier_silicon v0.5.x Latest

    Verschoben
    138
    2 Stimmen
    138 Beiträge
    31k Aufrufe
    ESP8266E
    Danke für die Mühe. Werde die Tage testen. 👍
  • Test Adapter EnOcean v0.8.x

    Verschoben enocean
    255
    1
    1 Stimmen
    255 Beiträge
    58k Aufrufe
    D
    Werd ich testen.. hab keine Etagen und alles offen... evt kann der Stick das schaffen. Bis dato werkelt ein homee mit Enocean Cube... aber der nervt
  • Test Adapter renault v0.0.x für myRenault und myDacia

    Verschoben
    373
    1
    0 Stimmen
    373 Beiträge
    78k Aufrufe
    A
    Der Bordcomputer sagt "Verbunden".
  • Test Adapter Nissan v.0.0.x

    Verschoben
    104
    2
    1 Stimmen
    104 Beiträge
    17k Aufrufe
    B
    Ein schreiben von Nissan an alle Ze0 Besitzer hat bei euch sicherlich für Unmut gesorgt. Sofern der Dienst tatsächlich für Modelle bis Modelljahr 2019 eingestellt werden sollte, werde ich die entsprechende Funktionalität im Adapter enfernen. Wie steht ihr zu dieser Ankündigung von Nissan? Sehr geehrte Kundin, sehr geehrter Kunde, wir möchten Sie darüber informieren, dass die NissanConnect EV-App, die aktuell mit Ihrem Fahrzeug SJNFAAZE1UXXXXXXX verknüpft ist, ab dem 30. März 2026 nicht mehr zur Verfügung steht. Dies betrifft Nissan LEAF Modelle bis Modelljahr 2019 sowie Nissan e-NV200 Modelle bis Modelljahr 2022. Das bedeutet: Ab dem 30. März 2026 können Sie die NissanConnect Services nicht mehr per Fernzugriff über die NissanConnect EV-App nutzen. Zudem entfallen bestimmte kartenbasierte Funktionen in den betroffenen Fahrzeugen. Wir möchten Sie jedoch beruhigen: Wichtige Funktionen wie der Klima-Timer und der Lade-Timer bleiben weiterhin über das Navigations-Infotainmentsystem Ihres Fahrzeugs verfügbar. Weitere Hinweise zur Nutzung der Bordfunktionen finden Sie in der Nissan Drivers Guide App sowie in der Betriebsanleitung Ihres Fahrzeugs. Nissan ist weiterhin bestrebt, moderne und zukunftsfähige Konnektivitätslösungen zu entwickeln, die den Anforderungen unserer heutigen und zukünftigen Kunden gerecht werden. Danke, dass Sie sich für einen Nissan entschieden haben und für Ihr Vertrauen. Mit freundlichen Grüßen Nissan
  • TESTER: Neuer Adapter Webuntis

    Verschoben
    200
    4 Stimmen
    200 Beiträge
    47k Aufrufe
    madingM
    Hi zusammen, der Adapter war mir zu unzuverlässig bzw. hatte ich ein Javascript gefunden, dass mir alles für vis in einer Tabelle aufarbeitet. Das war aber nicht immer richtig. Ich habe mit Hilfe von copilot ein Skript gebaut, das mir Screenshots des Stundenplans macht. # Create a new folder for the script mkdir webuntis-shot && cd webuntis-shot # Initialize and install dependencies npm init -y npm i playwright dotenv # Install browsers for Playwright (first time only) npx playwright install dann .env Datei erstellen # .env WEBUNTIS_USERNAME="user" WEBUNTIS_PASSWORD="xyz" HEADLESS="1" OUTPUT_DIR="/opt/iobroker" dann die Datei z.B. webuntis.js anlegen // webuntis-screenshot.js // Usage: node webuntis-screenshot.js // Optional env: WEBUNTIS_USERNAME, WEBUNTIS_PASSWORD, HEADLESS, OUTPUT_DIR, TARGET_HASH_FILE import { chromium } from 'playwright'; import fs from 'fs'; import fsp from 'fs/promises'; import path from 'path'; import 'dotenv/config'; const USERNAME = process.env.WEBUNTIS_USERNAME || 'user'; const PASSWORD = process.env.WEBUNTIS_PASSWORD || 'pass'; const HEADLESS = (process.env.HEADLESS || '1') !== '0'; const OUTPUT_DIR = process.env.OUTPUT_DIR || '/opt/iobroker/iobroker-data/files/vis.0/main/img/'; const BASE_URL = 'https://gss-realschule.webuntis.com/timetable/my-student?date='; // === NEW: read TARGET_HASH from external file === const TARGET_HASH_FILE = process.env.TARGET_HASH_FILE || path.resolve(process.cwd(), 'target-hash.txt'); async function loadTargetHash(filePath) { const exists = fs.existsSync(filePath); if (!exists) { throw new Error(`Target-hash file not found: ${filePath}`); } const ext = path.extname(filePath).toLowerCase(); if (ext === '.json') { const raw = await fsp.readFile(filePath, 'utf-8'); let data; try { data = JSON.parse(raw); } catch (e) { throw new Error(`Invalid JSON in ${filePath}: ${e.message}`); } const hash = (data.TARGET_HASH || '').trim(); if (!hash) throw new Error(`Missing "TARGET_HASH" property in ${filePath}`); validateHash(hash); return hash; } else { // treat as plain text const hash = (await fsp.readFile(filePath, 'utf-8')).trim(); validateHash(hash); return hash; } } function validateHash(hash) { if (!hash.startsWith('#/')) { throw new Error(`TARGET_HASH must start with "#/". Got: "${hash}"`); } } // Utility: ensure directory exists (try to create if not) function ensureDir(dir) { try { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } const testFile = path.join(dir, '.test_write.tmp'); fs.writeFileSync(testFile, 'ok'); fs.unlinkSync(testFile); return true; } catch (e) { console.error(`[WARN] Cannot write to ${dir}: ${e.message}`); return false; } } async function tryFill(page, selectors, value, opts = {}) { for (const sel of selectors) { try { const el = await page.$(sel); if (el) { await el.fill(value, { timeout: opts.timeout || 3000 }); return true; } } catch { /* continue */ } } return false; } async function tryClick(page, candidates, opts = {}) { for (const c of candidates) { try { if (c.selector) { await page.click(c.selector, { timeout: opts.timeout || 3000 }); return true; } if (c.text) { const el = page.getByText(c.text, { exact: false }); await el.first().click({ timeout: opts.timeout || 3000 }); return true; } } catch { /* continue */ } } return false; } async function acceptCookies(page) { const candidates = [ { text: 'Accept all' }, { text: 'Accept All' }, { text: 'Accept' }, { text: 'Alle akzeptieren' }, { text: 'Akzeptieren' }, { text: 'Einverstanden' }, { selector: 'button#onetrust-accept-btn-handler' }, { selector: 'button[aria-label*="accept"]' }, ]; await tryClick(page, candidates, { timeout: 2000 }); } async function loginIfNeeded(page, username, password) { const usernameSelectors = [ 'input[name="username"]', 'input#username', 'input[name="user"]', 'input[type="text"]', 'input[autocomplete="username"]' ]; const passwordSelectors = [ 'input[name="password"]', 'input#password', 'input[type="password"]', 'input[autocomplete="current-password"]' ]; const loginButtonCandidates = [ { text: 'Log in' }, { text: 'Login' }, { text: 'Anmelden' }, { text: 'Sign in' }, { selector: 'button[type="submit"]' } ]; let needsLogin = false; for (const sel of passwordSelectors) { const el = await page.$(sel); if (el) { needsLogin = true; break; } } if (!needsLogin) { const clicked = await tryClick(page, [{ text: 'Login' }, { text: 'Anmelden' }, { text: 'Log in' }], { timeout: 2000 }); if (clicked) { await page.waitForTimeout(1200); } for (const sel of passwordSelectors) { const el = await page.$(sel); if (el) { needsLogin = true; break; } } } if (!needsLogin) return false; const uFilled = await tryFill(page, usernameSelectors, username); const pFilled = await tryFill(page, passwordSelectors, password); if (!uFilled || !pFilled) { throw new Error('Could not locate username/password fields to perform login.'); } const clickedSubmit = await tryClick(page, loginButtonCandidates, { timeout: 3000 }); if (!clickedSubmit) { for (const sel of passwordSelectors) { const el = await page.$(sel); if (el) { await el.press('Enter'); break; } } } await page.waitForLoadState('domcontentloaded'); await page.waitForTimeout(2000); return true; } function timestamp() { const d = new Date(); const pad = (n) => String(n).padStart(2, '0'); return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`; } (async () => { console.log('[INFO] Starting WebUntis screenshot task...'); const canWrite = ensureDir(OUTPUT_DIR); const outDir = canWrite ? OUTPUT_DIR : process.cwd(); if (!canWrite) { console.warn(`[WARN] Falling back to current directory: ${outDir}`); } // Load external hash let TARGET_HASH = ''; try { TARGET_HASH = await loadTargetHash(TARGET_HASH_FILE); console.log(`[INFO] Loaded TARGET_HASH from ${TARGET_HASH_FILE}: ${TARGET_HASH}`); } catch (e) { console.error('[ERROR] Failed to load TARGET_HASH:', e.message); process.exit(1); } const TARGET_URL = `${BASE_URL}${TARGET_HASH}`; const browser = await chromium.launch({ headless: HEADLESS }); const context = await browser.newContext({ viewport: { width: 1400, height: 900 } }); const page = await context.newPage(); try { console.log('[INFO] Navigating to base URL…'); await page.goto(BASE_URL, { waitUntil: 'domcontentloaded', timeout: 60000 }); await acceptCookies(page); await loginIfNeeded(page, USERNAME, PASSWORD); console.log('[INFO] Navigating to target timetable URL…'); await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 }); await page.waitForTimeout(4000); await acceptCookies(page); const filePath = path.join(outDir, `webuntis-screenshot.png`); await page.screenshot({ path: filePath, fullPage: true }); console.log(`[SUCCESS] Screenshot saved to: ${filePath}`); } catch (err) { console.error('[ERROR]', err.message); process.exitCode = 1; } finally { await context.close(); await browser.close(); } })(); eigentlich dachte ich, ich muss die URL noch wöchentlich auf die richtige Woche ändern, das macht aber ein redirect. die target-hash.txt Datei ist aber geblieben (gleicher Ordner) - steht "nichts" drin, könnte geändert werden #/ dann das Skript laufen lassen node webuntis.js Bei mir kamen noch ein paar Fehler, ich musste ein paar libraries nachinstallieren. Somit läuft es bei mir, ich muss jetzt nur noch schauen, ob ich es mit einem blockly und cron triggere oder von debian aus. [image: 1773492443224-494470b8-8e71-4663-8202-0716112cdf72-grafik.png] Damit läuft das Skript stündlich 0 * * * * /usr/bin/node /home/mading/webuntis-shot/webuntis.js >> /home/mading/webuntis-shot/cron.log 2>&1 Damit vis das Bild kennt bzw. lesen kann, ist ein Javascript notwendig, dass die Datei in vis.0 schreibt: var fs = require('fs'); const picture= fs.readFileSync('/opt/iobroker/iobroker-data/files/vis.0/main/img/webuntis-screenshot.png'); //liest linux-datei-system writeFile('vis.0','/main/img/webuntis-screenshot.png', picture, function (error) { }); //schreibt in iobroker system Blockly: <xml xmlns="https://developers.google.com/blockly/xml"> <block type="procedures_defcustomnoreturn" id="FuE%6{wZt7R{vL]0sp=:" x="-37" y="38"> <mutation statements="false"></mutation> <field name="NAME">etwas tun</field> <field name="SCRIPT">dmFyIGZzID0gcmVxdWlyZSgnZnMnKTsgDQogDQogY29uc3QgcGljdHVyZT0gZnMucmVhZEZpbGVTeW5jKCcvb3B0L2lvYnJva2VyL2lvYnJva2VyLWRhdGEvZmlsZXMvdmlzLjAvbWFpbi9pbWcvd2VidW50aXMtc2NyZWVuc2hvdC5wbmcnKTsgLy9saWVzdCBsaW51eC1kYXRlaS1zeXN0ZW0NCndyaXRlRmlsZSgndmlzLjAnLCcvbWFpbi9pbWcvd2VidW50aXMtc2NyZWVuc2hvdC5wbmcnLCBwaWN0dXJlLCBmdW5jdGlvbiAoZXJyb3IpIHsgfSk7ICAgLy9zY2hyZWlidCBpbiBpb2Jyb2tlciBzeXN0ZW0=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="schedule" id="9DD.a-@UNvoRp8i:Yode" x="63" y="113"> <field name="SCHEDULE">{"time":{"start":"06:00","end":"23:00","mode":"minutes","interval":61},"period":{"days":1}}</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="esc^G_dpBegT:H7{mULt"> <mutation name="etwas tun"></mutation> </block> </statement> </block> </xml>

362

Online

32.9k

Benutzer

83.0k

Themen

1.3m

Beiträge