Mesure de courant / puissance avec SPM01 de chez BITUOTECKNIK

VOICI LE PRODUIT :

  • pas de remontée complette des information
  • je suis en ZHA
  • après le link j’ai eu la fréquence et la tension de correctes
  • ensuite 3 jours plus tard l’intensité en arrivée en valeurs « cohérente » (supposée exacte)

Pour ce qui est de : la puissance instantanée VA ou W / a coté de la plaque

quelqu’un connait ce produit ? paracerque en ZIGBEE ça n’a pas l’air de courir les rue …
PS : je débute et j’état parti pour tout mettre en ZIGBEE
→ un shelly en wi fi aurrait été plus adapté ?

MERCI

Salut,

dommage, t’aurais dû te renseigner avant d’acheter… il ne semble pas pris en charge par ZHA à l’heure actuelle, seulement par Z2M…
Ca ne veut pas dire qu’il ne le sera jamais… le fait que tu reçoive des infos est déjà un début…

IL est vendu sur le site DOMAOO comme compatible avec HA …
sur quel source te base tu ? Database of Zigbee devices compatible with ZHA, Tasmota, Zigbee2MQTT, deCONZ, ZiGate and ioBroker ?

Y’a quoi d’autre en zigbee ? j’ai rien trouvé et comme je débute je pensait qu’il suffisait d’être en zigbee3.0 pour que ça marche :wink:
zut

Oui le site de blakadder est une très bonne référence pour les compatibilités avec les déférences passerelles opensource.

J’ai ça, mais je ne sais pas si ça marche avec ZHA…

Salut,

Zut, je ne savais pas que ça existait en zigbee et pourtant j’ai cherché !

Pour ma part, même si je voulais me débarrasser du zwave, je suis parti sur ça :
Aeotec Home Energy METER Gen5,… https://www.amazon.fr/dp/B017DV3URS?ref=ppx_pop_mob_ap_share
Ça fonctionne bien même s’il faut régler les groupes associés pour que les données remontent régulièrement.

PS : @Arnal_Dz , un petit bonjour au début ne fait jamais de mal !

salut, petite évolution sur ce produit : (je suis sous homeassistant ZHA)

  • l’intensité du courant est remonté au bout de 1 semaine (sans rien faire de plus)
  • la tension et la fréquence OK
  • puissance en W décalé de 1000 et en négatif
    —> avec un template j’ai la puissance instantanée a présent
  • avec une petite formule la puissance nrj en KWH est faisable

Donc au final moi ça me suffit et c’est du zigbee comme le reste de mes appareils

J’ai installé cet appareil Bituo Technik SPM01.
Sous ZHA, la puissance est erronée, elle est en fait en kW avec une précision d’une décimale après la virgule.
On peut effectivement utiliser un template, mais la résolution ne sera que de 100 W.
0W, 100W, 200W, 300W …

La puissance est exprimée en négatif en cas d’injection.

J’ai vu qu’il était possible d’installer un ‹ quirk › dans le fichier répertoire config de HA.
https://github.com/zigpy/zha-device-handlers/pull/2603
Je n’ai pas réussi à le faire fonctionner, il semble que ce soit un problème de signature.

Est-ce que l’un d’entre vous a une solution ?

J’ai trouvé un Quirk qui fonctionne avec le Bituo Technik SPM01: https://github.com/zigpy/zha-device-handlers/issues/2958

"""Bituo Din Power Meter."""
from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
import zigpy.types as t
from zigpy.zcl.clusters.general import Basic, Ota, Scenes, Identify
from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement, Diagnostic
from zigpy.zcl.clusters.smartenergy import Metering

from zhaquirks import Bus, LocalDataCluster
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)

class PowerMeasurement(LocalDataCluster, ElectricalMeasurement):
    """Custom class for power, voltage and current measurement."""

    cluster_id = ElectricalMeasurement.cluster_id

    POWER_ID = 0x050B
    VOLTAGE_ID = 0x0505
    CURRENT_ID = 0x0508
    REACTIVE_POWER_ID = 0x050E
    AC_FREQUENCY_ID = 0x0300
    TOTAL_REACTIVE_POWER_ID = 0x0305
    TOTAL_POWER_ID = 0x0304
    POWER_FACTOR_ID = 0x0510

    AC_CURRENT_MULTIPLIER = 0x0602
    AC_CURRENT_DIVISOR = 0x0603
    AC_FREQUENCY_MULTIPLIER = 0x0400
    AC_FREQUENCY_DIVISOR = 0x0401
    AC_POWER_MULTIPLIER = 0x0604
    AC_POWER_DIVISOR = 0x0605

    _CONSTANT_ATTRIBUTES = {
        AC_POWER_MULTIPLIER: 1000,
        AC_POWER_DIVISOR: 1000,
    }

    def voltage_reported(self, value):
        """Voltage reported."""
        self._update_attribute(self.VOLTAGE_ID, value)

    def power_reported(self, value):
        """Power reported."""
        self._update_attribute(self.POWER_ID, value * self.AC_POWER_MULTIPLIER)

    def power_factor_reported(self, value):
        """Power Factor reported."""
        self._update_attribute(self.POWER_FACTOR_ID, value)

    def reactive_power_reported(self, value):
        """Reactive Power reported."""
        self._update_attribute(self.REACTIVE_POWER_ID, value * self.AC_POWER_MULTIPLIER)

    def current_reported(self, value):
        """Ampers reported."""
        self._update_attribute(self.CURRENT_ID, value)

    def frequency_reported(self, value):
        """AC Frequency reported."""
        self._update_attribute(self.AC_FREQUENCY_ID, value)

    def reactive_energy_reported(self, value):
        """Summation Reactive Energy reported."""
        self._update_attribute(self.TOTAL_REACTIVE_POWER_ID, value)


class BituoPowerMeter(CustomDevice):

    signature = {
        # "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0,
        # user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>,
        # mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>,
        # manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264,
        # maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>,
        # *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False,
        # *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True,
        # *is_security_capable=False)",
        # device_version=1
        # input_clusters=[0x0000, 0x0003, 0x0702, 0x0b04, 0x0b05]
        # output_clusters=[0x0003, 0x0019]
        MODELS_INFO: [
            ("BITUO TECHNIK", "SPM01X001"),
        ],
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=51
            # device_version=1
            # input_clusters=[0, 3, 1794, 2820, 2821]
            # output_clusters=[3, 25]>
            1: {
                PROFILE_ID: 0x0104,
                DEVICE_TYPE: 0x0501,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Metering.cluster_id,
                    ElectricalMeasurement.cluster_id,
                    Diagnostic.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Metering.cluster_id,
                    PowerMeasurement,
                    Diagnostic.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
            }
        }
    }