Weiter zum Inhalt

Praktische Anwendungen (Showcase)

906 Themen 33.7k Beiträge
Zeigt eure umgesetzten Projekte

NEWS

  • [Javascript] Midas (Aquatemp) Poolheizung

    359
    1
    3 Stimmen
    359 Beiträge
    92k Aufrufe
    D
    @oxident Ich werde es testen und hier berichten!
  • [Howto] Steuerung Fairland Pool-Wärmepumpe mit Tuya-Adapter

    6
    5
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    M
    @magix sagte in [Howto] Steuerung Fairland Pool-Wärmepumpe mit Tuya-Adapter: Hi, ich habe jetzt auch mal versucht meine Pool Wärmepumpe aus der Tuya App über den Adapter einzubinden, funktioniert auch alles soweit und die Werte kommen auch alle an. Jedoch kann ich keinen Datenpunkt schreiben und damit das Gerät nicht steuern. Sobald ich einen Datenpunkt beschreibe wird der ein paar Sekunden später von der Cloud zurückgesetzt auf den Ursprungszustand. Jemand ein Tip? Danke magix Also bei meiner Poolsana InverPremium habe ich neben wahnsinnig vielen Datenpunkten unter anderem diese Datenpunkte: [image: 1752090197548-dc657b42-b17a-4efe-bcf4-74143a3856d8-image.png] mit Datenpunkt 1 kann ich ein- bzw. ausschalten, mit 101 stelle ich die gewünschte zieltemperatur fürs heizen, mit 102 fürs kühlen ein. mit 117 wähle ich ob sie Smart, Powerful oder Silent laufen soll und mit 2 wähle kann ich auch verschiedene Betriebsmodi wählen. 17 dient bei mir zum auslesen des Status der WP. Ich habe einfach mit der SmartLife App einstellungen getroffen und dann bei jenen Datenpunkten, wo ich dachte, dass diese passen könnten, dann diese kontrolliert ob sie geändert wurden. Sobald ich das wusste, hab ich in iobroker den Datenpunkt geändert und in der App kontrolliert ob die Änderung erfolgt ist. Achja dann gibt es noch den Datenpunkt tuya.0.bf996f6xxxxxx61edv.noLocalConnection den habe ich auf false gesetzt. Damit geht der Adapter direkt über WLAN ohne die Cloud. die Poolsana habe ich aber nicht über die Tuya App sondern über die Smart Life App eingebunden. Muss man im Tuja Adapter dann auch entsprechend bei der Instanz einstellen.
  • 16 Stimmen
    220 Beiträge
    61k Aufrufe
    K
    @homoran Die Meßstellenbetreiber und die Digitalisierung .... Gibt es "schon" einen Zugang zum Portal? Sind dort die Meßwerte des iMSys abrufbar? Bei mir gibt es im Portal nur die Bezugsdaten und mit TRuDI nur die Einspeisedaten. Also ohne TRuDi nur ein Teil der Daten verfügbar. Und dazwischen gab es mal eine Woche Ausfall. Da fehlen Meßwerte und ich hatte auch keinen TRuDI Zugriff auf den Zähler.
  • [HowTo] InfluxDB 2.1 auf Debian 11 (proxmox CT) installieren

    131
    3
    2 Stimmen
    131 Beiträge
    40k Aufrufe
    T
    @thomas-braun danke
  • ShellyPlus H&T - erste Erfahrungen

    h&t shelly
    27
    3
    1 Stimmen
    27 Beiträge
    9k Aufrufe
    J
    Hallo, ich bin auch an einer Lösung interessiert, mich nervt der Fehler im Log auch. Zumal die Daten ja geschrieben werden.
  • Automatsche Dosieranlage low budget

    50
    5
    9 Stimmen
    50 Beiträge
    9k Aufrufe
    FlexerF
    Hallo an alle, meine Dosieranlage habe ich jetzt auf Github hochgeladen. Hier der Link https://github.com/FlexerJR/Automatische-Dosieranlage/blob/main/README.md Wenn jemand ein ähnliches Setup hat ist er gerne eingeladen es zu testen. Viele Grüße
  • DEYE SUN-12K-SG04LP3 Wechselrichter mit ModBUS auslesen

    Verschoben
    27
    7
    3 Stimmen
    27 Beiträge
    24k Aufrufe
    HomoranH
    @hagiman2000 was willst du denn jetzt? Modbus oder Adapter? https://forum.iobroker.net/post/1278786
  • ESERA 1 Wire Controller

    1
    0 Stimmen
    1 Beiträge
    200 Aufrufe
    Niemand hat geantwortet
  • Tasmota MQTT Werte erhalten

    11
    8
    0 Stimmen
    11 Beiträge
    4k Aufrufe
    G
    @tasuanetrukiat Kannst du das evtl. als Export zur Verfügung stellen? Ich bekomme es einfach nicht nachgebaut.
  • Modbus als Slave

    4
    6
    2 Stimmen
    4 Beiträge
    654 Aufrufe
    M
    @peterfido Alles klar, besten Dank.
  • [How-To] BMW HomeKit Integration via ioBroker

    12
    15
    1 Stimmen
    12 Beiträge
    2k Aufrufe
    K
    @houbi danke für die Rückmeldung. Bin es gerade am aufbauen, was hast du noch optimiert?
  • OpenEpaperLink - Script für Tastenabfrage

    5
    5
    1 Stimmen
    5 Beiträge
    580 Aufrufe
    B
    Hier ein geändertes Skript für die, die mehrere APs haben. // // ############################################# // // Dieses Script ermöglicht die Buttonabfrage. // // In dem Script wird die Socket-Verbindung von Beowolf verwendet (https://forum.iobroker.net/topic/66380/e-ink-display-openepaperlink-displayanzeige-mit-batterie/809?_=1747419968864) // // Ein erweitertes Skript von Eisbaeeer ist hier (https://forum.iobroker.net/topic/81101/openepaperlink-script-für-tastenabfrage ) // // Die Button-States werden unter dem konfigurierten basePathPrefix erzeugt. // // ############################################# // ############################################# // // Konfigurierbare Variablen - Hier die Anpassungen vornehmen! // const rootPath = '0_userdata.0'; // Bei Bedarf anpassen const controlRoot = 'EPaperControl'; // Oberordner für Steuerung const buttonRoot = 'Buttons'; // Unterordner für Buttons const accesspoints = [ { location: 'Erdgeschoss', ip: '192.168.49.185' }, // Accesspoint IP Adresse { location: 'Obergeschoss', ip: '192.168.49.186' }, // Accesspoint IP Adresse { location: 'Dachgeschoss', ip: '192.168.49.187' }, // Accesspoint IP Adresse { location: 'Hühnerhaus', ip: '192.168.49.139' } // Accesspoint IP Adresse ]; // // ENDE Anpassungen! Ab hier nichts mehr ändern! // ############################################# // // Automatisch generierte Pfade für jeden Accesspoint accesspoints.forEach(ap => { ap.name = `${ap.location}-AP`; ap.controlState = `${rootPath}.${controlRoot}.${ap.location}.Start`; ap.buttonPathPrefix = `${rootPath}.${controlRoot}.${ap.location}.${buttonRoot}`; }); const WebSocket = require('ws'); let wsConnections = {}; let pingIntervals = {}; let scriptStatus = {}; // Initialisierung der Steuerobjekte accesspoints.forEach(ap => { scriptStatus[ap.name] = false; setObject(ap.controlState, { type: 'state', common: { name: `Start/Stop ${ap.name}`, type: 'boolean', role: 'switch', read: true, write: true, def: false }, native: {} }); on({ id: ap.controlState, change: 'ne' }, (obj) => { if (obj.state.val === true) { scriptStatus[ap.name] = true; connectWebSocket(ap.name, ap.ip); } else { scriptStatus[ap.name] = false; disconnectWebSocket(ap.name); } }); getState(ap.controlState, (err, state) => { if (!err && state && state.val === true) { scriptStatus[ap.name] = true; connectWebSocket(ap.name, ap.ip); } }); }); function connectWebSocket(name, ip) { if (wsConnections[name]) return; const url = `ws://${ip}/ws`; const ws = new WebSocket(url); wsConnections[name] = ws; ws.on('open', () => { console.log(`WebSocket ${name} verbunden (${ip})`); pingIntervals[name] = setInterval(() => { if (ws.readyState === WebSocket.OPEN) { ws.ping(); } }, 10000); }); ws.on('message', (data) => { try { const parsed = JSON.parse(data); handleData(name, parsed); } catch { // Parsing-Fehler ignorieren } }); ws.on('close', () => { clearInterval(pingIntervals[name]); delete wsConnections[name]; if (scriptStatus[name]) { setTimeout(() => connectWebSocket(name, ip), 5000); } }); ws.on('error', () => { // Fehler ignorieren }); } function disconnectWebSocket(name) { if (wsConnections[name]) { wsConnections[name].close(); clearInterval(pingIntervals[name]); delete wsConnections[name]; delete pingIntervals[name]; } } function handleData(apName, parsedData) { const ap = accesspoints.find(a => a.name === apName); if (!ap || !scriptStatus[ap.name]) return; if (!parsedData.tags || !Array.isArray(parsedData.tags) || parsedData.tags.length === 0) return; parsedData.tags.forEach(tag => { if (!tag.mac) return; const macClean = tag.mac.replace(/:/g, ''); const basePath = `${ap.buttonPathPrefix}.${macClean}`; ensureChannelExists(basePath, tag.alias || tag.name || 'Unbenannt', () => { if ('wakeupReason' in tag) { const statePath = `${basePath}.wakeupReason`; updateStateIfChanged(statePath, tag.wakeupReason); } }); }); } function ensureChannelExists(id, name, callback) { getObject(id, (err, obj) => { if (!obj) { setObject(id, { type: 'channel', common: { name: name }, native: {} }, callback); } else { callback(); } }); } function updateStateIfChanged(id, value) { if (value === null || value === undefined) return; const isPrimitive = val => ['string', 'number', 'boolean'].includes(typeof val); let storedValue = value; let valueType = typeof value; if (!isPrimitive(value)) { try { storedValue = JSON.stringify(value); valueType = 'string'; } catch { return; } } getState(id, (err, state) => { if (err || !state) { setObject(id, { type: 'state', common: { name: id.split('.').pop(), type: valueType, role: 'value', read: true, write: false }, native: {} }, () => setState(id, storedValue, true)); } else if (state.val !== storedValue) { setState(id, storedValue, true); } }); }
  • Füllstandsmessung per Pegelsonde.

    Verschoben
    604
    0 Stimmen
    604 Beiträge
    231k Aufrufe
    W
    @bahnuhr Danke im Beitrag von @saeft_2003 oben, auf den ich antwortete, steht auch generic (0). Vielleicht ist das aber tatsächlich nicht mehr richtig...
  • Ecowitt Wetterstation/Froggit<->Foshkplugin MQTT->Iobroker

    13
    7
    0 Stimmen
    13 Beiträge
    8k Aufrufe
    K
    @saxbav Kannst Du mal die Adaptereinstellungen von dem Posten? möchte meine EcoWitt Sensoren anzeigen lassen. das Foshplugin scheint mir von der Installation sehr kompliziert zu sein und als adapter kann ich es nicht finden.
  • Shelly 3em Pro anderer Verbindungsweg?

    11
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    HomoranH
    @ralle lieferst du hier eine Anleitung für ein interessantes Objekt? Wenn nicht ist Showcase die falsche Kategorie. Ob die Funktionalität eines Shelly zu iobroker allgemein gehört kommt auf die weitere Entwicklung des Threads an.
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    68 Aufrufe
    Niemand hat geantwortet
  • [Javascript] Adapter-Instanzen überwachen

    34
    3
    0 Stimmen
    34 Beiträge
    6k Aufrufe
    K
    @acgua Das Skript hat bei mir über ein Jahr funktioniert, seit ein paar Wochen erhalte ich jedoch einen Fehler. javascript.0 2025-03-28 23:00:54.158 error script.js.Instanz_überprüfen.Instanz_Watcher: TypeError: CRON_PARSER.parseExpression is not a function at AdapterInstance.getPreviousCronRun (script.js.Instanz_überprüfen.Instanz_Watcher:578:42) at AdapterInstance.asyncIsInstanceFunctioning (script.js.Instanz_überprüfen.Instanz_Watcher:506:57) at AdapterInstance.asyncUpdateInfoVariables (script.js.Instanz_überprüfen.Instanz_Watcher:357:34) at AdapterInstance._initAdapterInstance_StateUpdatesAsync (script.js.Instanz_überprüfen.Instanz_Watcher:299:17) Kann mir ggfs. jemand helfen, woran das liegen kann? "Cron-Parser" ist bei der Javascript-Instanz vorhanden. [image: 1743199279476-2bac40b1-4828-4831-81ce-ef92da3a6336-image.png]
  • Anzeige von Bahn / Öffi / Zugverbindungen in Jarvis

    1
    2
    0 Stimmen
    1 Beiträge
    202 Aufrufe
    Niemand hat geantwortet
  • Growatt Noah 2000 - Nulleinspeisung

    growatt noah nulleinspeisung
    77
    0 Stimmen
    77 Beiträge
    30k Aufrufe
    R
    @maba17 Mail müsste angekommen sein. Grüße!
  • [Anleitung] Enphase Solar in ioBroker

    Verschoben enphase solar homebridge
    18
    2 Stimmen
    18 Beiträge
    5k Aufrufe
    Steffe.S.S
    @Ahnungsbefreit leider hat die Steuerung des Speichers nicht funktioniert. Auch ein Nachfragen bei EnphaseTeam wurde mit: " die aktive Steuerung des Speichers durch den Nutzer ist zur Zeit nicht vorgesehen" beantwortet. Zur Zeit teste ich ein Bisschen mit dem KI - Profil herum und versuche das Entladen des Speichers zu einer definierten Zeit zu unterbinden. In dieser Zeit darf dann das Auto mit Volllast der Wallbox geladen werden (Tigger ist hier die Entladeleistung der Batterie, wenn 0 W = Laden erlaubt) Gruss Steffen

361

Online

32.9k

Benutzer

83.1k

Themen

1.3m

Beiträge