Sorry, we found 0 results. Please try another query.
Showing max 10 of results

Mein Smart Home

Hintergrund

Wir wohnen seit Mai diesen Jahres im neuen Haus. Für mich war schon lange vor Baubeginn klar, es muss ein Smart Home werden.
Damit sind hier allerdings nicht diese Insellösungen wie Philips Hue, o.ä. gemeint sondern eine Lösung für das ganze Haus. Integriert und vor allem kein “App Home”, sondern Smart im Sinne von automatisch.

Anbietervergleich

Als erstes trifft man beim Neubau und dem Thema automatisierung auf KNX. Ein Industriestandard mit sehr vielen Herstellern und Produkten. Die Verkabelung erfolgt im Bussystem. Ein Kabel geht an jedem Schalter, jeder Lampe, jeder Steckdose, jedem Fenster, etc. vorbei. Das ist eine dezentrale Lösung und man programmiert jeden einzelnen Sensor/Aktor mit entsprechender Logik. Das ganze ist relativ teuer, Stichwort Zertifizierung der Geräte.

Nach einiger Recherche bin ich auf Loxone gestoßen. Ein österreichischer Anbieter von properitärer Hard- und Software für die Hausautomatisierung. Allerdings hat das System offene Schnittstellen zu diversen anderen Systemen, z.b. KNX, Modbus, HTTP.
Die Verkabelung erfolgt dabei sternförmig. Es handelt sich also um eine zentrale Lösung im Verteilerkasten. Jeder Schalter, jedes Licht, jedes Fenster, etc. hat ein eigenes Kabel in den Schaltschrank.
Das klingt schlimmer als es ist:

/images/2017/smarthome1_kabel.jpg /images/2017/smarthome1_verteiler.jpg

Loxone

Die Loxone Lösung besteht aus den einzelnen Hardwaremodulen mit ihren entsprechenden Ein- und Ausgängen. Dazu gehört dann noch die Software “Loxone Config”. Mit der kommt man relativ schnell zu einem funktionierenden Haus.
Neben der Automatisierung bedient man das Haus weiterhin über Standard-Taster und wenn man möchte auch über eine App.
Das Hauptziel ist aber natürlich die Automatisierung. Am besten das Haus weiß selbstständig, was zu tun ist, ohne dass ich dafür eine App oder einen Schalter benötige.

Umsetzung

Für die Umsetzung benötigt man zunächst einen Plan was alles umgesetzt werden soll.
In meinem Fall bestand die Einkaufsliste u.a. aus:

  • Loxone Hardware. Soviel wie für die geplanten Ein-/Ausgänge notwendig
  • Präsenzmelder in jedem Raum/Flur
  • Taster anstatt Schalter
  • Fensterkontakte wie z.B. diese
  • Temperatursensoren
  • Rauchmelder

Bei den Präsenzmeldern habe ich eine sehr kleine und geräuschlose Variante verwendet die zudem auch keine blinkenden LEDs hat. Dafür messen sie gleichzeitig die Helligkeit.
Verwendet werden sie natürlich um das Licht automatisch beim Betreten des Raumes einzuschalten (in Abhängigkeit der Helligkeit). Außerdem um z.B. die Musik zu starten.

Taster werden statt Schaltern verwendet, damit der Zustand keine Rolle spielt. Außerdem lässt sich so in Loxone auch ein Doppelklick oder lang von kurzen Klicks unterscheiden. Damit lassen sich dann unterschiedliche Lichtszenen steuern, etc.
In den meisten Räumen wird nur ein Taster verwendet um sowohl Licht als auch Rolläden zu steuern:

  • Einmal drücken: Licht an/aus
  • Länger als 1sek drücken: Rolladen fährt ab (oder auf, je nach aktuellem Zustand).
  • Einmal drücken während der Rolladen fahrt stoppt den Rolladen

Was die Rolläden angeht dienen diese auch der automatischen Beschattung. Dafür verwende ich die Raumtemperatur (über die Temperatursensoren), den Einfallswinkel der Sonne auf die entsprechenden Fenster und ob die Sonne überhaupt scheint. Dadurch fahren die Rolläden automatisch in eine Beschattungsposition.

Mit Hilfe der Fensterkontakte fahren Rolläden automatisch hoch beim öffnen der Terrassentür, bzw. kann der Rolladen nicht runtergefahren werden wenn die Terrassentür geöffnet ist.

Die Rauchmelder sind vernetzt und über ein Relais an Loxone angebunden. Dadurch kann bei Auslösung eines Rauchmelders automatisch das Licht im gesamten Haus eingeschaltet werden und alle Rolläden für die Fluchtwege hochgefahren werden.

Wenn man nun alles mit allem vernetzt hat, sind der Phantasie keine Grenzen gesetzt. Dazu folgt dann mehr in weiteren Artikeln.

Make my blog faster and cheaper

History

My blog ran on BlogEngine.NET since 2012. I’ve migrated it from a dedicated server to an Azure VM in 2015.
It was the smallest VM available which is about 12 EUR/month. However you also have to pay for storage and traffic.

Welcome Hexo

So now I’m trying a new thing: Generating my blog with Hexo, which is a static html generator, based on node.js.
You do npm install -g hexo-cli and then hexo init to create a new blog. Create a new post hexo new post MyNewPost, then hexo server to start a local web server which serves the generated HTML files. To generate the output files: hexo generate.

Now you have a public folder which contains HTML, CSS and a JS file. There are a ton of themes and plugins you can install on top of it. E.g. to migrate from existing blogs or to minify the output files.
There is also a deployment plugin which deploys the files directly to your Azure storage account.

Azure CDN

Now to make the blog available to others and not only on localhost, you need a web server. One which serves static files. No need for a server-side framework like ASP.NET, PHP, or something else. Just static files.
Here comes Azure CDN:
It is really cheap, powerful, super fast and perfect for static files.

First create a new Azure Subscription which is free. Then create a new storage account within the portal:

Then create a new CDN:

I’ve selected the Verizon premium CDN, because only Verizon premium supports rewrite rules (and a bunch of other stuff).
Select to create a new endpoint, select “Storage” and your newly created storage account as the origin.

I’ve added a custom domain and enabled HTTPS which is free.

You don’t have to worry about setup, expiration and management of certificates, which is great.
Did I mention that this setup is cheap? At least for my blog with not that much traffic. It is about 0,14EUR/GB outgoing traffic plus storage costs which are basically nothing (0,01EUR/GB/month).

To make hexo work with Azure CDN you have to create a rule within the CDN rules engine:

  • Source ((?:[^\?]*/)?)($|\?.*) with destination $1index.html$2
  • Source ((?:[^\?]*/)?[^\?/.]+)($|\?.*) with destination $1/index.html$2

That makes sure, that you can access this post with this url
https://blog.mwiedemeyer.de/post/Make-my-blog-faster-and-cheaper
and the rules engine rewrites that to
https://blog.mwiedemeyer.de/post/Make-my-blog-faster-and-cheaper/index.html

Raspberry Pi Jukebox für Kinder

UPDATE Dezember 2017: Hier geht es zu Version 2

Vor einiger Zeit habe ich von der Toniebox erfahren. Das ist die “Revolution” für das Kinderzimmer. Ein Musikspieler ohne CDs und Kassetten. Dafür mit Spielfiguren und Musik aus der Cloud.

Nach einer kurzen Recherche gibt es die Idee in ähnlicher Form schon von vielen mit Hilfe eines Raspberry Pi umgesetzt, z.B. hier die Jukebox4Kids oder hier. Das Ziel war damit klar. Wir haben eine Kiste gefunden die eine gute Größe hat und ich habe dann nach den passenden Teilen gesucht. Die Hauptkomponente bildet der Raspberry Pi 3 mit einer 6 EUR USB Soundkarte, da der Raspi Audio Ausgang nicht ansatzweise einen erträglichen Klang liefert. Außerdem hat dieser bereits WLAN integriert um ihn später leicht mit neuer Musik bestücken zu können.

WP_20160704_14_59_24_Pro_LI

Die Idee von Tonie mit den Figuren war gut, aber ganz schön kostspielig. Daher habe ich zu einem China RFID Leser von Amazon (im Bild rechts an der Seitenwand) gegriffen plus die zugehörigen RFID Karten.

WP_20160706_22_54_22_Pro_LI

Das ganze ist günstiger und simpler als NFC. Der RFID Leser (6 EUR; 50 Karten ~15 EUR) funktioniert dabei per USB wie eine Tastatur direkt am Raspi. Nach jedem Lesevorgang “tippt” er die Nummer + ENTER ein. Auf dem Raspi selbst habe ich dazu MPD installiert und Mono. Der Raspi ist so konfiguriert, dass er direkt eingeloggt startet und über ein Startskript mono mit dieser Konsolenanwendung startet. Diese wartet im Wesentlichen auf Eingabe einer Zahl (+ENTER) und verwendet dann die Telnet Schnittstelle des MPD um eine Playliste zu laden und abzuspielen. Außerdem ist sie für die Auswertung der Taster zuständig.

Die Musik wird dabei direkt auf der SD Karte des Raspi gespeichert und eine Playliste mit der 10-stelligen Seriennummer der RFID Karte erstellt. Außerdem ist das Samba Paket installiert, womit man also jederzeit im WLAN zu Hause neue Musik und Playlisten auf der SD Karte ablegen kann. Dann noch ein Sticker auf die RFID Karte geklebt, damit leicht erkennbar ist, was “darauf” gespeichert ist.

WP_20160706_22_52_16_Pro_LI

Nun fehlte noch die Audioausgabe und ein paar Eingabemöglichkeiten (Play/Pause, Vor, Zurück, Lauter, Leiser). Für die Audioausgabe verwende ich eine Platine und Lautsprecher aus einem alten Radio (Werbegeschenk).

WP_20160706_21_03_06_Pro_LI

Hier sieht man links oben den Raspi, rechts die Verstärkerplatine aus dem Radio mit angeschlossenem Lautsprecher. Unten links liegt dabei noch ein “Übertrager” um das Audiosignal galvanisch zu trennen, da ansonsten ein Brummen auf dem Lautsprecher zu hören war. Dies liegt daran, dass der Verstärker zufällig mit 5V betrieben wird und ich diesen direkt an dem 5V Output des Raspi hängen habe. Die Verstärkerplatine hat auch gleichzeitig einen Kopfhörerausgang der bei Einstecken eines Kopfhörers den Lautsprecher unterbricht. Diese wird ebenfalls einfach nach außen am Gehäuse geführt.

Um das Gerät nicht nur anschalten zu können (was “hart” durch einen Einrastenden Taster mit LED Beleuchtung direkt in der USB Zuleitung passiert), sondern auch die anderen Funktionen verfügbar zu machen, habe ich “Arcade” Taster von eBay bestellt.

WP_20160706_21_01_38_Pro_LI WP_20160706_21_03_15_Pro_LI WP_20160706_21_02_26_Pro_LI

Die verfügbaren IO Ports am Raspi reichen um die 5 Taster aufzunehmen und die Verstärkerplatine und Power LED mit Strom zu versorgen.

Durch eine Powerbank kann das Gerät nicht nur im Kinderzimmer sondern auch im Auto und unterwegs verwendet werden. In Kürze kommt oben noch ein Griff dran und eine Markierung an die Seite an der der RFID Leser angebracht ist.

SharePoint changes files during CU installation

You might think, I’m drunk, but I’m not.

SharePoint, as a document management system, should never ever modify files without any notice. However, it seems that we found a bug, where it does modify files.

What?

We have a lot of CSS files in SharePoint. They are used for some custom apps in SharePoint or were just uploaded to OneDrive for Business. All in a SharePoint 2013 OnPrem environment. The CSS files contain base64 encoded data URIs.

Sample:

.myClass {
    background-image: url(‘data:image/png;base64,MY_IMAGE_AS_A_BASE64_ENCODED_STRING’) !important;
}

Then we installed a Cumulative Update and ran PSCONFIG.

And then?

What happened then is a really strange thing. The CSS files seem to be the same as before. The “Last Modified” date has not changed. However the content of the CSS file changed a little bit:

`.myClass {
    background-image: url(‘data:image/png;base64,MY_IMAGE_AS_A_…_HERE_NOW_SOME_OTHER_STRING’) !important;
}
`

The base64 string before was about 600 characters. After installing the CU it is now 234 characters and only the first about 100 are the same. The rest is some garbage. That leads to broken images and icon-fonts all over the place.
The worst thing here is: What else did the CU installation?
We reproduced the behavior with 2 different CU installations on different sites and it seems, that only the base64 string is modified. Everything else is untouched.

We’ve filed a case at Microsoft and I will update the post when we will have an official statement.