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
    D
    Octopus hat uns nun in den korrekten Tarif umgestellt. Nun sehe ich "Rates" für den Go und den Standardtarif. Mit den anderen Datenpunkten muss ich mich dann mal beschäftigen. Danke dir.
  • Test Adapter Fiat Jeep v0.0.x

    Verschoben
    161
    2
    1 Stimmen
    161 Beiträge
    31k Aufrufe
    themuckT
    Hier mein Script das Ladeplan 2/3 ausliest aber so wieder mit zurück gibt. Wenn das Auto abgeschlossen ist hats geklappt :D. Bei meinen Versuchen lag der Schlüssel immer im Auto. Dann zogen die Pläne irgendwie nicht. /** * ============================================================ * Fiat 500e – Zielladungs-Script für ioBroker JavaScript * ============================================================ * Autor: basierend auf Blockly-Script von alw (ioBroker Forum) * Version: 2.2.0 * * Funktion: * - Erkennt automatisch wenn das Ladekabel eingesteckt wird * - Lädt das Auto bis zum konfigurierbaren Ladeziel (default 80%) * - Stoppt das Laden automatisch wenn das Ziel erreicht ist * - Ladeplan 3 (schedules03) dient als Fernschalter (via Fiat App) * - Debug-Ausgabe via ioBroker-Log * - Robuste Fehlerbehandlung und Timeout-Schutz * * Voraussetzungen: * - ioBroker JavaScript-Adapter * - Fiat-Adapter installiert und konfiguriert * * Konfiguration: * - VIN anpassen (ZFAXXX...) * - adapterInstance anpassen falls der Fiat-Adapter nicht als "fiat.0" läuft * - Datenpunkt für Ladeziel wird automatisch erstellt * ============================================================ */ // ============================================================ // IIFE – kapselt alle Variablen damit es keine Konflikte // mit anderen ioBroker-Scripts im globalen Scope gibt // ============================================================ (function () { // ============================================================ // KONFIGURATION – hier anpassen // ============================================================ const CONFIG = { // Fahrzeug-Identifikationsnummer (VIN / FIN) vin: 'ZFAXXX...', // Instanz des Fiat-Adapters (z.B. 'fiat.0', 'fiat.1', 'meinAdapter.0') adapterInstance: 'fiat.0', // ioBroker Datenpunkt-Pfad für das Ladeziel (wird automatisch erstellt) // Wert kann in ioBroker-Admin oder VIS geändert werden chargeTargetDP: 'javascript.0.fiat.chargeTarget', // Standard-Ladeziel in Prozent (wird beim ersten Start gesetzt) chargeTargetDefault: 80, // Ladeplan-Zeiten: Laden aktiv (fast ganzer Tag) chargeStart: '00:00', chargeEnd: '23:55', // Ladeplan-Zeiten: Laden blockiert (5-Minuten-Fenster das nie kommt) noChargeStart: '00:00', noChargeEnd: '00:05', // Wie oft (in Minuten) der Ladestand während des Ladens abgefragt wird pollIntervalMinutes: 10, // Maximale Ladezeit in Stunden bevor das Script abbricht (Schutz vor Endlos-Schleife) maxChargeHours: 48, // ioBroker Datenpunkt für Debug-Nachrichten (wird automatisch angelegt) debugDP: 'javascript.0.fiat.debug', // Erstinitialisierung: einmalig auf TRUE setzen (Kabel muss draußen sein!) // Script sendet dann den No-Charge-Plan ans Auto und setzt den Wert selbst zurück. initializedDP: 'javascript.0.fiat.initialized', }; // ============================================================ // INTERNE VARIABLEN – nicht ändern // ============================================================ let pollInterval = null; // Referenz auf den aktiven Poll-Timer let chargeStartTime = null; // Zeitstempel wann das Laden begann (für Timeout) let isCharging = false; // Interner Status ob wir gerade steuern // Abgeleitete ioBroker Datenpfade aus Adapter-Instanz und VIN const _base = `${CONFIG.adapterInstance}.${CONFIG.vin}`; const DP = { plugInStatus: `${_base}.status.evInfo.battery.plugInStatus`, stateOfCharge: `${_base}.status.evInfo.battery.stateOfCharge`, schedules03enable: `${_base}.status.evInfo.schedules03.enableScheduleType`, s01_startTime: `${_base}.status.evInfo.schedules01.startTime`, s01_endTime: `${_base}.status.evInfo.schedules01.endTime`, deepRefresh: `${_base}.remote.DEEPREFRESH`, cpplus: `${_base}.remote.CPPLUS`, }; // ============================================================ // MODUL: Logging // Schreibt ins ioBroker-Log UND in den Datenpunkt javascript.0.fiat.debug // ============================================================ function log(level, message) { const timestamp = new Date().toISOString(); const fullMessage = `[Fiat500e] ${message}`; if (level === 'error') { console.error(fullMessage); } else if (level === 'warn') { console.warn(fullMessage); } else { console.log(fullMessage); } setState(CONFIG.debugDP, JSON.stringify({ timestamp: timestamp, level: level, message: message, vin: CONFIG.vin, }), true); } // ============================================================ // MODUL: Ladeziel lesen // Liest den konfigurierbaren Ladeziel-Datenpunkt // ============================================================ function getChargeTarget() { const val = getState(CONFIG.chargeTargetDP).val; // Plausibilitäts-Check: muss zwischen 20 und 100 liegen if (typeof val === 'number' && val >= 20 && val <= 100) { return val; } log('warn', `Ungültiges Ladeziel (${val}), nutze Default: ${CONFIG.chargeTargetDefault}%`); return CONFIG.chargeTargetDefault; } // ============================================================ // MODUL: Einzelnen Schedule aus Datenpunkten lesen // Liest alle Felder eines Plans einzeln aus ioBroker und // gibt ein fertiges Objekt zurück – unverändert wie im Auto // ============================================================ function readSchedule(nr) { const base = `${CONFIG.adapterInstance}.${CONFIG.vin}.status.evInfo.schedules0${nr}`; return { cabinPriority: getState(`${base}.cabinPriority`).val || false, chargeToFull: getState(`${base}.chargeToFull`).val || false, enableScheduleType: getState(`${base}.enableScheduleType`).val || false, endTime: getState(`${base}.endTime`).val || '00:00', repeatSchedule: getState(`${base}.repeatSchedule`).val || false, scheduleType: getState(`${base}.scheduleType`).val || 'CHARGE', scheduledDays: { friday: getState(`${base}.scheduledDays.friday`).val || false, monday: getState(`${base}.scheduledDays.monday`).val || false, saturday: getState(`${base}.scheduledDays.saturday`).val || false, sunday: getState(`${base}.scheduledDays.sunday`).val || false, thursday: getState(`${base}.scheduledDays.thursday`).val || false, tuesday: getState(`${base}.scheduledDays.tuesday`).val || false, wednesday: getState(`${base}.scheduledDays.wednesday`).val || false, }, startTime: getState(`${base}.startTime`).val || '00:00', }; } // ============================================================ // MODUL: Ladeplan setzen // - Plan 1: wird hardcoded gesetzt (nur Zeiten dynamisch) // - Plan 2 & 3: live vom Auto gelesen und unverändert zurückgeschickt // - Alles als JSON-String an CPPLUS senden // ============================================================ function setChargeSchedule(startTime, endTime, callback) { log('info', `Setze Ladeplan: ${startTime} – ${endTime}`); // Plan 1: Ladeplan – nur Zeiten und Tage werden gesetzt const plan1 = { cabinPriority: false, chargeToFull: false, enableScheduleType: true, endTime: endTime, repeatSchedule: true, scheduleType: 'CHARGE', scheduledDays: { friday: true, monday: true, saturday: true, sunday: true, thursday: true, tuesday: true, wednesday: true, }, startTime: startTime, }; // Plan 2 & 3: unverändert vom Auto lesen const plan2 = readSchedule(2); const plan3 = readSchedule(3); log('info', `Plan 2 gelesen: ${plan2.scheduleType} ${plan2.startTime}–${plan2.endTime}`); log('info', `Plan 3 gelesen: ${plan3.scheduleType} ${plan3.startTime}–${plan3.endTime}`); // Alle 3 Pläne als JSON-String an CPPLUS senden setState(DP.cpplus, JSON.stringify([plan1, plan2, plan3]), false, (err) => { if (err) { log('error', `Fehler beim Setzen des Ladeplans: ${err}`); if (typeof callback === 'function') callback(err); return; } log('info', `Ladeplan gesendet: ${startTime} – ${endTime}`); if (typeof callback === 'function') callback(null); }); } // ============================================================ // MODUL: Deep Refresh // Fordert aktuelle Fahrzeugdaten vom Fiat-Server an // ============================================================ function triggerDeepRefresh(callback) { log('info', 'Starte Deep Refresh...'); setState(DP.deepRefresh, true, false, (err) => { if (err) { log('error', `Deep Refresh fehlgeschlagen: ${err}`); if (typeof callback === 'function') callback(err); return; } // 30 Sekunden warten bis die Daten vom Auto angekommen sind setTimeout(() => { log('info', 'Deep Refresh abgeschlossen'); if (typeof callback === 'function') callback(null); }, 30000); }); } // ============================================================ // MODUL: Lade-Polling stoppen // Räumt den aktiven Poll-Timer auf // ============================================================ function stopPolling() { if (pollInterval !== null) { clearInterval(pollInterval); pollInterval = null; log('info', 'Lade-Polling gestoppt'); } isCharging = false; } // ============================================================ // MODUL: Laden beenden // Setzt den "No Charge" Plan und stoppt das Polling // ============================================================ function stopCharging(reason) { log('info', `Lade-Stopp: ${reason}`); stopPolling(); setChargeSchedule(CONFIG.noChargeStart, CONFIG.noChargeEnd, (err) => { if (!err) { log('info', 'Auto wurde auf "Nicht laden" gesetzt – bereit für nächsten Zyklus'); } }); } // ============================================================ // MODUL: Lade-Polling starten // Prüft alle X Minuten den Ladestand und stoppt bei Zielerreichung // ============================================================ function startPolling() { if (isCharging) { log('warn', 'Polling läuft bereits – kein Doppelstart'); return; } isCharging = true; chargeStartTime = Date.now(); const maxChargeMs = CONFIG.maxChargeHours * 60 * 60 * 1000; log('info', `Lade-Polling gestartet (alle ${CONFIG.pollIntervalMinutes} min, max ${CONFIG.maxChargeHours}h)`); pollInterval = setInterval(() => { // Timeout-Schutz: Nach maxChargeHours abbrechen if (Date.now() - chargeStartTime > maxChargeMs) { log('warn', `Timeout nach ${CONFIG.maxChargeHours}h – Laden wird gestoppt`); stopCharging('Timeout erreicht'); return; } // Kabel noch drin? const plugged = getState(DP.plugInStatus).val; if (!plugged) { log('info', 'Kabel wurde gezogen – Polling wird gestoppt'); stopPolling(); return; } // Notaus aktiv (schedules03)? const emergencyStop = getState(DP.schedules03enable).val; if (emergencyStop) { log('info', 'Notaus aktiv (schedules03=true) – Polling wird gestoppt'); stopPolling(); return; } // Deep Refresh um aktuellen Ladestand zu bekommen triggerDeepRefresh(() => { const soc = getState(DP.stateOfCharge).val; const target = getChargeTarget(); log('info', `Ladestand: ${soc}% / Ziel: ${target}%`); if (soc >= target) { stopCharging(`Ladeziel ${target}% erreicht (aktuell ${soc}%)`); } }); }, CONFIG.pollIntervalMinutes * 60 * 1000); } // ============================================================ // MODUL: Kabelstatus geändert – Hauptlogik // ============================================================ function onPlugStatusChange(obj) { const plugged = obj.state.val; const soc = getState(DP.stateOfCharge).val; const target = getChargeTarget(); const emergency = getState(DP.schedules03enable).val; log('info', `Kabelstatus geändert: ${plugged ? 'Eingesteckt' : 'Gezogen'} | SOC: ${soc}% | Ziel: ${target}%`); // Kabel gezogen → aufräumen if (!plugged) { log('info', 'Kabel gezogen – Script wartet auf nächstes Einstecken'); stopPolling(); // Ladeplan für nächstes Mal vorbereiten (Charge-Zeiten wiederherstellen) if (!emergency) { setChargeSchedule(CONFIG.chargeStart, CONFIG.chargeEnd, () => { log('info', 'Ladeplan für nächsten Zyklus vorbereitet'); }); } return; } // Kabel eingesteckt → prüfen ob wir steuern sollen if (emergency) { log('info', 'Notaus aktiv (schedules03=true) – Script ist deaktiviert'); return; } if (soc >= target) { log('info', `Ladestand ${soc}% bereits >= Ziel ${target}% – kein Laden nötig`); stopCharging('Bereits am Ziel beim Einstecken'); return; } // Laden starten log('info', `Starte Zielladung auf ${target}% (aktuell ${soc}%)`); // Erst Deep Refresh für genauen Startladestand triggerDeepRefresh(() => { const socFresh = getState(DP.stateOfCharge).val; log('info', `Ladestand nach Refresh: ${socFresh}%`); if (socFresh >= target) { log('info', 'Bereits am Ziel nach Refresh – kein Laden nötig'); stopCharging('Bereits am Ziel nach Deep Refresh'); return; } // Ladeplan aktivieren setChargeSchedule(CONFIG.chargeStart, CONFIG.chargeEnd, (err) => { if (err) { log('error', 'Ladeplan konnte nicht gesetzt werden – abbruch'); return; } // Polling starten startPolling(); }); }); } // ============================================================ // INITIALISIERUNG // Wird einmal beim Script-Start ausgeführt // ============================================================ function init() { log('info', '=== Fiat 500e Zielladungs-Script gestartet ==='); log('info', `VIN: ${CONFIG.vin}`); // Ladeziel-Datenpunkt erstellen falls er noch nicht existiert createState(CONFIG.chargeTargetDP, CONFIG.chargeTargetDefault, { name: 'Fiat 500e Ladeziel (%)', type: 'number', unit: '%', min: 20, max: 100, role: 'value', desc: 'Ladeziel für die automatische Zielladung (20-100%)', }, () => { log('info', `Ladeziel-Datenpunkt bereit: ${CONFIG.chargeTargetDP}`); }); // Debug-Datenpunkt erstellen falls er noch nicht existiert createState(CONFIG.debugDP, '', { name: 'Fiat 500e Debug', type: 'string', role: 'value', desc: 'Letzter Debug-Log-Eintrag als JSON (timestamp, level, message)', }, () => { log('info', `Debug-Datenpunkt bereit: ${CONFIG.debugDP}`); }); // Initialisierungs-Datenpunkt erstellen // Auf TRUE setzen (Kabel draußen!) um einmalig den No-Charge-Plan ans Auto zu senden createState(CONFIG.initializedDP, false, { name: 'Fiat 500e Initialisierung auslösen', type: 'boolean', role: 'button', desc: 'Einmalig TRUE setzen (Kabel muss draußen sein!) – Script sendet No-Charge-Plan und setzt Wert zurück', }, () => { log('info', `Initialisierungs-Datenpunkt bereit: ${CONFIG.initializedDP}`); // Auf Änderung horchen – wenn auf TRUE gesetzt wird No-Charge-Plan gesendet on({ id: CONFIG.initializedDP, val: true }, () => { const plugged = getState(DP.plugInStatus).val; if (plugged) { log('warn', 'Initialisierung abgebrochen – Kabel ist noch eingesteckt! Bitte zuerst Kabel ziehen.'); setState(CONFIG.initializedDP, false, true); return; } log('info', 'Initialisierung: sende No-Charge-Plan ans Auto...'); setChargeSchedule(CONFIG.noChargeStart, CONFIG.noChargeEnd, (err) => { if (!err) { log('info', 'Initialisierung abgeschlossen – No-Charge-Plan gesetzt. Kabel kann jetzt eingesteckt werden.'); } setState(CONFIG.initializedDP, false, true); }); }); }); // Aktuellen Status beim Start prüfen // (falls Script neu gestartet wurde während Kabel schon steckt) const plugged = getState(DP.plugInStatus).val; const soc = getState(DP.stateOfCharge).val; const emergency = getState(DP.schedules03enable).val; log('info', `Startstatus: Kabel=${plugged}, SOC=${soc}%, Notaus=${emergency}`); if (plugged && !emergency) { const target = getChargeTarget(); if (soc < target) { log('info', 'Kabel steckt bereits beim Start – starte Zielladung'); onPlugStatusChange({ state: { val: true } }); } else { log('info', 'Kabel steckt, aber Ziel bereits erreicht – kein Laden nötig'); } } // Auf Kabelstatus-Änderungen horchen on({ id: DP.plugInStatus, change: 'ne' }, onPlugStatusChange); log('info', `Warte auf Kabeländerungen an: ${DP.plugInStatus}`); log('info', '=== Initialisierung abgeschlossen ==='); } // ============================================================ // START // ============================================================ init(); })(); // Ende IIFE
  • Test Adapter Z-Wave 2 v3.0.x

    Verschoben test z-wave zwave2
    194
    1
    0 Stimmen
    194 Beiträge
    40k Aufrufe
    M
    @arteck Ja, aber ich will nicht alles umziehen. Aktuell ist keine Z-Wave-Neuanschaffung vorgesehen und daher lasse ich den Adapter so lange laufen, wie möglich.
  • Test Adapter shuttercontrol v2.0.x

    Verschoben rollladen rollladensteuerung shuttercontrol
    7k
    2
    16 Stimmen
    7k Beiträge
    11m Aufrufe
    D
    Gestern hatte er dann um 21:27 das gemacht: 2026-05-03 21:25:00.011 - debug: shuttercontrol.0 (1097663) calculate astrodata ... 2026-05-03 21:25:00.012 - debug: shuttercontrol.0 (1097663) Sun Azimut: 304.4° 2026-05-03 21:25:00.013 - debug: shuttercontrol.0 (1097663) Sun Elevation: -6.2° 2026-05-03 21:25:00.675 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:00.676 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:00.676 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:00.676 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:00.677 - debug: shuttercontrol.0 (1097663) Arbeitszimmer|Rollladenaktor|Fenster|Empfänger.LEVEL in summer time down false 2026-05-03 21:25:00.677 - debug: shuttercontrol.0 (1097663) check xmas for Arbeitszimmer|Rollladenaktor|Fenster|Empfänger.LEVEL 2026-05-03 21:25:00.750 - info: shuttercontrol.0 (1097663) Elevation Down #4 Set ID: Arbeitszimmer|Rollladenaktor|Fenster|Empfänger.LEVEL value: 0% 2026-05-03 21:25:00.823 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:01.012 - debug: shuttercontrol.0 (1097663) last automatic Action for Arbeitszimmer|Rollladenaktor|Fenster|Empfänger.LEVEL: Elevation_down 2026-05-03 21:25:01.015 - debug: shuttercontrol.0 (1097663) save current height: 0% from Arbeitszimmer|Rollladenaktor|Fenster|Empfänger.LEVEL 2026-05-03 21:25:01.043 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:01.480 - info: jarvis.0 (3406) Client with IP 192.168.1.120 connected. 2026-05-03 21:25:02.018 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:02.018 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:02.019 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:02.019 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:02.020 - debug: shuttercontrol.0 (1097663) Hauswirtschaftsraum|Rollladenaktor|Fenster|Empfänger.LEVEL in summer time down false 2026-05-03 21:25:02.020 - debug: shuttercontrol.0 (1097663) check xmas for Hauswirtschaftsraum|Rollladenaktor|Fenster|Empfänger.LEVEL 2026-05-03 21:25:02.151 - info: shuttercontrol.0 (1097663) Elevation Down #4 Set ID: Hauswirtschaftsraum|Rollladenaktor|Fenster|Empfänger.LEVEL value: 0% 2026-05-03 21:25:02.215 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:02.295 - debug: shuttercontrol.0 (1097663) last automatic Action for Hauswirtschaftsraum|Rollladenaktor|Fenster|Empfänger.LEVEL: Elevation_down 2026-05-03 21:25:02.295 - debug: shuttercontrol.0 (1097663) save current height: 0% from Hauswirtschaftsraum|Rollladenaktor|Fenster|Empfänger.LEVEL 2026-05-03 21:25:02.398 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:03.296 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:03.296 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:03.297 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:03.297 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:03.297 - debug: shuttercontrol.0 (1097663) Kinderzimmer|Rollladenaktor|Fenster links|Sender.LEVEL in summer time down false 2026-05-03 21:25:03.298 - debug: shuttercontrol.0 (1097663) check xmas for Kinderzimmer|Rollladenaktor|Fenster links|Sender.LEVEL 2026-05-03 21:25:03.881 - debug: shuttercontrol.0 (1097663) elevation down Kinderzimmer|Rollladenaktor|Fenster links|Sender.LEVEL already down at: 0% - setting current action: down 2026-05-03 21:25:04.283 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check end 2026-05-03 21:25:04.294 - debug: shuttercontrol.0 (1097663) Shutter state changed: Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL old value = 100% | new value = 0% 2026-05-03 21:25:04.295 - debug: shuttercontrol.0 (1097663) set Manu_Mode #1 Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL 2026-05-03 21:25:04.295 - debug: shuttercontrol.0 (1097663) Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL drived manually to 0% | Old value = 100% | New value = 0% 2026-05-03 21:25:04.295 - debug: shuttercontrol.0 (1097663) Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL Updated trigger action to Manu_Mode to prevent moving after window close 2026-05-03 21:25:04.295 - debug: shuttercontrol.0 (1097663) #1 shutterName: Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 shutterState: 0% 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 currentAction: Manu_Mode 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 triggerAction: Manu_Mode 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 currentHeight: 100% 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 oldHeight: 100% 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 currentShutterState: activated 2026-05-03 21:25:04.296 - debug: shuttercontrol.0 (1097663) #1 currentShutterStateTime: 60 seconds 2026-05-03 21:25:04.795 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check end 2026-05-03 21:25:04.850 - debug: shuttercontrol.0 (1097663) Shutter state changed: Schlafzimmer|Rollladenaktor|Fenster links|Empfänger.LEVEL old value = 100% | new value = 0% 2026-05-03 21:25:04.850 - debug: shuttercontrol.0 (1097663) set Manu_Mode #1 Schlafzimmer|Rollladenaktor|Fenster links|Empfänger.LEVEL 2026-05-03 21:25:04.851 - debug: shuttercontrol.0 (1097663) Schlafzimmer|Rollladenaktor|Fenster links|Empfänger.LEVEL drived manually to 0% | Old value = 100% | New value = 0% 2026-05-03 21:25:04.851 - debug: shuttercontrol.0 (1097663) Schlafzimmer|Rollladenaktor|Fenster links|Empfänger.LEVEL Updated trigger action to Manu_Mode to prevent moving after window close 2026-05-03 21:25:04.851 - debug: shuttercontrol.0 (1097663) #1 shutterName: Schlafzimmer|Rollladenaktor|Fenster links|Empfänger.LEVEL 2026-05-03 21:25:04.851 - debug: shuttercontrol.0 (1097663) #1 shutterState: 0% 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 currentAction: Manu_Mode 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 triggerAction: Manu_Mode 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 currentHeight: 100% 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 oldHeight: 100% 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 currentShutterState: activated 2026-05-03 21:25:04.852 - debug: shuttercontrol.0 (1097663) #1 currentShutterStateTime: 60 seconds 2026-05-03 21:25:05.003 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:05.003 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:05.004 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:05.004 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:05.004 - debug: shuttercontrol.0 (1097663) Kinderzimmer|Rollladenaktor|Fenster rechts|Sender.LEVEL in summer time down false 2026-05-03 21:25:05.004 - debug: shuttercontrol.0 (1097663) check xmas for Kinderzimmer|Rollladenaktor|Fenster rechts|Sender.LEVEL 2026-05-03 21:25:05.052 - debug: shuttercontrol.0 (1097663) elevation down Kinderzimmer|Rollladenaktor|Fenster rechts|Sender.LEVEL already down at: 0% - setting current action: down 2026-05-03 21:25:06.195 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:06.195 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:06.196 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:06.196 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:06.196 - debug: shuttercontrol.0 (1097663) Küche|Rollladenaktor|Fenster links|Empfänger.LEVEL in summer time down false 2026-05-03 21:25:06.196 - debug: shuttercontrol.0 (1097663) check xmas for Küche|Rollladenaktor|Fenster links|Empfänger.LEVEL 2026-05-03 21:25:06.263 - info: shuttercontrol.0 (1097663) Elevation Down #4 Set ID: Küche|Rollladenaktor|Fenster links|Empfänger.LEVEL value: 0% 2026-05-03 21:25:06.324 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:06.406 - debug: shuttercontrol.0 (1097663) last automatic Action for Küche|Rollladenaktor|Fenster links|Empfänger.LEVEL: Elevation_down 2026-05-03 21:25:06.407 - debug: shuttercontrol.0 (1097663) save current height: 0% from Küche|Rollladenaktor|Fenster links|Empfänger.LEVEL 2026-05-03 21:25:06.501 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:07.407 - debug: shuttercontrol.0 (1097663) check in time 01.03. 30.09. 2026-05-03 21:25:07.408 - debug: shuttercontrol.0 (1097663) Start Sun Mar 01 2026 2026-05-03 21:25:07.408 - debug: shuttercontrol.0 (1097663) End Wed Sep 30 2026 2026-05-03 21:25:07.408 - debug: shuttercontrol.0 (1097663) we are in period 2026-05-03 21:25:07.408 - debug: shuttercontrol.0 (1097663) Küche|Rollladenaktor|Fenster rechts|Empfänger.LEVEL in summer time down false 2026-05-03 21:25:07.408 - debug: shuttercontrol.0 (1097663) check xmas for Küche|Rollladenaktor|Fenster rechts|Empfänger.LEVEL 2026-05-03 21:25:07.431 - info: shuttercontrol.0 (1097663) Elevation Down #4 Set ID: Küche|Rollladenaktor|Fenster rechts|Empfänger.LEVEL value: 0% 2026-05-03 21:25:07.485 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:07.558 - debug: shuttercontrol.0 (1097663) last automatic Action for Küche|Rollladenaktor|Fenster rechts|Empfänger.LEVEL: Elevation_down 2026-05-03 21:25:07.559 - debug: shuttercontrol.0 (1097663) save current height: 0% from Küche|Rollladenaktor|Fenster rechts|Empfänger.LEVEL 2026-05-03 21:25:07.668 - debug: shuttercontrol.0 (1097663) #0 wait for shutter check started 2026-05-03 21:25:07.822 - debug: shuttercontrol.0 (1097663) save current height after State Check: 0% from Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL 2026-05-03 21:25:07.823 - debug: shuttercontrol.0 (1097663) Shutter Schlafzimmer|Rollladenaktor|Fenster rechts|Empfänger.LEVEL was moved manually to: 0% - prevent trigger from driving back ... usw. (es sind zu viele Zeilen zum posten.
  • [ESPHome] Beta release 0.5.0-beta.1 ready

    Verschoben adapter entwicklung adapter update esphome
    129
    1
    1 Stimmen
    129 Beiträge
    18k Aufrufe
    simonf04S
    @c1olli sagte: Ich habe folgende Meldung: esphome has an invalid jsonConfig: [{"instancePath":"/items/yamlFiles/items/uploadContent/type","schemaPath":"#/definitions/componentType/enum","keyword":"enum","params":{"allowedValues":["accordion","alive","autocomplete","autocompleteSendTo","certificate","certificates","checkDocker","checkLicense","checkbox","chips","color","coordinates","cron","custom","datePicker","deviceManager","divider","file","fileSelector","func","header","icon","iframe","iframeSendTo","image","imageSendTo","infoBox","instance","interface","ip","jsonEditor","language","number","oauth2","objectId","panel","password","pattern","port","qrCode","qrCodeSendTo","room","select","selectSendTo","sendTo","setState","slider","state","staticImage","staticInfo","staticLink","staticText","table","text","textSendTo","timePicker","user","uuid","yamlEditor"]},"message":"must be equal to one of the allowed values"},{"instancePath":"/items/yamlFiles","schemaPath":"#/properties/items/patternProperties/%5E.%2B/allOf/11/if","keyword":"if","params":{"failingKeyword":"then"},"message":"must match \"then\" schema"},{"instancePath":"","schemaPath":"#/if","keyword":"if","params":{"failingKeyword":"then"},"message":"must match \"then\" schema"}] Das Dashboard startet nicht Edit: Nach einen Upload unter Adapter klappt es jetzt. Die Meldung hat nix mit dem dashboard zu tun... Ist ja auch nur eine Warning. Und auch bekannt. Copilot hat da mal wieder mehrfach sachen zusammenhalluziniert bei @dutchman . Der upload hat vermutlich auch nur " schein geholfen." Adapter braucht einfach beim 1. Mal etwad zum dashboard starten, da es da erst installiert wurd. Steht aber auch im log (und im adapter readme) Aber ok, 👍 funktioniert ja jetzt.
  • 8 Stimmen
    278 Beiträge
    59k Aufrufe
    jrbwhJ
    @karlpe Hallo Karl, Dein erster Punkt ist gut nachvollziehbar. Ich habe mir angeschaut, wie aufwändig das ist und war überrascht, dass es relativ einfach umsetzbar ist. Ich habe es inzwischen implementiert. Das bisherige Verfahren wird dadurch ersetzt, Änderungen im http-Aufruf sind nicht notwendig. Das Update des Charts funktioniert jetzt ohne Reload. Die Version ist in Git verfügbar. Vor dem Release möchte ich noch ein paar Tests machen. Wenn Du magst, kannst Du es aber jetzt schon ausprobieren: iob stop flexcharts iob url https://github.com/MyHomeMyData/ioBroker.flexcharts iob start flexcharts Die Versionsnummer bleibt dabei unverändert, aber Du solltest den Unterschied beim Chart-Update deutlich sehen. Deine zweite Idee ist deutlich anspruchsvoller. Das würde einen erheblichen Umbau bedeuten. Das würde ich im Moment zurückstellen und schauen, ob es in diese Richtung noch mehr Interesse gibt. Viele Grüße Jürgen Update, 5.5.: Version 0.7.1 ist jetzt in npm verfügbar: iob stop flexcharts iob upgrade iobroker.flexcharts@0.7.1 iob start flexcharts
  • Test Adapter open-meteo-weather v3.1.x GitHub/Latest

    Verschoben
    252
    5 Stimmen
    252 Beiträge
    18k Aufrufe
    H5N1H
    Neue Test Version 3.1.0. Trotz des schönen Wetters, habe ich Zeit gefunden wieder ein bisschen am Wetter zu arbeiten :-) Übersicht der Wichtigsten Änderungen: Mit der neuen Version ist es nun möglich das, dass Widget ohne Umwege im Admin erstellt werden kann. Es kann direkt in der Standort-Tabelle aktiviert/Deaktiviert werden und liegt dann unter "open-meteo-weather.0.STANDORT.weather.htmlWidget". Die Einstellungen habe ich absolut Basic gelassen und beschränken sich auf die Schriftgröße, Vorhersage Tage und Stunden. Wer es weiter Personalisieren möchte benutzt das externe HTMLWidget weiter. Zurzeit nur im Adapter Widget werden jetzt Gefahren farblich dargestellt z. B. Gewitter, starker Regen usw. wenn ich Zeit finde werde ich das auch im externen Widget auf GitHub einfügen. Des Weiteren habe ich die Update-Routine angepasst, es wird jetzt je nach Einstellung immer kurz nach der vollen, viertel oder halben Stunde abgerufen. Vorher war es so das nach einem Adapter Neustart z.b. um 11:40 Uhr und Intervall 60 Minuten erst wieder um 12:40 Uhr abgerufen wird, das ergab meiner Meinung nach keinen Sinn, wenn man die Daten der aktuellen Stunde möchte. Changelog: Die Update-Routine für Wetter- und PV-Prognosen wurde auf feste Abrufzeiten umgestellt. Ein anpassbares HTML-Wetter-Widget im Admin-Bereich wurde hinzugefügt. Anpassung für Versionssprünge von älteren Konfigurationen. Internes Adapter-Widget angepasst, Gefahren werden farblich hervorgehoben (derzeit nur im internen Adapter-Widget). Der Adapter benötigt nun node.js >= 22. Update von axios auf v.1.16.0. TO-DO und Änderungen: open-meteo-weather EDIT 09.05.2026: Auch die externen Widget Scripte auf GitHub habe ich nun mit den farblichen Wetter Events angepasst. Zusätzlich habe ich eine Prüfung eingebaut die Anzeigt ob es neue Versionen auf GitHub gibt. Danke an alle fürs Testen.
  • Neuer Adapter ioBroker.evcc

    Verschoben
    270
    0 Stimmen
    270 Beiträge
    55k Aufrufe
    W
    @lesiflo Das ist die Restdauer in Sekunden Kannst Du zB wie folgt umrechen: [image: 1777808038902-screenshot-2026-05-03-133331.png] javascript.0 13:31:46.226 info 00:47 Hier also 47 Minuten
  • Neuer Adapter EMS-ESP für Bosch Heizungen

    Verschoben api bosch buderus ems-esp heizungssteuerung junkers km200 netfit
    751
    0 Stimmen
    751 Beiträge
    242k Aufrufe
    T
    Ich selber bin vor drei Jahren auf Home Assistant umgestiegen und halte den ioBroker-Adapter nur noch am Laufen. heatingactivated ist ja ein Schalter. Wozu du den in der InfluxDB Datenbank brauchst musst du selber wissen.
  • Betatest Adapter Plex v1.2.x

    Gesperrt
    3
    1 Stimmen
    3 Beiträge
    95 Aufrufe
    mcm1957M
    @homoran Dieses Topic sollte geschlossen werden. Weiter gehts da: https://forum.iobroker.net/topic/84453/adapter-test-plex-2.0.x
  • [Adapter] cloudfreie Auslesung von Deye-Invertern

    Verschoben
    1k
    9 Stimmen
    1k Beiträge
    425k Aufrufe
    SmartStuffCoyoteS
    Ich weiß, dass es Möglichkeiten gibt - ich fragte nach dem Verhalten dieses Adapters, ebenso wie ich nachvdem Durchsuchen von Threads fragte. Ich schalte die Dach-PV ab, ich schalte die Zwangsladung der Batterie ein (ebenso wie ich das zum günstigsten Zeitfenster nachts mache, wenn die Realdaten-Prognose unzureichende PV-Versorgung errechnet) und ich übersteuere die Heizstabeinstellungen. Eine Anleitung, wie ich grundsätzlich irgendeine PV abschalte, brauche ich nicht. Basteleien mit Zusatzhardware mag ich nicht, möchte ich im Außenbereich auch vermeiden, und machen die Sache sowieso sehr schnell unwirtschaftlich. PS: was glaubst du eigentlich, wie ich diesen Thread gefunden habe?
  • Test adapter ioBroker.simple-proxy-manager version 0.1.10

    3
    0 Stimmen
    3 Beiträge
    116 Aufrufe
    L
    ioBroker.proxy ist ein Pfad-Präfix-Proxy innerhalb des web-Adapters. Er ist auf das Sub-URL-Schema (example.com/proxy.0/...) beschränkt und teilt die Konfiguration des web-Adapters (Port, Zertifikat, Auth). Der Adapter kann eine Domain nicht als Routing-Kriterium verwenden, das Routing erfolgt ausschließlich über den Pfad. ioBroker.simple-proxy-manager ist ein vollwertiger, eigenständiger Reverse Proxy mit virtuellen Hosts, SNI, parallelem HTTP/HTTPS, ACME-Forwarding, IP-Filtering, HSTS und Zertifikats-Monitoring. Man kann ioBroker-Dienste oder andere Web-Oberflächen unter eigenen Domainnamen auf den Standard-Ports 80/443 (oder auch andere Ports) aus dem Internet oder dem lokalen Netzwerk erreichbar machen (z.B. iobroker.example.com für das iobroker Web UI, lovelace.example.com für eine lovelace Instanz, meine-website.com für eine Website die im lokalen Netzwerk oder im iobroker selbst gehostet wird).
  • Test Adapter Pylontech v0.0.10

    Verschoben
    225
    2
    0 Stimmen
    225 Beiträge
    48k Aufrufe
    H
    Hallo, erstmal vielen Dank für den Adapter. Ich betreibe ein PowerCube H1 - Sprich SC1000-100 mit 14xH48050 Packs. Die Daten kommen, sind aber bissel verschoben und nicht immer 100% schlüssig (das kann aber an mir liegen). [image: 1777576689916-6e207254-91d3-43d4-a6be-d018a5b2930d-image.jpeg] Ich hab mal die JSON der Objekte mit angehängt - bissel groß - sind in Summe 210 Zellen. pylontech.json Danke Helge
  • Test Adapter google-sharedlocations2

    Verschoben
    43
    4 Stimmen
    43 Beiträge
    2k Aufrufe
    GarfonsoG
    @Gaspode Keine Ahnung. Eigentlich (tm) läuft das mit dem Login hier problemlos. Aber du kannst dem Adapter verbieten, sich einzuloggen -> lösch einfach Username und Passwort aus den Einstellungen. Dann loggt er sich nur mit dem Cookie ein. Er versucht das dann auch mit dem Browser.
  • Test Adapter TP-Link Tapo

    Verschoben
    851
    3
    2 Stimmen
    851 Beiträge
    303k Aufrufe
    sunpower10S
    Hallo, ich habe einen Button S200B über den Hub H100 angeschlossen und würde Eingaben über den Button gerne erfassen, nur finde ich beim Hub keine Parameter dafür? Der Button scheint bei den Objekten gar nicht auf, da er wohl kein Gerät im Sinne einer eigenen IP Adresse ist. Danke!
  • Test Adapter vis-2-widget-sigenergy v1.7.x GitHub/Latest

    1
    0 Stimmen
    1 Beiträge
    34 Aufrufe
    Niemand hat geantwortet
  • Test Adapter Unifi Network

    Verschoben
    149
    5 Stimmen
    149 Beiträge
    13k Aufrufe
    K
    Ahh ich habs, Datenpunkte Black/List Whitelist..... Das war Standardmäßig auf Blacklist und recht viel ausgeschlossen. Hatte auf den ersten Blick nicht erkannt wofür das gut sein soll.
  • Tester Adapter Volvo On Call und Android Automotive

    Verschoben volvo volvo on call
    95
    3
    0 Stimmen
    95 Beiträge
    14k Aufrufe
    M
    Tatsächlich bei mir genauso. Habe die API regeneriert und nun funktioniert es. Vielen lieben Dank für die Tipps
  • Test Adapter telegram-menu v.1.6.x

    Verschoben
    2k
    8 Stimmen
    2k Beiträge
    883k Aufrufe
    Michael RolingM
    @negalein Genau das mit dem Log ist klar, da habe ich extra einen Guard für eingebaut. Du kannst jetzt in der Browser console schauen, da sollte ein Log kommen. Kannst du denn jetzt alle User sehen?
  • Test Adapter Miner version v1.0.x Latest

    1
    0 Stimmen
    1 Beiträge
    68 Aufrufe
    Niemand hat geantwortet
  • Test Adapter NSPanel-lovelace-ui v0.17.x

    Verschoben
    1k
    5 Stimmen
    1k Beiträge
    219k Aufrufe
    Thomas BraunT
    @ticaki War einfach... Es ist einfach IMMER nodejs... :-D

604

Online

32.9k

Benutzer

83.0k

Themen

1.3m

Beiträge