Willkommen im Forum!
In welcher Form kommt der Impuls über mqtt an? wechselt die Payload kurz auf einen Wert und wieder zurück, oder wie muss ich mir das vorstellen?
Auf jeden Fall musst Du den Channel, in dem der Impuls ankommt, mit einem Item verknüpfen (gewöhnlich wird es sich um ein Switch Item oder Contact Item handeln, je nachdem, wie man das im Channel definiert hat).
Weiterhin brauchst Du ein Number Item, welches Du aufaddieren kannst. Nennen wir es im weiteren Verlauf GasCounter. Es ist sinnvoll, das Item mit restoreOnStartup zu persistieren, damit bei einem Neustart von openHAB der "Zählerstand" nicht verloren geht. Am sinnvollsten ist es, das restoreOnStartup mit mapDB zu erledigen.
Nun brauchst Du noch eine Rule, welche sich um die Addition kümmert. Es gibt verschieden Optionen für Rules und man kann grundsätzlich jede lösbare Aufgabe mit jeder Rule Engine lösen, allerdings lassen sich Text Rules hier im Forum einfacher teilen

mit ein Grund, weshalb ich die DSL verwende.
Ich nutze die Notation, welche in einer *.rules Datei verwendet wird. Beim Einfügen über die UI muss man einige Dinge beachten.
Die Rule selbst ist einfach:
Code: Alles auswählen
rule "Gas Zähler"
when
Item GasImpuls changed to ON
then
var Integer iCounter = 0
if(GasCounter.state instanceof Number)
iCounter = (GasCounter.state as Number).intValue
iCounter += 1
GasCounter.postUpdate(iCounter)
end
Die Rule triggert jedes Mal, wenn das Item den Zustand auf ON wechselt. Sollte das mit dem Impuls anders funktionieren, müsste man den Trigger notfalls anpassen.
Zunächst wird eine lokale Variable erzeugt und mit dem Wert 0 vorbelegt.
Falls das Counter Item einen gültigen Wert enthält, wird die Variable mit diesem Wert gesetzt.
Anschließend wird die Variable um eins erhöht. Die Schreibweise ist nur zulässig, weil es sich um eine Integer Variable handelt - ansonsten müsste man halt
iCounter = iCounter + 1 schreiben.
Abschließend wird der Inhalt der Variablen in das Item transferiert.
Warum so kompliziert?
Das Counter Item kann einen ungültigen Status haben (
NULL,
UNDEF). Eine Addition wird in diesem Fall eine NullPointerException nach sich ziehen. Um diesen hässlichen Fehler zu umgehen, ist es unerlässlich, den Status auf Gültigkeit zu prüfen. Wenn man eh schon eine Prüfung vornehmen muss, kann man auch gleich einen Default Wert hinterlegen

und dafür ist der Weg über eine lokale Variable mit die einfachste Möglichkeit.
Wenn sichergestellt ist, dass das Item einen gültigen Wert hat, reicht auch diese Rule:
Code: Alles auswählen
rule "Gas Zähler"
when
Item GasImpuls changed to ON
then
GasCounter.postUpdate((GasCounter.state as Number)+1)
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet