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 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. 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.

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 folgt…

 

 

 

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 amazon.de erlaubt werden!):

javascript<b></b>:void(function(){!function(){function e(t,r){if(null==t)return null;if(t.className==r)return t;for(var n=0;n&lt;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&lt;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&lt;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&gt;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&gt;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&gt;0){for(var v=[],y=[],N=0;N&lt;f.length;N++){var T=f[N].getElementsByTagName("A");T.length&gt;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&amp;&amp;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&lt;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&gt;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&gt;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&lt;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&gt;0){for(var B=[],x=[],I=0,w=0,C=!1,L=0;L&lt;b.length;L++){var M=b[L].getElementsByTagName("A");M.length&gt;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)&amp;&amp;(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&amp;&amp;(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&lt;m.length;t++){e+=m[t].year+":",0==m[t].pages.length&amp;&amp;(e+=" waiting...");for(var r=0;r&lt;m[t].pages.length;r++)e+=" "+(m[t].pages[r].done?"X":".");e+="\n"}document.body.innerHTML="&lt;pre&gt;"+e+"&lt;/pre&gt;"}function o(e){for(var t=(e.toFixed(2)+"").split("."),r=t[0],n="",a=0;a&lt;r.length-1;a++)n+=r.charAt(a),(r.length-a)%3==1&amp;&amp;(n+=".");return n+=r.charAt(r.length-1),n+","+t[1]}function l(e){return'&lt;tr&gt;&lt;td align="right"&gt;'+e.name+'&lt;/td&gt;&lt;td align="right"&gt;'+o(e.cent/100)+'&lt;/td&gt;&lt;td align="right"&gt;'+e.orders+'&lt;/td&gt;&lt;td align="right"&gt;'+e.products+'&lt;/td&gt;&lt;td align="right"&gt;'+o(e.cent/100/e.products)+'&lt;/td&gt;&lt;td align="right"&gt;'+o(e.cent/100/e.month)+"&lt;/td&gt;&lt;/tr&gt;"}function s(e){for(var t='&lt;ul style="margin:0; padding:0 0 0 2em"&gt;',r=0;r&lt;e.names.length;r++)t+="&lt;li&gt;"+e.names[r]+" | "+e.prices[r]+"&lt;/li&gt;";return t+="&lt;/ul&gt;",'&lt;tr&gt;&lt;td align="center" valign="top"&gt;&lt;a href="'+e.link+'"&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;td align="right" valign="top"&gt;'+e.date+'&lt;/td&gt;&lt;td align="center" valign="top"&gt;'+e.products+'&lt;/td&gt;&lt;td align="right" valign="top"&gt;'+e.price+'&lt;/td&gt;&lt;td align="left" valign="top"&gt;'+e.recip+'&lt;/td&gt;&lt;td align="left" valign="top"&gt;'+t+"&lt;/td&gt;&lt;/tr&gt;"}function i(e){for(var t="",r=0;r&lt;e.names.length;r++)t+=e.names[r]+" | "+e.prices[r]+" # ";return'&lt;tr&gt;&lt;td align="center" valign="top"&gt;'+e.orderNumber+'&lt;/td&gt;&lt;td align="right" valign="top"&gt;'+e.orderDate+'&lt;/td&gt;&lt;td align="center" valign="top"&gt;'+e.orderPrice+'&lt;/td&gt;&lt;td align="right" valign="top"&gt;'+e.date+'&lt;/td&gt;&lt;td align="left" valign="top"&gt;'+e.products+'&lt;/td&gt;&lt;td align="left" valign="top"&gt;'+e.price+'&lt;/td&gt;&lt;td align="left" valign="top"&gt;'+t+"&lt;/td&gt;&lt;/tr&gt;"}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&lt;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&lt;m[g].pages.length;h++)for(var p=0;p&lt;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="&lt;h2&gt;Uebersicht&lt;/h2&gt;";N+='&lt;table cellspacing="0" cellpadding="4" border="1"&gt;&lt;tr&gt;&lt;th&gt;Jahr&lt;/th&gt;&lt;th&gt;Euro&lt;/th&gt;&lt;th&gt;Bestell.&lt;/th&gt;&lt;th&gt;Produkte&lt;/th&gt;&lt;th&gt;Euro/Prod.&lt;/th&gt;&lt;th&gt;Euro/Monat&lt;/th&gt;&lt;/tr&gt;',N+=l(o);for(var g=0;g&lt;a.length;g++)N+=l(a[g]);N+="&lt;/table&gt;",N+="&lt;h2&gt;Einzel-Bestellungen&lt;/h2&gt;",N+='&lt;table cellspacing="0" cellpadding="4" border="1"&gt;&lt;tr&gt;&lt;th&gt;Link&lt;/th&gt;&lt;th&gt;Datum&lt;/th&gt;&lt;th&gt;Produkte&lt;/th&gt;&lt;th&gt;Preis&lt;/th&gt;&lt;th&gt;Versandadresse&lt;/th&gt;&lt;th&gt;Produktbeschreibungen&lt;/th&gt;&lt;/tr&gt;';for(var g=0;g&lt;n.length;g++)N+=s(n[g]);N+="&lt;/table&gt;",N+="&lt;h2&gt;Lieferungen&lt;/h2&gt;",N+='&lt;table cellspacing="0" cellpadding="4" border="1"&gt;&lt;tr&gt;&lt;th&gt;Bestellnummer&lt;/th&gt;&lt;th&gt;Bestelldatum&lt;/th&gt;&lt;th&gt;Bestellsumme&lt;/th&gt;&lt;th&gt;Lieferdatum&lt;/th&gt;&lt;th&gt;Anzahl Produkte&lt;/th&gt;&lt;th&gt;Summe / Abbuchung&lt;/th&gt;&lt;th&gt;Produkte | Preis&lt;/th&gt;&lt;/tr&gt;';for(var g=0;g&lt;f.length;g++)N+=i(f[g]);N+="&lt;/table&gt;",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&lt;a.length;l++)a[l].href.match(/startIndex=(\d+)/)&amp;&amp;(o=Math.max(o,parseInt(RegExp.$1)));for(var s=e.currentTarget.yearIndex,l=0;o&gt;=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&amp;orderFilter="+m[s].year+"&amp;search=&amp;startIndex=",g=1,l=10;o&gt;=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&lt;n.options.length;a++){var o=/year-(\d\d\d\d)/;o.exec(n.options[a].value)&amp;&amp;m.push({year:n.options[a].value,pages:[]})}for(var l="https://www.amazon.de/gp/css/order-history?",a=0;a&lt;r.elements.length;a++){var s=r.elements[a];s!=n&amp;&amp;(l+=encodeURIComponent(s.name)+"="+encodeURIComponent(s.value)+"&amp;")}l+="orderFilter=";for(var a=0;a&lt;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&lt;m.length;e++){if(0==m[e].pages.length)return;for(var t=0;t&lt;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 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 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 &amp;&amp; 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

Homematic & Hekatron Rauchmelder

Auch wenn man hofft es nie zu brauchen – Brandmelder gehören einfach in jeden Haushalt. Bei uns in Tirol gibt es bereits seit 2008 eine Rauchmelderpflicht für Neu- und Umbauten, nach meiner Meinung ein sinnvolles Gesetz. Natürlich habe ich auch bei uns Rauchmelder installiert – diese waren aber bis dato noch nicht vernetzt.

Genius-Hx_Hekatron_2009_weiss

Am letzten Wochenende kam ich nun endlich dazu, unsere Rauchmeldeanlage zu komplettieren. Als Basis dienen mir die Rauchmelder der Firma Hekatron, welche in diversen Tests hervorragend abgeschnitten haben. Diese habe ich nun mit einem optional erhältlichen Funkmodul ausgestattet und untereinander vernetzt. So wird also überall gleichzeitig Alarm ausgelöst – das ist bei größeren Distanzen (Keller – Obergeschoss) sinnvoll, wo man einen Rauchmelder leicht überhören kann.

Zusätzlich habe ich unsere Rauchmelder in unser Homematic-System integriert. Es hätte zwar auch Rauchmelder direkt von Homematic gegeben (was die Installation wesentlich leichter gemacht hätte), die erste Generation ist aber lt. diversen Internet-Berichten ziemlich Fehleranfällig. Seit neustem gibt es nun die 2. Generation mit 10-Jahres-Batterie und anscheinend ohne Fehler, ob das stimmt muss erst die Zeit zeigen. Für mich kamen sie aber zu spät, deswegen habe ich mich nach einer Alternative umgesehen und wurde fündig:

Zusätzlich zu den Rauchmeldern von Hekatron gibt es noch einen Funkhandtaster. Dieser kann ins bestehende Funknetz eingebunden werden und besitzt – und das ist der entscheidende Punkt – Relaisausgänge für Alarm- und Statusmeldungen.

Ich habe also einen Funk-Schließerkontakt von Homematic an diese Relaisausgänge angeschlossen. Wird nun Alarm ausgelöst (oder die Spannungsversorgung fällt aus) erkennt das die Homematic-Zentrale.

20160829_Homematic_Rauchmelder

Aber was bringt mir das nun? Im Alarmfall wird mir nun eine Push-Benachrichtigung auf mein Smartphone geschickt. Weiters werden alle Raffstores/Rollos hochgefahren und so die Fluchtwege freigemacht.
Im Fall eines Spannungsausfalls bekomme ich ebenfalls eine Push-Nachricht und weiß so Bescheid – die Zentrale im Keller prüft man ja nicht alle Tage…

Fazit: Ich hoffe zwar dass ich diese Funktion niemals brauche – aber es ist doch ein gutes Gefühl vorgesorgt zu haben.

Ein abschließender Hinweis noch für für Homematic-User: Leider gibt es (Stand 08/2016) einen Bug in der CCU-Firmware: Beim Neustart der Zentrale merkt sich diese den Zustand des Schließerkontakts nicht, sondern nimmt bis zur nächsten Status-Übertragung (normal nach ca. 24 Stunden) den Zustand „geschlossen“ an. In meinem Fall würde geschlossen aber „Alarm“ bedeuten – ihr könnt euch denken was dann passiert.
Um diesen Bug zu umgehen muss der Umweg über Variablen gegangen werden, denn diese merkt sich die CCU auch bei einem Neustart. Ein Tutorial dazu findet ihr hier.

Vorstellung (m)einer Backuplösung

Datensicherung ist ein wichtiges Thema. In Zeiten von Festplatten mit mehreren Terrabyte an Speicherplatz verschwenden leider die wenigsten ihre Gedanken an eine vernünftige Datensicherung. Falls dann doch einmal Daten verloren gehen ist das Geschrei groß – vor allem wenn es sich um wichtige Daten wie zb. Bachelorarbeit oder die Familienfotos der letzten 20 Jahre handelt.

Ich habe schon einige Wege ausprobiert und bin nun bei folgender Lösung gelandet:

Diagramm_Backup

Fotos werden direkt auf meinem NAS gespeichert. Durch das Raid5-Verfahren sind sie hier vor dem Ausfall einer Festplatte geschützt. Weiters werden wichtige Dokumente & Unterlagen mit der kostenlosen Software „Backup Service Home“ ebenfalls auf dem NAS gesichert. Besagte Software erstellt vollautomatisch Backups von ausgewählten Ordnern & Dateien. Der Vorteil ist die Versionsverwaltung. Dateien werden die ersten 24 Stunden stündlich gesichert, anschließend Täglich und schließlich Wöchentlich.
Bilder von meinem Smartphone werden in die Dropbox synchronisiert – und diese dann ebenfalls mit BSH auf das NAS gesichert.

Jetzt liegen die Daten also auf dem NAS und sind soweit gesichert – aber was passiert im (hoffentlich nie eintretenden) Fall eines Brandes, Blitzschlags oder Diebstahls?

Die Lösung nennt sich Synology Cloud Sync. Damit können die NAS-Dateien mit einem Cloud-Dienst synchronisiert werden. Bei Google Drive gibt es zB. 17 GB gratis, seit neuestem gibt es bei Amazon unbegrenzten Speicher für 70 Euro/Jahr.
Die Synchronisierung erfolgt bei mir unidirektional, also nur in eine Richtung (von NAS in die Cloud). Gelöschte Dateien werden in der Cloud nicht gelöscht – sind also immer noch Vorhanden. Zusätzlich werden die Dateien clientseitig verschlüsselt und sind so in der Cloud vor fremden Blicken geschützt.

Mattscheibe einer Eos 450D wechseln

Leider habe ich beim Versuch, die Mattscheibe meiner Canon Eos 450D zu reinigen, eben diese zerkratzt. Sie kann aber mit etwas Fingerspitzengefühl selbst getauscht werden. Um dem ein oder anderen die Suche zu ersparen hier die wichtigsten Links:

Die neue Mattscheibe (oder Englisch „focusing screen“) kann im Internet für kleines Geld bestellt werden, ich möchte hier die Firma Schuhmann Service in Linz empfehlen, bei der ihr schon öfters Ersatzteile bestellt habe.

Eine Anleitung für die verschiedensten Kameramodelle findet ihr hier.

Wichtig beim Tausch: Unbedingt Handschuhe tragen und eine Kunststoff-Pinzette verwenden, sonst ist die neue Scheibe gleich wieder hinüber…

Rollos & TV koppeln – ja es geht!

Hausautomation – ein nicht Enden wollendes Thema. Die Hausautomation soll ja – wie der Name schon sagt – Abläufe im Haus automatisieren. Man lässt also alltägliche Tätigkeiten vom Computer erledigen.

Ein solcher Vorgang ist mir vor kurzem aufgefallen: Jeden Abend schalte ich den Fernseher aus, gehe ins Schlafzimmer und lasse dort unsere Rollos herunter. Das sollte sich doch automatisieren lassen? Ja tut es!

Als erstes muss erwähnt werden dass ich schon lange den Lightmanager von jbmedia nutze. Dieses kleine Gerät verbindet Infrarot-Fernbedienungen mit Funk-Steckdosen. So kann ich mit meiner Harmony One bequem die Stromzufuhr der Hifi-Geräte unterbrechen. Seit kurzem beherrscht der Lightmanager auch das versenden von Netzwerkbefehlen über http get. Und da alle Homematic-Geräte auch über direkte Netzwerkbefehle gesteuert werden können passt das perfekt!

Zuerst habe ich einen neue Systemvariable „TV“ angelegt und dieser die Parameter „ein“ und „aus“ gegeben. Über die App HomeDroid habe ich diese Variable einmal an- und ausgeschaltet – danach können die entsprechenden Netzwerkbefehle unter Konfiguration – Automatisierung abgelesen werden:

20160725_homematic_TV_3

Diese Links nun habe ich als neue Befehle im Lightmanager hinterlegt und so eingestellt, dass beim Einschalten des TV die Variable auf „ein“ und beim Ausschalten auf „aus“ gesetzt wird. Jetzt weiß die Homematic schon mal ob der Fernseher ein oder aus ist.

20160725_homematic_TV

Zum Schluss habe ich noch ein Programm erstellt, welches beim Wechsel der Variable auf „aus“ die beiden Rollos herunter fährt. Damit das natürlich nur Nachts passiert habe ich als zusätzliche Voraussetzung die Zeit von 22:00 – 06.00 definiert.

20160725_homematic_TV_2

So schließen sich jetzt die Rollos im Schlafzimmer automatisch, sobald Abends der Fernseher ausgeschaltet wird.