diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
index 4d5a15ef8..75396b64a 100644
--- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template
+++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
@@ -4518,6 +4518,53 @@ attr DEVICE event-on-change-reading .*
attr DEVICE model roborockRE
setreading DEVICE attrTemplateVersion 20210510
+# new valtudo Template contributed by Otto123, should replace the old valetudo/rockrobo Template
+name:valetudo
+filter:TYPE=MQTT2_DEVICE
+desc:use this to control a rooted vacuum with valetudo. For further details visit https://github.com/Hypfer/Valetudo
NOTE: Initial version
+order:X_03b
+par:BASE_TOPIC;BASE_TOPIC typically is valetudo;{ AttrVal("DEVICE","readingList","") =~ m,(valetudo)[/].*:, ? $1 : undef }
+par:DEV_ID;DEV_ID is random by Firmware;{ AttrVal("DEVICE","readingList","") =~ m,valetudo[/]([^/]+)[/].*:, ? $1 : undef }
+{ Svn_GetFile("contrib/AttrTemplate/99_valetudoUtils.pm", "FHEM/99_valetudoUtils.pm", sub(){CommandReload(undef, "99_valetudoUtils")}) }
+deletereading -q DEVICE (?!associatedWith|IODev).*
+attr DEVICE alias DEV_ID
+attr DEVICE devicetopic BASE_TOPIC/DEV_ID
+attr DEVICE icon vacuum_top
+attr DEVICE readingList \
+ $\DEVICETOPIC/\x24state:.* _state\
+ $\DEVICETOPIC/AttachmentStateAttribute/dustbin:.* dustbin\
+ $\DEVICETOPIC/AttachmentStateAttribute/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }\
+ $\DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent\
+ $\DEVICETOPIC/BatteryStateAttribute/status:.* batteryState\
+ $\DEVICETOPIC/BasicControlCapability/operation:.* operation\
+ $\DEVICETOPIC/CurrentStatisticsCapability/area:.* area\
+ $\DEVICETOPIC/CurrentStatisticsCapability/time:.* time\
+ $\DEVICETOPIC/ConsumableMonitoringCapability/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }\
+ $\DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed\
+ $\DEVICETOPIC/LocateCapability/locate:.* locate\
+ $\DEVICETOPIC/MapData/map-data:.* {}\
+ $\DEVICETOPIC/MapData/segments:.* segments\
+ $\DEVICETOPIC/StatusStateAttribute/status:.* state\
+ $\DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail\
+ $\DEVICETOPIC/StatusStateAttribute/error:.* stateError\
+ $\DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage\
+ $\DEVICETOPIC/WifiConfigurationCapability/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }\
+ $\DEVICETOPIC/ZoneCleaningCapability/presets:.* presets\
+ $\DEVICETOPIC/ZoneCleaningCapability/start:.* start
+attr DEVICE setList \
+ operation:PAUSE,START,STOP,HOME $\DEVICETOPIC/BasicControlCapability/operation/set $EVTPART1\
+ clean_segment:{"multiple-strict,".valetudo_w($name,"segments")} { valetudo_c($NAME,$EVENT) }\
+ clean_zone:{valetudo_w($name,"presets")} { valetudo_c($NAME,$EVENT) }\
+ fanSpeed:off,min,low,medium,high,turbo,max $\DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
+ waterUsage:off,min,low,medium,high,turbo,max $\DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1\
+ locate:PERFORM $\DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
+ x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
+attr DEVICE userReadings ip4:ips:.* {(split ',',ReadingsVal($name,'ips','error'))[0]}
+attr DEVICE event-on-change-reading .*
+attr DEVICE setStateList operation clean_segment clean_zone fanSpeed waterUsage x_raw_payload
+attr DEVICE model valetudo
+setreading DEVICE attrTemplateVersion 20220109 or prior
+
# contributed by Otto123, source: https://forum.fhem.de/index.php/topic,94495.msg1062312.html#msg1062312
name:worx_landroid
desc:Template for a Worx Landroid mower.
The complete Setup is described in this Forum Thread
Some Features requires support by model and firmware!