{"id":13420,"date":"2026-11-05T01:07:18","date_gmt":"2026-11-05T01:07:18","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=13420"},"modified":"2026-11-12T04:41:58","modified_gmt":"2026-11-12T04:41:58","slug":"rasenmaehen-kostenrechner","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/de\/rasenmaehen-kostenrechner\/","title":{"rendered":"Kostenrechner f\u00fcrs Rasenm\u00e4hen"},"content":{"rendered":"\n<style>#lawn-tool{max-width:960px;margin:24px auto;color:#243746}#lawn-tool *{box-sizing:border-box}#lawn-tool .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:18px}#lawn-tool label{display:block;font-weight:600}#lawn-tool input,#lawn-tool textarea{display:block;width:100%;padding:12px;border:1px solid #9aacb5;border-radius:8px;margin-top:6px;font:inherit}#lawn-tool button{padding:12px 20px;margin:18px 10px 10px 0;border:2px solid #1ecad3;border-radius:8px;background:#1ecad3;color:#1a202c;cursor:pointer;font:inherit}#lawn-tool button[type=reset],#lawn-tool #copy-area{background:white}#lawn-tool button:focus-visible,#lawn-tool input:focus-visible,#lawn-tool textarea:focus-visible{outline:3px solid #9486f7;outline-offset:3px;color:#1a202c}#lawn-tool button:active{color:#1a202c}#lawn-tool .result{background:#edf7f8;border-left:4px solid #1ecad3;padding:18px;margin:16px 0;overflow-wrap:anywhere}#lawn-tool svg{width:100%;height:300px;border:1px solid #b8cbd2}#lawn-tool a{color:#08778b}<\/style><div id=\"lawn-tool\" lang=\"de\"><p>Planen Sie Ihr M\u00e4hbudget mit eigenen Preisen, der Rasenfl\u00e4che und der H\u00e4ufigkeit.<\/p><form data-mode=\"mowing-cost\"><div class=\"fields\"><label>Rasenfl\u00e4che (m\u00b2)<input name=\"area\" type=\"number\" min=\"0\" step=\"any\" required value=\"500\"><\/label><label>Ihre Grundgeb\u00fchr pro Besuch<input name=\"base\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Ihr Fl\u00e4chenpreis pro 100 m\u00b2<input name=\"rate\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Ihr Mindestpreis pro Besuch<input name=\"minimum\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Ihr Preis f\u00fcr Kantenschneiden pro Besuch<input name=\"edging\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Ihr Zuschlag f\u00fcr Hindernisse (%)<input name=\"obstacle\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Besuche pro Woche (0,5 = alle zwei Wochen)<input name=\"frequency\" type=\"number\" min=\"0\" step=\"any\" required value=\"1\"><\/label><label>M\u00e4hwochen in der Saison<input name=\"weeks\" type=\"number\" min=\"0\" step=\"any\" required value=\"26\"><\/label><\/div><button type=\"submit\">Berechnen<\/button><button type=\"reset\">Zur\u00fccksetzen<\/button><\/form><div class=\"result\" role=\"status\" aria-live=\"polite\">Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.<\/div><h2>So funktioniert der Rechner<\/h2><p>Preis pro Besuch = max(Mindestpreis, Grundgeb\u00fchr + Fl\u00e4che \u00f7 100 \u00d7 Fl\u00e4chenpreis + Kantenschneiden) \u00d7 (1 + Hinderniszuschlag \u00f7 100). Saisonbesuche = aufrunden(Wochen \u00d7 Besuche pro Woche). Das Saisonbudget verwendet ganze Besuche. Ein aktiver Durchschnittsmonat umfasst 52,1775 \u00f7 12 Wochen; Monate ohne M\u00e4hen werden nicht eingerechnet. Verwenden Sie eine einheitliche W\u00e4hrung. Bei Preisen von null wird nur die Besuchszahl angezeigt. Tragen Sie f\u00fcr ein Budget ein tats\u00e4chliches Angebot ein und ber\u00fccksichtigen Sie Anfahrt, Entsorgung und Steuern in Ihren Eingaben. Es werden keine Marktpreise angenommen.<\/p><h2>Einheiten und Eingaben<\/h2><p>Ersetzen Sie die Beispielwerte durch Messwerte. 1 ft = 0,3048 m; 1 sq ft = 0,09290304 m\u00b2; 1 Zoll = 25,4 mm; 1 US-Gallone = 3,785411784 Liter. Verwenden Sie f\u00fcr alle Preise dieselbe W\u00e4hrung. Bei einem Preis von null wird kein optionales Budget angezeigt.<\/p><h2>Passende Rasenratgeber<\/h2><ul><li><a href=\"https:\/\/aiper.com\/blogs\/de\/rasen-maehen-anleitung\/\">Rasen richtig m\u00e4hen: H\u00f6he, Muster, H\u00e4ufigkeit und warum das z\u00e4hlt<\/a><\/li><\/ul><h2>Weitere Rasenrechner<\/h2><p><a href=\"https:\/\/aiper.com\/blogs\/de\/rollrasen-rechner\/\">rollrasen-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenflaeche-rechner\/\">rasenfl\u00e4chen-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenbewaesserung-laufzeit-rechner\/\">rasenbew\u00e4sserungs- und laufzeitrechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/bewaesserungszonen-rechner\/\">bew\u00e4sserungszonen-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenmaehen-zeitrechner\/\">zeitrechner f\u00fcrs rasenm\u00e4hen<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenkalk-rechner\/\">rasenkalk-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/tropfbewaesserung-rechner\/\">tropfbew\u00e4sserungs-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasensamen-rechner\/\">Grassamen-Rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenduenger-rechner\/\">Rasend\u00fcnger-Rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/werkzeuge\/\">Werkzeuge<\/a><\/p><\/div><script>\/* SI units internally; no external services or weather assumptions. *\/\nfunction calculateLawn(mode,v){\n const n=k=>{if(v[k]===undefined||String(v[k]).trim()==='')throw Error(\"Geben Sie alle erforderlichen Messwerte ein.\");let x=Number(v[k]);if(!Number.isFinite(x)||x<0)throw Error(\"Verwenden Sie endliche, nicht negative Messwerte.\");return x;};\n const p=k=>{let x=n(k);if(x<=0)throw Error(\"Dieser Messwert muss gr\u00f6\u00dfer als null sein.\");return x;};\n const percent=k=>{let x=n(k);if(x>=100)throw Error(\"Der Prozentsatz muss unter 100 liegen.\");return x\/100;};\n let o;\n if(mode==='sod'){\n  let a=p('area'),w=n('waste');if(w>100)throw Error(\"Der Verschnitt muss zwischen 0 und 100 % liegen.\");\n  let q=a*(1+w\/100);o={required:q,pieces:Math.ceil(q\/p('piece')-1e-10),pallets:Math.ceil(q\/p('pallet')-1e-10)};\n  if(n('price')>0)o.budget=q*n('price');\n }else if(mode==='watering'){\n  let depth=Math.max(0,n('target')-n('rain')),minutes=depth\/p('rate')*60,water=p('area')*depth;\n  o={depth,minutes,litres:water};if(n('price')>0)o.budget=water\/1000*n('price');\n }else if(mode==='zone'){\n  let heads=p('heads');if(!Number.isInteger(heads))throw Error(\"Die Regnerzahl muss ganzzahlig sein.\");\n  let capacity=Math.floor(p('flow')*(1-percent('reserve'))\/p('nozzle'));\n  if(p('pressure')<p('required'))throw Error(\"Der Betriebsdruck liegt unter der D\u00fcsenanforderung.\");\n  if(capacity<1)throw Error(\"Der Durchfluss reicht mit dieser Reserve nicht f\u00fcr eine D\u00fcse.\");\n  o={capacity,zones:Math.ceil(heads\/capacity)};\n }else if(mode==='area'){\n  let polygons=JSON.parse(v.polygons);if(!Array.isArray(polygons)||!polygons.length)throw Error(\"Geben Sie gemessene Polygone ein.\");\n  let total=0;\n  for(let poly of polygons){\n   let pts=poly.points;if(!Array.isArray(pts)||pts.length<3)throw Error(\"Jedes Polygon ben\u00f6tigt mindestens drei Eckpunkte.\");\n   for(let pt of pts)if(!Array.isArray(pt)||pt.length!==2||!pt.every(x=>typeof x==='number'&&Number.isFinite(x)))throw Error(\"Jeder Eckpunkt ben\u00f6tigt zwei endliche Koordinaten.\");\n   \/\/ Reject crossings, touching edges, repeated vertices and degenerate edges.\n   let cross=(a,b,c)=>(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0]);\n   let on=(a,b,c)=>Math.abs(cross(a,b,c))<1e-9&&c[0]>=Math.min(a[0],b[0])-1e-9&&c[0]<=Math.max(a[0],b[0])+1e-9&&c[1]>=Math.min(a[1],b[1])-1e-9&&c[1]<=Math.max(a[1],b[1])+1e-9;\n   for(let i=0;i<pts.length;i++)for(let j=i+1;j<pts.length;j++){\n    if(pts[i][0]===pts[j][0]&&pts[i][1]===pts[j][1])throw Error(\"Wiederholen Sie keine Eckpunkte.\");\n    if(j===i+1||i===0&&j===pts.length-1)continue;\n    let a=pts[i],b=pts[(i+1)%pts.length],c=pts[j],d=pts[(j+1)%pts.length];\n    if(cross(a,b,c)*cross(a,b,d)<0&&cross(c,d,a)*cross(c,d,b)<0||on(a,b,c)||on(a,b,d)||on(c,d,a)||on(c,d,b))throw Error(\"Polygonkanten d\u00fcrfen sich nicht kreuzen oder ber\u00fchren.\");\n   }\n   let a=Math.abs(pts.reduce((s,p,i)=>s+p[0]*pts[(i+1)%pts.length][1]-pts[(i+1)%pts.length][0]*p[1],0))\/2;\n   if(a<=0)throw Error(\"Die Polygonfl\u00e4che muss positiv sein.\");\n   if(poly.exclude!==undefined&&typeof poly.exclude!=='boolean')throw Error(\"Die Aussparung muss wahr oder falsch sein.\");\n   total+=poly.exclude?-a:a;\n  }\n  if(total<=0)throw Error(\"Die Nettofl\u00e4che muss positiv sein.\");o={area:total,sqft:total\/0.09290304};\n }else if(mode==='mowing-cost'){\n  let area=p('area'),frequency=p('frequency'),weeks=p('weeks');\n  if(frequency>7||weeks>52.1775)throw Error(\"Verwenden Sie h\u00f6chstens 7 Besuche pro Woche und 52,1775 Wochen pro Jahr.\");\n  let obstacle=n('obstacle');if(obstacle>100)throw Error(\"Der Zuschlag muss zwischen 0 und 100 % liegen.\");\n  let visit=Math.max(n('minimum'),n('base')+area\/100*n('rate')+n('edging'))*(1+obstacle\/100),visits=Math.ceil(frequency*weeks-1e-10);\n  o={visits};if(visit>0)Object.assign(o,{visit,month:visit*frequency*52.1775\/12,season:visit*visits});\n }else if(mode==='mowing-time'){\n  let area=p('area'),width=p('width')\/100,speed=p('speed')*1000,overlap=percent('overlap'),eff=p('efficiency')\/100;\n  if(eff>1)throw Error(\"Die Effizienz darf h\u00f6chstens 100 % betragen.\");\n  let productivity=width*(1-overlap)*speed*eff,minutes=area\/productivity*60;\n  o={effective:width*(1-overlap)*100,productivity,minutes,total:minutes+n('extra')};\n }else if(mode==='lime'){\n  let area=p('area'),rate=n('lab'),reference=p('reference'),product=p('product');\n  if(reference>200||product>200)throw Error(\"Neutralisationswerte m\u00fcssen Prozentwerte bis h\u00f6chstens 200 sein.\");\n  let adjusted=rate*reference\/product,total=area\/100*adjusted;\n  o={adjusted,total,bags:Math.ceil(total\/p('bag')-1e-10)};\n  let cap=n('cap');if(cap>0){let passes=Math.max(1,Math.ceil(adjusted\/cap-1e-10));o.passes=total>0?passes:0;o.perpass=total>0?total\/passes:0;}\n }else if(mode==='drip'){\n  let length=p('length'),spacing=p('spacing'),lines=p('lines');\n  if(!Number.isInteger(lines))throw Error(\"Die Leitungszahl muss ganzzahlig sein.\");\n  \/\/ Assumes the first emitter is one spacing from the inlet, not at x=0.\n  let emitters=Math.floor(length\/spacing+1e-10);if(emitters<1)throw Error(\"Jede Leitung muss mindestens einen Tropfer enthalten.\");\n  let flow=emitters*p('emitter'),capacity=p('supply')*60*(1-percent('reserve')),linesPerZone=Math.floor(capacity\/flow);\n  if(linesPerZone<1)throw Error(\"Der Durchfluss reicht nicht f\u00fcr eine vollst\u00e4ndige Tropfleitung.\");\n  let minutes=n('litres')\/p('emitter')*60,zones=Math.ceil(lines\/linesPerZone);\n  o={emitters,totalemitters:emitters*lines,flow:flow*lines\/60,linesperzone:linesPerZone,zones,minutes,totalminutes:minutes*zones,water:emitters*lines*n('litres')};\n }else throw Error(\"Unbekannter Rechner.\");\n if(Object.values(o).some(x=>!Number.isFinite(x)))throw Error(\"Die Messwerte \u00fcberschreiten den unterst\u00fctzten Bereich.\");\n return o;\n}\nif(typeof module!=='undefined')module.exports=calculateLawn;\n\n(()=>{const root=document.getElementById('lawn-tool'),form=root.querySelector('form'),result=root.querySelector('.result'),labels={\"visits\": \"Ganze Besuche in der Saison\", \"visit\": \"Budget pro Besuch\", \"month\": \"Durchschnittliches Budget je aktivem Monat\", \"season\": \"Saisonbudget\"};let last=null;\nfunction polygons(text){return text.trim().split(\/\\n\\s*\\n\/).map(block=>{let rows=block.trim().split(\/\\n\/),exclude=\/^[-\u2013\u2014]$\/.test(rows[0].trim());if(exclude)rows.shift();return {exclude,points:rows.map(row=>{let parts=row.trim().split(\/\\s*,\\s*\/);if(parts.length!==2||parts.some(p=>!p.trim()))throw Error(\"Verwenden Sie pro Zeile eine x,y-Koordinate.\");return parts.map(Number);})};});}\nform.addEventListener('submit',e=>{e.preventDefault();last=null;try{let v=Object.fromEntries(new FormData(form));let polys;if(form.dataset.mode==='area'){polys=polygons(v.coordinates);v.polygons=JSON.stringify(polys);}let out=calculateLawn(form.dataset.mode,v);result.replaceChildren();for(let [key,value]of Object.entries(out)){let p=document.createElement('p');p.textContent=labels[key]+': '+value.toLocaleString(\"de\",{maximumFractionDigits:3});result.append(p);}if(polys){let svg=root.querySelector('#area-diagram'),all=polys.flatMap(p=>p.points),xs=all.map(p=>p[0]),ys=all.map(p=>p[1]),minx=Math.min(...xs),miny=Math.min(...ys),w=Math.max(...xs)-minx,h=Math.max(...ys)-miny;svg.replaceChildren();svg.setAttribute('viewBox',[minx-1,miny-1,w+2,h+2].join(' '));for(let poly of polys){let shape=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','polygon');shape.setAttribute('points',poly.points.map(p=>p.join(',')).join(' '));shape.setAttribute('fill',poly.exclude?'#fff':'#b4e8c1');shape.setAttribute('stroke','#147e91');shape.setAttribute('stroke-width',Math.max(w,h)\/200);svg.append(shape);}last=out.area;root.querySelector('#copy-area').disabled=false;}}\ncatch(err){result.textContent=err.message;if(root.querySelector('#copy-area'))root.querySelector('#copy-area').disabled=true;}});\nform.addEventListener('reset',()=>{last=null;result.textContent=\"Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.\";let svg=root.querySelector('#area-diagram');if(svg)svg.replaceChildren();let b=root.querySelector('#copy-area');if(b)b.disabled=true;});\nlet copy=root.querySelector('#copy-area');if(copy)copy.addEventListener('click',async()=>{if(last===null)return;try{await navigator.clipboard.writeText(String(last));result.append(document.createTextNode(\" Fl\u00e4che in m\u00b2 kopiert.\"));}catch(e){result.append(document.createTextNode(\" Fl\u00e4che manuell kopieren: \"+last+' m\u00b2.'));}});\n})();\n(()=>{let r=document.getElementById('lawn-tool');r.querySelector('form').addEventListener('input',()=>{r.querySelector('.result').textContent=\"Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.\";let b=r.querySelector('#copy-area');if(b)b.disabled=true;let s=r.querySelector('#area-diagram');if(s)s.replaceChildren();});})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Planen Sie Ihr M\u00e4hbudget mit eigenen Preisen, der Rasenfl\u00e4che und der H\u00e4ufigkeit. Rasenfl\u00e4che (m\u00b2)Ihre Grundgeb\u00fchr pro BesuchIhr Fl\u00e4chenpreis pro 100 m\u00b2Ihr Mindestpreis pro BesuchIhr Preis f\u00fcr Kantenschneiden pro BesuchIhr Zuschlag f\u00fcr Hindernisse (%)Besuche pro Woche (0,5 = alle zwei Wochen)M\u00e4hwochen in der Saison BerechnenZur\u00fccksetzen Geben Sie Ihre Messwerte ein und starten Sie die Berechnung. So [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":2,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-13420","page","type-page","status-publish","hentry"],"lang":"de","translations":{"de":13420,"es":13422,"fr":13421,"en":13419},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=13420"}],"version-history":[{"count":1,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13420\/revisions"}],"predecessor-version":[{"id":13436,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13420\/revisions\/13436"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=13420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}