Pilot do ekranu działający na 433MHz

Człowiek to się uczy cały życie…

Od dłuższego czasu mam ekran projekcyjny, ale zawsze myślałem, że pilot jest na IR (Infrared). Ostatnio mi spadł, co było okazją do bliższego przyjrzenia się mu. Jakże się zdziwiłem, gdy się okazało, że jest na 433MHz… Czyli idealnie pasuje do RFlink!

Włączyłem rozpoznawanie urządzeń w Domoticz i od razu znalazł go pod typem Dooya. Ma to jakiś sens, bo ta firma produkuje napędy do rolet.

Wystarczyło dopisać skrypt w DzVents, który automatycznie go rozwija po włączeniu przycisku i zatrzymuje po zadanym czasie i kolejny klocek w domowym automacie zaczął działać…

return {
    active = true,
    on = {
        devices = {
            'Ekran’
        }
    },
    execute = function(domoticz,switch)
        
        if (switch.state == 'On’) then
            switch.stop().afterSec(60)
        end
    end
}

Aaaaaa. Rozsypała mi się baza Domoticz! Co robić, co robić?

A 'rozsypać’ się może z różnych powodów. Błąd zapisu na kartę, zanik napięcia, przejście w Domoticz z wersji stable na beta i z powrotem na stable.

Jaki jest objaw? W logach Domoticz widzimy informację

’…Database is malformed…’.

U mnie konkretnie był problem z LightingLog – odpowiada on za przetrzymywanie danych archiwalnych o czujnikach – błąd był przy nocnym czyszczeniu tej tabeli. A to skutkowało zwiększoną wielkością bazy danych. U Was może być różnie. Jest to w końcu baza plikowa, bez serwisu który dba o integralność danych, itp.

Najpierw
sudo apt-get install sqlite3

Trzeba też zatrzymać serwis Domoticz

sudo service domoticz stop

Następnie

cd domoticz
sqlite3 domoticz.db
pragma integrity_check;

Nie jest dobrze! Błędy, jak widać, są i to dość dużo. Spróbujemy poradzić sobie z nimi na razie najprostszą metodą – zrzucenie struktury bazy i danych do pliku ponowne załadowanie. W 99% przypadków powinno pomóc.

Skoro jest źle – trzeba działać!

Startujemy:

sqlite3 domoticz.db

.mode insert

.output dump.sql
.dump
.exit

Co zrobiliśmy? Poleciliśmy SQLite, aby wyeksportował całą naszą bazę (wraz ze strukturą) do pliku dump.sql

Teraz załadujemy ten plik już do nowej bazy. Jak to może nam pomóc? Ano wyeksportowana została poprawna struktura tabel oraz danych z bazy, także teraz tą dobrą wrzucimy do nowej. Wszystkie dane powinny zostać poprawne. W moim konkretnym przypadku tak było – mam nadzieję, że i u Was nie będzie to nic poważniejszego.

sqlite3 domoticz1.db < dump.sql

Załadowaliśmy nasze dane do bazy domoticz1.db.

Sprawdźmy, dla pewności, czy faktycznie nam to pomogło.

Wygląda dobrze, wystarczy zastąpić domoticz.db plikiem domoticz1.db i uruchomić domoticz.


sudo service domoticz start
Gotowe!

Raspberry Pi, Raspbian, Domoticz – od zera do bohatera…

W kolejnym (długim!) poście pozwolę sobie zająć się przygotowaniem Raspberry Pi do działania.

Pomocy na różnych stronach jest mnóstwo, przesadą byłby kolejny szczegółowy poradnik, skupię się więc wyłącznie na esencji i najważniejszych tematach, ważnych dla mnie z punktu widzenia prostej automatyki domowej za pomocą Malinki. Z czasem wpis się może zmieniać, ponieważ ciągle coś nowego dochodzi. Ostatnio na przykład HABridge, skoro już Alexa się zadomowiła.

Wpis jest długi i opisuje wiele tematów, może znajdziecie coś dla siebie.

Kwestia wyboru sposobu instalacji Raspbiana zależy już od Was, swego czasu korzystałem z NOOBS LITE, który wszelkie potrzebne do instalacji komponenty pobiera na bieżąco z sieci.

Ostatnio wolę jednak mieć przygotowany obraz jako plik .img i za pośrednictwem Win32 Disk Imager szybko wrzucić go na kartę.

Chwila podstaw, która mam nadzieję pomoże innym wkroczyć w ten świat.

Instrukcja – jak szybko postawić system, zrobić podstawową konfigurację, zrobić kopię bezpieczeństwa na przyszłość.

Podstawowa strona: raspberrypi.org. Tam powinien się udać każdy początkujący. W zależności od potrzeb mamy:
1. Możliwości ściągnięcia instalatora Noobs
– wersja pełna z danymi systemów od razu dostępnymi
– wersja Lite, zajmująca 40 Mb, resztę danych potrzebnych dla różnych systemów ściąga bezpośrednio z sieci
2. w przypadku instalacji Raspbiana – ostatnia dostępna stabilna wersja (w czasie pisania posta – Stretch), pełna ze środowiskiem graficznym albo Lite

Ja opieram się na pełnym obrazie Jessie (czyli poprzednim do Stretch) – jest to dla mnie osobiście najwygodniejsze i w mojej opinii ta wersja jest najbardziej stabilna. Wszelkie opisane tutaj programy i instalacje działają na każdej z wersji. Oprócz SSL w Domoticz na wersji Stretch, bez czego nie uruchomimy go! Wszystkie obrazy Raspbiana można pobrać z: http://downloads.raspberrypi.org/raspbian/images/.

W tym wpisie zajmiemy się:
– ogólnymi komendami do wykonania
– raspi-config
– Interface sieciowy
– Mapowanie pendrive + ntfs-3g
– Konfiguracja Samba
– Instalacja FTP
– Win32DiskImager

Nie opisuję każdej komendy dokładnie – poradników w sieci jest na tyle dużo, że mija się to z celem.

Jak zaczynamy?

– Pobieramy obraz systemu ze strony Raspberry Pi
– rozpakowujemy
– ja używam Win32 Disk Imager aby wrzucić do na kartę SD
– po zgraniu podłączam klawiaturę i kabel HDMI do TV

Do pierwszych dwóch punktów musimy podpiąć klawiaturę bezpośrednio do Raspberry – ssh (do zdalnego połączenia) jest domyślnie wyłączone za względów bezpieczeństwa. Później możemy się przenieść na komputer – będzie bardziej komfortowo.

1. Najważniejsza sprawa zanim cokolwiek rozpoczniemy. Zawsze, gdziekolwiek – zmiana hasła!

passwd

2. Konfiguracja

sudo raspi-config

Domyślnie (od pewnego czasu, ze względów bezpieczeństwa) SSH jest wyłączone, musimy je włączyć. Przynajmniej jeżeli chcemy dostać się do Pi zdalnie, nie klęcząc przed telewizorem czy monitorem.

Następnie dobrze ustawić strefę czasową.

Wybieramy Europe -> Warsaw

Ja jeszcze osobiście ustawiam Memory split na minimum.

Oraz Hostname na swój.

3. Kolejny temat to aktualizacja Raspbiana i komponentów, które mamy zainstalowane. Oczywiście, z wpiętym kablem z routera.

sudo apt-get update
sudo apt-get upgrade

4. Następnie – konfiguracja sieci WiFi, bo głupio tak z kablami Malina wygląda 😉 …

Ja osobiście używam edytora nano. Przy wyjściu, w celu zapisu – Ctrl + X, Y(es), potwierdzamy nazwę pliku.

sudo nano /etc/network/interfaces

Ja chciałem mieć połączenie przez Wifi na stałym adresie IP (192.168.1.200, czyli warto to skonfigurować na routerze!), a w przypadku podłączenia kabla sieciowego adres z DHCP (czyli z automatu), wpakowałem tam więc:

auto wlan0

iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.100
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Konfiguracja połączenia z routerem odbywa się w pliku wpa_supplicant.conf.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

I tutaj:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid=”Cezar”
        psk=”TwojeHaslo”
        proto=RSN
        key_mgmt=WPA-PSK
}

5. Warto byłoby teraz zainstalować dodatkowe programy. Mnie się przydaje Samba (dostęp do udostępnionych plików), obsługa NTFS, FTP, Midnight Commander oraz (do Domoticz) arp-scan i speedtest.

sudo apt-get install samba samba-common-bin cifs-utils ntfs-3g mc proftpd arp-scan speedtest-cli -y

6. Skoro już mam czego potrzebuję – najwyższa pora na Domoticz! Przypominam, że instaluję na Jessie, także nie mam problemu z ssl na wersji Stretch!

sudo curl -L install.domoticz.com | bash

7. Tworzenie wirtualnych folderów. Mam podpięty pendrive, na który nie dość, że lądują backupy Domoticz, to jeszcze są piosenki córki i syna. Trzeba go podpiąć, jeżeli Raspbian sam go nie wykrywa.

Możemy się wspomóc:
sudo fdisk -l
oraz
df -h

Tworzenie wirtualnego folderu:

sudo mkdir /media/Dysk

U mnie pendrive pojawił się na sda, więc:

sudo mount -t auto /dev/sda /media/Dysk

Edycja fstab, gdzie znajdują się informacje o mapowanych dyskach, folderach.

sudo nano /etc/fstab

Dodaję na końcu

/dev/sda /media/Dysk ntfs-3g nofail,defaults 0 0

8. Konfiguracja Samba (czyli dostępu do plików)

Zainstalowaliśmy ją już wcześniej (punkt 5), teraz trzeba skonfigurować. Ot, taki prosty NAS. Bardzo prosty…

Dodajemy użytkownika/użytkowników:

sudo useradd Cezar
sudo smbpasswd -a Cezar

Uruchamiamy:

sudo nano /etc/samba/smb.conf

I konfigurujemy. Oczywiście wszelkie foldery, nazwy – dostosowujemy do siebie.

[global]

#PL znaki w SMB
display charset = utf-8
unix charset = utf-8
dos charset = 852

workgroup = DOM
server string = Serwer NAS
wins support = yes
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0

####### Authentication #######
security = user
map to guest = Bad User

[homes]
comment = Home Directories
browseable = no
read only = no
valid users = %S

[dysk_public]
comment = Server NAS 4 All
path = /media/Dysk/
public = yes
only guest = no
writable = yes

Ostatnie trzy parametry to: Publiczny – tak, Tylko goście – nie, Zapisywalny – tak.

Oczywiście dostosujcie go pod siebie, można definiować foldery dla użytkowników, nadawać uprawnienia, itp. itd. Dla mnie było ważne, aby każdy w domu mógł tam łatwo się dostać.

Restart serwisu i powinno działać:

sudo /etc/init.d/samba restart

8. Następnie nadanie praw do wykonania dla skryptu robiącego kopię baz i folderu www Domoticz.

sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh

9. Bez Dashticz sobie już życia nie wyobrażam…

10. Zdalny dostęp do Raspberry i Domoticz, czyli Dataplicity. Ale to już opisywałem wcześniej.

11. bluez – potrzebny do Xiaomi Mi Flora

12. Logitech, a dokładnie instalacja odtwarzacza Squeezelite

13. HABridge

Po około 1.5 godziny mamy kompletny system.

Teraz sudo poweroff, kopia karty w Win32 Disk Imager i jesteśmy bezpieczni. W razie rozsypania się danych na karcie – szybki restore i jesteśmy gotowi do działania.

WAŻNE! Komenda Czytaj zapisuje dane Z KARTY NA DYSK, Zapisz – odwrotnie – Z DYSKU NA KARTĘ, czyli Zapisz może Wam namieszać, jeżeli nie używacie jej rozważnie!

Kopia bezpieczeństwa bazy, folderu Domoticz oraz innych elementów

Jak mówią, ludzie dzielą się na tych, którzy backupy robią i na takich, którzy będą robić.

Żeby za późno nie znaleźć się w tej drugiej grupie – szybki skrypt do tworzenia backupu (na przykład Domoticz i HABridge) na zewnętrzny dysk. W moim przypadku pendrive, z którego do dane czasem zgrywam na osobny dysk zewnętrzny. Jest co prawda mechanizm wbudowany w Domoticz, ale osobiście mi on nie odpowiadał – robi backup na tą samą kartę, na której jest Domoticz, więc sensu to nie ma…

Raz, dwa trzy, skrypt piszesz Ty. Nie ukrywam – jest to zmieniony pod moim kątem skrypt z Wiki Domoticz. Ale po to jest Wiki…

Zaczynamy więc od:

sudo nano /home/pi/domoticz/scripts/domoticz_backup.sh 

Wpisujemy (oczywiście zmieniając dane do Domoticz oraz foldery, na które chcecie kopiować). Ja, jak widać, dodatkowo robię sobie backup HABridge pod kątem Alexa.

DOMO_IP=”192.168.1.200″  # Domoticz IP 
DOMO_PORT=”80″        # Domoticz port 
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
BACKUPFILE=”domoticzbackup_$TIMESTAMP.db” # backups will be named „domoticz_YYYYMMDDHHMMSS.db.gz”
BACKUPFILEGZ=”$BACKUPFILE”.gz

#Create backup and make tar archives
/usr/bin/curl -s http://$DOMO_IP:$DOMO_PORT/backupdatabase.php > /media/Dysk/Domoticz_backup/database/$BACKUPFILE
tar -zcvf /media/Dysk/Domoticz_backup/scripts/domoticz_scripts_$TIMESTAMP.tar.gz /home/pi/domoticz/scripts/
tar -zcvf /media/Dysk/Domoticz_backup/www/domoticz_wwwfolder_$TIMESTAMP.tar.gz /home/pi/domoticz/www/
tar -zcvf /media/Dysk/HABridge/HABridge_$TIMESTAMP.tar.gz /home/pi/habridge/data/

#Delete backups older than 31 days
/usr/bin/find /media/Dysk/Domoticz_backup/database/ -name '*.db’ -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/scripts/ -name '*.tar.gz’ -mtime +31 -delete
/usr/bin/find /media/Dysk/Domoticz_backup/www/ -name '*.tar.gz’ -mtime +31 -delete
/usr/bin/find /media/Dysk/HABridge/ -name '*.tar.gz’ -mtime +31 -delete

Nadajemy uprawnienia do uruchamiania:
sudo chmod +x /home/pi/domoticz/scripts/domoticz_backup.sh
Efekt:


Ja ustawiłem sobie uruchamianie go na 1:30 w nocy w cron:
30 1 * * * sudo home/pi/domoticz/scripts/domoticz_backup.sh
Oby się Wam backup nigdy nie przydał… Ale niestety, podczas pracy z Raspberry Pi widzę, że nie jest to widzimisię, a konieczność! 
Oczywiście można go zmienić, aby backupy lądowały na zewnętrznym FTP, czy też dysku NAS. Dla mnie jednak ta forma jest wystarczająca.

Xiaomi Mi Flora i ogólnie BLE

Dzień dobry w ten pochmurny i deszczowy dzień!

Mimo że deszczowo, ale w domu sucho. A jak sucho, to i kwiatki podlewać trzeba.

A do tego się przyda Xiaomi mi flora – czujnik wilgoci, temperatury oraz światła. Ten wpis zacząłem pisać jakieś pół roku temu i tak sobie wisiał nie skończony (poradniki jak czujnik połączyć z Domoticz są również na innych blogach, więc parcia nie było), ale pod kątem mojego kolejnego wpisu postanowiłem go skończyć.

Wpis oparty jest na Raspberry Pi 3, czyli Bluetooth mamy już na pokładzie.

Po wpisaniu

apt-cache policy bluez

dostaniemy zapewne informację wersji 5.23. Trochę stara, nie obsługuje Bluetooth Low Energy. Musimy zainstalować nowszą, przynajmniej 5.3x

Po pierwsze oczywiście, jak zawsze

apt-get update
apt-get upgrade

i instalujemy potrzebne bilbioteki

sudo apt-get install libglib2.0-dev libdbus-1-dev libical-dev libreadline-dev libudev-dev

Później

cd /home/pi

Na moment pisania przeze mnie aktualna wersja bluez to 5.47

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.gz
tar -xvf bluez-5.47.tar.gz
cd bluez-5.47

Ustawiamy zmienne systemowe

sudo ./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –enable-tools –disable-test –disable-systemd –enable-deprecated

I kompilujemy wersję

sudo make all

sudo apt-get install python-bluez python-requests

sudo cp attrib/gatttool /usr/bin/ 

lub (wykonanie obu nie zaszkodzi)

sudo cp attrib/gatttool /usr/local/bin/

export PATH=$PATH:~/bluez-5.47/attrib/


I ściągamy kod odpowiedzialny za komunikację z Mi Flora

cd ~ && git clone https://github.com/Tristan79/miflora.git
Kopiujemy folder do folderu ze skryptami Domoticz.
cp -R ~/miflora/ ~/domoticz/scripts/python/miflora
I lecimy dalej:

sudo aptitude install python3 python3-pip
sudo pip3 install pygatt
sudo pip3 install requests
Wchodzimy do folderu bluez:

cd bluez-5.47/

I wykonujemy

sudo tools/btmgmt le on
sudo tools/btmgmt connectable on
sudo tools/btmgmt power on
Dla pewności restartujemy 

sudo hciconfig hci0 down 
sudo hciconfig hci0 up
hciconfig

Później sprawdzamy jaki jest adres MAC naszego modułu Bluetooth
sudo hcitool lescan

Kopiujemy adres MAC naszego modułu Bluetooth, za chwilę się przyda.

W międzyczasie przygotujmy Domoticz. Dodajemy, w sekcji Hardware czujnik MiFlora, jako Dummy.

Następnie, do niego tworzymy Virtual Sensors. Cztery, tak jak poniżej. Uważajcie na typy.

I teraz ważny moment – edycja pliku konfiguracyjnego dla Mi Flora.

sudo nano /home/pi/domoticz/scripts/python/miflora/domoticz.py

Najpierw adres serwera i swoje dane logowania:

domoticzserver   = „192.168.1.200:80”
domoticzusername = „User”
domoticzpassword = „YourPassword”

I na samym końcu możecie zastąpić przykładowe czujniki Waszym adresem MAC i IDX założonych czujników w Domoticz.

print(„n1: Salon”)
update(„C4:7C:8D:62:A9:57″,”132″,”133″,”134″,”135”)

i sprawdzamy

sudo /usr/bin/python3 /home/pi/domoticz/scripts/python/miflora/domoticz.py

Pozostaje wrzucić do cron, aby skrypt automatycznie się wykonywał, na przykład co godzinę.

crontab -e
@hourly sudo /usr/bin/python3 /home/pi/domoticz/scripts/python/miflora/domoticz.py
Działa!

NIC nie stoi na przeszkodzie, aby skrypt rozszerzyć o odczyt wartości baterii. Dodatkowo, osobiście zrealizowałem kiedyś skrypt sprawdzający obecność domowników na podstawie urządzeń Bluetooth – w moim przypadku opaski, ale w sumie każde urządzenie z Bluetooth da się pod to zaadaptować. Nie podobał mi się jednak dość mały zasięg sygnału Bluetooth. Możliwości jednak są!

Życzę powodzenia w ich odkrywaniu.

Czujnik temperatury/wilgotności/baro Xiaomi Aqara

Dzień dobry!
Jako że testować lubiłem i lubię, po prostu musiałem sprawdzić drugi termometr od Xiaomi. Tym razem z serii Aqara, oprócz temperatury i wilgotności posiada również czujnik ciśnienia.
Mały, szybki test poniżej.
Jak każdy do tej pory sprzęt Xiaomi dotarł w schludnym, małym opakowaniu.
Tak tylko poglądowo – na górze przycisk do synchronizacji z Gateway.
W aplikacji MiHome musimy wybrać odpowiedni typ.
Po czym rozpocznie się pobieranie wtyczki do tego modelu.
Parowanie odbywa się za pomocą pokazanego wcześniej przycisku.
Gotowe. Po chwili zostanie wykryty przez Domoticz i możemy go dodać do odpowiednich zakładek.
Temperatura i wilgotność standardowo.
Różnicę widzimy na zakładce Utility, gdzie pojawił się czujnik ciśnienia.

Teraz już wiecie, na co możecie zrzucić winę, jeżeli boli Was głowa 😀

Serwis Alexa – integracja z Domoticz

Ha! Dzisiaj samo sedno – połączenie serwisu Alexa z Domoticz. Wersja trudniejsza, przez HABridge. Jest skill w postaci Controlicz, ale nie mam wystawionego Domoticz w prosty sposób na 'świat’, dlatego zrobiłem połączenie w inny sposób. Wydaje mi się, że lepszy…

Instalacja HABridge (system emulujący oświetlenie Philips Hue) jest banalnie prosta.

Najpierw musimy się upewnić, że odpowiednia wersja Java jest zainstalowana. Powinna być, ale w razie czego:

sudo apt-get update && sudo apt-get install oracle-java8-jdk

Jaka jest najnowsza wersja HABridge możemy dowiedzieć się tutaj:

https://github.com/bwssytems/ha-bridge/releases

Później kilka komend:

cd /home/pi/
mkdir habridge
cd habridge

wget https://github.com/bwssytems/ha-bridge/releases/download/<your version1>/ha-bridge-<your version2>.jar

Czyli w przypadku dla aktualnej wersji na 01.11.2017 wygląda to tak:

wget https://github.com/bwssytems/ha-bridge/releases/download/v4.5.6/ha-bridge-4.5.6.jar

Edit: lepiej będzie na przyszłość (w przypadku aktualizacji) zrobić jak poniżej.

mv ha-bridge-{VERSION}.jar ha-bridge.jar

Przed startem musimy stworzyć plik konfiguracyjny:

sudo nano starthabridge.sh

cd /home/pi/habridge
rm /home/pi/habridge/habridge-log.txt
nohup sudo java -jar /home/pi/habridge/ha-bridge.jar > /home/pi/habridge/habridge-log.txt 2>&1 &
chmod 777 /home/pi/habridge/habridge-log.txt

WAŻNE. Z tego co wyczytałem, HABridge powinien się uruchomić na porcie 8080, ale z jakiegoś powodu zrobił to na 80, a tam mam Domoticz. Musiałem podać port ręcznie, używając parametru:
-Dserver.port=8080

Czyli u mnie zawartość pliku wygląda tak:

cd /home/pi/habridge
rm /home/pi/habridge/habridge-log.txt
nohup sudo java -jar -Dserver.port=8080 /home/pi/habridge/ha-bridge.jar > /home/pi/habridge/habridge-log.txt 2>&1 &
chmod 777 /home/pi/habridge/habridge-log.txt

Ustawienie praw do uruchomienia:

sudo chmod u+x starthabridge.sh

Serwis uruchamiamy komendą

sudo ./starthabridge.sh

Sprawdzić czy działa możemy poleceniem

tail -f habridge-log.txt

Dobrze by było również, aby uruchamiał się przy starcie, to możemy zrobić edytując:

cd /etc/systemd/system

sudo nano habridge.service


I tam wstawić:
[Unit]
Description=HA Bridge
Wants=network.target
After=network.target

[Service]

Type=simple
WorkingDirectory=/home/pi/habridge
ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge.jar

[Install]

WantedBy=multi-user.target

Później po kolei:
sudo systemctl daemon-reload

sudo systemctl start habridge.service


sudo systemctl enable habridge.service

Po wystartowaniu musimy przejść do przeglądarki i teraz zaczyna się prawdziwa zabawa!

Wita nas pusta strona HABridge, którą będziemy teraz wypełniać.

Przechodzimy na Bridge Control

Przechodzimy na dół do sekcji Domoticz Names and IP Addresses:

Tam dodajemy swoje dane serwera Domoticz:

I, BARDZO WAŻNE, wracamy na górę i zapisujemy.

Jeżeli wszystko dobrze zrobiliście (wierzę w Was, także na pewno tak 😉 ), na zakładce Domoticz Devices znajdą się Wasze urządzenia. To już ogromny sukces!

Teraz, po wejściu za pomocą przycisku Build na konkretny element (lub, jeżeli macie urządzenia nazwane po angielsku – można je zaznaczyć i wybrać Bulk Add), na początek wybieramy jego nazwę w polu Name, którą będziemy używać z Alexą.

Czyli, coś przyjaznego do wymówienia 😀

Najpierw zabrałem się do opisywania tego dość bogato, kończąc jednak na prostych, szybkich frazach. Inaczej mówi się 'Alexa, turn living room lights on’, a inaczej 'Alexa, living on’. Ale akurat tutaj Alexa jest nam bardzo pomocna i w większości wypadków rozpozna różne frazy. W sumie 'Alexa, living room on, 'Alexa, turn living room on’, 'Alexa turn living room lights on’ – da ten sam efekt.

W tym przykładzie integruję Yeelight, którą mam dodaną w Domoticz z HABridge.

HABridge rozpozna typ i zaproponuje komendę JSON do włączenia i wyłączenia urządzeń.
Miałem przez godzinę zgryz z komendą 'dim’, czyli rozjaśnianiem i ściemnianiem. Może coś źle zrobiłem przy definicji w Domoticz, może jakiś inny powód, ale w HABridge musiałem podać w Dim Items, komendę w Target Item ręcznie. Jak poniżej na zrzucie ekranu. Dzięki parametrowi ${intensity.percent} możemy zadać Alexie żądany poziom jasności.

Chwilowo tyle. Przechodzimy do serwisu Alexa albo wydajemy jej polecenie 'Alexa, discover devices’. Dla jasności przestawiam również proces rozpoznawania na stronie, który ogranicza się do wybrania Discover.

TADAM! Już można wołać 'Alexa, left light on’, 'Alexa, left light off,’ 'Alexa, dim left light to 20′. W tym ostatnim przykładzie odnosimy się do procentów, czyli efekt ten sam jak przy ’20 percent’.

Warto również od razu zrobić backup bazy danych HABridge. Jest dostępny na dole strony, przy pracy z ekranem Home.

Ja dodałem sobie również komendę do skryptu, który co noc robi ma na pendrive backup bazy, skryptów i folderu www Domoticz.

Identycznie jak żarówki zintegrowałem sobie zdalne gniazdka sieciowe. Nieważne czy 433MHz, Xiaomi, czy inne – po prostu działa po wypowiedzeniu komendy.

Dashticz – część trzecia

Trzecia część opisu Dasthicz przed Wami. Mam nadzieję, że przyda się przy Waszych konfiguracjach i pięknym zdefiniowaniu pulpitów. Mnie ustawianie i przestawianie sprawiło mnóstwo frajdy. 
Ostrzegam, może być nudno! To już same informacje dla takich świrów jak ja 😉
Poprzednie (ważne, ponieważ każdy wpis jest rozwinięciem poprzedniego) tutaj:
Teraz zajmiemy się już innymi dodatkami. Może mniej ważnymi, ale czyniącymi system jeszcze ciekawszym. Do tego dojdzie czwarta część poradnika, skupiająca się na pliku css, gdzie możemy sterować bardziej wyglądem, ikonami, kolorem, fontem, itp.
Gwoli wyjaśnienia – czasem prezentowane tu ustawienia mogą się Wam wydać nielogiczne – tapety, ilość czujników, etc. Wrzuciłem je tutaj głównie aby pokazać, że można to zrobić i jak to zrobić – wybierzcie wygląd i ułożenie takie jak Wam pasuje 🙂
Na stronie trzeciej wrzucimy podgląd kamer oraz dodatki związane z odtwarzaniem muzyki: status odtwarzaczy Logitech (u mnie piCorePlayer), kilka stacji radiowych odtwarzanych bezpośrednio z tabletu oraz klient Spotify.

Czwarta strona to wykres – aby zaznajomić Was z taką możliwością, log Domoticz, mapa pogodowa Polski oraz status naszej Maliny.

Strona piąta zawiera newsy w formacie RSS oraz wyświetlany ruch w okolicach przy pomocy Google Maps

Szósta i siódma – czujniki i elementy od Xiaomi. Aby pokazać paski to przyciemniania światła, selektory i inne.

Jedziemy!

Tekstem zwykłym, nie wytłuszczonym, są parametry już wcześniej omawiane, nowe są pogrubione. Pozwolę sobie (a jak, w końcu mogę) opisać je bezpośrednio pod spodem. Link do pełnego pliku znajduje się TUTAJ.

var config = {}
config[’domoticz_ip’] = 'http://IP:PORT’;
config[’app_title’] = 'Dom’;
config[’domoticz_refresh’] = '5′;
config[’dashticz_refresh’] = ’60’;
config[’news_scroll_after’] = ’15’;
config[’standby_after’] = 0;
config[’auto_swipe_back_to’] = 0;
config[’auto_swipe_back_after’] = ’30’;
config[’auto_slide_pages’] = 0;
config[’slide_effect’] = 'slide’;
config[’standard_graph’] = 'month’;
config[’language’] = 'pl_PL’;
config[’timeformat’] = 'DD-MM-YY HH:mm’;
config[’calendarformat’] = 'dd DD.MM HH:mm’;
config[’calendarlanguage’] = 'pl_PL’;
config[’boss_stationclock’] = 'RedBoss’;
config[’gm_api’] = 'Klucz_API_Google_Maps’;
config[’gm_zoomlevel’] = 1;
config[’gm_latitude’] = Szerokość;
config[’gm_longitude’] = Długość;
config[’wu_api’] = 'Klucz_Weather_Underground’;
config[’wu_city’] = 'Miasto’;
config[’wu_name’] = 0;
config[’wu_country’] = 'PL’;
config[’idx_moonpicture’] = 7;
config[’spot_clientid’] = 'ID_Spotify_Developer_Mode’;

Tutaj już pisałem poprzednio – trzeba postarać się o stworzenie aplikacji w Spotify.


Ważne, aby na końcu nacisnąć Save!

Tam stworzone ID musimy wpisać w Dashticz.

config[’selector_instead_of_buttons’] = 1;
config[’auto_positioning’] = 0;
config[’use_favorites’] = 0;
config[’last_update’] = 0;
config[’hide_topbar’] = 1;
config[’hide_seconds’] = 1;
config[’hide_seconds_stationclock’] = 1;
config[’use_fahrenheit’] = 0;
config[’use_beaufort’] = 0;
config[’translate_windspeed’] = 1;
config[’static_weathericons’] = 0;
config[’hide_mediaplayer’] = 0;

var buttons = {}
buttons.webcam = {width:12, isimage:true, refresh:2000, image: 'http://192.168.1.155/cgi/jpg/image.cgi’, url: 'http://192.168.1.155/cgi/jpg/image.cgi’}
buttons.webcam1 = {width:12, isimage:true, refresh:2000, image: 'http://192.168.1.156/image/jpeg.cgi’, url: 'http://192.168.1.156/image/jpeg.cgi’}
buttons.log = {key:’log’, width:12, icon:’fa-microchip’, title: 'Domoticz Log’, log:true, level: 2}

W sekcji Buttons możemy zdefiniować na przykład kamery oraz link do loga Domoticz.

buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon’}

var calendars = {}
calendars.private = { key:’private’, width:12, maxitems: 6, icalurl: 'https://calendar.google.com/calendar/ical/Klucz_Kalendarza@group.calendar.google.com/public/basic.ics’ }

var _STREAMPLAYER_TRACKS   = [
{„track”:1,”name”:”Antyradio”,”file”:”http://ant-kat.cdn.eurozet.pl:8604/;stream”},
{„track”:2,”name”:”Trójka”,”file”:”http://stream3.polskieradio.pl:8904/listen.pls”},
{„track”:3,”name”:”Slam! NonStop”,”file”:”http://stream.radiocorp.nl/web10_mp3″},
{„track”:4,”name”:”100%NL”,”file”:”http://stream.100p.nl/100pctnl.mp3″},
  ];

A tutaj przypisujemy stacje radiowe, które streamują swoje programy online. Pobieramy linki na przykład stąd.

var frames = {}
frames.weather = {refreshiframe:10000,height:230,frameurl:”//forecast.io/embed/#lat=Szerokość&lonDługość&name=Miasto&color=#00aaff&font=Helvetica&fontcolor=#ffffff&units=si&text-color=#fff”,width:12}
frames.poland = {refreshiframe:10000,height:230,frameurl:”https://api.sat24.com/animated/PL/visual/1/Central%20European%20Standard%20Time/357718″,width:4}

Tutaj zachciało mi się animowanej mapy pogody w Polsce. Więc ją znalazłem i wstawiłem 😀

var maps = {}
maps.miasto1 = { width:12, latitude: Szerokość, longitude: Długość, zoom:10 };
maps.miasto2 = { width:12, latitude: Szerokość, longitude: Długość, zoom:10 };

Ta sekcja mówi Dashticz dla jakich koordynatów wyświetlimy mapy ruchu drogowego. Teksty Szerokość i Długość zastępujemy własnymi koordynatami. Same cyfry, bez apostrofów, np.: 10.232

var blocks = {}

blocks[24] = {}
blocks[24][’title’] = 'Przed domem’
blocks[100] = {}
blocks[100][’title’] = 'Roomba’
blocks[103] = {}
blocks[103][’title’] = 'Dysk MP3′
blocks[21] = {}
blocks[21][’title’] = 'Sauna’
blocks[22] = {}
blocks[22][’title’] = 'Sypialnia’
blocks[166] = {}
blocks[166][’title’] = 'Yeelight’

//Tytuły temperatury
blocks[93] = {}
blocks[93][’title’] = 'Ogród’
blocks[133] = {}
blocks[133][’title’] = 'Salon’
blocks[118] = {}
blocks[118][’title’] = 'S’
blocks[121] = {}
blocks[121][’title’] = 'Z’
blocks[160] = {}
blocks[160][’title’] = 'Sypialnia’
blocks[142] = {}
blocks[142][’title’] = 'Droga do pracy’;
blocks[142][’width’] = 6;
blocks[142][’icon’] = 'fa-female’;

//Tytuły czujników
blocks[59] = {}
blocks[59][’title’] = 'Czujnik dymu’
blocks[132] = {}
blocks[132][’title’] = 'Kwiatki’

blocks[163] = {}
blocks[163][’title’] = 'Księżyc’

blocks[’136_1′] = {}
blocks[’136_1′][’title’] = 'Aktualnie’
blocks[’136_2′] = {}
blocks[’136_2′][’title’] = 'Dzisiaj’

blocks[’blocktitle_1′] = {} //Switches – general
blocks[’blocktitle_1′][’type’] = 'blocktitle’;
blocks[’blocktitle_1′][’title’] = 'Gniazdka’;

blocks[’blocktitle_2′] = {} //Control – general
blocks[’blocktitle_2′][’type’] = 'blocktitle’;
blocks[’blocktitle_2′][’title’] = 'Czujniki’;

blocks[’blocktitle_3′] = {} //Temperature – general
blocks[’blocktitle_3′][’type’] = 'blocktitle’;
blocks[’blocktitle_3′][’title’] = 'Temperatura’;

blocks[’blocktitle_4′] = {} //Equipment – general
blocks[’blocktitle_4′][’type’] = 'blocktitle’;
blocks[’blocktitle_4′][’title’] = 'Sprzęt’;

blocks[’blocktitle_5′] = {} //Owl – general
blocks[’blocktitle_5′][’type’] = 'blocktitle’;
blocks[’blocktitle_5′][’title’] = 'Zużycie prądu’;

blocks[’blocktitle_6′] = {} //Malinka – general
blocks[’blocktitle_6′][’type’] = 'blocktitle’;
blocks[’blocktitle_6′][’title’] = 'Malinka’;

blocks[’blocktitle_8′] = {} //Xiaomi
blocks[’blocktitle_8′][’type’] = 'blocktitle’;
blocks[’blocktitle_8′][’title’] = 'Xiaomi’;

blocks[’blocktitle_7′] = {} //Czas do pracy – general
blocks[’blocktitle_7′][’type’] = 'blocktitle’;
blocks[’blocktitle_7′][’title’] = 'Droga do pracy’;

Powyższe w sumie same się komentują – tytuły nagłówków do naszych sekcji.

blocks[’news_1′] = {}
blocks[’news_1′][’feed’] = 'https://cors-anywhere.herokuapp.com/http://wiadomosci.gazeta.pl/pub/rss/wiadomosci_kraj.htm’;
blocks[’news_1′][’maxheight’] = 113;

blocks[’news_2′] = {}
blocks[’news_2′][’feed’] = 'https://cors-anywhere.herokuapp.com/http://kanaly.rss.interia.pl/swiat.xml’;
blocks[’news_2′][’maxheight’] = 250;

Kanały RSS! Nie dość, że pokażą nam tekst, to jeszcze zdjęcia w przypadku tych bardziej bogatych w treści.

var columns = {}
columns[’bar’] = {}
columns[’bar’][’blocks’] = [’logo’,’miniclock’,’sunrise’,’settings’]

columns[1] = {} //Gniazdka
columns[1][’blocks’] = [’blocktitle_1′,24,100,103,21,22,166,’s1′,’s2′];
columns[1][’width’] = 6;

columns[2] = {} //Pogoda, kalendarz
columns[2][’blocks’] = [’weather’,frames.weather,calendars.private];
columns[2][’width’] = 6;

columns[3] = {} //Kamery
columns[3][’blocks’] = [buttons.webcam,buttons.webcam1];
columns[3][’width’] = 5;

columns[4] = {} //RSS news
columns[4][’blocks’] = [’news_1′,’news_2′];
columns[4][’width’] = 5;

columns[5] = {} //Księżyc
columns[5][’blocks’] = [buttons.moon];
columns[5][’width’] = 3;

columns[6] = {} //LMS players
columns[6][’blocks’] = [151,150,157,80];
columns[6][’width’] = 5;

Nasze kolejne bloki a w nich:
– dwie kamery
– wiadomości RSS 
– ikona fazy księżyca
– Logitech Media Players oraz radia status odtwarzacza KODI

columns[7] = {} //Czujniki
columns[7][’blocks’] = [’blocktitle_2′,59,147,132,112,195];
columns[7][’width’] = 6;

columns[8] = {} //Temperatura
columns[8][’blocks’] = [’blocktitle_3′,93,133,’118_1′,’121_1′,160,’118_2′,’121_2′];
columns[8][’width’] = 3;

columns[9] = {} //Sprzęt
columns[9][’blocks’] = [’blocktitle_4′,72,73,74,75,76,120,122,123];
columns[9][’width’] = 6;

columns[10] = {} //Owl
columns[10][’blocks’] = [’blocktitle_5′,’136_1′,’136_2′,’blocktitle_7′,142];
columns[10][’width’] = 3;

columns[11] = {} //Pogoda, słońce, księżyc, zegar
columns[11][’blocks’] = [’clock’,’currentweather_big’,’sunrise’,buttons.moon,163,’stationclock’]
columns[11][’width’] = 3;

columns[12] = {} //Graphs
columns[12][’blocks’] = [’graph_136′,buttons.log,frames.poland];
columns[12][’width’] = 5;

Tutaj przykład wykresu. UWAGA – zgodnie z parametrem config[’standard_graph’] = 'month’;

domyślnie ustawia się na miesiąc. Wpiszcie wartość, jaka Wam pasuje (czyli 'day’, 'week’,’month’). Kolejny element to log Domoticz i animowana mapa pogody.


columns[13] = {} //Music
columns[13][’blocks’] = [’streamplayer’,’spotify’];
columns[13][’width’] = 5;

Odtwarzacz stream’ów z radiami internetowymi oraz plugin Spotify. Ze Spotify trzeba pamiętać, że aplikacja musi być zainstalowana na tablecie! Do tego – u mnie zaczynała działać, gdy coś najpierw odtworzyłem w aplikacji i dopiero przeszedłem do strony. Za pierwszym razem, później już bez problemu.

columns[14] = {} //Graphs
columns[14][’blocks’] = [maps.miasto1,maps.miasto2];
columns[14][’width’] = 5;

Mapy Google z natężeniem ruchu drogowego.

columns[15] = {} //Malinka
columns[15][’blocks’] = [53,54,49,52,51];
columns[15][’width’] = 5;

Czujniki naszego Raspberry. Temperatura, pamięć, zajętość dysków, itp.

columns[16] = {} //Xiaomi
columns[16][’blocks’] = [’blocktitle_8′,167,168,169,170,171,172];
columns[16][’width’] = 10;

columns[17] = {} //Xiaomi
columns[17][’blocks’] = [’blocktitle_8′,173,174,175,177,190,192,208,209];
columns[17][’width’] = 10;

A tu już elementy od Xiaomi.

var screens = {}
screens[1] = {}
screens[1][’background’] = 'bg1.jpg’;
//screens[1][’background_morning’] = '/Cezar/image004.jpg’; //morning = 06:00-10:59
//screens[1][’background_noon’] = '/Cezar/image003.jpg’; //noon = 11:00-15:59
//screens[1][’background_afternoon’] = '/Cezar/image002.jpg’; //afternoon 16:00-19:59
//screens[1][’background_night’] = '/Cezar/image005.jpg’; //night = 20:00:05:59
screens[1][’columns’] = [11,2,8,10];

screens[2] = {}
screens[2][’background’] = 'bg3.jpg’;
screens[2][’columns’] = [1,7,9];

screens[3] = {}
screens[3][’background’] = 'bg8.jpg’;
screens[3][’columns’] = [3,6,13];

screens[4] = {}
screens[4][’background’] = 'bg_morning.jpg’;
screens[4][’columns’] = [12,15];

screens[5] = {}
screens[5][’background’] = 'bg_noon.jpg’;
screens[5][’columns’] = [4,14];

screens[6] = {}
screens[6][’background’] = 'bg_night.jpg’;
screens[6][’columns’] = [16];

screens[7] = {}
screens[7][’background’] = 'bg2.jpg’;
screens[7][’columns’] = [17];

Uffff… Dużo tego, ale po zaznajomieniu się z tym wszystkim będzie Wam na pewno łatwiej stworzyć własne pulpity.

Generalna zasada:
– najpierw ustawienia
– później definicje bloków, zmiana tytułów, itp.
– ustawienie elementów w kolumnach
– wrzucenie kolumn na ekrany

POWODZENIA!

ESPEasy, Wemos i Domoticz – ABC podłączenia

W sumie (no, jeżeli chodzi o temperaturę) brakowało mi monitorowania garażu. Termometry na 433MHz nie sięgają tak daleko, jak się okazało i Xiaomi nie podołało z zasięgiem. W garażu mam jednak jakieś resztki zasięgu Wifi.

Jest przecież esp8266! Do tego są różne wersje – na przykład Wemos D1 mini, a na 'znanym chińskim portalu’ znalazłem jego alternatywy wraz z 'shield’em’, który zawiera DHT11. Nie jest to może i najlepszy termometr na rynku (delikatnie mówiąc), ale na moje potrzeby wystarczy, Do tego – łatwo się go łączy. Zestaw za kilkanaście złotych zawiera wszystkie potrzebne elementy. Przy okazji zakupiłem też Battery shield, ale to będę testował innym razem.

Jako że (jak pisałem) nie mam talentu do lutowania, muszę zaufać koledze, który mówił, że lutowanie było fraszką.

Skoro sprawy techniczne mamy za sobą, pora na oprogramowanie. Najwięcej słyszałem o ESPEasy, dlatego na nim się oparłem.

Zanim zaczniemy możemy w Domoticz stworzyć nowy element Hardware i Virtual sensor (to taka trochę pętla, bo tutaj musimy podać IP Wemos’a, które skonfigurujemy dopiero za chwilę, czyli możemy założyć, ale później i tak będziemy edytować). ZAPISUJEMY ID czujnika.

Na stronie https://www.letscontrolit.com/wiki/index.php/Main_Page jest odnośnik do ESPEasy. Przechodząc do niego skupmy się na sekcji Loading firmware – na czas pisania posta aktualna wersja to R120. Zostanie ona wkrótce zastąpiona przez wersję 2.0. Ale to przyszłość. Na razie jest R120.

Możemy doczytać więcej na https://www.letscontrolit.com/wiki/index.php/Tutorial_ESPEasy_Firmware_Upload, aby dowiedzieć się, że Wemos D1, Wemos D1 Mini oraz NodeMCU mają 4096k, Całkiem dużo. Do tego – są świetne dla początkujących, ponieważ mają konwerter USB do Serial. Czyli nie potrzebujemy żadnych programatorów – możemy podłączyć kablem USB Micro do komputera i zaprogramować flash.

Bezpośredni link do softu to: http://www.letscontrolit.com/downloads/ESPEasy_R120.zip

Jako że wszystkie moje komputery pracują na Windows, skupię się na tym systemie. Aby dowiedzieć się po podłączeniu na jakim porcie znalazł się nasz Wemos, musimy przejść do linii poleceń cmd i wpisać mode.

TU UWAGA. Zmarnowałem prawie godzinę, zanim okazało się, że kabel, który teoretycznie działał i ładował, praktycznie nie umożliwiał rozpoznania sprzętu. Zmiana kabla i wszystko ruszyło.

Kroków jest sześć:

1. Znajdź odpowiedni plik do Twojego modułu. To już mamy za sobą. Wiemy, że to Wemos D1 Mini

2. Ściągnij plik zip i wypakuj go do wybranego folderu. Link podałem powyżej, także to też mamy już za sobą

3. Uruchom 'flash.cmd’. Otworzy się okno z trzema pytaniami

4. Wpisz port na którym zainstalował się Wemos. Tu – 3
5. Wpisz wielkość flash – tu 4096
6. Wpisz numer wersji – tu 120

Programowanie rozpocznie się

Po zakończeniu otrzymamy stosowany komunikat

Teraz pora na wyszukanie sieci ESP_0, która pojawi nam się jako nowa sieć w domu do wybrania.
Hasło to configesp

Później będziemy mieli możliwość wejścia na stronę ESP Easy, gdzie możemy już wybrać do jakiej sieci ma się podłączyć nasz moduł.

Po tym kroku nastąpi restart

Tadam! Jesteśmy już prawie, prawie w domu 😀

Po wejściu na adres podany powyżej uruchomimy stronę ESP Easy.

Zaczynamy konfigurację! Ohoho!

Tutaj można (idąc po linii najmniejszego oporu) wypełnić tylko Name (nazwa naszego modułu), SSID i hasło musi już być wypełnione. Domoticz HTTP również ustawia się domyślnie, Controler IP i Port ustawiamy na nasz Domoticz. Tyle tutaj.

Teraz Devices oraz Edit, przy Task = 1.

W zależności od tego, czego używamy (no, ja shield z DHT) ustawiamy Device na wybrany czujnik.

I kolejno Name (Nazwa dla czujnika, mało ważne), Delay to interwał wysyłania danych do Domoticz i IDX czujnika Domoticz (jak to zrobić opisałem wcześniej), GPIO w tym przypadku ustawiamy na 2, Typ DHT w zależności od tego co mamy.

Jako że DHT 11 znane są ze swojej słabej jakości i różnego skalibrowania, przyda się czasem korekta. U mnie aż o 4 stopnie 😉 Możemy to zrobić w polu Formula Temperature. Możemy tam wpisać '%value% -4′. Jest co prawda pole do tego celu przeznaczone w Domoticz, ale ono działa tylko dla natywnych czujników temperatury.

Po wybraniu Submit pokaże się nam temperatura.

I od razu, jeżeli dobrze skonfigurowaliśmy czujnik, dane w Domoticz.

Hura, hura, koniec! Mam temperaturę w garażu! Zapewne do czegoś się ta informacja przyda 🙂

Domoticz i koszty zużytego prądu

Człowiek uczy się całe życie. To pewne.

Mnie udało się dziś przez przypadek dowiedzieć jak Domoticz wylicza koszty zużytego prądu.

W sumie zawsze miałem to przed oczami, ale jakoś nigdy do mnie nie dotarło. Skoro można sumować zużytą energię, to powinna być też możliwość przeliczenia jej na pieniądz. I jest!

Zacznijmy od zdefiniowania taryfy. W Setup -> Settings, na zakładce Meters/Counters możemy podać wartość w naszym przypadku.

Później wystarczy wejść na Log czujnika. Może to być zarówno Owl jak i gniazdko (na przykład Xiaomi). Tutaj mamy raporty zużycia godzinowego. Teraz przechodzimy na Report.

I tu mamy interesujące nas wartości. Łącznie z kosztem zużycia.

Jedyny minus jest taki, że są to wartości miesięczne. Ale dobre i to!

Teraz tylko muszę sprawdzić jak to się ma do rzeczywistych danych i sprawdzić inne parametry z tym związane w Domoticz.