Ostatnio próbowałem wgrać plugin do Domoticz napisany w pythonie do obsługi enigma2. Pomimo najnowszej wersji miałem problemy z każdą wtyczką pythona. Objaw był taki, że po aktywacji wtyczki domoticz przestawał odpowiadać na dedykowanym porcie, w logu nie było nic ciekawego, poza błędami alokacji pamięci dla pythona.
Rozwiązaniem jest zbudowanie Domoticza ze źródeł z flagą -DUSE_OPENSSL_STATIC=”NO” -DCMAKE_BUILD_TYPE=Beta .
Jeżeli tak jak większość użytkowników budujesz okazyjnie na swoim raspberry, koniecznie musisz włączyć plik SWAP w malince.
Zaczynamy.
aktywacja pliku swap:
$ cd /
$ sudo dd if=/dev/zero of=swapfile bs=1M count=3000
$ sudo mkswap swapfile
$ sudo swapon swapfile
$sudo echo '/swapfile none swap sw 0 0′ > /etc/fstab
Przejdźmy teraz do instalacji domoticz ze źródeł:
Zatrzymaj domoticza:
systemctl stop domoticz
Zmień nazwę obecnego katalogu np. w taki sposób
mv /home/domoticz /home/domoticz.old
Zainstaluj niezbędne narzędzia do kompilacji
sudo apt-get install cmake make gcc g++ libssl-dev git libcurl4-gnutls-dev libusb-dev python3-dev zlib1g-dev
Usuń starą bibliotekę boost
sudo apt-get remove libboost-dev libboost-thread-dev libboost-system-dev libboost-atomic-dev libboost-regex-dev
sudo apt-get remove libboost-date-time1.55-dev libboost-date-time1.55.0 libboost-atomic1.55.0 libboost-regex1.55.0 libboost-iostreams1.55.1
sudo apt-get remove libboost-iostreams1.55.0 libboost-iostreams1.55.0 libboost-iostreams1.55.0
sudo apt-get remove libboost-serialization1.55-dev libboost-serialization1.55.0 libboost-system1.55-dev
sudo apt-get remove libboost-system1.55.0 libboost-thread1.55-dev libboost-thread1.55.0 libboost1.55-dev
sudo apt-get autoremove
Zainstaluj nowszą wersję Boost (przejdź na roota komendą sudo -s)
cd /opt
mkdir boost
cd boost
wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz
tar xfz boost_1_68_0.tar.gz
cd boost_1_68_0/
./bootstrap.sh
./b2 stage threading=multi link=static –with-thread –with-system
sudo ./b2 install threading=multi link=static –with-thread –with-system
cd ../../
rm -Rf boost/
Pobieramy Domoticza ze źródeł:
git clone https://github.com/domoticz/domoticz.git dev-domoticz
Wchodzimy w katalog i kompilujemy z opcją ssl static:
cd dev-domoticz
cmake -DUSE_OPENSSL_STATIC=”NO” -DCMAKE_BUILD_TYPE=Beta CMakeLists.txt
make
Uwaga ! procedura zajmuje ok 30-60 min na Raspberry PI 2
Skopiuj nowy katalog ze skompilowanym domoticzem do katalogu gdzie miałeś go poprzednio np.:
cd /opt/dev-domoticz /home/domoticz
Skopiuj wtyczki, skrypty i szablony oraz bazę danych:
cp /opt/dev-domoticz/plugins /home/domoticz/plugins
cp /opt/dev-domoticz/scripts /home/domoticz/scripts
cp /opt/dev-domoticz/www /home/domoticz/www
cp /opt/dev-domoticz/domoticz.db /home/domoticz/domoticz.db
I uruchamiamy domoticz komendą :
systemctl start domoticz