Czajnik Xiaomi z obsługą przez Bluetooth

Chyba powoli można mnie zacząć obwoływać fanem marki Xiaomi 😉
Teraz do kolekcji doszedł Xiaomi Mi Electric Kettle. Raz, że pora wymiany czajnika nadeszła, dwa, że ma kontrolę podtrzymywania ciepła wody, trzy – że ładny 😀
W ogóle ich pomysł z wejściem w start-upy był świetny…
Czajnik jaki jest – każdy widzi, jak to mówią… Ten dotarł dobrze zabezpieczony, w estetycznym, ale minimalistycznym – jak przystało na Xiaomi – opakowaniu. Dla mnie plus – nie potrzebuję krzykliwych 'Super, Newest release, Outstanding’ na pudełkach.

Po wyjęciu z pudełka – podstawka, czajnik oraz przejściówka – to jest niestety ciągle bolączka przesyłek z Chin… Kabel jest zawinięty w podstawce, można go rozwinąć.

Plastik bardzo przyjemny w dotyku, dobrze spasowany, stal w środku wydaje się dobra jakościowo. Na pewno trzeba będzie często czyścić i odkamieniać, ze względu na termometr zamontowany na dnie. Mamy 'twardą’ wodę, kamień się osadza dość szybko.

Ogólnie nie ma się co rozpisywać, włączamy Bluetooth w telefonie/tablecie, uruchamiamy aplikację i przechodzimy proces parowania. Ważną różnicą jest to, że (jak to z Bluetooth), sparować możemy z

Czajnik możemy w aplikacji przypisać do wybranego pokoju/miejsca w domu.
Aplikacja po jej włączeniu i podłączeniu do czajnika podaje bieżącą temperaturę oraz możliwość wyboru temperatury i czasu utrzymywania podgrzewania.

Dodatkowo kilka opcji konfiguracyjnych do wyboru – czy podgrzewać wodę tylko po wybraniu przycisku oraz czy podgrzewać po wyjęciu i ponownym włożeniu do bazy.

Cudów nie ma – woda jest gorąca albo ciepła, tak jak chcecie. Jesteśmy bardzo zadowoleni.

Jedynym minusem jak dla mnie są chińskie opisy przycisków (wolałbym już obrazki) na uchwycie – trzeba pamiętać, że wrzątek bliżej rączki, podgrzewanie bliżej czajnika 😉

Przechodzimy na Malinie z karty SD na dysk HDD/SSD…

Nadeszła pora…

Pora na zmianę głównego miejsca systemu Raspberry Pi. Wiele dobrego mogę powiedzieć o Raspberry Pi, ale na pewno nie to, że używanie kart pamięci (szczególnie przy wielu zapisach do loga, bazy danych, itp.) pozwala na bezstresową pracę. Ostatnio odzyskiwałem backup karty praktycznie co tydzień.

Jakoś tak się stało, że leżał mi mały dysk talerzowy 80GB ze starej PS3. Gdzieś, kiedyś w promocji kupiłem również aktywny hub USB. Niestety, napięcie na portach USB z Raspberry (nie chciałem modyfikować zmiennej max_usb_current) niby zasilało dysk, ale bardzo niestabilnie. Podłączyłem dysk do huba, hub do USB, podpiąłem zasilanie, ruszyło. Pierwszy sukces.

Na początku warto sprawdzić jak nasz dysk przestawia się w systemie, żeby przez przypadek nie sformatować czego, czego zdecydowanie nie chcemy 😉

sudo fdisk -l

Ok, jak widać mój dysk 80GB znalazł się pod /dev/sdb/. Pod /sda/ jest pendrive na którego zapisywane są backupy i leży część danych, na przykład z bajkami dla dzieci. Tak w sumie to warto będzie to niedługo przenieść na dysk, a backupy wypchnąć albo na FTP, albo w chmurę. Może kiedyś…

Skoro wiemy jaki dysk mamy sformatować, bierzemy się do pracy.

sudo fdisk /dev/sdb

I teraz po kolei komendy (po każdej literze Enter):

d – wyczyść dysk

n – new

 p – utwórz domyślną partycję

 1 – podaj numer partycji

w – zapisz zmiany

Po kolei (dinozaury może jeszcze pamiętają to wszystko ze starych komputerów, kiedy jeszcze nie było Windows i dyski trzeba było formatować z linii poleceń 😀 ):
1. Wymazaliśmy partycje z dysku, jeżeli jakieś były
2. Utworzyliśmy partycję domyślną
3. Podaliśmy dane domyślne – dla uproszczenia, oczywiście partycji można zrobić więcej, zmienić ich rozmiar…
4. Zapisaliśmy zmiany

Pora sformatować dysk.

sudo mkfs.ext4 /dev/sdb

Póżniej musimy dysk sparować z Raspberry Pi:

sudo mount /dev/sdb /mnt

I teraz sedno, synchronizacja naszej karty SD z dyskiem. rsync zachowuje wszystkie uprawnienia, restrykcje, itp.

sudo rsync -axv / /mnt

Kilka minut i mamy kopię karty na dysku.

Wypadałoby również powiadomić Raspberry Pi, że karta SD jest potrzebna tylko i wyłącznie do 'bootowania’, cały system jest już na dysku twardym.

To ważna różnica! Raspberry Pi 3 ma opcję jednorazowego przeprogramowania bitu OTP, aby bootowanie odbywało się bez użycia karty SD, ale osobiście się na to jeszcze nie zdecydowałem – po kilku tygodniach testów możliwe, że tak zrobię. Obciążenie karty SD jest jednak teraz minimalne i znacznie zwiększa bezawaryjność systemu.

Najpierw kopia

sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak

I zmieniamy plik cmdline.txt

sudo nano /boot/cmdline.txt

Zmieniamy wartość przy root i dodajemy na końcu rootdelay

root=/dev/sdb i na końcu rootdelay=5

Efekt:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sdb rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

Brawo! Teraz pora wyedytować fstab, aby nasz dysk zawsze się mapował i system wiedział, że 'rootfs’ jest na HDD. Czyli używamy karty tylko na moment startu Raspberry Pi, później już wszystko odbywa się na HDD.

sudo nano /mnt/etc/fstab

Zamieniamy wpis przy karcie SD na nasz HDD, stary komentujemy:

/dev/sdb       /               ext4    defaults,noatime  0       1

U mnie wygląda to tak:
proc            /proc           proc    defaults          0       0
/dev/sdb       /               ext4    defaults,noatime  0       1
PARTUUID=376f54aa-01  /boot           vfat    defaults          0       2
#PARTUUID=376f54aa-02  /               ext4    defaults,noatime  0       1
Cudnie! Teraz 
sudo reboot
Chwila stresu i powinniśmy wystartować z dysku. Jak to informatycy piszą: 'U mnie działa’.
Mam nadzieję, że teraz żadnych rozjazdów w systemie nie będę już miał.
W przyszłości przejdę na dysk SSD, gdy uda mi się kupić coś fajnego, małego w dobrej cenie.

Dashticz – wyświetlanie faz księżyca

Na prośbę jednego z czytelników opiszę sposób skonfigurowania w Dashticz bardzo ładnego, przydatnego dodatku – faz księżyca z ich prezentacją na zdjęciach. Nie dość, że estetyczne, to jeszcze naprawdę przydatne.

Nie jestem autorem tego pomysłu i skryptu, od razu piszę. Dlatego po źródłowy kod odsyłam do:

a postaram się tutaj wyjaśnić sposób jego instalacji.

Zacząć trzeba od stworzenia pliku w folderze /scripts/lua, co ważne z początkiem nazwy script_time_. Dla uproszczenia – można tak jak w przykładzie – script_time_moon.lua.

Tam wklejamy kod wskazany w linku.

Tak jak w podanej w Wiki Domoticz instrukcji – krytyczne jest założenie 2 zmiennych użytkownika i 5 wirtualnych czujników w zakładce Devices.

Najpierw jednak Hardware:

I później Dummy sensors z typami jak poniżej:

Czyli User Variable:

MoonPicture STRING
MoonphaseCheck STRING

I Dummy:

Dummy Switch Moon up Text
Dummy Switch Moon under Text
Dummy Switch Moonpercentage Percentage
Dummy Switch Moon age Custom Sensor Days
Dummy Switch Moonphase Text

Teraz pora zmienić dane w script_time_moon.lua. Co do zmiennych, które musimy dostosować:

local moonpicture = „MoonPicture”

Nazwa zmiennej użytkownika – tam skrypt zapisuje numer obrazka png do wyświetlenia.

local checkvar = „MoonphaseCheck”

Również używana w skrypcie. Wpisywana tam jest nazwa fazy. Można zmienić na angielski i później wyświetlać w Domoticz.

local checktime = 3600

Interwał odświeżania danych z WeatherUnderground. Nie może być zbyt mały, bo zależy od planu jaki tam mamy. A zapewne będzie darmowy…

local city = „Warszawa”

Miasto dla WeatherUnderground

local countryCode = „PL”

Kod kraju dla WeatherUnderground

local idxmoonrise=’161′
local idxmoonset=’162′
local idxmoonpercentage =’163′
local idxmoonage =’164′
local idxmoonphase =’165′

Powyżej 5 czujników, w których musimy wpisać IDX takie jak założyliśmy wcześniej.

local wuAPIkey = „xxxxxxxxxxx”

Klucz WeatherUnderground. Dla przypomnienia – instrukcja założenia tutaj: https://cezarowy.blogspot.com/2017/09/dashticz-spenienie-marzen-maniaka.html

AKTUALIZACJA 2018-05-21!

Z tego co widzę to Weather Underground przestało udostępniać darmowe API z danymi pogodowymi! Postaram się zbadać temat i odpowiedni zmienić opis Dashticz.

local DOMO_IP = „192.168.1.200”
local DOMO_PORT = „80”

Dane dostępowego naszego Domoticz.

local tempfilename = '/var/tmp/phase.tmp’

To miejsce gdzie będzie się zapisywał plik z danymi zrzucanymi z WeatherUnderground. Część danych wygląda na przykład tak:
  „astronomy”: 1
  }
        }
                ,       „moon_phase”: {
                „percentIlluminated”:”81″,
                „ageOfMoon”:”11″,
                „phaseofMoon”:”Waxing Gibbous”,
                „hemisphere”:”North”,
                „current_time”: {
                „hour”:”22″,
                „minute”:”20″
                },
                „sunrise”: {
                „hour”:”7″,
                „minute”:”23″
                },
                „sunset”: {
                „hour”:”16″,
                „minute”:”26″
                },
                „moonrise”: {
                „hour”:”12″,
                „minute”:”26″
                },
                „moonset”: {
                „hour”:”2″,
                „minute”:”54″
                }
        },
Celem skryptu na Wiki Domoticz jest odpowiednie odczytanie tego pliku i zamapowanie zmiennych.
Jeżeli zmienne są poprawne i skrypt zacznie działanie (sam, ponieważ script_time_ uruchamiają się automatycznie), będzie to wyglądać tak:
W sumie mamy już wszystko. Pozostaje konfiguracja Dashticz.
W sekcji config dodajemy:
config[’idx_moonpicture’] = 7;
Ten IDX jest numerem naszej User Variable.
W sekcji buttons:
var buttons = {} 
buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon’}
W columns:
columns[1] = {} 
columns[1][’blocks’] = [buttons.moon];
columns[1][’width’] = 3;
I screens:
screens[1] = {}
screens[1][’columns’] = [1];
Oczywiście Wy powinniście dołożyć ten przycisk w kolumnach, które u Was są poprawne i na odpowiednim ekranie.
Chciałbym teraz napisać: 'Cieszymy się, że działa’ i mam nadzieję, że tak będzie…

Xiaomi Air Purifier 2 – integracja z Domoticz

W końcu dotarł do nas Xiaomi Air Purifier 2. Udało się znaleźć go w dobrej cenie, wystarczyło poczekać 2 miesiące i już jest 😉 Smog na wsi nie jest tym, co tygrysy lubią najbardziej. Głównie chodzi o zdrowie dzieci.

Sprzęt, jak na Xiaomi przystało – dotarł w zwykłym pudle, bez setki kolorów, ale dobrze zapakowany. Miła niespodzianka – dostarczył go kurier.

Osobiście jestem bardzo zadowolony ze sprzętów tej marki. Działają niezawodnie, cechują się świetnym designem i łatwo się z nimi integrować.

Z tym oczyszczaczem jest podobnie – otwierasz, mówisz 'Ładne to’, włączasz, działa.

Po dodaniu do aplikacji (w standardowy dla nich sposób – podłączamy się do WiFi sprzętu i podajemy swoje dane WiFi) możemy od razu nim zarządzać.

Szybka aktualizacja 😉

I jesteśmy online!

Możemy oczywiście dodać widget do telefonu

Ale dobra, to było proste. Bardzo proste.

Teraz wypadałoby go zintegrować z Domoticz, to jest przecież moim głównym celem 😉

Według poradnika z forum Domoticz powinna zadziałać komenda jak poniżej.

sudo apt-get install npm sudo screen

Może i zadziałała, ale nie mogłem później zainstalować miio…

Jak się okazało – chodziło o wersję nodejs. Ruszamy więc z instalacją 'poprawnej’ wersji.

sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –

sudo apt-get install -y nodejs

I już można:

sudo npm install –save miio

sudo npm install -g miio

Teraz już zadziała 'discover’ – czyli wyszukiwanie kompatybilnych sprzętów.

sudo miio –discover –sync

Po jej wydaniu musicie zobaczyć IP oczyszczacza i jego status, jak poniżej:

Skoro jest, to jedziemy dalej! Do odważnych świat należy.

Poradniki różnie radzą, niektóre są bardziej skomplikowane, inne mniej. U mnie zadziałało to co poniżej.

Dodajemy skrypt, który będzie wysyłał komendy do oczyszczacza. Ja się uparłem i wszystkie wrzuciłem do folderu /scripts, ponieważ jest archiwizowany co noc.

sudo nano /home/pi/domoticz/scripts/airpurifier.js

#!/usr/bin/node
/* eslint-disable */

// Set path to node modules miio
const miio = require(’miio’);

// No need to change any lines in this section
var deviceip = process.argv[2];
var secondarg = process.argv[3];
var thirdarg = process.argv[4];
function exit() {
process.exit(-1);
}

// Power On (on / off specified as true or false)
if ( secondarg === „power” ) {
        setTimeout(exit, 7000);
        console.log(’Sending Power’, thirdarg, 'command’);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setPower(JSON.parse(thirdarg));
})}

// Status
if ( secondarg === „status” ) {
        miio.device({
        address: deviceip
}).then(device => {
                stats = device.getProperties([ 'power’, 'mode’, 'aqi’, 'temperature’, 'humidity’ ])
                console.log(stats);
                process.exit();
})}

// Specify favorite manual fan speed (1 to 16) eg usage: fanspeed 16
if ( secondarg === „fanspeed” ) {
        setTimeout(exit, 7000);
        console.log(’Setting manual fan speed to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setFavoriteLevel(parseInt(thirdarg));
})}

// Set fan mode option, specify: idle, auto, silent or favorite which needs to be set for manual speed control
if ( secondarg === „fanmode” ) {
        setTimeout(exit, 7000);
        console.log(’Telling device to use’, thirdarg, 'fan speed mode’);
        miio.device({
        address: deviceip
}).then(device => {
                return device.call(’set_mode’, [ thirdarg ])
})}

// Control the device led (specify as bright, dim or off)
if ( secondarg === „led” ) {
        setTimeout(exit, 7000);
        console.log(’Setting device led to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setLedBrightness(thirdarg);
})}

// Switch the device buzzer on or off (specify as true or false)
if ( secondarg === „buzzer” ) {
        setTimeout(exit, 7000);
        console.log(’Setting device buzzer to:’, thirdarg);
        miio.device({
        address: deviceip
}).then(device => {
                return device.setBuzzer(JSON.parse(thirdarg));
})}


Jeżeli wszystko zrobiliście poprawnie, komenda jak poniżej pokaże jego status:

node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 status

Próbować możecie z różnymi komendami:

node airpurifier.js 192.168.1.115 power true – Włączenie
node airpurifier.js 192.168.1.115 power false – Wyłączenie
node airpurifier.js 192.168.1.115 status – Wyświetlenie statusu
node airpurifier.js 192.168.1.115 led off – Wyłączenie diody led
node airpurifier.js 192.168.1.115 buzzer true – Włączenie sygnałów głosowych
node airpurifier.js 192.168.1.115 fanmode auto – Tryb Auto
node airpurifier.js 192.168.1.115 fanmode favorite – Tryb Ulubiony

node airpurifier.js 192.168.1.115 fanspeed 16 – Maksymalna prędkość wiatraka


No to teraz pora na Domoticz.

Mała aktualizacja!

Dla pewności i wyjaśnienia. Zaczynamy od zdefiniowania nowego Hardware!

Dopiero później na jego podstawie zakładamy dwa Virtual sensor’y.


Dla jakości powietrza – Custom Sensor

Dla temperatury i wilgotności – Temp + Hum


Zapisujemy ich (Devices) IDX
i wstawiamy do skryptu poniżej

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

#!/bin/bash

# Get the data
data=$(node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 status)
# Sort it
temperature=$(echo „$data” | grep „temperature” | sed -e s/[^0-9.]//g)
humidity=$(echo „$data” | grep „humidity” | sed -e s/[^0-9.%]//g)
aqi=$(echo „$data” | grep „aqi” | sed -e s/[^0-9.]//g)

# Load it into Domoticz
curl -s „http://192.168.1.200/json.htm?type=command&param=udevice&idx=247&nvalue=0&svalue=${temperature};${humidity};0″
curl -s „http://192.168.1.200/json.htm?type=command&param=udevice&idx=248&svalue=${aqi}”

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

I wrzucamy do crontab

crontab -e 
*/15 * * * * sudo ~/domoticz/scripts/xair2domoticz.sh
Działa. Łaski nie robi 🙂 U mnie nazywa się to Aqi (tak prawdę mówiąc to identycznie jak w  poradniku…). Temperatura i wilgotność w odpowiedniej zakładce.
Ok, dane już odbieramy. Teraz wypadałoby nauczyć się nim sterować.

Założyłem Selector Switch (na podstawie Hardware), zmieniłem wartości z domyślnych na:
– Off
– Auto
– Low
– Max
– Silent

Pozostało wpisać skrypt LUA. Nie będę cwaniakował – zmieniłem skrypt autora z forum Domoticz (http://www.domoticz.com/forum/viewtopic.php?t=15537)

Skrypt, na podstawie nazwy urządzenia i jego statusów w Domoticz, wysyła komendy do Xiaomi Air Purifier 2.

sudo nano /home/pi/domoticz/scripts/lua/script_device_xair.lua

commandArray = {}
if devicechanged[’Oczyszczacz powietrza’] == 'Auto’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power true’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode auto’)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Off’ then
    os.execute (’sudo screen -S airpurifieroff -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power false’)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Low’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode favorite’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanspeed 3′)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Max’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode favorite’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanspeed 16′)
end
if devicechanged[’Oczyszczacz powietrza’] == 'Silent’ then
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 power true’)
    os.execute (’sudo screen -S airpurifieron -d -m node /home/pi/domoticz/scripts/airpurifier.js 192.168.1.115 fanmode silent’)
end
return commandArray

I to by było na tyle. Działa, raportuje, oczyszcza. Mam mały problem z czasami nie działającymi ustawieniami Max i Low (komendy wysyłane z linii poleceń działają bez problemu, w powyższym skrypcie może muszę wstawić mały delay). Ale On, Off, Silent, Auto działa bez problemu.

Do tego wypadałoby jeszcze zrobić pobieranie statusu Włączony/Wyłączony i aktualizowanie w Domoticz – automatycznie się to nie dzieje.

Swoją drogą – warto było go nabyć.

mBot – zabawki nie tylko dla dzieci :)

Święta, święta i po świętach.

I jeżeli dzieci już dostały zabawki, a nie chcą się nimi bawić – ojciec ma co robić!

mBot, bo o nim mowa, jest akurat w kręgu naszych zainteresowań. Oparty na Arduino, programowalny, z możliwością kupienia dodatków. Ja akurat kupiłem dla syna wersję Bluetooth. Świetna, ale to kompletnie świetna zabawka.

Poniżej kilka zdjęć już złożonego robota. Samo skręcanie to kilka śrubek, opisywać nie ma sensu. Metalowa baza, dwa silniki, dwa koła, czujnik 'obrazu’ (aby robot jeździł po linii, którą mu wyznaczymy) oraz czujnik odległości. Na górze Arduino w ładnej, przezroczystej obudowie. Wszystkie kable, złączki – świetnie opisane, połączenie to przyjemność.

Robota można połączyć z komputerem przez USB, kabel jest w zestawie. Tak najłatwiej zaktualizować oprogramowanie.

Sednem jednak są dwie aplikacje, dostępne ze darmo w AppStore (czy też Play Store). To one pozwalają robota programować, można przejść 'szkolenie’ z jego obsługi, korzystać z wielu ciekawych funkcji. Możliwości jest mnóstwo!

Pierwszą z nich jest Makeblock. To zestaw mniejszych aplikacji, które zaznajomią Was z mBotem. Jak widać na pierwszym obrazku, podzielone są na sekcje tematyczne.

Pierwsza to sterowanie. Za pomocą 'jakby’ pilota w aplikacji możemy skłonić robota do jazdy, włączenia diód, odtworzenia dźwięku.

Druga – Narysuj i jedź, umożliwia narysowanie robotowi trasy, którą później ma powtórzyć. Widać jak się poci, gdy ręka na drży i kreska nie jest idealnie prosta 🙂

Muzyk – zagraj jak na organkach, albo odtwórz zapisane nuty.

Zdecydowanie najciekawsza jest sekcja Tworzenia

To tutaj możemy pisać nasze 'programy’, które w odpowiedni sposób zaprogramują robota.

W aplikacji jest też sekcja aktualizacji firmware robota, jeżeli pojawi się nowa wersja.

Druga aplikacja to mBlock.

Tutaj możemy się zmierzyć z serią zadań, które rozjaśnią nam tajniki sterowania robotem, sprawdzania stanu jego czujników, itp. Wszystko w formie gry, dobrej zabawy. Spotkacie tutaj stosowane również w Domoticz, bloki z funkcjami robota, które możecie dowolnie ustawiać. Mamy tu wszystko: ruch jednym czy też dwoma silnikami, odczyt czujnika odległości, odtwarzanie dźwięków…

Ze strony http://www.mblock.cc/software/mblock/mblock3/ musicie ściągnąć oprogramowanie dla Waszego systemu, jeżeli chcecie połączyć się również z poziomu komputera. Chociaż o niebo wygodniej jest z poziomu tableta/komórki.

Tutaj porada jak sprawdzić i zainstalować najnowsze oprogramowanie dla robota: https://makeblockshop.eu/blogs/known-issues/88952772-first-check-your-firmware-version

W razie problemów z połączeniem po Bluetooth – http://trobot.pl/materialy-dydaktyczne/jak-zbudowac-robota-pobierz-instrukcje/

Reasumując – rewelacyjna zabawka, która wprowadzi zainteresowane dzieci w świat robotów, programowania, sterowania.
Do zestawu dołączony jest pilot, którym również możemy sterować robotem, oraz kartka z wyrysowaną przykładową trasą, którą może podążać robot, dzięki czujnikom zamontowanym w podwoziu.

Aplikacja Pilot – jeżeli sterowanie z poziomu strony nas nie zadowala…

Witam ponownie! 
W temacie zarządzania urządzeniami w Domoticz – ja osobiście lubię 'webowy’ interface Domoticz. Używam go na telefonie i świetnie zdaje egzamin. Na tablecie wolę Dasthicz, ale ja nie o tym tutaj 🙂
Wiele osób szuka aplikacji, która połączy się z Domoticz, będzie dobrze wyglądała, itp., itd. 
Jedną z nich (tak prawdę mówiąc na iPhone wybór nie jest porażający – zaledwie trzy…) jest Pilot.
Fajna, mała, szybka, sprytna aplikacja. Kilka słów o niej, ponieważ może się Wam okazać przydatna. Pilot zapewnia również Geofencing (lokalizację i wyzwalanie zdarzeń na podstawie tego czy na przykład jesteśmy w domu, czy dom opuściliśmy), ale z opinii użytkowników wynika, że w ostatniej wersji oprogramowania na iPhone funkcja ta nie działa najlepiej.
Zaczynając z nią pracę musicie podać oczywiście namiary na swój serwer Domoticz
W menu Ustawienia
Tak samo jak w przypadku najprostszej konfiguracji Dashticz – pojawią się od razu Wasze Ulubione po wybraniu środkowej opcji.
Jeżeli chcecie poukładać swoje urządzenia w jakiś logiczny sposób – musicie w Domoticz w sekcji Plans -> Roomplan dodać przykładowe 'Pokoje’ i do nich dodać urządzenia. Ja podzieliłem sobie je na Gniazdka, Temperaturę, itp. Minusem jest aktualnie to, że jeżeli macie zdefiniowany Floorplan w Domoticz, pojawi się dużo 'Pokoi’, które są w nim zdefiniowane. To te ze znakiem dolara przed nazwą.
Ogólny interface porządkuje urządzenia w przejrzysty sposób – Przełączniki, Sceny, Temperatura, Pogoda, Narzędzia.
Tutaj już same Przełączniki (Switches)
Mamy i dostęp do Scen:
Jeżeli trzeba, to i pogoda się znajdzie 🙂
W Narzędziach (Utilities) – liczniki, parametry sprzętowe zdefiniowane w Domoticz, itp.
A tu już mój przykład, jak można zdefiniować sobie to samemu, na przykładzie 'Pokoi’:
Aktualna cena w iTunes to 47.99 PLN. Nie jest to mało, ale niestety podobnie kształtuje się cena wielu aplikacji w sklepie Apple :/
Z ciekawostek – napisałem do autora aplikacji jakiś czas temu i przetłumaczyłem ją za jego zgodą na język polski – jeżeli zauważycie jakieś 'kwiatki’ – dajcie znać. Mnie osobiście nie podobają się Przełączniki i Narzędzia i muszę zmienić to przy następnej okazji…

Max2Play – czyli jak łatwo postawić serwer muzyczny MultiRoom

Postanowiłem zrobić mały remanent i przedefiniowałem zadania moich Raspberry.
Do tej pory wyglądało to tak:
– Raspberry Pi3 i na nim Domoticz, Logitech Media Server, InfluxDB + Grafana
– Raspberry Pi1 B i B+ jako PiCorePlayer’y
Mimo mocy Pi3, za dużo zapisów/odczytów szło na nią, co skutkowało dość częstymi problemami i koniecznością reinstalacji systemu/odzyskiwania z backupu.
Gdzieś podczas przeglądania internetu, grup, forów, wpadł mi w oczy Max2Play. Nie jest niczym innym niż 'nakładką’ na system, która w prosty sposób umożliwia zdefiniowanie komponentów związanych z odtwarzaniem muzyki w naszym domu. Zresztą, nie tylko muzyki, ale o tym później. Zainstalować i skonfigurować Logitech Media Server, owszem potrafię, ale nie pogniewam się, jeżeli ktoś/coś część roboty odwali za mnie. I to właśnie robi Max2Play.
Zdecydowałem, że Raspberry Pi3 będzie służyło wyłącznie do Domoticz i Squeezeplayer’a (jest podłączone po HDMI do amplitunera), Pi1 B+ będzie służyło jako Max2Play serwer oraz serwer InfluxDB i Grafana, reszta jako PiCorePlayer’y.
Do roboty!
Wystarczy pobrać obraz systemu ze strony https://www.max2play.com/en/max2play-image/#close, wrzucić na kartę i zacząć konfigurację.
W dosłownie kilka minut miałem:
– działający Logitech Media Server – wystarczyło wybrać opcję Install
– działający Airplay do iPhone/iPad
– działający na tym samym Raspberry Squeezelite Player.
– podłączony i skonfigurowany dysk zewnętrzny

Strona tytułowa pozwala wybrać wspieraną kartę muzyczną. Ja zrobiłem to oszczędnie i kupiłem tanią kartę muzyczną USB. Czyli powyższy krok pominąłem.

Strona startowa Max2Play

Strona z podstawową konfiguracją

Mamy możliwość wyboru instalacji i przeznaczenia naszego Rapberry. Od prostego odtwarzacza aż do pełnego Logitech Media Server

Informacja o zakończeniu konfiguracji serwera.

Na stronie Audioplayer możemy zainstalować i skonfigurować Squeezelite i Shairport (czyli AirPlay)

Dodatkowe opcje odtwarzaczy muzyki

Tu już po konfiguracji i z działającymi podstawowymi serwisami

I sam proces instalacji Logitech Media Server (Squeezebox Server). Jak widać – wszystko z automatu.
Jak widać – jest też możliwość instalacji Kodi/XBMC, aby mieć jeszcze więcej 'dobra’ na jednym Raspberry 🙂

Świetną cechą Logitech Media Server jest to, że sam odnajduje odtwarzacze z nim zgodne i pozwala odtwarzać muzykę, jeżeli tylko jest w zasięgu.

Czujnk smogu SDS011, Wemos, przełącznik – wszystko w działaniu

Dobry wieczór!

Aktualizacja! Zapraszam do lektury świetnego wpisu o udostępnianiu danych z czujnika na blogu https://raspberrywpraktyce.wordpress.com/2018/03/14/czujnik-sds011-i-wizualizacja-danych-na-opensensemap/

Rozszerzając opis podłączenia czujnika SDS011 – tym razem dodałem element, który opisywał Łukasz Jokiel na swoim blogu – przełącznik, który włącza SDS011 co pewien określony czas.

Nie opisywałbym tego oczywiście mając tą samą konfigurację, ale akurat nie dość, że miałem LoLin (jakaś tam iteracja Wemos z Chin) a nie Wemos Mini, to jeszcze kupiłem inny przełącznik.

No i zaczęło się – musiałem się trochę nauczyć. Same plusy 🙂 Bardzo pomocna była strona: https://blog.siliconstraits.vn/relay-what-is-it-and-how-to-use-it/, gdzie autor świetnie opisał wszelkie możliwe informacje.

Podłączenie wtyczek dostarczonych wraz z SDS011 do samego czujnika było proste. 

Później do samego Wemos

Poniżej już całość, czyli:
1. Wemos (czy LoLin jak kto woli) (kilka PLN z Chin)
2. Przełącznik Songle SRD-05VDC-SL-C (10 PLN w Polsce)
3. Czujnik SDS011 (63 PLN z Chin)

Połączenia:
Z Wemos 5V -> do przełącznika DC+
Z Wemos GND -> do przełącznika DC-
Z Wemos GPIO 5 (D1) Output Low -> do przełącznika IN

Z Wemos 5V -> do przełącznika NO

Z przełącznika COM -> SDS 5V

W SDS:
GPIO 12 (D6) -> TX
GND -> GND
5V -> COM

I po kolei każda zakładka w Wemos i ESPEasy.
Main to tylko info

Na zakładce Config jest SSID sieci WiFi i hasło. Ale to już skonfigurowane zostało wcześniej. Tutaj z tą różnicą, że wgrywamy wersję developerską beta (na moment pisania 147 RC8).

Zwróćcie uwagę na Pin Mode 5 (D1) – Output Low – tym pinem będziemy sterować przełącznikiem

Na Devices dodajemy czujnik smogu – tak jak opisane na blogu Łukasza, ale tutaj akurat nie ma wielkiej filozofii… 

Ta zakładka pojawi się, gdy włączymy Rules w Advanced configuration na następnej 😉 Tutaj esencja – dwa liczniki, które odliczają czas i w odpowiednim czasie włączają/wyłączają SDS. Łukasz dokładnie to opisał, ale:
1. Włączamy SDS na 120 sekund, aby się rozpędził, pobrał dane, wysłał do Domoticz, po tym wyłączył. Hint: w nawiasach kwadratowych składnia: [NazwaSDS#NazwaZmiennej].
2. Ja czekam 30 minut aby ponownie go włączyć
Wszystko po to, aby oszczędzić czujnik oraz laser, ma skończoną żywotność. 

Kod:
On System#Boot do
timerSet,1,30
endon

On Rules#Timer=1 do
GPIO,5,1
timerSet,2,120
endon

On Rules#Timer=2 do
SendToHTTP 192.168.1.200,80,/json.htm?type=command&param=udevice&idx=243&nvalue=0&svalue=[CzujnikSmogu#PM25]
SendToHTTP 192.168.1.200,80,/json.htm?type=command&param=udevice&idx=242&nvalue=0&svalue=[CzujnikSmogu#PM10]
GPIO,5,0
timerSet,1,1800
endon

W Domoticz dodajemy dummy Hardware i do niego dwa Custom sensors, których IDX wpisujemy w skrypcie w Rules.
Tadam! Odczyty mam chyba trochę zawyżone przez to, że aktualnie zapakowałem czujnik w pudło, gdzie brak wentylacji. Albo faktycznie jest tak źle…

Alexa App oficjalnie w Polsce – idzie ku lepszemu!

Akurat na weekend bardzo dobra wiadomość.
Alexa App oficjalnie w Polsce! Dotychczas zmuszeni byliśmy przy wstępnej konfiguracji i dodawaniu Skilli do korzystania ze strony www. Od wczoraj się to zmieniło, co bardzo ułatwi nam życie. Zarówno w AppStore od Apple jak i w Play od Google aplikacja jest już dostępna do pobrania. Po wpisaniu własnego konta i hasła od razu łączy się z Alexą.
Co to nam daje? Łatwiejszą konfigurację, możliwość podania swojej lokalizacji dla pogody oraz na przykład możliwość telefonowania do osób Alexę już posiadających.
Miłej zabawy!

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
}