NEWS
Zigbee externer converter mit Analog Input
-
Hallo Zusammen
Ich möchte mit einem ESP32-C6 einige Sensoren via Zigbee in IoBroker bringen.
Mittels Arduino IDE und viel Google habe ich einen "TempSensor" inklusive externem Converter in IoBroker gebracht..
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const definition = { zigbeeModel: ['ZigbeeTempSensor'], model: 'ZigbeeTempSensor', vendor: 'Espressif', description: 'Automatically generated definition', extend: [ m.temperature()], }; module.exports = definition; `;Nun würde ich aber gerne flexibler werden und analoge Inputs einlesen (evtl. auch ausgeben)
Das Arduino IDE Beispiel habe ich geflasht und der Device taucht auch in IoBroker auf...nur eben beim externen converter geht mir das Wissen ab. Mit Hilfe zur Selbsthilfe sollte ich dann wohl aber irgendwann weiterkommen :-)Hier der wohl relevante Teil von der example scetch (bezügllich cluster usw):
/* Zigbee analog device configuration */ #define ANALOG_DEVICE_ENDPOINT_NUMBER 1 ZigbeeAnalog zbAnalogDevice = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER); ZigbeeAnalog zbAnalogTemp = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 1); ZigbeeAnalog zbAnalogFan = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 2); ZigbeeAnalog zbAnalogPercent = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 3); void setup() { Serial.begin(115200); Serial.println("Starting..."); // Init button switch pinMode(button, INPUT_PULLUP); // Set analog resolution to 10 bits analogReadResolution(10); // Optional: set Zigbee device name and model zbAnalogDevice.setManufacturerAndModel("Espressif", "ZigbeeAnalogDevice"); // Set up analog input zbAnalogDevice.addAnalogInput(); zbAnalogDevice.setAnalogInputApplication(ESP_ZB_ZCL_AI_POWER_IN_WATTS_CONSUMPTION); zbAnalogDevice.setAnalogInputDescription("Power Consumption (Watts)"); zbAnalogDevice.setAnalogInputResolution(0.01); // Set up analog output zbAnalogDevice.addAnalogOutput(); zbAnalogDevice.setAnalogOutputApplication(ESP_ZB_ZCL_AI_RPM_OTHER); zbAnalogDevice.setAnalogOutputDescription("Fan Speed (RPM)"); zbAnalogDevice.setAnalogOutputResolution(1); // Set the min and max values for the analog output which is used by HA to limit the range of the analog output zbAnalogDevice.setAnalogOutputMinMax(-10000, 10000); //-10000 to 10000 RPM // If analog output cluster is added, set callback function for analog output change zbAnalogDevice.onAnalogOutputChange(onAnalogOutputChange); // Set up analog input zbAnalogTemp.addAnalogInput(); zbAnalogTemp.setAnalogInputApplication(ESP_ZB_ZCL_AI_TEMPERATURE_OTHER); zbAnalogTemp.setAnalogInputDescription("Temperature"); zbAnalogTemp.setAnalogInputResolution(0.1); // Set up analog input zbAnalogFan.addAnalogInput(); zbAnalogFan.setAnalogInputApplication(ESP_ZB_ZCL_AI_RPM_OTHER); zbAnalogFan.setAnalogInputDescription("RPM"); zbAnalogFan.setAnalogInputResolution(1); // Set up analog input zbAnalogPercent.addAnalogInput(); zbAnalogPercent.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER); zbAnalogPercent.setAnalogInputDescription("Percentage"); zbAnalogPercent.setAnalogInputResolution(0.01); // Add endpoints to Zigbee Core Zigbee.addEndpoint(&zbAnalogDevice); Zigbee.addEndpoint(&zbAnalogTemp); Zigbee.addEndpoint(&zbAnalogFan); Zigbee.addEndpoint(&zbAnalogPercent);Habe den Adapter 3.1.5 am laufen
Plus hier was ankommt im Adapter:
Vielen Dank für jeglichen Support schon im voraus.
-
Das ganze ist verhältnismässig einfach. Du musst eine Kombination von
- einer funktion im
fromZigbeesowie einemexposeerzeugen. Da du den gleichen Cluster in mehreren Endpunkten nutzt, könnte das so aussehen:
const m = require('../lib/modernExtend'); const exposes = require('../lib/exposes') const e = exposes.presets; const ea = exposes.access; function fzFromEpAndKey(ep, key) { cluster: "genAnalogInput", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { if (msg.endpoint.ID === endpointId) { if (msg.data.currentLevel !== undefined) { return { key: msg.data.currentLevel, }; } } return msg.data; }, } const definition = { zigbeeModel: ['MultiSensor'], model: 'MultiSensor', vendor: 'MickeMup', description: 'Forum generated definition', fromZigbee: [fzFromEpAndKey(1, 'fan_speed'), fzFromEpAndKey(2, 'temperature', fzFromEpAndKey(3, 'rpm`), fzFromEpAndKey(4, 'percentage')], exposes = [ e.numeric("fan_speed",ea.STATE_GET).withValueMin(-10000).withValueMax(10000).withDescription("Fan Speed"), e.numeric("temperature",ea.STATE_GET).withDescription("Temperature"), e.numeric("rpm",ea.STATE_GET).withDescription("RPM without limits"), e.numeric("percentage",ea.STATE_GET).withDescription("Percentace"), }; module.exports = definition; `;Es sicher auch möglich die ganzen Faktoren zu holen und zu nutzen die du in der Firmware setzt - so genau stecke ich da aber nicht drin.
- einer funktion im
-
Schonmal Danke für den Support
Ich habe 2-3 Typos gefunden und korrigiert (siehe unten), aber es will noch nicht.
Meine js Kenntnisse sind leider eher mau um den Fehler selbst zu finden...Unable to apply converter from module: /opt/iobroker/iobroker-data/zigbee_0/including.js - the code does not run: SyntaxError: Unexpected token ':'Ich habe 2-3 Typos gefunden, aber irgendwo wird es immer noch hapern.
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const exposes = require('zigbee-herdsman-converters/lib/exposes'); const e = exposes.presets; const ea = exposes.access; function fzFromEpAndKey(ep, key) { cluster: "genAnalogInput", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { if (msg.endpoint.ID === endpointId) { if (msg.data.currentLevel !== undefined) { return { key: msg.data.currentLevel, }; } } return msg.data; }, } const definition = { zigbeeModel: ['MultiSensor'], model: 'MultiSensor', vendor: 'MickeMup', description: 'Forum generated definition', fromZigbee: [fzFromEpAndKey(1, 'fan_speed'), fzFromEpAndKey(2, 'temperature'), fzFromEpAndKey(3, 'rpm'), fzFromEpAndKey(4, 'percentage')], exposes = [ e.numeric("fan_speed",ea.STATE_GET).withValueMin(-10000).withValueMax(10000).withDescription("Fan Speed"), e.numeric("temperature",ea.STATE_GET).withDescription("Temperature"), e.numeric("rpm",ea.STATE_GET).withDescription("RPM without limits"), e.numeric("percentage",ea.STATE_GET).withDescription("Percentace")] }; module.exports = definition;Müssen im converter z.B "fan_speed" genau wie in der Firmware heissen, damit das Ganze Funktioniert?
Und ist das beiden Despriptions ebenso? -
Schonmal Danke für den Support
Ich habe 2-3 Typos gefunden und korrigiert (siehe unten), aber es will noch nicht.
Meine js Kenntnisse sind leider eher mau um den Fehler selbst zu finden...Unable to apply converter from module: /opt/iobroker/iobroker-data/zigbee_0/including.js - the code does not run: SyntaxError: Unexpected token ':'Ich habe 2-3 Typos gefunden, aber irgendwo wird es immer noch hapern.
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const exposes = require('zigbee-herdsman-converters/lib/exposes'); const e = exposes.presets; const ea = exposes.access; function fzFromEpAndKey(ep, key) { cluster: "genAnalogInput", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { if (msg.endpoint.ID === endpointId) { if (msg.data.currentLevel !== undefined) { return { key: msg.data.currentLevel, }; } } return msg.data; }, } const definition = { zigbeeModel: ['MultiSensor'], model: 'MultiSensor', vendor: 'MickeMup', description: 'Forum generated definition', fromZigbee: [fzFromEpAndKey(1, 'fan_speed'), fzFromEpAndKey(2, 'temperature'), fzFromEpAndKey(3, 'rpm'), fzFromEpAndKey(4, 'percentage')], exposes = [ e.numeric("fan_speed",ea.STATE_GET).withValueMin(-10000).withValueMax(10000).withDescription("Fan Speed"), e.numeric("temperature",ea.STATE_GET).withDescription("Temperature"), e.numeric("rpm",ea.STATE_GET).withDescription("RPM without limits"), e.numeric("percentage",ea.STATE_GET).withDescription("Percentace")] }; module.exports = definition;Müssen im converter z.B "fan_speed" genau wie in der Firmware heissen, damit das Ganze Funktioniert?
Und ist das beiden Despriptions ebenso?@mickemup sagte in Zigbee externer converter mit Analog Input:
Schonmal Danke für den Support
Müssen im converter z.B "fan_speed" genau wie in der Firmware heissen, damit das Ganze Funktioniert?
Und ist das beiden Despriptions ebenso?Nein, das einzige was passen muss, ist die Endpunkt ID. Ich habe die Benennung einfach gewählt, weil du sie in der Firmenware so benannt hast. Letztendlich weiß der Converter nicht, was sich logisch hinter den Werten eines Endpunkte versteckt.
Was zusammenpassen muss, ist die Bezeichnung im Funktions Aufruf zufzFromEpAndKeyund imexpose. Das wird dann die ID des Daten Punktes, während die Beschreibung in der FunktionwithDescriptionangegebenist.Mir ist auch aufgefallen, dass ich beim Transfer der Funktion einen Fehler gemacht habe. Das kann so nicht gehen, aber du kannst es mal so probieren:
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const exposes = require('zigbee-herdsman-converters/lib/exposes'); const e = exposes.presets; const ea = exposes.access; function fzFromEpAndKey(ep, key) { return { cluster: "genAnalogInput", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { if (msg.endpoint.ID === endpointId) { if (msg.data.currentLevel !== undefined) { return { key: msg.data.currentLevel, }; } } return msg.data; }, }; } const definition = { zigbeeModel: ['MultiSensor'], model: 'MultiSensor', vendor: 'MickeMup', description: 'Forum generated definition', fromZigbee: [fzFromEpAndKey(1, 'fan_speed'), fzFromEpAndKey(2, 'temperature'), fzFromEpAndKey(3, 'rpm'), fzFromEpAndKey(4, 'percentage')], exposes = [ e.numeric("fan_speed",ea.STATE_GET).withValueMin(-10000).withValueMax(10000).withDescription("Fan Speed"), e.numeric("temperature",ea.STATE_GET).withDescription("Temperature"), e.numeric("rpm",ea.STATE_GET).withDescription("RPM without limits"), e.numeric("percentage",ea.STATE_GET).withDescription("Percentace")] }; module.exports = definition;Wenn das auch nicht läuft, muss ich sie mir Sonntag angucken, am Samstag werde ich nicht dazu kommen.
A.
-
Hallo Zusammen
Ich möchte mit einem ESP32-C6 einige Sensoren via Zigbee in IoBroker bringen.
Mittels Arduino IDE und viel Google habe ich einen "TempSensor" inklusive externem Converter in IoBroker gebracht..
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const definition = { zigbeeModel: ['ZigbeeTempSensor'], model: 'ZigbeeTempSensor', vendor: 'Espressif', description: 'Automatically generated definition', extend: [ m.temperature()], }; module.exports = definition; `;Nun würde ich aber gerne flexibler werden und analoge Inputs einlesen (evtl. auch ausgeben)
Das Arduino IDE Beispiel habe ich geflasht und der Device taucht auch in IoBroker auf...nur eben beim externen converter geht mir das Wissen ab. Mit Hilfe zur Selbsthilfe sollte ich dann wohl aber irgendwann weiterkommen :-)Hier der wohl relevante Teil von der example scetch (bezügllich cluster usw):
/* Zigbee analog device configuration */ #define ANALOG_DEVICE_ENDPOINT_NUMBER 1 ZigbeeAnalog zbAnalogDevice = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER); ZigbeeAnalog zbAnalogTemp = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 1); ZigbeeAnalog zbAnalogFan = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 2); ZigbeeAnalog zbAnalogPercent = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 3); void setup() { Serial.begin(115200); Serial.println("Starting..."); // Init button switch pinMode(button, INPUT_PULLUP); // Set analog resolution to 10 bits analogReadResolution(10); // Optional: set Zigbee device name and model zbAnalogDevice.setManufacturerAndModel("Espressif", "ZigbeeAnalogDevice"); // Set up analog input zbAnalogDevice.addAnalogInput(); zbAnalogDevice.setAnalogInputApplication(ESP_ZB_ZCL_AI_POWER_IN_WATTS_CONSUMPTION); zbAnalogDevice.setAnalogInputDescription("Power Consumption (Watts)"); zbAnalogDevice.setAnalogInputResolution(0.01); // Set up analog output zbAnalogDevice.addAnalogOutput(); zbAnalogDevice.setAnalogOutputApplication(ESP_ZB_ZCL_AI_RPM_OTHER); zbAnalogDevice.setAnalogOutputDescription("Fan Speed (RPM)"); zbAnalogDevice.setAnalogOutputResolution(1); // Set the min and max values for the analog output which is used by HA to limit the range of the analog output zbAnalogDevice.setAnalogOutputMinMax(-10000, 10000); //-10000 to 10000 RPM // If analog output cluster is added, set callback function for analog output change zbAnalogDevice.onAnalogOutputChange(onAnalogOutputChange); // Set up analog input zbAnalogTemp.addAnalogInput(); zbAnalogTemp.setAnalogInputApplication(ESP_ZB_ZCL_AI_TEMPERATURE_OTHER); zbAnalogTemp.setAnalogInputDescription("Temperature"); zbAnalogTemp.setAnalogInputResolution(0.1); // Set up analog input zbAnalogFan.addAnalogInput(); zbAnalogFan.setAnalogInputApplication(ESP_ZB_ZCL_AI_RPM_OTHER); zbAnalogFan.setAnalogInputDescription("RPM"); zbAnalogFan.setAnalogInputResolution(1); // Set up analog input zbAnalogPercent.addAnalogInput(); zbAnalogPercent.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER); zbAnalogPercent.setAnalogInputDescription("Percentage"); zbAnalogPercent.setAnalogInputResolution(0.01); // Add endpoints to Zigbee Core Zigbee.addEndpoint(&zbAnalogDevice); Zigbee.addEndpoint(&zbAnalogTemp); Zigbee.addEndpoint(&zbAnalogFan); Zigbee.addEndpoint(&zbAnalogPercent);Habe den Adapter 3.1.5 am laufen
Plus hier was ankommt im Adapter:
Vielen Dank für jeglichen Support schon im voraus.
-
@mickemup sagte in Zigbee externer converter mit Analog Input:
Hallo Zusammen
Ich möchte mit einem ESP32-C6 einige Sensoren via Zigbee in IoBroker bringen.
Guten Morgen.
Gibt es da nix von PTVO? Bin da leider nicht uptodate.@1Topf sagte in Zigbee externer converter mit Analog Input:
@mickemup sagte in Zigbee externer converter mit Analog Input:
Hallo Zusammen
Ich möchte mit einem ESP32-C6 einige Sensoren via Zigbee in IoBroker bringen.
Guten Morgen.
Gibt es da nix von PTVO? Bin da leider nicht uptodate.PTVO ist für CCxx Chips von TI, das Expressiv SDK kann deutlich mehr machen, macht aber auch deutlich mehr aufwand.
Natürlich kann man da auch mehrere analoge Eingänge nutzen, aber es ist halt was anderes.
A.
-
@mickemup sagte in Zigbee externer converter mit Analog Input:
Hallo Zusammen
Ich möchte mit einem ESP32-C6 einige Sensoren via Zigbee in IoBroker bringen.
Guten Morgen.
Gibt es da nix von PTVO? Bin da leider nicht uptodate.@1Topf
Da bin auch kurz darüber gestolpert.
Der Plan ist ein autarkes System (C6 + Lipo + Solar) um den Füllstand+Temp einer Zisterne zu messen und via Zigbee zu übertragen.
Mit der Arduino IDE habe ich als einigermassen Anfänger auch die Chance das System einzusetzen (Sensoren einlesen + Deep Sleep usw. ) zu managen. -
@mickemup sagte in Zigbee externer converter mit Analog Input:
Schonmal Danke für den Support
Müssen im converter z.B "fan_speed" genau wie in der Firmware heissen, damit das Ganze Funktioniert?
Und ist das beiden Despriptions ebenso?Nein, das einzige was passen muss, ist die Endpunkt ID. Ich habe die Benennung einfach gewählt, weil du sie in der Firmenware so benannt hast. Letztendlich weiß der Converter nicht, was sich logisch hinter den Werten eines Endpunkte versteckt.
Was zusammenpassen muss, ist die Bezeichnung im Funktions Aufruf zufzFromEpAndKeyund imexpose. Das wird dann die ID des Daten Punktes, während die Beschreibung in der FunktionwithDescriptionangegebenist.Mir ist auch aufgefallen, dass ich beim Transfer der Funktion einen Fehler gemacht habe. Das kann so nicht gehen, aber du kannst es mal so probieren:
const m = require('zigbee-herdsman-converters/lib/modernExtend'); const exposes = require('zigbee-herdsman-converters/lib/exposes'); const e = exposes.presets; const ea = exposes.access; function fzFromEpAndKey(ep, key) { return { cluster: "genAnalogInput", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { if (msg.endpoint.ID === endpointId) { if (msg.data.currentLevel !== undefined) { return { key: msg.data.currentLevel, }; } } return msg.data; }, }; } const definition = { zigbeeModel: ['MultiSensor'], model: 'MultiSensor', vendor: 'MickeMup', description: 'Forum generated definition', fromZigbee: [fzFromEpAndKey(1, 'fan_speed'), fzFromEpAndKey(2, 'temperature'), fzFromEpAndKey(3, 'rpm'), fzFromEpAndKey(4, 'percentage')], exposes = [ e.numeric("fan_speed",ea.STATE_GET).withValueMin(-10000).withValueMax(10000).withDescription("Fan Speed"), e.numeric("temperature",ea.STATE_GET).withDescription("Temperature"), e.numeric("rpm",ea.STATE_GET).withDescription("RPM without limits"), e.numeric("percentage",ea.STATE_GET).withDescription("Percentace")] }; module.exports = definition;Wenn das auch nicht läuft, muss ich sie mir Sonntag angucken, am Samstag werde ich nicht dazu kommen.
A.
Nur kein Stress :-)
Hab es gerade probiert loggt sagt:unable to apply converter from module: /opt/iobroker/iobroker-data/zigbee_0/including.js - the code does not run: SyntaxError: Invalid shorthand property initialize -
So habe nochmals gewurstelt:
Der Converter wird akzeptiert und etwas kommt mittlerweile an. :-)
Nur leider 4mal der gleiche Wert.
Meist der erste, aber einmal war auch 4x die 404 zu sehen (Wert von DP4 im sketch)Edit: Den Analog_Out habe ich im Sketch entfernt (um den kümmere ich mich dann, wenn der rest geht.
Edit: Screenshot der Kachel eingefügt

Unten der aktuelle Arduino Sketch und Converter.
Der Converter basiert auf dieser "Vorlage", welche mir heute über den Weg lief: ZB Converter ModernDas outcome bei den DPs sieht so aus:

/* 4 Analog Inputs Reporting about all 20s fixed values 20.12.2025 */ #include "Zigbee.h" /* Zigbee analog device configuration */ #define ANALOG_DEVICE_ENDPOINT_NUMBER 1 uint8_t analogPin = A0; ZigbeeAnalog zbAnalogDevice = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER); ZigbeeAnalog zbAnalogTemp = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 1); ZigbeeAnalog zbAnalogFan = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 2); ZigbeeAnalog zbAnalogPercent = ZigbeeAnalog(ANALOG_DEVICE_ENDPOINT_NUMBER + 3); void setup() { Serial.begin(115200); Serial.println("Starting..."); // Set analog resolution to 10 bits analogReadResolution(10); // Optional: set Zigbee device name and model zbAnalogDevice.setManufacturerAndModel("Espressif", "ZigbeeAnalogDevice"); // Set up analog input zbAnalogDevice.addAnalogInput(); zbAnalogDevice.setAnalogInputApplication(ESP_ZB_ZCL_AI_POWER_IN_WATTS_CONSUMPTION); zbAnalogDevice.setAnalogInputDescription("Power Consumption (Watts)"); zbAnalogDevice.setAnalogInputResolution(0.01); // Set up analog input zbAnalogTemp.addAnalogInput(); zbAnalogTemp.setAnalogInputApplication(ESP_ZB_ZCL_AI_TEMPERATURE_OTHER); zbAnalogTemp.setAnalogInputDescription("Temperature"); zbAnalogTemp.setAnalogInputResolution(0.1); // Set up analog input zbAnalogFan.addAnalogInput(); zbAnalogFan.setAnalogInputApplication(ESP_ZB_ZCL_AI_RPM_OTHER); zbAnalogFan.setAnalogInputDescription("RPM"); zbAnalogFan.setAnalogInputResolution(1); // Set up analog input zbAnalogPercent.addAnalogInput(); zbAnalogPercent.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER); zbAnalogPercent.setAnalogInputDescription("Percentage"); zbAnalogPercent.setAnalogInputResolution(0.01); // Add endpoints to Zigbee Core Zigbee.addEndpoint(&zbAnalogDevice); Zigbee.addEndpoint(&zbAnalogTemp); Zigbee.addEndpoint(&zbAnalogFan); Zigbee.addEndpoint(&zbAnalogPercent); Serial.println("Starting Zigbee..."); // When all EPs are registered, start Zigbee in Router Device mode if (!Zigbee.begin()) { Serial.println("Zigbee failed to start!"); Serial.println("Rebooting..."); ESP.restart(); } else { Serial.println("Zigbee started successfully!"); } Serial.println("Connecting to network"); while (!Zigbee.connected()) { Serial.print("."); delay(100); } Serial.println("Connected"); // Optional: Add reporting for analog input zbAnalogDevice.setAnalogInputReporting(0, 30, 10); // report every 30 seconds if value changes by 10 } void loop() { static uint32_t timeCounter = 0; // Read ADC value and update the analog value every 2s if (!(timeCounter++ % 20)) { // delaying for 100ms x 20 = 2s float analog = (float)analogRead(analogPin); Serial.printf("Updating analog input to %.1f\r\n", analog); zbAnalogDevice.setAnalogInput(101); zbAnalogTemp.setAnalogInput(202); zbAnalogFan.setAnalogInput(303); zbAnalogPercent.setAnalogInput(404); delay(20000); Serial.println("Upload 4 Inputs"); // Analog input supports reporting zbAnalogDevice.reportAnalogInput(); delay(100); zbAnalogTemp.reportAnalogInput(); delay(100); zbAnalogFan.reportAnalogInput(); delay(100); zbAnalogPercent.reportAnalogInput(); } }Und der mein Converter:
const m = require('zigbee-herdsman-converters/lib/modernExtend'); export default { zigbeeModel: ['ZigbeeAnalogDevice'], model: 'ZigbeeAnalogDevice', vendor: 'MickeMup', description: 'ESP32-C6 controller', meta: { multiEndpoint: true }, extend: [ m.deviceEndpoints({ "endpoints": { "AN_IN1": 1, "AN_IN2": 2, "AN_IN3": 3, "AN_IN4": 4, } }), m.numeric({ "name": "DP1", // ID vom DP "unit": "cm", // Unit vom DP "description": "Water level 1", // Name vom DP "cluster": "genAnalogInput", "attribute": "presentValue", // "scale": 100, // Umkehrbruch von setAnalogInputResolution(0.01) aus Sketch "endpointName": "AN_IN1", }), m.numeric({ "name": "DP2", "unit": "cm", "description": "Water level 2", "cluster": "genAnalogInput", "attribute": "presentValue", // "scale": 10, "endpointName": "AN_IN2", }), m.numeric({ "name": "DP3", "unit": "cm", "description": "Water level 3", "cluster": "genAnalogInput", "attribute": "presentValue", // "scale": 1, "endpointName": "AN_IN3", }), m.numeric({ "name": "DP4", "unit": "cm", "description": "Water level 4", "cluster": "genAnalogInput", "attribute": "presentValue", // "scale": 100, "endpointName": "AN_IN4", }), ], }; -
So nochmal meine "Quelle" angeschaut und auf Verdacht das hier 4x geändert.
aus "endpointName": "AN_IN1", wurde "endpointNames": ["AN_IN1"],Nun scheints zu gehen :-)
Der DP heisst nun einfach anders:

Aber damit kann ich gut leben.
Wenn ich jetzt noch Daten an den C6 senden hinbekomme via Zigbee, dann kann man den C6 anschliessend für ziemlich vieles einsetzen :-)