openHAB 2 in Docker on a Raspberry Pi3

openHAB 2 in Docker on a Raspberry Pi3

Now that openHAB 2 is released I wanted to update my setup and also use the opportunity to try Docker. I’m pretty much a noob when it comes to linux, so it took me a while to get it running and I hope it’s up to muster. The plan is to have openHAB 2 running in a Docker container, but have file persistence in the host file system. This way one can mess around in the container, delete it and build a new one while not loosing data. So first the folders for persistence have to be created and given the appropriate rights: sudo mkdir /opt/openhab/ sudo mkdir /opt/openhab/conf/ sudo mkdir /opt/openhab/userdata/ sudo mkdir /opt/openhab/addons/ sudo mkdir /opt/openhab/conf/items/ sudo mkdir /opt/openhab/conf/persistence/ sudo mkdir /opt/openhab/conf/rules/ sudo mkdir /opt/openhab/conf/scripts/ sudo mkdir /opt/openhab/conf/services/ sudo mkdir /opt/openhab/conf/sitemaps/ sudo mkdir /opt/openhab/conf/things/ sudo chown 9001.9001 /opt/openhab -R Then the initial configuration files have to be copied into the host folders: docker run --rm --user 9001 -v /opt/openhab/addons:/openhab/addons -v /opt/openhab/conf:/openhab/conf -v /opt/openhab/userdata:/openhab/userdata openhab/openhab:2.0.0-armhf sh -c 'cp -av /openhab/userdata.dist/* /openhab/userdata/ && p -av /openhab/conf.dist/* /openhab/conf/' After that you can build the openHAB container with a normal run command: docker run \ --name openhab \ --net=host \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -v /opt/openhab/conf:/openhab/conf \ -v /opt/openhab/userdata:/openhab/userdata \ -v /opt/openhab/addons:/openhab/addons\ -d \ --user=9001 \ --restart=always \ openhab/openhab:2.0.0-armhf With the container running use the following command to access the Karaf shell (default password is habopen) : ssh openhab@localhost -p 8101 Tailing logs can be achieved with: log:tail Raising or lowering the log level (list here): log:set LEVEL package.subpackage eg.: log:set DEBUG org.openhab.binding.zwave Next up: running a mqtt and mysql container…  ...
OctopPrint with TFT

OctopPrint with TFT

After seeing the 3.5″ PiTFT OctoPrint Rig on Thingiverse I bought this 3,5 TFT from aliexpress and wanted to use it with Octopi and the Touch UI plugin. But how could it be different, the simple plug and play I hoped for was not possible. So here is the way i got it to work: Download the Octopi Image – http://octoprint.org/ Put it on an SD card and edit the network config Boot it up and do the usual raspi-config stuff Install TouchUI from the Octoprint Plugin-Manager Install everything you need for the GUI: sudo apt-get update && sudo apt-get install alacarte desktop-base fonts-dejavu fonts-sil-gentium-basic gksu gnome-icon-theme gnome-themes-standard-data gtk2-engines libgl1-mesa-dri libgles1-mesa libgles2-mesa libpangox-1.0-0 lightdm lxappearance lxappearance-obconf lxde lxde-common lxde-core lxde-icon-theme lxinput lxpanel menu-xdg pcmanfm raspberrypi-net-mods raspberrypi-ui-mods xcompmgr xdg-utils xinit xserver-xorg xserver-xorg-video-fbdev xserver-xorg-video-fbturbo claws-mail gpicview leafpad lxrandr lxtask lxterminal openbox pi-package rc-gui xarchiver xpdf policykit-1 raspberrypi-artwork rpi-update (https://andrewvaughan.io/raspbian-i-love-you-but-youre-fat/) Download the Display drivers: wget http://www.waveshare.com/w/upload/3/37/LCD-show-151102.tar.gz Install the display drivers following this website:  – http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)#Driver Install Chromium: sudo apt-get update wget -qO - http://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add - echo "deb http://dl.bintray.com/kusti8/chromium-rpi jessie main" | sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get install chromium-browser -y (http://raspberrypi.stackexchange.com/questions/41603/installing-chrome-on-raspbian/51602) Edit this file: sudo nano /home/pi/.config/lxsession/LXDE-pi @lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @xset s off @xset -dpms @xset s noblank @sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences @chromium-browser --noerrdialogs --kiosk http://0.0.0.0:5000 Reboot and hopefully...
Lösung zu: The Octoprint server is currently not running

Lösung zu: The Octoprint server is currently not running

Auf einmal wollte mein Octoprint Server nicht mehr starten. Also ab zu google und wild googlen – es gibt die verschiedensten Lösungsvorschläge. Es kann aber auch ganz einfach sein, wenn man von jedem Druck ein Timelaps macht: der Speicher ist voll. Lösung: Auf den Raspberry Pi zugreifen und unter /home/pi/.octoprint/timelapse erstmal Timelapses, die man behalten will auf den PC kopieren und dann die Dateien aus dem Verzeichnis löschen. In „tmp“ befinden sich die Einzelaufnahmen noch nicht gerenderter...
MQTT, Mosquitto, Raspbian Jessie und der fiese Systemd-Autostart

MQTT, Mosquitto, Raspbian Jessie und der fiese Systemd-Autostart

Disclaimer: Ich hab keine Linuxerfahrung. Mit Google an meiner Seite, bekomme ich Dinge hin, die ich meistens nur halb verstehe. Also falls ich Blödsinn erzähle, bin ich dankbar für einen Hinweis. Immer wieder wenn ich bastle, sehen die Anleitungen super leicht aus – es dauert dann aber doch einen Tag bis alles läuft. Nicht anders war es bei meiner Mosquitto Installation. Die Hürde: kein Autostart. Meine Mosquitto-Config ist simpel und sie sieht wie folgt aus: # Config file for mosquitto # # See mosquitto.conf(5) for more information. # # Default values are shown, uncomment to change. # # Use the # character to indicate a comment, but only if it is the # very first character on the line. # ================================================================= # General configuration # ================================================================= # Write process id to a file. Default is a blank string which means # a pid file shouldn't be written. # This should be set to /var/run/mosquitto.pid if mosquitto is # being run automatically on boot with an init script and # start-stop-daemon or similar. pid_file /var/run/mosquitto.pid # When run as root, drop privileges to this user and its primary # group. # Leave blank to stay as root, but this is not recommended. # If run as a non-root user, this setting has no effect. # Note that on Windows this has no effect and so mosquitto should # be started by the user you wish it to run as. user mosquitto # ================================================================= # Persistence # ================================================================= # Save persistent message data to disk (true/false). # This saves information about all messages, including # subscriptions, currently in-flight messages and retained # messages. # retained_persistence...
ESP8266 mit NodeMCU: Der Espresso-Maschinen-WLAN-Schalter.

ESP8266 mit NodeMCU: Der Espresso-Maschinen-WLAN-Schalter.

Kann man Blogartikel widmen? Bestimmt… Also ich widme diesen Artikel Raffael – einem richtig duften Typen, der mir über die Jahre immer wieder weitergeholfen hat. Hier entlang zu seinem Blog: code-bude.net UPDATE 30.09.2015: Mit Rafaels Hilfe hab ich auch den PHP-Code und folglich die Pushbullet-Notifications zum laufen gebracht und den Artikel entsprechend aktualisiert. UPDATE 06.10.2015: Durch meine Espresso-Statusmeldungen wurde Pushbullet etwas zugespamt. Pushbullet Channels sind hier die Lösung für mich, so werden Statusmeldungen und die eigentlichen Pushbullet-Inhalte getrennt. Warum das ganze? Jeden Sommer verbringt man Stunden damit, Blumen zu gießen. *Gedankenblitz* man könnte das automatisieren… Nach viel Rumgooglen setzt sich ein Plan zusammen und als Nebenprodukt wird mir das erste Mal bewusst, dass es sowas wie Arduinos gibt. Also, wie wäre es mit einem WLAN-Sensor für Bodenfeuchtigkeit und Temperatur? Teile bestellt, aber der Code dafür scheint etwas kompliziert. Und da kam mir die Idee, wie wäre es, wenn ich meine Espresso-Maschine über das WLAN anschalten könnte?! Perfektes Übungsprojekt. Der Leser sei an dieser Stelle vorgewarnt, dass ich gar keine Ahnung von dem Ganzen hab und somit meine Lösungen etwas krud sein können. Für Tipps bin ich immer dankbar. Es gibt viele verschiedene Möglichkeiten, den ESP8266 mit Firmware zu versehen. Ich hab mich – ohne viele Hintergedanken – für NodeMCU entschieden. Ein Lua-Interpreter für den ESP8266.   Mein Vorgehen Die Idee Meine Espresso-Maschine muss ca. 5 Min vorheizen, damit der Espresso wirklich gut schmeckt. Man muss also aufstehen, die Maschine anmachen und warten oder weiterarbeiten gehen und dann vergessen, dass man sie angemacht hat. (Deshalb hatte ich sie schon an einer 20-Min-Countdown-Schaltuhr.) Jetzt kann ich meine Espresso-Maschine von überall über eine Website anmachen oder...