[Modul] Zigbee2MQTT

Kann du mir ein Debug erstellen, wenn du in der Imstanz die Geräteinformationen abrufst?

Grüße,
Kai

Kannst du mal folgendes testen?

$Payload['occupied_heating_setpoint'] = number_format($Value, 2, '.', ''));

Grüße,
Kai

hier die Debug Datei.
dump.txt (28,0 KB)

Hein09

Ich glaube da gibt es ein Problem mit dem Gerät.
@Burki24 weißt du ob es Consumption nicht mehrals Expose gibt? Ist das jetzt Energy?
Dann müsste das Gerät in Zigbee2MQTT angepasst werden oder?

Grüße,
Kai

Ich habe gerade nochmal versucht, es nachzustellen, ich schaffe es aber nicht. Evtl. liegt es am Gerät.

Grüße,
Kai

@KaiS , @Hein09

Also consumption kann ich in den z2m-Codes nicht finden. Bei genanntem Gerät wird das ganze noch etwas komplizierter: Xiaomi SP-EUC01 control via MQTT | Zigbee2MQTT

Habe mir gerade den Converter in z2m angesehen. Es gibt da wohl unterschiede bei dem Produkt. Gibt welche, die haben keine oder eine eingeschränkte Leistungsmessung und es gibt welche, die haben keine Temperatur-Angabe und es gibt welche, die können Alles. Im Converter ist es momentan so geregelt, dass z2m versucht, die Daten zu kriegen und ansonsten eine Warnmeldung im Log ausgibt.
@Hein09 schaue mal bitte beim Schalten im z2m Log (Frontend → Auf „Warn“ stellen) ob es da Warnmeldungen zur Device gibt:

Anbei der Code aus dem Converter:

{
        zigbeeModel: ['lumi.plug.maeu01'],
        model: 'SP-EUC01',
        description: 'Aqara EU smart plug',
        vendor: 'Xiaomi',
        fromZigbee: [fz.on_off, fz.xiaomi_basic, fz.electrical_measurement, fz.metering,
            fz.aqara_opple, fz.xiaomi_power, fz.device_temperature],
        toZigbee: [tz.on_off, tz.xiaomi_switch_power_outage_memory],
        configure: async (device, coordinatorEndpoint, logger) => {
            const endpoint = device.getEndpoint(1);
            await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
            await reporting.onOff(endpoint);

            // Not all plugs support electricity measurements:
            // - https://github.com/Koenkk/zigbee2mqtt/issues/6861
            // - https://github.com/Koenkk/zigbee-herdsman-converters/issues/1050#issuecomment-673111969
            // Voltage and current are not supported:
            // - https://github.com/Koenkk/zigbee-herdsman-converters/issues/1050
            try {
                await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement']);
                await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
            } catch (e) {
                logger.warn(`SP-EUC01 failed to setup electricity measurements (${e.message})`);
                logger.debug(e.stack);
            }
            try {
                await reporting.bind(endpoint, coordinatorEndpoint, ['seMetering']);
                await reporting.readMeteringMultiplierDivisor(endpoint);
                await reporting.currentSummDelivered(endpoint, {change: 0});
            } catch (e) {
                logger.warn(`SP-EUC01 failed to setup metering (${e.message})`);
                logger.debug(e.stack);
            }
        },
        onEvent: async (type, data, device) => {
            const switchEndpoint = device.getEndpoint(1);
            if (switchEndpoint == null) {
                return;
            }

            // This device doesn't support temperature reporting.
            // Therefore we read the temperature every 30 min.
            if (type === 'stop') {
                clearInterval(globalStore.getValue(device, 'interval'));
                globalStore.clearValue(device, 'interval');
            } else if (!globalStore.hasValue(device, 'interval')) {
                const interval = setInterval(async () => {
                    try {
                        await switchEndpoint.read('genDeviceTempCfg', ['currentTemperature']);
                    } catch (error) {
                        // Do nothing
                    }
                }, 1800000);
                globalStore.putValue(device, 'interval', interval);
            }
        },

Auch bei den Exposes gibt es kein „consumption“:

 exposes: [e.switch(), e.power(), e.energy(), e.power_outage_memory(),
            e.device_temperature().withDescription('Device temperature (polled every 30 min)')],

Kleine Ergänzung @KaiS „consumption“ wurde abgekündigt und gilt als veraltet:

case '149':
            payload.energy = precisionRound(value, 2); // 0x95
            // Consumption is deprecated
            payload.consumption = payload.energy;
            break;

Hoffe, dass hilft Euch.

Gruß
Burkhard

@Burki24 @KaiS

Ich habe eben im Log geschaut, bei der Einstellung „Warn“ wird nichts angezeigt.

Hier noch mal die Debug Anzeige debug.txt (2,0 KB)

Hein09

Moin @Hein09 ,

Kannst Du mir mal bitte einen Screenshot vom z2m-Frontend des Gerätes mit den Exposes schicken, da stimmt irgendwas ganz gewaltig nicht bei Dir.

In dem Payload, was von dem Plug kommt sind falsche Variablen drin:

payload '{"consumer_connected":false,"consumption":0,"current":0,"device_temperature":25,"energy":0,"illuminance":0,"illuminance_lux":0,"linkquality":72,"power":0,"power_outage_count":8,"state":"ON","temperature":18,"voltage":244}'

Es wäre mir neu, dass ein Plug auch eine Helligkeitsmessung (Illuminance, Illuminance_lux" oder „temperature“ hat. Kannst Du mal bitte (wenn es kein Problem darstellt) das Gerät in Symcon löschen und neu anlegen? Und schauen, was dann passiert. Und wenn sich nichts ändert bitte einmal im z2m löschen und neu anlernen.

Mehr als:„switch (state), power, energy, power_outage_memory, device_temperature, linkquality“ darf von dem Gerät nicht kommen.

Gruß
Burkhard

Danke @Burki24.
@Hein09, wenn du das was @Burki24 gesagt hast gemacht hast. Dann wissen wir mehr.

Welche Z2M Version hast du installiert?

Grüße,
Kai

Moin @Burki24 @KaiS .

Wo finde ich im Frontend „Exposes“?

Ich habe das Gerät in Symcon gelöscht, gleicher Stand wie vorher.
Danach habe ich in z2m auch gelöscht, auch der gleiche Stand wie vorher.
Unter Status in z2m, wird mir folgendes angezeigt:

{
    "consumer_connected": false,
    "consumption": 0,
    "current": 0,
    "device_temperature": 25,
    "energy": 0,
    "illuminance": 0,
    "illuminance_lux": 0,
    "linkquality": 98,
    "power": 0,
    "power_outage_count": 1,
    "power_outage_memory": "1",
    "state": "ON",
    "temperature": 22,
    "voltage": 0
}

Ich habe gestern auf die Version " 1.25.0 commit: 6f1460e4" upgedatet.

Hein09

Wird die Variable Energy angelegt?
Kannst du mal prüfen, ob Energy und Consumption die selben Werte anzeigen, wenn die Steckdose in Benutzung ist?

Dann würde ich die Meldungen im Log schon mal entfernen.

Grüße,
Kai

Es werden folgende Werte in Symcon angelegt:

Hein09

Es gibt eine neue Beta Version, dort sollte es die Meldungen im Log nicht mehr geben.

Grüße,
Kai

Wenn der Stecker die Werte consumption, temperature, illuminance und illuminance noch immer mitschickt, glaube ich, dass wird ein wenig knifflig. Kannst Du z.B. mit dem MQTT-Explorer überprüfen.
Du hast in z2m anscheinend schlummernde Altlasten. Ich denke mal, der Eintrag in der STATE.json in z2m ist nicht korrekt.
Um das zu korrigieren musst Du etwas tiefer in die Materie einsteigen.
Kopiere Dir die IEEE Addresse der Steckdose. Dann bitte mal die datei STATE.json im Verzeichnis „/opt/zigbee2mqtt/data“ öffnen und nach der IEEE Adresse suchen. Wenn gefunden, bitte den kompletten Block löschen, sollte in etwa so aussehen:

    "0x60a423fffeff6a10": {
        "energy": 825.04,
        "power": 0,
        "current": 0,
        "voltage": 226,
        "state": "ON"
    },

Solltest Du den Eintrag finden, sei so lieb und poste den mal hier, damit ich sehen kann, ob er da die falschen Exposes noch drin hat.
Wenn das Alles durch ist, bitte mal z2m neu starten und Symcon ebenfalls. Dann das Gerät neu anlernen.

Die Fehlermeldung „consumption“ wird nicht mehr angezeigt.
Vielen Dank, für die schnelle Beseitigung.

Hein09

Hier der Inhalt der state.json vom Gerät:
image
Habe den Block gelöscht und danach z2m und Symcon neu gestartet, die Werte sind aber weiterhin vorhanden?
Hein09

image
Die Werte dürften alle von z2m eigentlich nicht mehr angelegt werden. Ich glaube, ich bestelle mir mal so einen Plug und schaue es mir direkt an.
Könnte auch sen, dass die bei Dir in der Database.db verschlüsselt sind und nicht richtig entfernt wurden.

Da @KaiS den Fehler ja erstmal eliminiert hat, hoffe ich doch, Du kannst ein paar Tage auf die Lösung warten, bis ich den Plug hier habe und mal auseinander nehmen kann.

Gruß
Burkhard

Hallo Burkhard,

das ist kein Problem, der Plug läuft jetzt ja, ohne Probleme und Fehlermeldung.
Der Plug war das erste Gerät was ich angemeldet habe.

Hein09

Folgende Code Zeile funktioniert:
$Payload[‚occupied_heating_setpoint‘] = number_format($Value, 2, ‚.‘, ‚‘);

(du hattest eine Klammer zuviel am Ende)

VG
Georg

Das mit der Klammer kann gut sein, hatte es nur schnell im Forum gepostet.
Dann werde ich das einbauen.

Vielen Dank fürs Testen.

Grüße,
Kai