Zisternen-Füllstand mit Ultraschall & Raspberry messen – Teil 3

Wie schon in Teil 1 und Teil 2 beschrieben nutze ich einen Ultraschallsensor für die Wasserstandsmessung in unserem Regenwassertank. Bis jetzt wurde die Verbindung über Wlan aufgebaut – leider mehr schlecht als recht. Aufgrund der Entfernung zum Accesspoint und der Lage unter der Erde hatte ich oft Verbindungsprobleme, vorallem im Winter mit zusätzlicher Schneedecke. Deshalb habe ich nun auf D-Lan (Netzwerk über die vorhandene Stromleitung) umgerüstet. Ich hatte bei mir Zuhause noch ein paar alte D-Lan-Adapter herumliegen. Mit ein bisschen quetschen konnte ich ihn in der vorhandenen „Brotdose“ unterbringen. Das Gegenstück befindet sich im Technikraum im Haus – nun habe ich eine stabile und schnelle Netzwerkverbindung!

Gehäuse-Erweiterung für Hekatron Funkhandtaster

Wie schon in einem anderen Beitrag erwähnt nutze ich einen Hekatron Funkhandtaster, um meine Rauchmelder mit der Homematic zu verbinden. Nun habe ich mit meinem 3D-Drucker noch ein passendes Gehäuse dafür erstellt: Das Gehäuse findet ihr auch auf Thingiverse.com

Wie schon in einem anderen Beitrag erwähnt nutze ich einen Hekatron Funkhandtaster, um meine Rauchmelder mit der Homematic zu verbinden. Nun habe ich mit meinem 3D-Drucker noch ein passendes Gehäuse dafür erstellt:

Das Gehäuse findet ihr auch auf Thingiverse.com

Einzug eines 3D-Druckers

Schon lange fasziniert mich die Technik des 3D-Drucks. Ersatzteile oder Prototypen zuhause ausdrucken zu können stelle ich mir ziemlich spannend vor. Deshalb habe ich mich nun entschlossen, mir auch so einen 3D-Drucker zuzulegen. Nach einiger Recherche ist es ein PRUSA i3 MK3S geworden. Er bietet in Gegensatz zu seinen Mitbewerbern u.a. folgende Vorteile:– beheiztes Druckbett … „Einzug eines 3D-Druckers“ weiterlesen

Schon lange fasziniert mich die Technik des 3D-Drucks. Ersatzteile oder Prototypen zuhause ausdrucken zu können stelle ich mir ziemlich spannend vor. Deshalb habe ich mich nun entschlossen, mir auch so einen 3D-Drucker zuzulegen.

Nach einiger Recherche ist es ein PRUSA i3 MK3S geworden. Er bietet in Gegensatz zu seinen Mitbewerbern u.a. folgende Vorteile:
– beheiztes Druckbett mit Federstahlauflage
– automatische Gitterbettnivelierung
– großes Druckvolumen von 25 x 21 x 21cm
– Optischer Filament-Sensor und Stromausfall-Erkennung

Der wichtigste Vorteil für mich ist aber die Aufrüstbarkeit: Wenn es eine neue (verbesserte) Version des Drucker gibt wird auch ein Upgrade-Kit für meinen Drucker angeboten.

Nach dem Zusammenbau des Bausatzes war es soweit und ich konnte den ersten Probedruck machen:

CCU2 als Lan-Gateway nutzen

Ein kleiner Tip für alle, die ihre Homematic-CCU2 durch die CCu3 oder einen RaspberryPi ersetzt haben: Bevor die alte CCu2 im Regal verstaubt kann sie mit wenig Aufwand in ein Lan-Gateway umgewandelt werden. Auf Github findet sich dazu folgende Anleitung, diese Codes einfach mit SSH ausführen: Im Anschluss ist die CCU2 als Lan-Gateway mit der … „CCU2 als Lan-Gateway nutzen“ weiterlesen

Ein kleiner Tip für alle, die ihre Homematic-CCU2 durch die CCu3 oder einen RaspberryPi ersetzt haben: Bevor die alte CCu2 im Regal verstaubt kann sie mit wenig Aufwand in ein Lan-Gateway umgewandelt werden.

Auf Github findet sich dazu folgende Anleitung, diese Codes einfach mit SSH ausführen:

# Dateisystem read/write mounten
mount -o remount,rw /

# Dateien herunterladen und Rechte anpassen
mkdir -p /usr/local/addons/
mv /firmware/fwmap /firmware/fwmap.orig
wget --no-check-certificate -q -O /firmware/fwmap https://raw.githubusercontent.com/jp112sdl/CCU2GW/master/fwmap
wget --no-check-certificate -q -O /usr/local/addons/hmlangw https://raw.githubusercontent.com/jp112sdl/CCU2GW/master/hmlangw
wget --no-check-certificate -q -O /etc/init.d/S61hmlangw https://raw.githubusercontent.com/jp112sdl/CCU2GW/master/S61hmlangw
chmod 755 /usr/local/addons/hmlangw
chmod 755 /etc/init.d/S61hmlangw

# Laufende Dienste stoppen
/etc/init.d/S70ReGaHss stop
/etc/init.d/S62HMServer stop
/etc/init.d/S61rfd stop
/etc/init.d/S60multimacd stop

# Funkmodul Firmware auf 1.4.1 updaten
eq3configcmd update-coprocessor -p /dev/mxs_auart_raw.0 -c -u -d /firmware

# Init-Skripte verschieben
export INITDIR=/etc/init.d/
export UNUSED_INITDIR=/etc/init.d_unused/
mkdir -p ${UNUSED_INITDIR}
mv ${INITDIR}S49hs485d ${UNUSED_INITDIR}
mv ${INITDIR}S50lighttpd ${UNUSED_INITDIR}
mv ${INITDIR}S50eq3configd ${UNUSED_INITDIR}
[[ -e ${INITDIR}S55cuxd ]] && mv ${INITDIR}S55cuxd ${UNUSED_INITDIR}
mv ${INITDIR}S58LGWFirmwareUpdate ${UNUSED_INITDIR}
mv ${INITDIR}S59SetLGWKey ${UNUSED_INITDIR}
mv ${INITDIR}S60hs485d ${UNUSED_INITDIR}
mv ${INITDIR}S60multimacd ${UNUSED_INITDIR}
mv ${INITDIR}S61rfd ${UNUSED_INITDIR}
mv ${INITDIR}S62HMServer ${UNUSED_INITDIR}
mv ${INITDIR}S70ReGaHss ${UNUSED_INITDIR}
mv /bin/hss_led /bin/hss_led_unused

mv /usr/local/etc/config/rc.d /usr/local/etc/config/rc.d_unused

mv /opt/mh/startup.sh /opt/mh/startup.sh_unused

# optional:
# Seriennummer-Datei anlegen (nur notwendig wenn eine andere Seriennummer als CCU2GW0001 gewünscht wird)
# XXXXXXXXXX ändern in 10-stellige Seriennummer
echo XXXXXXXXXX > /usr/local/addons/serialnumber.txt

# Neustart durchführen
sync
reboot

Im Anschluss ist die CCU2 als Lan-Gateway mit der Standard-Seriennummer CCU2GW0001 erreichbar.

Zisternen-Füllstand mit Ultraschall & Raspberry messen – Teil 2

Nachdem ich wie in Teil 1 beschrieben den Ultraschallsensor zusammengebaut habe ging es nun an den Einbau in unsere Zisterne – und damit fingen die Probleme an: Eigentlich sah der Plan vor, den Sensor in der Zisterne zu befestigen und die Datenleitung durch die bestehende Verrohrung in den Technikraum zu legen. Hier wäre bereits ein … „Zisternen-Füllstand mit Ultraschall & Raspberry messen – Teil 2“ weiterlesen

Nachdem ich wie in Teil 1 beschrieben den Ultraschallsensor zusammengebaut habe ging es nun an den Einbau in unsere Zisterne – und damit fingen die Probleme an:

Eigentlich sah der Plan vor, den Sensor in der Zisterne zu befestigen und die Datenleitung durch die bestehende Verrohrung in den Technikraum zu legen. Hier wäre bereits ein RaspberryPi im Einsatz, der auch diese Aufgabe mit übernommen hätte. Leider konnte ich das Kabel nicht durch das Leerrohr führen, weil es bereits zu voll war… (Merke: Immer ein Leerrohr mehr als geplant mitlegen. man weiß nie wofür man es mal braucht…)

Zum Glück hatte ich noch einen alten RaspberyPi (Model 1 B) übrig. Wenn das Kabel nicht zum Pi kann, muss eben der Pi zum Sensor. Als erstes habe ich ein neues Gehäuse aus einer Frischhaltedose gebaut, in dem der Sensor und der Pi Platz fanden:

Der Sensor wurde danach in der Zisterne befestigt.

Das nächste Problem war, das der Sensor aufgrund der div. Leitungen im Domschacht gestört wurde. Dieses Problem habe ich mit einem darunter befestigten PVC-Rohr gelöst. Damit kann der Schall nun ungehindert bis zur Wasseroberfläche vordringen.

Der Pi ist nun per Wlan mit meinem Netzwerk verbunden Siehe Teil 3. Als Software nutze ich PiusIt. Neben der grafischen Darstellung & Archivierung bietet sie auch die Möglichkeit, den aktuellen Wasserstand an die Homematic weiterzugeben.

Zisternen-Füllstand mit Ultraschall & Raspberry messen – Teil 1

Wir haben in unserem Garten einen Erdtank eingegraben, der uns 2650L Regenwasser für die Gartenbewässerung zur Verfügung stellt. Bis heuer haben wir darin mit einem HM-Sen-Wa-Od Füllstandssensor von Homematic den Wasserstand gemessen – leider hat dieser plötzlich das Zeitliche gesegnet. Also musste was neues her – und ich habe mich für eine Messung mittels Ultraschall entschieden. … „Zisternen-Füllstand mit Ultraschall & Raspberry messen – Teil 1“ weiterlesen

Wir haben in unserem Garten einen Erdtank eingegraben, der uns 2650L Regenwasser für die Gartenbewässerung zur Verfügung stellt. Bis heuer haben wir darin mit einem HM-Sen-Wa-Od Füllstandssensor von Homematic den Wasserstand gemessen – leider hat dieser plötzlich das Zeitliche gesegnet. Also musste was neues her – und ich habe mich für eine Messung mittels Ultraschall entschieden.

Ultraschall-Sensoren für den Raspberry Pi gibt es bereits um wenige Euro, ich habe diesen bestellt: https://amzn.to/2KQfsz7

Den Sensor habe ich einfach in eine wasserdichte Verteilerdose mit Heißkleber eingeklebt:

Nach dem zusammenlöten der Teile wurde ein erster Test durchgeführt – er funktioniert!

Teil 2 gibt es hier

Gesamte Amazon-Ausgaben anzeigen

Aktuell ist es leider nur bei amazon.com möglich den gesamten Bestellverlauf inklusive Gesamtsumme darzustellen. Findige Programmierer haben aber einen javascript-parser geschrieben der das Ganze auch auf amazon.de ermöglicht. Einfach eine Verknüpfung mit dem folgendem Inhalt erstellen, anschließend auf amazon.de einloggen und draufklicken (Wichtig: Der Link funktioniert nur unter Chrome bzw. Firefox, es müssen Pop-Ups für … „Gesamte Amazon-Ausgaben anzeigen“ weiterlesen

Aktuell ist es leider nur bei amazon.com möglich den gesamten Bestellverlauf inklusive Gesamtsumme darzustellen. Findige Programmierer haben aber einen javascript-parser geschrieben der das Ganze auch auf amazon.de ermöglicht. Einfach eine Verknüpfung mit dem folgendem Inhalt erstellen, anschließend auf amazon.de einloggen und draufklicken (Wichtig: Der Link funktioniert nur unter Chrome bzw. Firefox, es müssen Pop-Ups für amazon.de erlaubt werden!):

javascript:void(function(){!function(){function e(t,r){if(null==t)return null;if(t.className==r)return t;for(var n=0;n<t.childNodes.length;n++){var a=e(t.childNodes[n],r);if(a)return a}return null}function t(e,r){if(null==e)return null;if(e.className==r)return[e];for(var n=[],a=0;a<e.childNodes.length;a++)n=n.concat(t(e.childNodes[a],r));return n}function r(r,n,a){var o=r.getElementsByClassName("order-info"),l=r.getElementsByClassName("a-box-group a-spacing-base");if(m[n].pages[a].done=!0,o.length!=l.length)return void console.log("Syntax Error "+n+"/"+a);for(var s=0;s<o.length;s++){var i={price:"0,00",date:"?",link:"",names:[],prices:[],products:0,recip:""},g=e(o[s],"a-column a-span2");if(g){var c=g.getElementsByClassName("a-color-secondary value");c.length>0?i.price=g.getElementsByClassName("a-color-secondary value")[0].innerHTML.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim():i.price="0,00"}else console.log("No price found "+n+"/"+a);var d=e(o[s],"a-column a-span6 recipient a-span-last");if(d){var h=d.getElementsByClassName("trigger-text");h.length>0?i.recip=d.getElementsByClassName("trigger-text")[0].innerHTML.trim():i.recip="?"}else console.log("No recipient found "+n+"/"+a);var p=e(o[s],"a-color-secondary value");p?i.date=p.innerHTML.trim():console.log("No date found "+n+"/"+a);var u=o[s].getElementsByTagName("a")[1];u?i.link=u.href:console.log("No link found "+n+"/"+a);var f=t(l[s],"a-fixed-left-grid-col a-col-right");if(f.length>0){for(var v=[],y=[],N=0;N<f.length;N++){var T=f[N].getElementsByTagName("A");T.length>0?v.push(f[N].getElementsByTagName("A")[0].innerHTML.trim()):v.push(f[N].getElementsByTagName("DIV")[0].innerHTML.trim());var E=e(f[N],"a-size-small a-color-price");E&&y.push(E.textContent.trim())}i.names=v,i.prices=y,i.products=v.length}else console.log("No names found "+n+"/"+a);m[n].pages[a].entries.push(i)}}function n(r,n,a){for(var l=r.getElementsByClassName("a-box-group a-spacing-base"),s=0;s<l.length;s++){var i="",g="",c="",d=l[s].getElementsByClassName("order-info");if(1==d.length){var h=d[0].getElementsByClassName("a-col-right");if(1==h.length){var p=h[0].getElementsByClassName("a-color-secondary value");p.length>0?i=p[0].textContent.trim():console.log("No order number found "+n+"/"+a)}else console.log("No order number found "+n+"/"+a);var u=e(l[s],"a-column a-span2");if(u){var m=u.getElementsByClassName("a-color-secondary value");g=m.length>0?u.getElementsByClassName("a-color-secondary value")[0].innerHTML.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim():"0,00"}else console.log("No price found "+n+"/"+a);var v=e(l[s],"a-color-secondary value");v?c=v.innerHTML.trim():console.log("No date found "+n+"/"+a)}for(var y=l[s].getElementsByClassName("a-box shipment"),N=0;N<y.length;N++){var T={orderNumber:i,orderPrice:g,orderDate:c,date:"?",names:[],prices:[],price:0,products:0},E=e(y[N],"a-row shipment-top-row"),v=e(E,"a-size-medium a-color-base a-text-bold");v?T.date=v.innerHTML.trim():console.log("No shipment date found "+n+"/"+a);var b=t(y[N],"a-fixed-left-grid-col a-col-right");if(b.length>0){for(var B=[],x=[],I=0,w=0,C=!1,L=0;L<b.length;L++){var M=b[L].getElementsByTagName("A");M.length>0?B.push(b[L].getElementsByTagName("A")[0].innerHTML.trim()):B.push(b[L].getElementsByTagName("DIV")[0].innerHTML.trim());var H=e(b[L].parentElement,"item-view-qty");H?(H=parseInt(H.textContent.trim()),isNaN(H)&&(H=1)):H=1;var k=e(b[L],"a-size-small a-color-price");if(k){var P=k.textContent.trim();x.push(P);var z=P.replace(/EUR/,"").replace(/Summe/,"").replace(/.*coins/i,"0,00").trim().replace(/\./,"").split(","),A=100*parseInt(z[0])+parseInt(z[1]);isNaN(A)?C=!0:I+=A*H}w+=H}T.names=B,T.prices=x,T.products=w,1==y.length?T.price=g:(T.price=o(I/100),C&&(T.price="*"+T.price))}else console.log("No item names in shpiment found "+n+"/"+a);f.push(T)}}}function a(){for(var e="",t=0;t<m.length;t++){e+=m[t].year+":",0==m[t].pages.length&&(e+=" waiting...");for(var r=0;r<m[t].pages.length;r++)e+=" "+(m[t].pages[r].done?"X":".");e+="\n"}document.body.innerHTML="<pre>"+e+"</pre>"}function o(e){for(var t=(e.toFixed(2)+"").split("."),r=t[0],n="",a=0;a<r.length-1;a++)n+=r.charAt(a),(r.length-a)%3==1&&(n+=".");return n+=r.charAt(r.length-1),n+","+t[1]}function l(e){return'<tr><td align="right">'+e.name+'</td><td align="right">'+o(e.cent/100)+'</td><td align="right">'+e.orders+'</td><td align="right">'+e.products+'</td><td align="right">'+o(e.cent/100/e.products)+'</td><td align="right">'+o(e.cent/100/e.month)+"</td></tr>"}function s(e){for(var t='<ul style="margin:0; padding:0 0 0 2em">',r=0;r<e.names.length;r++)t+="<li>"+e.names[r]+" | "+e.prices[r]+"</li>";return t+="</ul>",'<tr><td align="center" valign="top"><a href="'+e.link+'">Link</a></td><td align="right" valign="top">'+e.date+'</td><td align="center" valign="top">'+e.products+'</td><td align="right" valign="top">'+e.price+'</td><td align="left" valign="top">'+e.recip+'</td><td align="left" valign="top">'+t+"</td></tr>"}function i(e){for(var t="",r=0;r<e.names.length;r++)t+=e.names[r]+" | "+e.prices[r]+" # ";return'<tr><td align="center" valign="top">'+e.orderNumber+'</td><td align="right" valign="top">'+e.orderDate+'</td><td align="center" valign="top">'+e.orderPrice+'</td><td align="right" valign="top">'+e.date+'</td><td align="left" valign="top">'+e.products+'</td><td align="left" valign="top">'+e.price+'</td><td align="left" valign="top">'+t+"</td></tr>"}function g(){for(var e=new Date,t=""+(1900+e.getYear()),r=e.getMonth()+1,n=[],a=[],o={name:"Insg.",cent:0,orders:0,products:0,month:0},g=0;g<m.length;g++){for(var c=m[g].year.substr(5),d={name:c,cent:0,orders:0,products:0,month:c==t?r:12},h=0;h<m[g].pages.length;h++)for(var p=0;p<m[g].pages[h].entries.length;p++){var u=m[g].pages[h].entries[p],v=u.price.replace(/\./,"").split(","),y=100*parseInt(v[0])+parseInt(v[1]);d.cent+=y,d.products+=u.products,d.orders++,n.push(u)}o.cent+=d.cent,o.products+=d.products,o.orders+=d.orders,o.month+=d.month,a.push(d)}var N="<h2>Uebersicht</h2>";N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Jahr</th><th>Euro</th><th>Bestell.</th><th>Produkte</th><th>Euro/Prod.</th><th>Euro/Monat</th></tr>',N+=l(o);for(var g=0;g<a.length;g++)N+=l(a[g]);N+="</table>",N+="<h2>Einzel-Bestellungen</h2>",N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Link</th><th>Datum</th><th>Produkte</th><th>Preis</th><th>Versandadresse</th><th>Produktbeschreibungen</th></tr>';for(var g=0;g<n.length;g++)N+=s(n[g]);N+="</table>",N+="<h2>Lieferungen</h2>",N+='<table cellspacing="0" cellpadding="4" border="1"><tr><th>Bestellnummer</th><th>Bestelldatum</th><th>Bestellsumme</th><th>Lieferdatum</th><th>Anzahl Produkte</th><th>Summe / Abbuchung</th><th>Produkte | Preis</th></tr>';for(var g=0;g<f.length;g++)N+=i(f[g]);N+="</table>",document.body.innerHTML=N}function c(e){e.currentTarget.onlyOnce||(e.currentTarget.onlyOnce=!0,r(e.currentTarget.document,e.currentTarget.yearIndex,e.currentTarget.pageIndex),n(e.currentTarget.document,e.currentTarget.yearIndex,e.currentTarget.pageIndex),e.currentTarget.close())}function d(e){if(!e.currentTarget.onlyOnce){e.currentTarget.onlyOnce=!0;for(var t=e.currentTarget.document,a=t.getElementsByTagName("a"),o=0,l=0;l<a.length;l++)a[l].href.match(/startIndex=(\d+)/)&&(o=Math.max(o,parseInt(RegExp.$1)));for(var s=e.currentTarget.yearIndex,l=0;o>=l;l+=10)m[s].pages.push({done:!1,entries:[]});r(t,s,0),n(t,s,0);for(var i="https://www.amazon.de/gp/css/order-history/gp/css/order-history/ref=oss_pagination?ie=UTF8&orderFilter="+m[s].year+"&search=&startIndex=",g=1,l=10;o>=l;l+=10){var d=window.open(i+l);d.yearIndex=s,d.pageIndex=g,d.addEventListener("load",c,!0),g++}e.currentTarget.close()}}function h(e){if(!e.currentTarget.onlyOnce){e.currentTarget.onlyOnce=!0;for(var t=e.currentTarget.document,r=t.getElementsByClassName("time-period-chooser a-spacing-none")[0],n=t.getElementsByName("orderFilter")[0],a=0;a<n.options.length;a++){var o=/year-(\d\d\d\d)/;o.exec(n.options[a].value)&&m.push({year:n.options[a].value,pages:[]})}for(var l="https://www.amazon.de/gp/css/order-history?",a=0;a<r.elements.length;a++){var s=r.elements[a];s!=n&&(l+=encodeURIComponent(s.name)+"="+encodeURIComponent(s.value)+"&")}l+="orderFilter=";for(var a=0;a<m.length;a++){var i=window.open(l+m[a].year);i.yearIndex=a,i.addEventListener("load",d,!0)}u=setInterval(p,1e3),e.currentTarget.close()}}function p(){a();for(var e=0;e<m.length;e++){if(0==m[e].pages.length)return;for(var t=0;t<m[e].pages.length;t++)if(!m[e].pages[t].done)return}clearInterval(u),g()}var u,m=[],f=[],v=window.open("https://www.amazon.de/gp/css/order-history/ref=ya_orders_css");v.addEventListener("load",h,!0)}();})();

 

 

Homematic-Lamellensteuerung

Vor kurzem bin ich auf eine einfache Lösung gestoßen, um die Lamellen unserer Raffstores per Tastendruck zu steuern.  Bis jetzt hatte ich das Ganze über eine Zeitverzögerung realisiert (Raffstore nach unten fahren – nach 70 Sekunden 0,5% nach oben -> Lamellen sind geöffnet). Das Funktioniert auch bestens, hat aber einen Schönheitsfehler: Startet man den Raffstore … „Homematic-Lamellensteuerung“ weiterlesen

Vor kurzem bin ich auf eine einfache Lösung gestoßen, um die Lamellen unserer Raffstores per Tastendruck zu steuern.  Bis jetzt hatte ich das Ganze über eine Zeitverzögerung realisiert (Raffstore nach unten fahren – nach 70 Sekunden 0,5% nach oben -> Lamellen sind geöffnet). Das Funktioniert auch bestens, hat aber einen Schönheitsfehler: Startet man den Raffstore nämlich zB. von der Hälfte (weil man ihn vorher manuell halb geöffnet hat) dauert es trotzdem die vollen 70 Sekunden um die Lamellen wieder in den „Standardzustand“ zu versetzen. Die Lösung ist so einfach wie effektiv:

Als erstes wird unter „Direkte Verknüpfungen“ die jeweile „AB“-Verknüpfung des Tasters bearbeitet:

Anschließend unter Profileinstellung auf „Experte“ umstellen. Jetzt noch unter „LONG_DRIVING_MODE“ „DRIVE_VIA_LOWER_END_POSITION“ und unter „LONG_OFF_LEVEL“ die gewünschte Endposition in Prozent (bei mir 0,5) eintippen und fertig!

Bei einem langen Tastendruck nach unten schließt sich der Raffstore nun immer komplett und öffnet sich danach wieder um die eingestellten 0,5 Prozent. Das funktioniert auch wenn der Raffstore schon komplett geschlossen ist!

Wenn der Postmann 2x klingelt…

Gestern konnte ich ein Homematic-Projekt umsetzen, welches ich mir schon lange vorgenommen habe: Der intelligente Briefkasten. Unserem Briefkasten sieht man (wie den meisten) nicht an, ob sich Post darin befindet. Um mir aber das Nachsehen zu ersparen habe ich ihn nun ein wenig getuned und mit unserer Homematic-Anlage verknüpft: Gelöst wurde das Ganze mit einem übrigen 3-Kanal-Funk-Schließerkontakt-Interface … „Wenn der Postmann 2x klingelt…“ weiterlesen

Gestern konnte ich ein Homematic-Projekt umsetzen, welches ich mir schon lange vorgenommen habe: Der intelligente Briefkasten.

Unserem Briefkasten sieht man (wie den meisten) nicht an, ob sich Post darin befindet. Um mir aber das Nachsehen zu ersparen habe ich ihn nun ein wenig getuned und mit unserer Homematic-Anlage verknüpft:

Gelöst wurde das Ganze mit einem übrigen 3-Kanal-Funk-Schließerkontakt-Interface und 2 Reed-Kontakten. Diese wurden erstmal provisorisch im Postkasten montiert, einmal beim Einwurf, einmal bei der Entnahmeklappe:

Das sieht jetzt noch etwas wüst aus, wenn alles funktioniert wird das Kabegewirr natürlich noch schön verkleidet.

Nach dem Anlernen wurde eine Systemvariable „SV_Post“ vom Typ „Logikwert“ angelegt und folgendes Programm erstellt:

Beim Öffnen der Briefklappe wird nun die Variable auf „Ja“ gesetzt. Zeitgleich wird mir eine Push-Benachrichtigung auf’s Handy geschickt.
Beim Entleeren des Postkastens wird die Variable wieder auf „Nein“ gesetzt, auch das wird mir per Push mitgeteilt (falls meine Frau schneller war als ich 😉 )

Raspberry Pi als IP-Kamera verwenden

Der Raspberry Pi hat ja tausende Einsatzmöglichkeiten, heute möchte ich vorstellen wie man mit wenig Aufwand eine Netzwerkkamera daraus bastelt: Als Basis steht in meinem Fall ein Raspberry Pi mit installiertem Raspian sowie eine alte USB-Webcam zur Verfügung. Als erstes wird mit dem Befehl sudo apt-get update && sudo apt-get upgrade Raspian auf den aktuellen Stand … „Raspberry Pi als IP-Kamera verwenden“ weiterlesen

Der Raspberry Pi hat ja tausende Einsatzmöglichkeiten, heute möchte ich vorstellen wie man mit wenig Aufwand eine Netzwerkkamera daraus bastelt:

Als Basis steht in meinem Fall ein Raspberry Pi mit installiertem Raspian sowie eine alte USB-Webcam zur Verfügung. Als erstes wird mit dem Befehl

sudo apt-get update && sudo apt-get upgrade

Raspian auf den aktuellen Stand gebracht.
Als nächstes installieren wir den Webcam-Server motion:

sudo apt-get install motion

Nach der Installation müssen wir ein paar Dinge einstellen:

sudo nano /etc/motion/motion.conf

In dieser Config-Datei wird alles eingestellt, wir konzentrieren uns erstmal auf folgende Dinge:

daemon on
stream_localhost off

Weiters musste ich bei mir noch die automatische Speicherung von Bildern/Videos deaktivieren (aus welchem Grund auch immer), da der Service sonst nicht startete:

output_pictures off
ffmpeg_output_movies off

Wir speichern die Config-Datei und aktivieren mit

sudo nano /etc/default/motion

den Service, indem wir den Wert von no auf yes ändern:

start_motion_daemon=yes

Als letzten Schritt starten wir den Service (spätestens jetzt die USB-Kamera anschließen):

sudo service motion start

Im Webbrowser sollte die Kamera nun unter IP-Adresse-RasPi:8081 erreichbar sein!

In der Config-Datei können nun noch ein paar Dinge zusätzlich angepasst werden:

width (Bildbreite)
height (Bildhöhe)
framerate (Bilder pro Sekunde)
text_right (Text im rechten Eck)

Nach jeder Änderung muss der Service aber neugestartet werden:

sudo service motion restart