poniedziałek, 25 września 2017

Xiaomi Mijia Smart Home - nowe gadżety przyszły :D

Może żadna to nowość, ale cieszę się niezmiernie. 

Dwa zestawy Xiaomi Mijia znalazły się u mnie w domu. Z pewnych względów jeden pozostanie w aplikacji MiHome i to opiszę dzisiaj.


Czujniki po wyjęciu z pudełek zaskakują rozmiarem. Nie są podobne do tych monstrów, które stoją często w naszych domach. Czujnik temperatury jest niewiele większych od kciuka. Przynajmniej mojego :)



Niestety, trzeba wspomnieć o minusach. Bez przejściówki z gniazdek typu chińskiego na polski nie uruchomimy zestawu...

WAŻNE - przejściówki często NIE SĄ załączone w zestawach. Ja kupiłem różne, całkiem ciekawe można znaleźć w Leroy Merlin.


Po podłączeniu centralka przemówi do nas w pięknym, chińskim języku. Niestety, ni w ząb nie rozumiałem co chce mi przekazać ;)

Po włączeniu aplikacji MiHome wybrałem lokalizację Mainland i mogłem wybrać jakie urządzenie chcę sparować - na początek Gateway.


Parowanie jest proste - postępujemy zgodnie z instrukcjami aplikacji - trzy kroki, zgodnie z kolorami na centralce.



Po udanym procesie parowania oraz aktualizacji oprogramowania mamy od razu dostęp do różnych funkcji centralki, które nie są tak ubogie jakby się mogło wydawać:
- nocne światło RGB z możliwością dopasowania koloru oraz jasności
- głośnik i radia internetowe. Da się załadować inne niż chińskie, ale o tym albo w innym wpisie, albo zaktualizuję ten.
- zdarzenia, zegar, ustawianie czasu włączenia/wyłączenia


Sama centralka jako taka w docelowym miejscu interesuje mnie dużo mniej niż termometr, dlatego od razu zabrałem się do połączenia Temperature and humidity sensor. Tutaj również wystarczyło przycisnąć stylowy przycisk na 5 sekund i automatycznie został dodany.


W efekcie mam na bieżąco temperaturę dostępną z każdego miejsca w którym jestem a możliwością przeglądania historii. Cel osiągnięty!


Dodatkowo można dodawać automatykę do centralki:
- gdy pojawimy się w domu
- gdy wychodzimy
- gdy wstajemy
- gdy śpimy
- wyzwalanie alarmu czujnikami - na przykład w przypadku otwarcia drzwi gdy śpimy

Wszystkie urządzenia od Xiaomi integrują się ze sobą, możemy więc na przykład włączyć światło w centralce gdy opaska Mi Band wykryje, że wstaliśmy.





Powodzenia w używaniu i instalowaniu!

W kolejnych wpisach zaawansowany Dashticz oraz podpinanie pozostałych elementów Xiaomi do Domoticz.

środa, 20 września 2017

Dashticz - spełnienie marzeń maniaka gadżetów ;)

W jednym z poprzednich postów opisałem front-end do Domoticz - framb0ise.

Jest on bajecznie prosty w instalacji i konfiguracji, co jest także jego minusem - możliwości są ograniczone. Warto zająć się innym, potężnym już w moim mniemaniu, narzędziem - Dashticz.

Instalacja i uruchomienie jest proste, osadzenie Ulubionych i automatyczne ułożenie ikonek również. Ciekawie zaczyna się robić, gdy chcemy dashboard dostosować do naszych potrzeb. I to opiszę w tym i kolejnym poście. Temat jest na tyle bogaty, że lepiej rozbić go na dwa osobne - dla amatorów i zaawansowanych :)

Po zalogowaniu się do terminala przechodzimy do domoticz/www

git clone https://github.com/robgeerts/dashticz_v2

cd domoticz/www/<dashticzv2 folder>/custom/
cp CONFIG_DEFAULT.js CONFIG.js

Aby zaktualizować wersję, wystarczy dać polecenie.
git pull

WAŻNE aby wcześniej zrobić kopię zapasową swojej konfiguracji.

W najprostszej konfiguracji wystarczy usunąć linie komentarzy /* */ z pliku CONFIG.js i powinniśmy już cieszyć się pulpitem z naszymi Ulubionymi (czyli urządzeniami dodanymi do Ulubionych w Domoticz) elementami.

Powyższa zaznaczona część zdania jest bardzo ważna! Często wiele osób jest zaskoczona tym, że ich zmiany nie działają. Domyślnie cały CONFIG.js jest opatrzony komentarzem (tak to się , który powoduje, że Dasthicz NIE WIDZI zmian, które wprowadzacie).

Można też użyć najprostszego pliku:
var config = {}
config['language'] = 'pl_PL'; //lub: en_US
config['domoticz_ip'] = 'http://IP:Port';
config['domoticz_refresh'] = '5';
config['dashticz_refresh'] = '60';

Ale my jesteśmy ambitni i nasz początkowy ekran będzie wyglądał następująco:

Dla wyjaśnienia - na powyższym zrzucie ekranu wyłączyłem Ulubione, żeby nie zaśmiecić ekranu. Trochę zbyt dużo u mnie już tego jest :)

Tak dla pewności, aby dostać się do Dashticz po jego zainstalowaniu trzeba wejść na adres http://IP_Domoticz/dashticz_v2/index.html

Aby to osiągnąć musimy wrzucić do CONFIG,js następujący tekst

var config = {}
var _BACKGROUND_IMAGE = 'bg1.jpg'
config['domoticz_ip'] = 'http://IP:Port';
config['app_title'] = 'Dashticz';
config['domoticz_refresh'] = '5';
config['dashticz_refresh'] = '60';
config['language'] = 'en_US';
config['timeformat'] = 'DD-MM-YY HH:mm';
config['wu_api'] = 'xxxxxxxx';
config['wu_city'] = 'City';
config['wu_name'] = 0;
config['wu_country'] = 'PL';
config['auto_positioning'] = 1;
config['use_favorites'] = 1;
config['last_update'] = 1;
config['hide_topbar'] = 0;
config['hide_seconds'] = 1;
config['use_fahrenheit'] = 0;
config['use_beaufort'] = 0;
config['static_weathericons'] = 0;
config['hide_mediaplayer'] = 0;

var buttons = {} 
buttons.radio = {width:12, image: 'img/radio_on.png', title: 'Radio', url: 'http://rmf.fm'} 
buttons.news = {width:12, icon: 'fa-newspaper-o', title: 'News', url: 'http://news.gazeta.pl'} 
buttons.log = {key:'log', width:12, icon:'fa-microchip', title: 'Domoticz Log', log:true, level: 2}

Pozwolę sobie objaśnić poszczególne elementy, przyda się to do późniejszego (bardziej zaawansowanego) konfigurowania pulpitu.

var _BACKGROUND_IMAGE = 'bg1.jpg'
Zmienna opisująca nazwę pliku z tłem dla Dashticz. W folderze <dashticz>/img znajduje się wiele przykładowych plików z tłami do wykorzystania. Oczywiście nic nie stoi na przeszkodzie, aby użyć swoich, ale o tym w kolejnym wpisie

config['domoticz_ip'] = 'http://IP:Port';
Standard - IP i port Domoticz

config['app_title'] = 'Dashticz';
Tytuł aplikacji, który będzie wyświetlany na pasku tytułowym

config['domoticz_refresh'] = '5';
config['dashticz_refresh'] = '60';
Kolejno - interwał odświeżania danych z Domoticz oraz odświeżania samego Dashticz

config['language'] = 'en_US';
Język w jakim będzie się z nami komunikować Dashticz - na przykład en_US lub pl_PL

config['timeformat'] = 'DD-MM-YY HH:mm';
Format czasu używany w Dashticz

config['wu_api'] = 'xxxxxxxx';
config['wu_city'] = 'City';
config['wu_name'] = 0;
config['wu_country'] = 'PL';

Klucz API Weather Underground, dzięki któremu zobaczymy ikony z prognozą pogody

Dla jasności - klucz do API Weather Underground możemy uzyskać na ich stronie: https://www.wunderground.com/weather/api/. Darmowa subskrypcja powinna być dla nas wystarczająca (przy okazji - mam nadzieję, że dodaliście go w Domoticz, chociaż osobiście korzystam ostatnio częściej z DarkSky).


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.





config['auto_positioning'] = 1;
config['use_favorites'] = 1;
Dwie BARDZO ważne opcje, które na początku mogą sprawić trudności. Ważne jest aby były włączone, jeżeli chcecie uruchomić Dashticz 'na szybko'. Pierwsza poinformuje system, żeby automatycznie ułożyć ikony, druga, żeby użyć Ulubionych zdefiniowanych w Domoticz.

config['last_update'] = 1;
Czy pokazywać czas aktualizacji naszych czujników?

config['hide_topbar'] = 0;
Ukrycie górnego paska

config['hide_seconds'] = 1;
Pokazanie sekund na zegarze

config['use_fahrenheit'] = 0;
config['use_beaufort'] = 0;
Czy używać stopni Celsjusza i skali Beauforta?

config['static_weathericons'] = 0;
Czy ikony pogody powinny być animowane?

config['hide_mediaplayer'] = 0;
Czy ukrywać ikony odtwarzacza multimedialnego, jeżeli nic nie jest odtwarzane?

var buttons = {} 
buttons.radio = {width:12, image: 'img/radio_on.png', title: 'Radio', url: 'http://rmf.fm'} 
buttons.news = {width:12, icon: 'fa-newspaper-o', title: 'News', url: 'http://news.google.pl'} 
buttons.log = {key:'log', width:12, icon:'fa-microchip', title: 'Domoticz Log', log:true, level: 2}

Pierwszy - pozwoli wyświetlić po naciśnięciu stronę z radiem internetowym, drugi stronę z wiadomościami, trzeci - log Domoticz. To tak w ramach ciekawostki.

To tyle na początek. Dopiero zaczynamy się jednak rozkręcać, bo możliwości są ogromne!

Edit: Część druga
Oraz Cześć trzecia

wtorek, 19 września 2017

Yeelight LED Bulb - żarówka sterowana WiFi

Właśnie dotarła. Jeszcze ciepła, ledwo co wyjęta z pudełka. Yeelight - niby zbyteczny bajer, ale przecież o takich gadżetach piszę na tym blogu :)


Połączenia z aplikacją nie ma sensu opisywać, bo się praktycznie robi samo - instalacja aplikacji, parowanie, działa. Sprawdźmy jednak jak będzie z podłączeniem do Domoticz. Wiki jest w tym temacie dość optymistyczne, sprawdzimy jednak sami...

Po pierwsze - w aplikacji trzeba włączyć Developer mode. Na początek mały problem. Nie w aplikacji MiHome, ale w Yeelight! Czyli tu już standardowo - logujemy się na konto Xiaomi, łączymy się z WiFi żarówki i wracamy do aplikacji. Podłączona, działa.

Wybieramy naszą żarówkę i w prawym górnym rogu wybieramy Settings. Tam jest możliwość włączenia Developer Mode.




Następnie Domoticz, sekcja Hardware, jak poniżej. Wiki sugeruje używanie stałych adresów IP, co w końcu muszę ustawić u siebie...



Czekamy dwie, trzy minuty i nasza żarówka pokaże się na zakładce Devices:

Dodajemy do wykorzystywanych urządzeń i cieszymy się zabawą! Brawo!



poniedziałek, 18 września 2017

OWL Micro +

Tym razem zajmę się urządzeniem, które jest mniej popularne, ale bardzo przydatne.

Owl Micro + jest miernikiem zużycia energii elektrycznej o bardzo prostej instalacji i ciekawej dla nas zasadzie przekazywania informacji.






Montujemy go dość prosto - w zależności od potrzeb i instalacji w domu zakładamy na żyłę prądową specjalną klemę. Ja, z powodu podzielenia instalacji na trzy fazy - zakupiłem dwie dodatkowe. W standardowym pakiecie jest tylko jedna klema plus czytnik oraz wyświetlacz.


Co ważne! Aby analizować każdą fazę osobno trzeba zakupić trzy centralki! W moim przypadku jednak chodziło o sumaryczne zużycie w domu, nie było więc to dla mnie problemem.

Reasumując - jednostka centralna do której podłączamy trzy czujniki podaje zużycie prądu jako sumę. Z nią, bezprzewodowo, kontaktuje się wyświetlacz. Fortunne okazało się to, że używa do tego pasma 433MHz. Protokół jest rozpoznawany bez problemu przez RFLink, instalacja okazała się więc formalnością i czystą przyjemnością.

Sprzęt został od razu rozpoznany przez RFLink i dodany do Domoticz na zakładce Devices.


Następnie odczyt z Domoticz pięknie wyświetlił wartość aktualną.


Oraz po pewnym czasie pokazał wykresy...


Kolejnym krokiem może być dodanie obsługi zdarzeń związanych z poborem prądu - wartości minimalne, maksymalne, powiadamianie o większym zużyciu gdy jesteśmy poza domem (co może znaczyć, że żelazko nie jest wyłączone) i inne podobne.

poniedziałek, 14 sierpnia 2017

Influx, Grafana


Tym razem mała aktualizacja konfiguracji InfluxDB i Grafana w stosunku do pisanych na blogach http://malinowepi.pl/ oraz https://blog.jokielowie.com/

Słowem wstępu: na początku standardowe raportowanie w Domoticz wydaje się wystarczać, ale z czasem przekonujemy się, że ich sposób przechowywania nie jest zbyt szczęśliwy do dokładniejszych analiz: dane po dniu są uśredniane i pozostają na przykład z temperatury trzy informacje: średnia, minimum w danym dniu i maksimum. Aby mieć dostęp do ciekawszych analiz trzeba albo tworzyć osobne skrypty które będą kopiowały dane do osobnych tabel, albo posiłkować się właśnie InfluxDB i wbudowanymi w Domoticz mechanizmami.

Próbując odzwierciedlić opis na wspomnianych blogach 1:1 napotkałem u siebie problemy oraz różnice, dlatego pozwoliłem sobie stworzyć wpis aktualny na sierpień 2017 :)

Zaczynamy od instalacji InfluxDB. Ostatnia wersja do sprawdzenia zawsze na https://portal.influxdata.com/downloads

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.3.2_armhf.deb
sudo dpkg -i influxdb_1.3.2_armhf.deb

sudo service influxdb start

I już działa.

Teraz wystarczy wpisać

influx

i później mamy albo opcję bardziej czasochłonną (instalacja Chronograf do obsługi baz), albo łatwiejszą, w zupełności wystarczającą. Poprzedni portal dostępny na porcie 8083 nie jest już wspierany.

CREATE DATABASE domoticz
CREATE USER domoticz WITH PASSWORD 'domoticz'

Następnie warto skonfigurować dla sprawdzenia chociaż jeden parametr do przesłania w Domoticz. Szczęśliwie, od oficjalnej wersji 3.8153, InfluxDB jest już wspierany wprost z menu, nie przez wysyłanie po http.





Aby upewnić się, że baza odbiera dane:

use domoticz
SHOW MEASUREMENTS

I tutaj już powinny się pokazać nasze miary: temperatura, status czy wilgotność.

Wychodzimy przez quit

Następnie Grafana. Niestety, na Raspberry Pi nie jest oficjalnie wspierana, dlatego trzeba się posiłkować https://github.com/fg2it/grafana-on-raspberry

Edit: Miałem problemy z pobraniem poprawnej wersji, dlatego dopisuję komentarz.

Pobrać możemy dwie wersje: dla Pi1 i Pi2,3.

Dla Pi1 znajdują się pod linkiem:
https://dl.bintray.com/fg2it/deb-rpi-1b/main/g/


Dla Pi2,3 tutaj:
https://dl.bintray.com/fg2it/deb/main/g/



Musicie pobrać link, który tam jest dostępny wraz z ostatnią wersją i odpowiednio wkleić poniżej:

wget https://dl.bintray.com/fg2it/deb-rpi-1b/main/g/grafana_4.6.2_armhf.deb

sudo apt-get install -y adduser libfontconfig

sudo dpkg -i grafana_4.6.2_armhf.deb

Zgodnie z sugestią instalatora dopisujemy:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server

sudo /bin/systemctl start grafana-server

Na koniec podajemy parametry w Grafana, użytkownik admin, admin i możemy korzystać z Dashboardów. Grafana domyślnie instaluje się na porcie 3000!

wtorek, 27 czerwca 2017

Licznik błyskawic w Domoticz. Wpis nieaktualny - serwis nie działa.

Dzień dobry!

Dzisiaj kolejny skrypt w stylu 'nie jest mi to do niczego potrzebne, ale skoro można, to czemu nie'...

Ponownie, korzystając z uprzejmości użytkowników forum Domoticz, skonfigurowałem i uruchomiłem program, który odczytuje ze strony ilość wyładowań atmosferycznych w zadanym dystansie.

Edytowane: niestety strona www.onweerdetectie.com nie udostępnia informacji o błyskawicach. Zostawiam jednak wpis, może komuś się przyda do nauki Pythona.

Instalacja i konfiguracja jest prosta i szybka. W sumie jedyne co musimy zrobić, to założyć wirtualny czujnik (czyli najpierw zakładka hardware, później Create Virtual Sensors).



Ważne jest, aby skonfigurować zmienne server, port, deviceIdx, distanceRange. Jeżeli w Domoticz macie skonfigurowane koordynaty GPS, skrypt je stamtąd pobierze. Jeśli nie - trzeba je podać ręcznie. Moim zdaniem jednak i tak są potrzebne, aby mieć informację o wschodach/zachodach słońca.

Poniżej skrypt do wklejenia i zmiany:

# Following libraries in python are needed : json, yaml,math,time,requests
# This script will load an external json file that contact for europe the lightning information and will send it to Domoticz when it's
# inside the distance range

import math
import requests
import json
import os
from datetime import datetime

# Domoticz server settings
server = "http://192.168.1.200"
port = 80
deviceIdx = 154

# Location to import the lightning info
jsonUrl = "http://www.onweerdetectie.com/domoticz_bo.json"

# GPS location and distance to calculate
#latHome = xx.xxxxxx
#lngHome = xx.xxxxxx
distanceRange = 10  # Distance in km

# Try to get GPS location from domoticz
try:
    data = json.loads(
        requests.get(
            "%s:%d/json.htm?type=settings" %
            (server, port)).content)
    latHome = float(data['Location']['Latitude'])
    lngHome = float(data['Location']['Longitude'])
except:
    pass


# Location distance calculation

def distance(lat1, lng1, lat2, lng2):
    radius = 6371

    dLat = (lat2 - lat1) * math.pi / 180
    dLng = (lng2 - lng1) * math.pi / 180

    lat1 = lat1 * math.pi / 180
    lat2 = lat2 * math.pi / 180

    val = math.sin(dLat / 2) * math.sin(dLat / 2) + math.sin(dLng / 2) * \
        math.sin(dLng / 2) * math.cos(lat1) * math.cos(lat2)
    ang = 2 * math.atan2(math.sqrt(val), math.sqrt(1 - val))
    return radius * ang

last = 0
if os.path.exists("/tmp/last_lightning.txt"):
    f = open("/tmp/last_lightning.txt")
    last = int(f.read())
    f.close()

z = requests.get(jsonUrl)
data = json.loads(z.content)
value = 0
ignored = 0
for pos in data:
    time_, lat, lng = pos
    distanceBetween = distance(latHome, lngHome, lat, lng)
    if (distanceBetween <= distanceRange):
        if (time_ > last):
            value += 1
        else:
            ignored += 1

f = open("/tmp/last_lightning.txt", "w")
f.write(str(time_))
f.close()

print ("Found %d matches -- %s" %
       (value, datetime.strftime(datetime.now(), "%c")))
print ("%d old matches were ignored -- %s" %
       (ignored, datetime.strftime(datetime.now(), "%c")))

requests.get("%s:%d/json.htm?type=command&param=udevice&idx=%s&svalue=%d" % (server, port, deviceIdx, value))

Ja zapisałem go w /home/pi/domoticz/scripts/python/lightning.py

Później wpis do cron, wygodniej było mi go uruchamiać co 15 minut.

crontab -e

*/15 * * * * sudo python /home/pi/domoticz/scripts/python/lightning.py

Działa, cieszy.


poniedziałek, 12 czerwca 2017

Czas drogi do pracy/domu w Domoticz


Tym razem mała, przydatna ciekawostka dla osób, które dojeżdżają do pracy trochę dalej niż kilka kilometrów - podawanie czasu dojazdu jako element w Domoticz. Za przykładem użytkownika Mastair z forum Domoticz.

Idea bardzo mi się spodobała, szczególnie dla żony, która do pracy na kilkadziesiąt kilometrów. Oczywiście można odpalić Google Maps i sprawdzić w nich, ale planując tablet na ścianę z Domoticz i kalendarzem naszej rodziny - taki gadżet może być dla niej przydatny.

Na 'dzień dobry' będziemy potrzebować zarejestrowania się jako Google developer i pozyskania klucza do API (tak ogólnie - interfejs programistyczny). Polling interval (czas co jaki jest odpytywany Google) nie powinien być zbyt mały, ponieważ bezpłatne jest 2500 zapytań dziennie.

https://developers.google.com/maps/documentation/directions/get-api-key

Lub posługujemy się kodem jak poniżej.

"""
<plugin key="TravelTimes" name="Travel Times" author="mastair" version="1.0.0">
    <params>
        <param field="Mode1" label="From address" width="200px" required="true"/>
        <param field="Mode2" label="To address" width="200px" required="true"/>
        <param field="Mode5" label="Google API Key" width="200px" required="true"/>
        <param field="Mode6" label="Polling interval (s)" width="40px" required="true"/>
    </params>
</plugin>
"""
import Domoticz
import json
import urllib.request
import urllib.parse

#variables
mode            = "driving"
directionsURL   = "https://maps.googleapis.com/maps/api/directions/json?origin=%s&destination=%s=&transit_mode=driving&departure_ti$
defaultPollingInterval = 120

def onStart():
    Domoticz.Debug("onStart called")

    if (len(Devices) == 0):
        Domoticz.Device(Name="Travel time", Unit=1, TypeName="Custom", Options={"Custom": "1;minutes"}).Create()
        Domoticz.Device(Name="Travel delay", Unit=2, TypeName="Custom", Options={"Custom": "1;%"}).Create()

    Domoticz.Heartbeat(pollingInterval())
    return True

def onHeartbeat():
    updateSensors()
    return True

def updateSensors():
    try:
        Domoticz.Debug("getDelay called")

        # Call Directions API
        url = directionsURL % (urllib.parse.quote(fromAddress()), urllib.parse.quote(toAddress()), apiKey())
        request = urllib.request.urlopen(url)
        data = json.loads(request.read().decode('utf-8'))

        if "error_message" in data:
            Domoticz.Error("Error retrieving travel times from Google Maps API: %s" % data["error_message"])
            return

        # Get durations
        normal_duration = int(data["routes"][0]["legs"][0]["duration"]["value"]/60.0)
        current_duration = int(data["routes"][0]["legs"][0]["duration_in_traffic"]["value"]/60.0)
        delay = round((float)(current_duration - normal_duration)/normal_duration*100)

        # Update devices
        if 1 in Devices:
            Devices[1].Update(nValue = current_duration, sValue = str(current_duration))

        if 2 in Devices:
            Devices[2].Update(nValue = delay, sValue = str(delay))
    except:
        Domoticz.Error("Error retrieving travel times from Google Maps API")

####### GETTERS FOR PARAMETERS ########
def pollingInterval():
    try:
        return int(Parameters["Mode6"])
    except:
        Domoticz.Error("Error converting polling interval to integer, using %s seconds as polling interval" %defaultPollingInterval)
        return defaultPollingInterval

def fromAddress():
    return Parameters["Mode1"]

def toAddress():
    return Parameters["Mode2"]

def apiKey():
    return Parameters["Mode5"]

############## NOT USED ##############
def onStop():
    return True

def onConnect(Status, Description):
    return True

def onMessage(Data, Status, Extra):
    return True

def onCommand(Unit, Command, Level, Hue):
    return True

def onNotification(Name, Subject, Text, Status, Priority, Sound, ImageFile):
    return True

def onDisconnect():
    return True


Zapisujemy na przykład w /home/pi/domoticz/plugins/TravelTimes pod nazwą plugin.py.

Później jeszcze nadanie odpowiednich praw:

sudo chmod 755 /home/pi/domoticz/plugins/TravelTimes/plugin.py

Konieczny jest restart Domoticz, aby pojawił się nowy dodatek. Gdy już będziemy go mieli, po prostu wpisujemy:
- Skąd (zasady identyczne jak przy wpisywaniu adresów w Google maps)
- Dokąd
- Klucz API Google
- Czas, co jaki Domoticz ma odpytywać Google



środa, 10 maja 2017

Frontend do Domoticz - framb0ise

Ostatnio na forum Domoticz pojawiły się dwa fantastyczne 'front-endy' do niego. Czyli krótko mówiąc dodatkowe strony, które obsługują elementy Domoticz, ale w ładniejszy, bardziej graficzny sposób.

Jednym z nich jest Framb0ise - z ekspresową instalacją i kilkoma ciekawymi funkcjami. Świetnie nadaje się do podglądu/sterowania elementami w domu z tableta lub komórki.

Kod znajdziemy na stronie https://github.com/safi78/framb0ise, wystarczy go sklonować według podanej instrukcji, najlepiej do folderu www Domoticz.

Bardzo przypadła mi do gustu opcja włączenia kanału RSS z wiadomościami oraz włączenia podglądu kalendarza Google - dla domowników jak znalazł, aby zorganizować czas.

Kod opiera się na pomieszczeniach stworzonych w Domoticz - jeżeli nie chcemy, aby któryś z nich był widoczny, wystarczy przed jego nazwą dodać znak $, a stworzyć inne, które będą pasowały do naszej strony.



Z ciekawostek - pogoda opiera się na dodatku DarkSky, po zarejestrowaniu wystarczy podać w Domoticz swoje położenie. Niestety, nie są u nas dostępne informacje o pogodzie z animacjami, oraz ruch uliczny - to tylko w Holandii.


Interesującą możliwością jest też wybór przechowywania parametrów strony - albo lokalnie (jeżeli chcemy mieć na przykład inny kanał RSS lub kalendarz), lub w konfiguracji Domoticz, wtedy będzie dostępny dla wszystkich.

piątek, 21 kwietnia 2017

Czujnik otwarcia/zamknięcia drzwi w Domoticz

Dzisiaj krótki wpis, bo i temat nie najtrudniejszy, aczkolwiek z małym 'haczykiem'.

Dotarł do mnie ostatnio czujnik otwarcia/zamknięcia drzwi Kerui. Bardzo estetyczne, dobrze działające urządzenie, miałem z nim jednak pewien zgryz w Domoticz. Wysyła osobny sygnał otwarcia drzwi i osobny zamknięcia - co jest akurat dobrym rozwiązaniem, ale nie wiedziałem na początku jak sobie z tym poradzić.

Czujnik Kerui

Z RFLink zadziałał od razu, jak jednak oprogramować osobne sygnały na jednym wskaźniku? 


Okazało się, że trzeba pod sygnał otwarcia podpiąć Sub/Slave Device z sygnałem zamknięcia. Czyli, mówiąc prosto - pod sygnał Drzwi otwarte podpiąłem Drzwi zamknięte.



Działa i cieszy.

P.S. Mała poprawka/sugestia. Mimo tego, że stan ikon poprawnie się zmieniał, nie mogłem ustawić notyfikacji e-mail o otwartych drzwiach. Czego bym nie robił, e-mail przychodził wyłącznie po ich zamknięciu. Zmieniłem typ na Contact i poszło 'od strzału'

wtorek, 14 marca 2017

Dataplicity - zdalny dostęp do Raspberry Pi. I przy okazji do Domoticz


Produktywny dzień :)

Po zmianie providera internetu stanąłem przed problemem dostania się do Raspberry Pi oraz Domoticz bez zewnętrznego IP. Za takowy adres musiałbym płacić. Warto czasem sprawdzić alternatywy.

Natrafiłem na serwis Dataplicity, który jest dedykowanym rozwiązaniem dla Raspberry Pi.

Do serwisu trzeba się zarejestrować, po potwierdzeniu e-mailem nasze oczy zobaczą kod, który powinniśmy bezpośrednio wprowadzić do terminala Raspberry Pi.

Dodawanie nowego Raspberry Pi

Po kilkunastu sekundach powinniśmy zobaczyć naszą Malinę dostępną w panelu:




Tak proste, że aż zadziwiające. Mamy dostęp do SSH oraz, po odblokowaniu tak zwanego Wormhole do strony na porcie 80. W moim przypadku Domoticz.


Więcej informacji na stronie http://docs.dataplicity.com/docs/. Generalnie instalujemy na naszym Raspberry szyfrowany serwis, który pozwala na zdalny dostęp.

Pozostaje oczywiście mentalny problem dostępu do naszego sprzętu z poziomu obcego serwisu. Jak dla mnie nie jest to krytyczne, rozumiem że dla części z Was może to wykluczyć go z kręgu zainteresowania.

Badanie szybkości łącza internetowego

Dzień dobry!

Ciekawym dodatkiem do naszego Domoticz może być pomiar prędkości łącza internetowego. 

Zrobiłem to na przykładzie zaproponowanym na blogu https://raspberrywpraktyce.wordpress.com

Pierwszym krokiem jest oczywiście standardowe 

sudo apt-get update oraz 
sudo apt-get upgrade

Po tych dwóch komendach możemy zainstalować speedtest

sudo apt-get install speedtest-cli

Zasada jest prosta - wysyłamy wartości speedtest do pliku tekstowego, później przetwarzamy je i ładujemy za pomocą JSON do wartości wirtualnych czujników (dobierając oczywiście odpowiednie ID):

- Hardware




- Devices (typ Custom sensor)







Będąc w folderze gdzie zainstalowany jest Domoticz przechodzimy do scrtips/

sudo nano DomoticzPing.sh

Później (odpowiednio edytując parametry) wpisujemy:

#!/bin/bash
#Tutaj wstawcie wlasne wartosci
host=192.168.1.xxx #Adres IP Raspberry Pi
port=xxx #Numer portu
username=
password=
pingidx=111 #Tu Wasze ID
downloadidx=112 #Tu Wasze ID
uploadidx=113 #Tu Wasze ID

# no need to edit
speedtest-cli --simple > output.txt
ping=$(cat output.txt | sed -ne "s/^Ping: \([0-9]*\.[0-9]*\).*/\1/p")
download=$(cat output.txt | sed -ne "s/^Download: \([0-9]*\.[0-9]*\).*/\1/p")
upload=$(cat output.txt | sed -ne "s/^Upload: \([0-9]*\.[0-9]*\).*/\1/p")

#Ponizsze tylko jezeli uruchamiacie manualnie
#echo "ping = $ping ms"
#echo "download = $download Mbps"
#echo "upload =  $upload Mbps"

#Esencja
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$pingidx&svalue=$ping";
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$downloadidx&svalue=$download";
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$uploadidx&svalue=$upload";

Po zapisaniu:

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

Oraz aktualizacja Cron:
crontab -e

Dodajemy
@hourly sudo ~/domoticz/scripts/DomoticzPing.sh


Commodore Plus/4 - ciekawy pomysł, ciekawy komputer

Dzień dobry! Jakiś czas temu trafił do mnie kolejny komputer ze ‘stajni’ Commodore - Plus/4. Miałem ochotę go mieć w kolekcji już od dawna, ...