Wiren BoardDocumentación
Documentación · Español

Recuento de impulsos con wb-rules

revisión 106981

Conteo de impulsos en una entrada digital

Un contador o pulsador con salida de contacto seco se conecta a la entrada universal A1 del controlador. La regla cuenta cuántas veces se conecta A1 a masa y muestra el resultado en un dispositivo virtual. El dispositivo también incluye un botón para restablecer el contador.

El WB-MCM8 proporciona la misma función de recuento de impulsos con los valores de los contadores almacenados en su propia memoria no volátil. El fabricante lo recomienda para instalaciones reales; el ejemplo siguiente es para demostración y aprendizaje.

En una instalación real, tenga en cuenta la frecuencia de escritura en PersistentStorage. Estas escrituras llegan al almacenamiento eMMC del controlador y guardar cada impulso a frecuencias elevadas puede acelerar el desgaste del almacenamiento.

Regla de ejemplo

La regla restaura el conteo guardado al arrancar, cuenta solo los flancos de subida (0 → 1) y guarda tanto los incrementos como los restablecimientos.


defineVirtualDevice("pulse_counter", {
  title: "Pulse counter",
  cells: {
    impulses: {
      type: "value",
      value: 0
    },
    reset: {
      type: "pushbutton"
    }
  }
});


var ps = new PersistentStorage("pulse-counter-storage", { global: true });
var inputChannel = "wb-gpio/A1_IN";

var impulseCount = (ps["impulseCount"] === undefined) ? 0 : ps["impulseCount"];

dev["pulse_counter"]["impulses"] = impulseCount;


defineRule("count_impulses", {
  whenChanged: inputChannel,
  then: function (newValue) {
    if (newValue) {
      impulseCount += 1;
      dev["pulse_counter"]["impulses"] = impulseCount;
      ps["impulseCount"] = impulseCount;
    }
  }
});


defineRule("reset_counter", {
  whenChanged: "pulse_counter/reset",
  then: function () {
    impulseCount = 0;
    dev["pulse_counter"]["impulses"] = impulseCount;
    ps["impulseCount"] = impulseCount;
  }
});

Para WBE2-DI-DR-3, sustituya el canal de entrada A1 por el canal requerido de su Tabla de canales MQTT, por ejemplo wb-gpio/MOD1_IN1.