diff --git a/src/main/java/org/openhab/binding/openlicht/handler/EraserHandler.java b/src/main/java/org/openhab/binding/openlicht/handler/EraserHandler.java
index 4cd5ffb16e8ef301ef01c0bb40044c5f560a8247..b9478a6ccbfad64f2827b56e80517db04fbb8a1a 100644
--- a/src/main/java/org/openhab/binding/openlicht/handler/EraserHandler.java
+++ b/src/main/java/org/openhab/binding/openlicht/handler/EraserHandler.java
@@ -7,12 +7,14 @@ import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.core.events.EventPublisher;
 import org.eclipse.smarthome.core.items.GenericItem;
 import org.eclipse.smarthome.core.items.GroupItem;
 import org.eclipse.smarthome.core.items.Item;
 import org.eclipse.smarthome.core.items.ItemNotFoundException;
 import org.eclipse.smarthome.core.items.ItemRegistry;
 import org.eclipse.smarthome.core.items.StateChangeListener;
+import org.eclipse.smarthome.core.items.events.ItemEventFactory;
 import org.eclipse.smarthome.core.library.types.DateTimeType;
 import org.eclipse.smarthome.core.library.types.DecimalType;
 import org.eclipse.smarthome.core.library.types.HSBType;
@@ -22,6 +24,7 @@ import org.eclipse.smarthome.core.thing.ChannelUID;
 import org.eclipse.smarthome.core.thing.Thing;
 import org.eclipse.smarthome.core.types.Command;
 import org.eclipse.smarthome.core.types.State;
+import org.eclipse.smarthome.core.types.TypeParser;
 import org.openhab.binding.openlicht.BindingConstants;
 import org.openhab.binding.openlicht.internal.ConfigurationHolder;
 import org.openhab.binding.openlicht.internal.DelegateEraserRegistryChangeListener;
@@ -41,10 +44,12 @@ public class EraserHandler extends AbstractMqttHandler implements StateChangeLis
     private HandlerPhase lastStatusUpdatePhase;
     private boolean lastStatusUpdateSuccess;
     private String lastStatusUpdateDescription;
+    private @Nullable EventPublisher eventPublisher;
 
     public EraserHandler(Thing thing, ConfigurationHolder configurationHolder) {
         super(thing, configurationHolder);
         this.itemRegistry = configurationHolder.getItemRegistry();
+        this.eventPublisher = configurationHolder.getEventPublisher();
         ItemRegistry registry = this.itemRegistry;
         if (registry != null) {
             delegateListener = new WeakReference<DelegateEraserRegistryChangeListener>(
@@ -159,14 +164,23 @@ public class EraserHandler extends AbstractMqttHandler implements StateChangeLis
             }
             // assume this is a GenericItem
             GenericItem genericItem = (GenericItem) item;
-            State newState = parseState(genericItem, new String(payload));
-            if (newState != null) {
-                logger.debug("Setting state {} of type {} for {}", newState, newState.getClass().getSimpleName(),
-                        genericItem.getName());
-                genericItem.setState(newState);
+            // State newState = parseState(genericItem, new String(payload));
+            Command command = TypeParser.parseCommand(genericItem.getAcceptedCommandTypes(), new String(payload));
+            EventPublisher localEventPublisher = this.eventPublisher;
+            if (command != null && localEventPublisher != null) {
+                localEventPublisher.post(ItemEventFactory.createCommandEvent(itemName, command));
             } else {
-                logger.warn("Could not set state for {} using '{}'", genericItem, new String(payload));
+                logger.debug("Could not create command for event-publisher {}, item {} and payload {}",
+                        localEventPublisher, itemName, new String(payload));
             }
+            // if (newState != null) {
+            // logger.debug("Setting state {} of type {} for {}", newState, newState.getClass().getSimpleName(),
+            // genericItem.getName());
+            // genericItem.setState(newState);
+            // } else {
+            // logger.warn("Could not set state for {} using '{}'", genericItem, new String(payload));
+            // }
+
         } else {
             logger.debug("No item registry to process message");
         }
diff --git a/src/main/java/org/openhab/binding/openlicht/internal/ConfigurationHolder.java b/src/main/java/org/openhab/binding/openlicht/internal/ConfigurationHolder.java
index d5d31dd8ba8476da228b89fbb8c2261652854d8f..0ae8f02e4e6a5919ee0aaafe2ff8d992006b4498 100644
--- a/src/main/java/org/openhab/binding/openlicht/internal/ConfigurationHolder.java
+++ b/src/main/java/org/openhab/binding/openlicht/internal/ConfigurationHolder.java
@@ -3,6 +3,7 @@ package org.openhab.binding.openlicht.internal;
 import java.util.concurrent.ScheduledExecutorService;
 
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.core.events.EventPublisher;
 import org.eclipse.smarthome.core.items.ItemRegistry;
 import org.eclipse.smarthome.core.thing.ThingRegistry;
 import org.eclipse.smarthome.io.transport.mqtt.MqttService;
@@ -22,6 +23,9 @@ public interface ConfigurationHolder {
     @Nullable
     ItemRegistry getItemRegistry();
 
+    @Nullable
+    EventPublisher getEventPublisher();
+
     Version getVersion();
 
 }
diff --git a/src/main/java/org/openhab/binding/openlicht/internal/OpenLichtHandlerFactory.java b/src/main/java/org/openhab/binding/openlicht/internal/OpenLichtHandlerFactory.java
index d58fb25178517bb9dd2d1372bedc1603da756cc5..ced6638330e615f9bbf7f52dbfa87a4d5be8b243 100644
--- a/src/main/java/org/openhab/binding/openlicht/internal/OpenLichtHandlerFactory.java
+++ b/src/main/java/org/openhab/binding/openlicht/internal/OpenLichtHandlerFactory.java
@@ -23,6 +23,7 @@ import java.util.stream.Stream;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.core.events.EventPublisher;
 import org.eclipse.smarthome.core.items.ItemRegistry;
 import org.eclipse.smarthome.core.thing.Thing;
 import org.eclipse.smarthome.core.thing.ThingRegistry;
@@ -64,6 +65,7 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
     private @Nullable ThingRegistry thingRegistry;
     private @Nullable ItemRegistry itemRegistry;
     private @Nullable ScheduledExecutorService executor;
+    private @Nullable EventPublisher eventPublisher;
 
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
@@ -127,6 +129,11 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
         return itemRegistry;
     }
 
+    @Override
+    public @Nullable EventPublisher getEventPublisher() {
+        return eventPublisher;
+    }
+
     @Override
     public Version getVersion() {
         return FrameworkUtil.getBundle(getClass()).getVersion();
@@ -164,4 +171,15 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
         logger.info("Deleting item registry {}", itemRegistry);
         this.itemRegistry = null;
     }
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
+    public void setEvemtPublisher(EventPublisher eventPublisher) {
+        logger.info("Setting event publisher to {}", eventPublisher);
+        this.eventPublisher = eventPublisher;
+    }
+
+    public void unsetEventPublisher(EventPublisher eventPublisher) {
+        logger.info("Deleting event publisher {}", eventPublisher);
+        this.eventPublisher = null;
+    }
 }