Skip to content

Hardware

Hardware für ioBroker oder Einbindung von Hardware in ioBroker

5.5k Themen 86.6k Beiträge

NEWS

  • sma echarger (wallbox) 22kW

    14
    2
    0 Stimmen
    14 Beiträge
    47 Aufrufe
    fuzzy1955F
    @AFi Diese wäre zu ändern im Holding-Register der Modbus-Instanz: _address deviceId name description unit type len factor offset formula role room poll wp cw isScale 1466 3 Waiting Waiting int16be 1 0 0 state true false false false
  • Empfehlung Rollladenschalter Zigbee / WLAN

    14
    0 Stimmen
    14 Beiträge
    288 Aufrufe
    M
    Jo. Mit Tuya hat das keinen Sinn. Heute nochmal einen Tuya Hub besorgt für 3 Geld 50 und die Curtain Switch dort eingebunden. Über den Tuya Adapter wird es erkannt aber es wird nichtmal ein Status aktualisiert. Die Tuya eigene Integration zu Alexa werde ich aber nicht durchführen. Das ist dann am Ende das Einzige, was ich davon hätte, denn Lovelace erkennt das Ding nur als Sensor und lässt keine Steuerung zu, und auch ein Alias aus dem Datenpunkt verhält sich nicht anders als über Z2M. Ich werde damit das Tuya Kapitel abschließen. Es wird auch immer schwerer Tuya Geräte mit ESP zu bekommen, die man flashen kann. Gestern dann noch die Shelly 2PM Gen3 mit dem Zubehör geordert. Ich denke, damit werde ich insgesamt glücklicher. Hätte da dann 6 Heuxgir WLAN Rolladenschalter mit CBU-IPEX Chip und 15 Loratap Zigbee TS130F Rollladenschalter, sowie ein Tuya wired Zigbee Gateway günstig abzugeben. ;)
  • FoxEss H3 Wechselrichter per Modbus in ioBroker

    55
    8
    0 Stimmen
    55 Beiträge
    13k Aufrufe
    R
    @martinp ja hab ich für das apple Smartfon, allerdings hat sich der EBZ Zähler wenig davon beeindrucken lassen ;)
  • Ring Intercom

    66
    1 Stimmen
    66 Beiträge
    12k Aufrufe
    D
    So, im Home-Assistant-Bereich gibt es mittlerweile eine Lösung. Hier leider noch nicht, oder? https://github.com/home-assistant/core/issues/156007#issuecomment-3542941968
  • Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

    Verschoben keba keenergy m-tec modbus
    142
    0 Stimmen
    142 Beiträge
    29k Aufrufe
    E
    Hab hier im Beitrag mal einige Informationen gesammelt und mich mit ChatGPT mal um ein aktuelles Skript gekümmert. Vielen Dank für die Vorarbeit. Es hat jetzt auch schreibbare Datenpunkte für Normal und Absenktemperatur, Boiler Soll&Stütztemp, sowie Boiler Betriebsart erzeugt. Außerdem mit der Möglichkeit, für einen lokalen login. Einfach host, username und password ändern im ersten Abschnitt "Konfiguration" /** * Script für Mtec / Hautec / Keba Wärmepumpe * Verwendet AXIOS statt request */ const axios = require('axios'); // ==== KONFIGURATION ==== const heizung_host = '192.168.xxx.xxx'; const username = 'BENUTZERNAME'; const password = 'PASSWORT'; // Konstanten const urlOfHeatpump = 'https://' + heizung_host + '/var/readWriteVars'; const urlWriteHeatpump = 'https://' + heizung_host + '/var/readWriteVars?action=set'; // Variablen die wir lesen wollen const jsonRequest = [ // bereits vorhandene { "name": "APPL.CtrlAppl.sParam.param.setControlMode" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].tempRoom.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].topTemp.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.outdoorTemp.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.offsetRoomTemp" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.selectedSetTemp" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.heatRequest" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.coolRequest" }, { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].values.heatRequestTop" }, { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].tempReflux.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.flowSetTemp" }, { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp" }, { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp" }, { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value" }, // Quelle / WP-Temperaturen (Namen je nach Firmware, hier typische KEBA-Namen) { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempSourceIn.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempSourceOut.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempHeatFlow.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempCompressorIn.values.actValue" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempCompressorOut.values.actValue" }, // Pumpen- / Verdichter-Leistungen (skaliert, z.B. 0..1) { "name": "APPL.CtrlAppl.sParam.heatpump[0].CircPump.values.setValueScaled" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].Source.values.setValueScaled" }, { "name": "APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled" }, // WP-Zustand { "name": "APPL.CtrlAppl.sParam.heatpump[0].values.heatpumpState" }, // Estrichprogramm aktiv? { "name": "APPL.CtrlAppl.sParam.screedDrying.values.active" }, // PV-Überschuss aktiv? { "name": "APPL.CtrlAppl.sParam.photovoltaics.values.excessEnergyActive" } ]; // ==== STATES ANLEGEN ==== // Allgemeine Temperaturen createState('javascript.'+instance+'.Heizung.Aussentemperatur', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Boilertemperatur.ist', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Boilertemperatur.soll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true }); createState('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true }); // Heizkreis-Ordner (wie gewünscht) createState('javascript.'+instance+'.Heizung.Heizkreis.Raumtemperatur.soll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true }); createState('javascript.'+instance+'.Heizung.Heizkreis.Heizung.aufheizen', false, { type: 'boolean', role: 'indicator', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true }); createState('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true }); // Rücklauf createState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: false }); // Boiler-Betriebsart createState('javascript.'+instance+'.Heizung.Boiler.aufheizen', false, { type: 'boolean', role: 'indicator', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Boiler.Betriebsart', 0, { type: 'number', role: 'level', states: { "0": "Aus", "1": "Auto", "2": "Ein", "3": "ManAufheizen" }, read: true, write: true }); // Quelle / WP / Pumpen / Status createState('javascript.'+instance+'.Heizung.QuelleTemp.Ein', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.QuelleTemp.Aus', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Heizkreis.VorlaufTemp.ist', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Ein', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Aus', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Pumpe.Heizkreis.Soll', 0, { type: 'number', role: 'value', unit: '', read: true, write: false }); createState('javascript.'+instance+'.Heizung.Pumpe.Quelle.Soll', 0, { type: 'number', role: 'value', unit: '', read: true, write: false }); createState('javascript.'+instance+'.Heizung.WP.Verdichter.Soll', 0, { type: 'number', role: 'value', unit: '', read: true, write: false }); createState('javascript.'+instance+'.Heizung.WP.Status', 0, { type: 'number', role: 'value', read: true, write: false }); createState('javascript.'+instance+'.Heizung.WP.StatusText', '', { type: 'string', role: 'text', read: true, write: false }); // Estrichprogramm / PV createState('javascript.'+instance+'.Heizung.Estrichprogramm.aktiv', false, { type: 'boolean', role: 'indicator', read: true, write: false }); createState('javascript.'+instance+'.Heizung.PV.UeberschussAktiv', false, { type: 'boolean', role: 'indicator', read: true, write: false }); // Hilfsfunktion: WP-Statuscode in Text umwandeln (Beispiel-Mapping, je nach Doku anpassen) function mapHeatpumpStateToText(code) { switch (code) { case 0: return 'Standby'; case 1: return 'Anforderung'; case 2: return 'Heizen'; case 3: return 'Abtauen'; case 4: return 'Warmwasser'; case 5: return 'Fehler'; default: return 'Unbekannt (' + code + ')'; } } // ==== FUNKTION: Daten lesen ==== async function readHeatpump() { try { const response = await axios.post(urlOfHeatpump, jsonRequest, { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false // Selbstsigniertes KEBA-Zertifikat akzeptieren }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); const data = {}; response.data.forEach(item => data[item.name] = item.value); // Allgemeine Temperaturen setState('javascript.'+instance+'.Heizung.Aussentemperatur', parseFloat(data["APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.Boilertemperatur.ist', parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].topTemp.values.actValue"]) || 0, true); // Heizkreis-Soll (berechneter Sollwert der WP) setState('javascript.'+instance+'.Heizung.Heizkreis.Raumtemperatur.soll', parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue"]) || 0, true); // Heizanforderung (Heizkreis) nur lesen setState('javascript.'+instance+'.Heizung.Heizkreis.Heizung.aufheizen', data["APPL.CtrlAppl.sParam.heatCircuit[0].values.heatRequest"] == "1", true); // Boiler aufheizen nur lesen const heatRequestTop = data["APPL.CtrlAppl.sParam.hotWaterTank[0].values.heatRequestTop"]; setState('javascript.'+instance+'.Heizung.Boiler.aufheizen', heatRequestTop === "true" || heatRequestTop === "1" || heatRequestTop === true, true); // Rücklauf setState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist', parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].tempReflux.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll', parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].values.flowSetTemp"]) || 0, true); // Boiler-Betriebsart setState('javascript.'+instance+'.Heizung.Boiler.Betriebsart', parseInt(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode"]) || 0, true); // Normal- und Absenktemperatur (Heizkreis) setState('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll', parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp"]) || 0, true); setState('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll', parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp"]) || 0, true); // Boiler Soll-Temperaturen setState('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll', parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value"]) || 0, true); setState('javascript.'+instance+'.Heizung.Boilertemperatur.soll', parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value"]) || 0, true); // === neue Datenpunkte setzen === // Quelle / WP Temperaturen setState('javascript.'+instance+'.Heizung.QuelleTemp.Ein', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempSourceIn.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.QuelleTemp.Aus', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempSourceOut.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.Heizkreis.VorlaufTemp.ist', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempHeatFlow.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Ein', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempCompressorIn.values.actValue"]) || 0, true); setState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Aus', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempCompressorOut.values.actValue"]) || 0, true); // Pumpen-/Verdichter-Sollwerte (skaliert) setState('javascript.'+instance+'.Heizung.Pumpe.Heizkreis.Soll', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].CircPump.values.setValueScaled"]) || 0, true); setState('javascript.'+instance+'.Heizung.Pumpe.Quelle.Soll', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].Source.values.setValueScaled"]) || 0, true); setState('javascript.'+instance+'.Heizung.WP.Verdichter.Soll', parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled"]) || 0, true); // WP-Status const hpState = parseInt(data["APPL.CtrlAppl.sParam.heatpump[0].values.heatpumpState"]) || 0; setState('javascript.'+instance+'.Heizung.WP.Status', hpState, true); setState('javascript.'+instance+'.Heizung.WP.StatusText', mapHeatpumpStateToText(hpState), true); // Estrichprogramm setState('javascript.'+instance+'.Heizung.Estrichprogramm.aktiv', data["APPL.CtrlAppl.sParam.screedDrying.values.active"] == "true", true); // PV-Überschuss aktiv? setState('javascript.'+instance+'.Heizung.PV.UeberschussAktiv', data["APPL.CtrlAppl.sParam.photovoltaics.values.excessEnergyActive"] == "true", true); } catch (err) { log("Fehler beim Lesen der Wärmepumpe: " + err, 'error'); } } // ==== INTERVALL: alle 1 Minute lesen ==== schedule("* * * * *", readHeatpump); // ==== SCHREIBEN: Boiler-Betriebsart ==== on('javascript.'+instance+'.Heizung.Boiler.Betriebsart', async function (obj) { if (!obj || obj.state.ack) return; const newValue = String(obj.state.val); try { await axios.post(urlWriteHeatpump, [{ "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode", "value": newValue }], { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); log("Betriebsart erfolgreich gesetzt auf: " + newValue); } catch (err) { log("Fehler beim Schreiben der Betriebsart: " + err, 'error'); } }); // ==== SCHREIBEN: Boilertemperaturen ==== on('javascript.'+instance+'.Heizung.Boilertemperatur.soll', async function (obj) { if (!obj || obj.state.ack) return; const newValue = String(obj.state.val); log("Heizung: schreibe Boilertemperatur.soll = " + newValue, 'info'); try { await axios.post(urlWriteHeatpump, [{ "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value", "value": newValue }], { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); log("Boilertemperatur.soll erfolgreich gesetzt auf: " + newValue, 'info'); } catch (err) { log("Fehler beim Schreiben Boilertemperatur.soll: " + err, 'error'); } }); on('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll', async function (obj) { if (!obj || obj.state.ack) return; const newValue = String(obj.state.val); log("Heizung: schreibe Boilertemperatur.reducedSoll = " + newValue, 'info'); try { await axios.post(urlWriteHeatpump, [{ "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value", "value": newValue }], { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); log("Boilertemperatur.reducedSoll erfolgreich gesetzt auf: " + newValue, 'info'); } catch (err) { log("Fehler beim Schreiben reducedSetTempMax.value: " + err, 'error'); } }); // ==== SCHREIBEN: Normal- und Absenktemperatur Heizkreis ==== on('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll', async function (obj) { if (!obj || obj.state.ack) return; const newValue = String(obj.state.val); log("Schreibe Normal-Temperatur (Heizkreis) = " + newValue, 'info'); try { await axios.post(urlWriteHeatpump, [{ "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp", "value": newValue }], { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); log("NormalTemp erfolgreich gesetzt.", 'info'); } catch (err) { log("Fehler beim Schreiben NormalTemp: " + err, 'error'); } }); on('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll', async function (obj) { if (!obj || obj.state.ack) return; const newValue = String(obj.state.val); log("Schreibe Reduzierte Temperatur (Heizkreis) = " + newValue, 'info'); try { await axios.post(urlWriteHeatpump, [{ "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp", "value": newValue }], { httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }), auth: { username: username, password: password }, headers: { 'Content-Type': 'application/json' } }); log("ReducedTemp erfolgreich gesetzt.", 'info'); } catch (err) { log("Fehler beim Schreiben ReducedTemp: " + err, 'error'); } });
  • Smart Meter liefert plötzlich keine Detailwerte mehr

    3
    0 Stimmen
    3 Beiträge
    49 Aufrufe
    ArmilarA
    z.B. ein Stromausfall des Netzbeteibers kann so etwas bewirken. Oder wenn irgendjemand am Zähler arbeitet und die Sicherungen zieht.
  • Smarter MID zertifizierter Zähler

    17
    0 Stimmen
    17 Beiträge
    100 Aufrufe
    HomoranH
    @David-G. sagte in Smarter MID zertifizierter Zähler: Und er kann, falls noch weitere Zähler kommen bis zu 16 Stück bedienen. der Modbus schafft 256 ;-) ich hab momentan 7 dran. es geht auch ein Pi2/3 als Slave mit einen RS485toUSB Stick. wenn der Pi noch irgendwo rumliegt, bist du mit kleinstem Geld (<10 -20Taler) dabei. @David-G. sagte in Smarter MID zertifizierter Zähler: wie lang der für die Installation braucht. wenn der dafür länger als 5 Minuten braucht taugt der nix
  • CO2 Ampel mit MQTT und ESP8266

    102
    5
    10 Stimmen
    102 Beiträge
    17k Aufrufe
    EisbaeeerE
    Hallo Stefan Ich bin noch nicht dazugekommen. Mea Culpa. Das sollte schon gehen, allerdings muss dazu MQTT subscription im Code aktiviert werden. Derzeit sendet er nur die Werte. Das ist leider etwas umfangreicher.
  • Umzug ioBroker inkl. Zigbee auf anderen Mini-PC

    10
    0 Stimmen
    10 Beiträge
    178 Aufrufe
    D
    Umzug mit Backitup hat problemlos geklappt. Selbst bei Zigbee musste ich nichts mehr anpassen, geschweige denn die shepherd.db austauschen. Alle Zigbee-Geräte wurden auf Anhieb gefunden und wieder verbunden. Vielen Dank an alle
  • Aqara U200 spackt

    1
    0 Stimmen
    1 Beiträge
    60 Aufrufe
    Niemand hat geantwortet
  • SONOFF NSPanel mit Lovelace UI

    lovelace ui nspanel sonoff
    8k
    12
    16 Stimmen
    8k Beiträge
    7m Aufrufe
    K
    sagte in SONOFF NSPanel mit Lovelace UI: @ticaki stimmt. ich habe gerade den Hinweis im Script selbst dazu gelesen. Das ist die Ursache. Nun recherchiere ich gerade, wie ich den Tasmota downgrade auf der Tasmota Oberfläche machen kann Nach mehreren Versuchen läuft das Nexion Updaten nun an. Vielen Dank.
  • smartes 24VDC Relais mit Wechsler/Öffner

    12
    0 Stimmen
    12 Beiträge
    153 Aufrufe
    D
    evt bei Eltako so etwas zu bekommen...ESR61M zb?
  • Go-e Charger mit PV Überschuss

    15
    3
    0 Stimmen
    15 Beiträge
    493 Aufrufe
    D
    Kurzes neues Info. Nach dem Update auf Firmware 60.1 keine Verbindung mit Firmware 60.2 geht es wieder.
  • Suche Lichtsensor der ohne Bewegung die Helligkeit misst

    18
    0 Stimmen
    18 Beiträge
    350 Aufrufe
    haselchenH
    @fredf Mir musste das nicht sagen. Der Aqara Lichtsensor ist für innen ;) Und den hatte ich vorgeschlagen. Aber damit ist mein Soll auch erfüllt.
  • Zigbee verliert alle paar Tage alle Fensterkontakte

    7
    2
    0 Stimmen
    7 Beiträge
    242 Aufrufe
    A
    @bananajoe said in Zigbee verliert alle paar Tage alle Fensterkontakte: @alexhaxe die oben bestellten haben auch AAA Batterien, auch wenn das meine ich vorher nirgends in der Beschreibung stand. ist halt trotzdem ein sehr klobiger Klotz. Ich schätze das verbaute Zigbee-Modul ist halt einfach so breit, und passt in kein schmaleres Gehäuse. Da hilft vermutlich nur ein eigens dafür entwickeltes Board, wie beim Parasoll, blöd wenn es buggy ist. Ich musste aber sowieso feststellen, das der Batterietyp nichts über die Lebensdauer aussagt. Das ist klingt plausibel. Dennoch ist eine Reduktion der Vielfalt an Batterie-Formfaktoren erstrebenswert.
  • Zigbee Stick keine Verbindung/nach Update

    12
    0 Stimmen
    12 Beiträge
    205 Aufrufe
    Ro75R
    @13patrick37 versuche mal sudo systemctl set-default multi-user.target Ro75.
  • Suche eine Empfehlung für kleine Zigbee Temp. Sensoren

    7
    0 Stimmen
    7 Beiträge
    237 Aufrufe
    arteckA
    @ro75 btw. sind die gleichen die ich gepostet habe ausser dass deine total überteuert sind..da amadoof
  • PIR Bewegungsmelder an Shelly I4 Gen3

    4
    0 Stimmen
    4 Beiträge
    150 Aufrufe
    WalW
    @uwe-waizmann , du brauchst entweder ein PIR mit potentialfreiem Kontakt oder musst ein Relais ansteuern und den Kontakt auf den Shelly. Beides wird ein Geräusch erzeugen, aber das oben verlinkte wird nicht laut sein.
  • Erfahrungen mit ELV Bodenfeuchte Sensor SoMo1

    5
    0 Stimmen
    5 Beiträge
    332 Aufrufe
    A
    So, ich habe jetzt mal den Somo1 von ELV getestet: der Somo1 hat einen FDC2214 für die kapazitive Bodenfeuchtemessung mit der Adresse 0x2B und einen SHT4x für die Temperatur und Luftfeuchtemessung eingebaut. Diese können über Bibliotheken vom ESP über den I2C-Bus ausgelesen werden. Bei mit hat's folgendermaßen funktioniert: für den FDC2112: #include <FDC2214.h> // von GitHub: zharijs/FDC2214, funktioniert auch mit FDC2112 #define FDC2112_ADDR 0x2B FDC2214 capsense(FDC2112_ADDR); die Initialisierung FDC2112 geschieht mit: capOk = capsense.begin(0x3, 0x4, 0x5, true); Die Werte in capOk = capsense.begin(0x3, 0x4, 0x5, true); haben gemäß der gängigen FDC2214 Arduino-Bibliothek folgende Bedeutung: 0x3 — Kanalmaske (chanMask): Aktiviert die Kanäle 0 und 1 (Binär 0011), d.h. die ersten zwei Kanäle des Sensors werden genutzt. 0x4 — Auto-Scan Sequenz (autoscanSeq): Legt die Auto-Scan-Konfiguration fest; mit diesem Wert wird festgelegt, wie viele Kanäle im Sequenzmodus automatisch durchlaufen werden (hier typischerweise zwei Kanäle). 0x5 — Entprell-Frequenz (deglitchFreq): Bestimmt die Filterfrequenz des Entprell-Filters für das Sensorsignal. Werte wie 0x3, 0x5 entsprechen unterschiedlichen Frequenzen (z.B. 5 MHz), um Störungen auszufiltern. true — Nutzung des internen Oszillators (intOsc): Boolescher Wert, der angibt, ob der interne Oszillator des FDC2214 genutzt wird (true) oder ein externer Takt (false). Man erhält dann mit capa = capsense.getReading28(0); die Rohwerte, bei mir waren das 11534335 für den Nullwert (trocken) und 9043967 für komplett im Wasser. Das muss man dann eben auf 0 - 100% umrechnen. Für den SHT4x: #include <Adafruit_SHT4x.h> Adafruit_SHT4x sht4 = Adafruit_SHT4x(); sht4.begin() Beim SHT4x kann man noch mit: sht40.setPrecision(SHT4X_HIGH_PRECISION); // höchste Genauigkeit optional auf höhere Auflösung schalten und mit: sht4.setHeater(SHT4X_NO_HEATER) eine potenzielle Heizung abschalten. Mit sensors_event_t humidity, temp; sht4.getEvent(&humidity, &temp); die Luftfeuchte und Temperatur auslesen. Die Werte können dann per MQTT oder ähnlich weiterverarbeitet werden. Fazit: Der Somo1 misst sehr verlässlich seit August im Garten. Der eigentliche Meßfühler (in der Erde) sieht noch aus wie am 1. Tag. Keine Aufweicherscheinungen oder Blasenbildung wie bei dem NoName "Capacitive Soil Moisture Sensor v2.0", den ich davor ausprobiert hatte. Aus meiner Sicht hat sich der Mehrpreis bei der Beschaffung ausgezahlt.
  • Verbindung Alarmzentrale über VDS2465 ?

    3
    0 Stimmen
    3 Beiträge
    88 Aufrufe
    R
    @mcm1957 Ja, den Adapter hatte ich im Sinn. Hat den jemand im Einsatz bzw. kann jmd über Erfahrungen berichten ?

375

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge