1 (edytowany przez bbarwik 2016-02-17 19:20:32)

Temat: HomeServices by BBarwik v1.0

Witam.

Jako że moje skrypty do stacji meteo ( http://eko.one.pl/forum/viewtopic.php?id=7073 ), wydane dość dawno bo w sumie to aż 2 lata temu, zdobyły dość sporą popularność postanowiłem opublikować nowy zestaw skryptów do sterowania domem które używam.
Dość długo trzeba było czekać, nie mieszkam już w domu jednorodzinnym tylko w mieszkaniu w Wawie, więc aktualizuje/usprawniam te systemy dopiero jak pojawiam się u siebie w domu.

Aktualnie w zestawie HomeServices znajdują się:
- Wykres z temperaturami
- Sterowanie przekaźnikami
- Automatyczne włączanie przekaźnika wg. danych z termometrów (sterowanie ogrzewaniem)
- Aplikacja na androida do sterowania

Do pełnego działania skryptów będą potrzebne następujące rzeczy:
- Urządzenie które pozwoli odczytać temperaturę lub inne wartości z sensorów. Ja stosuje MP00202 i termometry DS18B20
- Urządzenie sterujące przekaźnikami, z możliwością przełączenia przekaźnika i odczytania jego stanu. Ja używam http://allegro.pl/modul-8-przekaznikow- … 34811.html
- Serwer www, php-cli + sterowniki potrzebne do kontroli urządzeń usb.
- Przyda się z 1 mb miejsca na dysku ;d
- Podstawowa znajomość php

Na początek trzeba pobrać archiwum z adresu http://bbarwik.com/control.zip (Ostatnia aktualizacja 30 grudnia)

Struktura plików w nim:
data/ - folder na zapisywanie danych przez skrypty
sensors/ - miejsce na zapis historii temperatury
www/ - folder z plikami dostępnymi z przeglądaki
www/js/ - skrypty js do wykresów temperatury, można przerzucić na inny serwer i zaoszczędzić 300 kb
www/meteo.php - skrypt php wyświetlający wykresy temperatury
www/piec.php - skrypty php do sterowania piecem
www/meteo_data.php - skrypt wysyłający dane dla wykresów
www/index.php - strona główna, sterowanie przekaźnikami, aktualna temperatura
www/api.php - api do działania aplikacji na telefonie
config.php - praktycznie jedynie plik który trzeba edytować, konfiguracja skryptów
functions.php - dodatkowe funkcje
cron.php - skrypt który trzeba dodać do crona aby wszystko działało
convert.php - konwerter starych plików z temperaturami do nowego formatu
digitemp.conf - plik konfiguracyjny dla digitempa

Teraz trzeba to wszystko wrzucić na serwer, sugeruje utworzeniu folderu /control i wrzucenie wszystkiego do niego, api ścieżki do plików wyglądały następująco: /control/www/index.php, /control/digitemp.conf, itd...

Trzeba teraz skongurować digitempa aby dane przez niego zwracane miały format ID:WARTOŚĆ, przykład:

28B4562E0500009C:38.125000
28DC502E05000062:43.312500
281E447405000033:22.000000
28716A2E0500004D:35.250000
2873702E050000E2:41.750000
2807772E050000F7:37.187500

W tym celu kopiujemy swój config digitempa (/root/.digitemprc) do /control/digitemp.conf i zmieniamy wartość LOG_FORMAT na:

LOG_FORMAT "%R:%C"

Ok, teraz pora na konfiguracje /control/config.php
Na początek do ustawienia jest, hasło. Zmieniamy wartość hasła na takie jakie nam odpowiada

$password = "nasze_haslo";

Teraz sekcja switches, czyli nasze przekaźniki. Zakładam domyślnie że mamy ich 8, może być dowolna ilość tylko trzeba potem będzie edytować funkcje w dalszej części configa.

$switches = array(
    "1" => array("name" => "Przekaźnik 1", "www_name" => "Przekaźnik 1", "type" => 1, "timers" => array(15,30,60,120), "max_time" => 240, "timer" => "/control/data/timer_1", "custom_state" => "/control/data/cstate_1"),
    "2" => array("name" => "Przekaźnik 2", "www_name" => "Przekaźnik 2", "type" => 1, "timers" => array()),
    "3" => array("name" => "Przekaźnik 3", "www_name" => "Przekaźnik 3", "type" => 2, "timers" => array()),
    "4" => array("name" => "Przekaźnik 4", "www_name" => "Przekaźnik 4", "type" => 3, "timers" => array()),
    "5" => array("name" => "Przekaźnik 5", "www_name" => "Przekaźnik 5", "type" => 1, "timers" => array(15,60), "timer" => "/control/data/timer_5"),
    "6" => array("name" => "Przekaźnik 6", "www_name" => "Przekaźnik 6", "type" => 3, "timers" => array()),
    "7" => array("name" => "Przekaźnik 7", "www_name" => "Przekaźnik 7", "type" => 1, "timers" => array(15,60), "timer" => "/control/data/timer_7"),
    "8" => array("name" => "Przekaźnik 8", "www_name" => "Przekaźnik 8", "type" => 2, "timers" => array())
);

Wszystkie przekaźniki muszą zawierać wartości name, www_name, type i timers (jako array). Ich kolejność może być dowolna, nie ma co sugerować się wartościami od 1 do 8. Będą wyświetlane na stronie i aplikacji wg. ów kolejności.
Pierwsza wartość, czyli klucz (to przed =>) to id przekaźnika. Standardowo wartości od 1 do 8. Opis innych pól:
name - nazwa przekaźnika wyświetlana w aplikacji na telefonie
www_name - nazwa przekaźnika wyświetlana w przeglądarce
type - rodzaj przekaźnika. 0 - nie działa, 1 - przekaźnik typu on/off, 2 - przekaźnik typu switch, jedyne działanie to przełącz stan (to wyłącznika schodowego), 3 - signal (załącza przekaźnik i po 1 sec. wyłącza, do np. sterowania bramą), 5 - kategoria (do aplikacji na telefonie, grupuje przekaźniki, nie wymaga klucza i timers)
times - możliwość czasowego włączenia przekaźnika, najlepiej dawać wielokrotności dwójki w array (żeby ładnie to w aplikacji na
telefonie wyglądało). Działa póki co tylko dla type = 1, ale przy type 0,2,3 jest to pole wymagane jako array();
max_time  - maksymalny czas działania w minutach przy standardowym włączeniu, wymagany dla pieca
timer - plik z plikiem w którym będzie czas o którym przekaźnik ma się wyłączyć. Jak używamy włączenia czasowego lub dotyczy pieca to jest wymagany
custom_state - plik w którym będzie przechowywany specjalny stan przekaźnika, w praktyce tylko dla pieca, jeśli będzie działał wg. jakiegoś programu to jego nazwa będzie w nim

Kolejne wartości dotyczą sensorów (termometrów):

$sensors_state_file = "/control/data/last_meteo";
$sensors_state_history_dir = "/control/sensors";
$sensors_data_limit = 20000;
$sensors = array(
    "LABEL_TERMOMETRY" => array("type" => 2, "name" => "Termometry"),
    "281E447405000033" => array("type" => 1, "name" => "Przykładowy", "visible" => true),
);

$sensors_state_file - plik z ostatnim odczytem danych z termometrów, sugeruje nie zmieniać
$sensors_state_history_dir - katalog z plikami w których będzie historia temperatur, sugeruje nie zmieniać
$sensors_data_limit - limit pomiarów dla wykresu w meteo.php

$sensors - tutaj wrzucamy termometry, klucz to id termometra które zwraca digitemp, opis pól w array:
type - 1 to termometr, 2 to kategoria, wartość LABEL_TERMOMETRY sugeruje zostawić, oddziela termometry w apce na androidzie, można dodać własne kategorie
name - nazwa termometru/kategorii
visible - czy wyświetlać domyślnie na wykresie

Kolejny element, ogrzewanie:

$heating = array(
    "enabled" => true,
    "id" => 1,
    "programs" => "/control/data/heating_programs"
);

wartości:
enable - true/false, czy sterowanie ogrzewaniem działa
id - id przekaźnika odpowiedzialnego za ogrzewanie
programs - plik z programami dla pieca, sugeruje nie zmieniać

I ostatnie zmienne:

$extra_links = array(
    "meteo.php" => "Wykresy temperatur"
);

Są to dodatkowe linki wyświetlane na dole w index.php

Trzeba będzie jeszcze trochę pozmieniać w funkcjach.
w

function get_state()

trzeba zmienić polecenie

system("/bin/RelayBoard /dev/ttyUSB1 get > /tmp/relay_state");

W praktyce jeśli używacie RelayBoard to zmieńcie /dev/ttyUSB1 na link wskazujący na wasze urządzenie oraz ścieżkę do pliku RelayBoard. Jak nie używacie relaybaord trzeba będzie jeszcze edytować 3 następne linijki, tak aby zmienna $state zawierała stan przekaźników.

w

function update_sensors_state()

zmieniamy

    system("digitemp_DS9097U -s /dev/ttyUSB0 -q -a -c /control/digitemp.conf > /tmp/digitemp");

na naszą komendę do digitempa, w praktyce należy zmienić jedynie digitemp_DS9097U na nasz model o ile mamy inny i  /dev/ttyUSB0 na ścieżkę do naszego urządzenia

w

function power_on($id,$time = -1,$extra = "") {


trzeba zmienić

        system("/bin/RelayBoard /dev/ttyUSB1 on ".($id)."");

Na polecenie które włączy u nas przekaźnik o id $id

w

function power_off($id) {

trzeba zmienić

        system("/bin/RelayBoard /dev/ttyUSB1 off ".($id)."");

Na polecenie które wyłączy u nas przekaźnik o id $id

w

function power_inv($id) {

trzeba zmienić

        system("/bin/RelayBoard /dev/ttyUSB1 inv ".($id)."");

Na polecenie które przełączy u nas przekaźnik o id $id (to jest akcja dla type = 2)

Powoli zbliżamy się do końca.

Konwersja starych danych z temperaturą na nowy format
Nowy format danych jest mocno zoptymalizowany. Dane są przechowywane w formacie binarnym, po 6 bajtów na jeden rekord. Jest to ponad 3x mniej niż w poprzedniej wersji. 1 termometr z zapisem co 10 min przez rok wygeneruje 315 KB danych.
Co prawda dałoby się to upchać jeszcze do 5 bajtów gdyby pozbyć się sekund i jednostek minut w wartości czasu, ale nie chciało mi się już tego robić big_smile

Trzeba uruchomić skrypt convert.php z dwoma parametrami, jeden to stary plik z danymi, a drugi to lokalizacja nowego pliku z danymi, przykład

/usr/bin/php-cli convert.php '/root/stary_plik.txt' '/control/sensors/281E447405000033'

Końcowa konfiguracja

Teraz należy dodać wpis do crona aby skrypt /control/cron.php uruchamiał się co minute (Danę z sensorów będą i tak zapisywane co 10 minut, komenda crontab -e)

* * * * * cd /control; /usr/bin/php-cli cron.php

I na koniec należy skonfigurować serwer www aby umożliwiał dostęp do /control/www, najłatwiej będzie zrobić to poleceniem:

ln -s /control/www /www/control

Należy pamiętać o tym że serwer musi obsługiwać skrypty php.

Dodawanie programów dla pieca:
1. Nazwa: dowolna
2. Warunki: tutaj musi być id termometru (masz podane id poniżej przy termometrach np. 28716A2E0500004D) znak porównawczy czyli <, >, = (ciekawe czy ktoś kiedyś użyje równości) oraz temperatura, kolejne termometry oddzielone enterem (muszą się wszystkie zgadzać by program został załączony). Przykłady
28716A2E0500004D < 18
28B4562E0500009C > 19.5
albo
281E447405000033 < 10.55
3. Ramy czasowe, przykłady (zachowaj format, różne ramy czasowe oddzielone enterem, od 0:00 do 23:59, nie można dać np. 23:00-7:00 tylko trzeba 23:00-23:59 <enter> 0:00-7:00):
12:00-16:00
19:30-23:30
albo
8:00-21:00
Reszty już raczej nie muszę opisywać wink

Zostaje jeszcze aplikacja na androida, pobieramy ją z adresu http://bbarwik.com/app.apk
Po instalacji, otwieramy i klikamy na ikonkę w prawym górnym roku, wprowadzamy adres:

http://nasz_serwer/control/api.php?pass=nasze_haslo

Załadują się wtedy informacje o przekaźnikach i termometrach.

Screeny:
http://bbarwik.com:88/screens/1.jpg
http://bbarwik.com:88/screens/2.jpg
http://bbarwik.com:88/screens/3.jpg
http://bbarwik.com:88/screens/4.jpg


Kontakt do mnie to bbarwik@gmail.com, proszę jednak unikać proszenia mnie o pomoc w konfigurowaniu bo zazwyczaj nie mam czasu na takie rzeczy. Ew. błędy i propozycje proszę przedstawiać w tym temacie, jak wrócę do domu w grudniu i będę rozwijał dalej ten system to wtedy się wszystkim zajmę. Chyba że będą jakieś błędy krytyczne to poprawię je od razu.

Byłoby miło gdyby osoby które korzystają z tego, podrzuciły link do swoich wykresów temperatury, dobrze by było wiedzieć że ktoś z tego korzysta wink

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

2

Odp: HomeServices by BBarwik v1.0

@BBarwik od kilku godzin użytkuje Twój pakiet HomeServices i pokuszę się o krótkie podsumowanie.

Ogólnie podoba mi się wszystko, widać praca przemyślana, bardzo przydatne narzędzie do sterowania, zarządzania domem, z możliwością rozbudowy. Dziękuję!

Moją szczególną uwagę zwróciło:

- zaawansowany harmonogram do sterowania piecem – przekaźnikiem, ustawiany bezpośrednio na stronie www
- włączanie na czas tzw. chwilówki, łatwość ich dodawania, modyfikacji
- różne kombinacie obsługi przekaźnika, on/off, switch, signal
- aplikacja na androida
- wykresy, nowe podejście do ukrywania, pokazywania poszczególnych termometrów, oraz zapis binarny, póki co wykresy ładują się dość szybko

Nawiązując do ewentualnych błędów, propozycji zmian, dalszej rozbudowy, poniżej moje sugestie:

1. Brakuje podobnego harmonogramu „Dodaj nowy program” dla pozostałych przekaźników. Myślę że wystarczyłby harmonogram zawierający dni tygodnia i godziny, bez zależności temperatury.
2. Kosmetyka, włączając przekaźnik np. na 15 min, zawsze czas początkowy, odliczanie wyświetlane na stronie jest większe o 1 minutę czyli powinno odliczać od 15 a odlicza od 16 min. Niby można to obejść ustawiając na 1 minutę mniej.
3. Kosmetyka, na stronie Domowy system sterowania, Termometry, bieżący odczyt temperatury wyświetlany jest po myślniku, przez co wygląda tak jakbym miał w pokoju minusową temperaturę „Pokój dzienny - 21.63 °C”. Nie udało mi się na szybko znaleźć gdzie to można zmienić.
4. Strona Domowy system sterowania: odświeża się co 5 sek. co generuje sporą ilość połączeń i niestety mój Lighttpd – fastcgi po czasie się wywala. Widzę że można to zmienić w plikach index.php i piec.php. Rozumiem że zmieniając tą wartość np. na 10 sek. zmieniam tylko czas odświeżania strony i w niczym to nie wpływa np. na czas w harmonogramie czy czas w chwilówkach ?

Krynio

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

3

Odp: HomeServices by BBarwik v1.0

1. Może w następnej wersji pod koniec grudnia to rozbuduje
2. Bo skrypt crona sprawdza stan timera co minute. To nie znaczy że będzie działało urządzenie dokladnie minutę dłużej tylko od 0 do 60 sekund dłużej niż powinno. Dlatego lepiej pokazywać że będzie działało trochę dłużej niż żeby miał kłamać iż jest wyłączone mimo że działa
3. W pobliżu foreach($sensors  będzie
4. Szukaj po refresh w plikach

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

4

Odp: HomeServices by BBarwik v1.0

Punkt 3 i 4 sobie poprawiłem.

Mam jeszcze kilka pytań dotyczących pieca i sterowania nim. Niestety do tej pory miałem do czynienia tylko ze zwykłymi tradycyjnymi piecami bez elektroniki...

1. Jest jeden piec. Piecem steruje tylko jeden przekaźnik, czyli włącza piec lub wyłącza.

2. Piec jest włączany lub wyłączany na podstawie zdefiniowanych programów w „Zaawansowane sterowanie piecem wraz z ustawianiem programów”  uwzględniając odczyty temperatury z różnych pomieszczeń np. (salon, kuchnia, pokój dziecka itd.).

3. Pomijając ramy czasowe, załóżmy że w programie dla pieca ustawiłem warunki temperatury: salon < 20, kuchnia < 18, pokój dziecka < 23. Czyli biorąc po uwagę zdefiniowane wartości piec się włączy jeżeli temperatura w którymś z w/w pomieszczeń spadnie poniżej zadanej wartości. Teraz kwestia której nie rozumiem. Piec po włączeniu będzie ogrzewał cały dom i w zasadzie zdefiniowane różne temperatury w różnych pomieszczeniach będą miały się nijak do faktycznej temperatury w tych pomieszczeniach. Chyba że czegoś nie wiem, może są piece - urządzenia które ogrzewają sekcjami, przez co można jakby ogrzewać dane pomieszczenie (nia) indywidualnie, coś w rodzaju klimatyzacji. Albo inaczej piec ogrzewa równo cały dom, lecz w pomieszczeniach przy grzejnikach są „Danfossy” z nastawioną temperaturą i po osiągnięciu danej temperatury grzejnik się „zakręca”.

4. OK, piec się włączył na podstawie harmonogramu w punkcie 3, pali się jest ciepło wink. Co dalej, rozumiem że wyłączy się po osiągnięciu zadanej temperatury na piecu ? I tym samym „Zaawansowane sterowanie piecem wraz z ustawianiem programów” nie steruje wyłączeniem pieca lecz tylko jego włączeniem?

Sorki za może głupie pytania, lecz tak to jest jak całe życie mieszka się w bloku i na starość myśli się o domku z piecem.

Krynio

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

5

Odp: HomeServices by BBarwik v1.0

Muszą być spełnione wszystkie podane warunki odnośnie temperatury w danej regule aby piec się włączył. Gdy jakiś z nich przestanie być spełniany wtedy piec się wyłączy. Jak chcesz żeby włączył się piec jeśli w jednym z trzech pokoi spadnie temperatura poniżej X to dodaj po prostu trzy reguły.

Nie można wyłączyć pieca za pomocą komendy wyłącz jeśli działa on z powodu jakiegoś programu. Należy wyłączyć program, wtedy piec również się wyłączy.

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

6

Odp: HomeServices by BBarwik v1.0

Próbuję przenieść Twoje skrypty na raspberry pi 2, lecz skrypt meteo.php zabija mi przeglądarkę. Nie wyświetlają się wykresy. Na rpi nie ma paczki php-cli, jest tylko php5-cli, ale nie ma do niej żadnej binarki. Korzystam tylko ze skrytpu meteo.php, tzn. skopiowałem całą zawartość control.zip na rpi, ale nie mam przełączników sterujących piecem.

TP-Link TL-WDR3600 v1.5 -  OpenWrt Chaos Calmer 15.05.1 with Luci +Microsoft LifeCam VX-3000
RaspberryPi 2 - OMV Stone Burner 2.0.15 +Creative SB Play +Medion OR24V +DVB-T Media-Tech MT4163  +MP00202AC +3xDS18B20 +HIH-4000-002 +MPXHZ6115A +Samsung SPF-85H +D-Link DUB-H7

7

Odp: HomeServices by BBarwik v1.0

Super projekt !  Też zamierzam go wdrożyć w przyszłym roku.
khain pisz o postępach z uruchomieniem na RPi2 bo się zastanawiam czy też go do tego nie kupić.

8

Odp: HomeServices by BBarwik v1.0

U mnie np. nie generują się pliki z danymi w katalogu /sensors, reszta się ładnie odbywa smile ->
https://temperatura.gniezno.pl/control/meteo.php

zrobilem recznie, ale tez nic sie nie dzieje - dałem prawa do zapisy dla katalogu itp.

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M

9

Odp: HomeServices by BBarwik v1.0

khain napisał/a:

Próbuję przenieść Twoje skrypty na raspberry pi 2, lecz skrypt meteo.php zabija mi przeglądarkę. Nie wyświetlają się wykresy. Na rpi nie ma paczki php-cli, jest tylko php5-cli, ale nie ma do niej żadnej binarki. Korzystam tylko ze skrytpu meteo.php, tzn. skopiowałem całą zawartość control.zip na rpi, ale nie mam przełączników sterujących piecem.

Bez linku do skryptu nie sprawdzę co jest nie tak.

zdzichu6969 napisał/a:

U mnie np. nie generują się pliki z danymi w katalogu /sensors, reszta się ładnie odbywa smile ->
https://temperatura.gniezno.pl/control/meteo.php

zrobilem recznie, ale tez nic sie nie dzieje - dałem prawa do zapisy dla katalogu itp.

Jeśli masz path na
$sensors_state_history_dir = "/control/sensors";
i jest utworzony folder sensors w /control to dość dziwna sprawa. Sprawdź prawda dostępu (chmod 777 /control -R)

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

10

Odp: HomeServices by BBarwik v1.0

Siemanko mordeczki. To co tutaj się wydarzyło, jest po prostu zajebiste. Czapki z głów dla Pana  bbarwika. Ja póki co dotarłem do stworzenia sobie czujnika temperatury do pieca C.O. na węgiel, ale tym sposobem mam zakupiony sterownik 1wire do czujników. Jedyne co będę potrzebował jeszcze, to przekaźniki smile. Z przyjemnością poczytam te wszystkie tutoriale i spróbuję sobie zrobić coś o podobnym kształcie. Zastanawiam się tylko nad jedną kwestią:

Jak i gdzie montowaliście te czujniki temperatury. W którym miejscu pokoju? Jak to macie obudowane? Tak, żeby było estetyczne i żeby nie było tego widać. Mam możliwość puszczenia kabli po elewacji, bo jeszcze nie mam otynkowanego domu.

Czy do sterowania piecem C.O. (Pompa, Dmuchawa) i do sterownika przekaźników wystarczy puszczenie jednej skrętki UTP do piwnicy? Chciałbym w przyszłości realizować przekaźnikami sterowanie bramą wjazdową, bramką (oprócz domofonu) no i bramą od garażu. Rozumiem, że do domofonu potrzebna skrętka, ale do bramy skrętka i zasilanie? Tak, żeby otworzyć można było z pilota, z domu i z aplikacji na androidka?


Można to wszystko odpalić na jednym routerze? Czy trzeba zastosować inny sprzęt? Udźwignie serwer www i php?

Tak będzie to wyglądało u mnie
http://i.imgur.com/DzY5NEz.jpg

11

Odp: HomeServices by BBarwik v1.0

Czujniki ja przygotowałem koło włączników przy drzwiach na wysokości ok 1,2m
Jak chcesz sterować bramą to się dowiedz jaki będziesz miał silnik i sterownik, przeważnie są dodatkowe styki na sterowanie ręczne i pod nie podpinasz przekaźnik. A domofon to będziesz musiał podać zasilanie na rygiel. Czyli pod sterowanie 4x0,5mm lub skrętka no i silniki wiadomo 230V, polecam kable ziemne.

12

Odp: HomeServices by BBarwik v1.0

@feru mógłbyś wrzucić jakieś foto jak to masz zrobione?

13

Odp: HomeServices by BBarwik v1.0

Ja jeszcze nie mam zrobione.

14

Odp: HomeServices by BBarwik v1.0

Witam,
U mnie się dzieje to samo co u @zdzichu6969
tzn nie generują/tworzą się pliki w katalogu /control/sensors.
prawa dostępu ustawione rekursywnie na 777 dla katalogu /control
Plik w /control/data tworzy się poprawnie.
Niestety nie wiem jak to zdiagnozować, bo php-cli nie wyświetla żadnych błędów.
Konwersja starej "bazy danych" się odbywa, tworzy się plik z jakąś zawartością, ale nie generuje się wykres smile
Najprawdopodobnie jakaś funkcja php nie jest obsługiwana, albo jest źle obsługiwana.
Ja mam PHP 5.4.27 ; BB ; router wdr3600
pozdrawiam.

15 (edytowany przez krynio 2016-01-23 11:48:39)

Odp: HomeServices by BBarwik v1.0

@cineks & @zdzichu6969

U mnie na Gargoyle PL 1.6.1.5 (82d71e5) działa. Na próbę tutaj moje pliki z odczytami (katalog sensor), należy zmienić nazwy plików (sensorów) na własne.

A poniżej pakiety które mam zainstalowane, związane z serwerem lighttpd + fastcgi

lighttpd - 1.4.30-2
lighttpd-mod-auth - 1.4.30-2
lighttpd-mod-cgi - 1.4.30-2
lighttpd-mod-fastcgi - 1.4.30-2
php5 - 5.4.5-3
php5-cgi - 5.4.5-3
php5-cli - 5.4.5-3
php5-fastcgi - 5.4.5-3
php5-mod-ctype - 5.4.5-3
php5-mod-dom - 5.4.5-3
php5-mod-gd - 5.4.5-3
php5-mod-hash - 5.4.5-3
php5-mod-iconv - 5.4.5-3
php5-mod-json - 5.4.5-3
php5-mod-mbstring - 5.4.5-3
php5-mod-pdo - 5.4.5-3
php5-mod-pdo-sqlite - 5.4.5-3
php5-mod-session - 5.4.5-3
php5-mod-simplexml - 5.4.5-3
php5-mod-sockets - 5.4.5-3
php5-mod-sqlite3 - 5.4.5-3
php5-mod-xml - 5.4.5-3
php5-mod-zip - 5.4.5-3
zoneinfo-core - 2011n-1
zoneinfo-europe - 2011n-1

Edycja
Przypomniałem sobie że kiedyś miałem podobny problem i @bbarwik znalazł przyczynę. Powodem był plik "highstock.js" który nie był poprawnie odczytywany jako utf-8 lokalizacja pliku /control/www/js/highstock.js
Pomogła zmiana kodowania na ansi np. za pomocą notepad++

Pozdrawiam.

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

16 (edytowany przez cineks 2016-01-23 21:30:43)

Odp: HomeServices by BBarwik v1.0

Dzięki za pliki.
Wykresy się generują poprawnie z Twoich plików.
Sęk w tym, że u mnie nie tworzą się te pliki.
Tak samo konwersja nie działa:(

Jaką ma zawartość plik "/tmp/relay_state"?
Mam inną płytkę sterującą i może udało by mi się
jakoś dopasować dane jakie dostaje do potrzeb programu.
Tak więc jak ktoś ma to niech podrzuci zawartość tego pliku.

pozdrawiam

17

Odp: HomeServices by BBarwik v1.0

Poniżej cała moja zawartość katalogu /control oraz plik relay_state znajdujący się w /tmp
http://zone.otzo.com/control.zip
http://zone.otzo.com/relay_state

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

18

Odp: HomeServices by BBarwik v1.0

Czy istnieje możliwość aby tylko i wyłącznie działała funkcja termometrów?
Jeśli tak, to czy ktoś może dysponuje taką wersją?

19

Odp: HomeServices by BBarwik v1.0

Dzięki @krynio
ale niestety nie dopasuje danych sad
za nadto nie znam się na php.
Tu są dane w hex zamieniane na dec ( tak mi si ę wydaje)
a ja dostaje tekstem  0 1
np 00101000 ; 3-ci i 5 działa.
i nie umiem dopasować kodu.
A pliki z historią temperatury do wykresów nadal się nie tworzą.
Szkoda.

20 (edytowany przez wojtula 2016-01-26 14:48:54)

Odp: HomeServices by BBarwik v1.0

Czy można częściej zapisywać pomiar temperatury np.: 6min?

Poza tym, nie wiem dlaczego ale wyniki albo sie dubluja albo cos jest nie tak: (nieaktualne - poprawiłem swój błąd)
http://s17.postimg.org/5zgsvwlpr/Capture.jpg

21

Odp: HomeServices by BBarwik v1.0

w cron.php
if(date("i") % 10 == 0) {
na
if(date("i") % 6 == 0) {

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

22

Odp: HomeServices by BBarwik v1.0

Ktoś wie jak naprawić opóźnione wykresy:)
pomiar z  np 16:00 wyświetla się na wykresie o 15:00.
Godzinę/datę mam ustawioną poprawnie na ruterze.
W php.ini date.timezone  mam ustawione Europe/Berlin
npt działa.
Może w pliku meteo.php można gdzieś/jakoś dodać  1 godzinę
pozdrawiam

23

Odp: HomeServices by BBarwik v1.0

cineks napisał/a:

Ktoś wie jak naprawić opóźnione wykresy:)
pomiar z  np 16:00 wyświetla się na wykresie o 15:00.
Godzinę/datę mam ustawioną poprawnie na ruterze.
W php.ini date.timezone  mam ustawione Europe/Berlin
npt działa.
Może w pliku meteo.php można gdzieś/jakoś dodać  1 godzinę
pozdrawiam

Mam ten sam problem i przyczyna chyba jest w plikach źródłowych HomeServices by BBarwik v1.0. Ponieważ na wykresach u autora tego zacnego projektu też pokazuje odczyt z około godzinnym opóźnieniem. http://bbarwik.com/

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

24 (edytowany przez bbarwik 2016-01-30 12:24:16)

Odp: HomeServices by BBarwik v1.0

Trzeba dodać

    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });

pod

$(function () {

czyli nad

    $('#container').highcharts('StockChart', {

ma wyglądać tak

$(function () {
    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });

    $('#container').highcharts('StockChart', {

Albo w przypadku aktualnej wersji

Zamienić

    $( document ).ready(function() {
        _chart = new Highcharts.StockChart(chart);
    });

na

$( document ).ready(function() {
    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });
    _chart = new Highcharts.StockChart(chart);
});
http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

25

Odp: HomeServices by BBarwik v1.0

Przykro mi, ale w pliku meteo.php
nie ma ani
"$(function () {" 
ani
" $('#container').highcharts('StockChart', {"
Z racji tego, że nie znam się na php, to nie wiem gdzie to wkleić.
Wiem, że @bbarwik pisał to późno, ale proszę o szczegóły.
Dokładnie gdzie w pliku meteo.php wkleić odpowiedni kod