Forum Smart'ny Dom

OpenHAB - Rejestrac...
 

OpenHAB - Rejestracja stanów.  

Strona 1 / 3
  RSS
Maciek
(@tribon)
Brygadzista

Cześć,

Czy zajmowaliście się rejestracją stanów w OpenHAB? Chodzi o to aby zapisywać informacje o temperaturze, ilości otworzeń bramy itp.

Znalazłem binding dla InluxDB ale system jest płatny i to SPORO (149$/miesiąc).

Zależy mi aby dodać jakiś wykres do systemu - trochę życia.

Cytuj
Dodane : 08/11/2017 12:35 pm
Booster
(@booster)
Brygadzista

Grafana 🙂 Bardzo fajne narzedzie do monitorowania. Niestety więcej nie pomogę bo nie instalowałem jeszcze tego na OpenHab i Raspi. Jest też opcja w OpenHab chyba stworzenie wykresu adri@n gdzies ma taki graph w opisie swojej pracy w grupie temperatura

OdpowiedzCytuj
Dodane : 08/11/2017 3:27 pm
Maciek
(@tribon)
Brygadzista

No właśnie o coś takiego mi chodzi.

Jeśli chodzi o Grafanę to najpierw trzeba mieć zebrane dane aby móc je przedstawić na wykresie. Niestety jestem krok wcześniej.

OdpowiedzCytuj
Dodane : 08/11/2017 4:17 pm
adrian
(@adrian)
Prezes

masz wiele możliwości, moja sprawdzona

  • instalujesz w systemie mysql, zakładam, że masz linuxa
sudo apt install mysql-server mysql-client
mysql -u root -p
create database openhab;
create user openhab;
grant all on openhab.* to 'openhab'@'localhost' identified by 'openhab';
GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';
  • PaperUI: instalujesz dodatek w sekcji persistence: MySQL Persistence, persistence-mysql - 1.10.0
  • PaperUI: Configuration > System > Persistance wybierasz mysql
  • Linux: /etc/openhab2/service konfigurujesz połączenie do bazy danych
url=jdbc:mysql://localhost:3306/openhab
user=openhab
password=openhab
  • Linux: /etc/openhab2/persistence tworzysz plik z informacjami co chcesz zapisywać w bazie. Załączam swój, który zapisuje zmiany każdego item w bazie danych. Jeśli chcesz jakiś specyficzny item tylko to wpisz jego nazwę zamiast *

Restart openHAB i powinien rozpocząć zapisywanie zmian item'ów - możesz sprawdzić w log'ach openHab czy połączył z mysql. Przy pierwszej zmianie wartości item w log'u powinien pojawić się bład, że nie może znaleźć w bazie tegoż item. To dobry znak, po tym błędzie tworzy w bazie odpowiednią tabelkę do przechowywania danych.

OdpowiedzCytuj
Dodane : 09/11/2017 9:07 pm
Maciek
(@tribon)
Brygadzista

1. czy możesz rozwinąć ten punkt?

  • Linux: /etc/openhab2/service konfigurujesz połączenie do bazy danych.

Chodzi mi o to,że instalując sql w pierwszym punkcie podałem jedno hasło (kreator poprosił o hasło do sql), następnie skonfigurowałem wszystko jak w powyższym opisie. Czy mam zastąpić "password=openhab" hasłem podanym w pierwszym punkcie czy zostawić to które wpisałem tu (czyli "openhab"):

 

grant all on openhab.* to 'openhab'@'localhost' identified by 'openhab';
GRANT ALL PRIVILEGES ON openhab.* TO 'openhab'@'localhost';

2. Czy wszędzie zastąpić text

localhost

IP serwera openHAB? Bo tego nie zrobiłem...

OdpowiedzCytuj
Dodane : 06/12/2017 6:38 pm
adrian
(@adrian)
Prezes

jeśli zrobiłeś to

create database openhab;
create user openhab;
grant all on openhab.* to 'openhab'@'localhost' identified by 'openhab';


  • To w pierwszej linii utworzyłeś bazę danych  o nazwie openhab
  • To w drugiej linii tworzy użytkownika o nazwie openhab
  • To w trzeciej linii nadaje uprawnienia użytkownikowi openhab to bazy o nazwie openhab, ale musi logować się do bazy danych z hasłem openhab

jeśli tak zrobiłeś to w tym /etc/..... wpisujesz

url=jdbc:mysql://localhost:3306/openhab
user=openhab
password=openhab

 

pokolorowałem żebyś wiedział które jest które

OdpowiedzCytuj
Dodane : 06/12/2017 8:29 pm
Maciek
(@tribon)
Brygadzista

Dziękuję. Czyli wszystko zrobiłem prawidłowo wg powyższej instrukcji. Co może oznaczać taki log?: 

2017-12-06 22:54:00.110 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'mysql.persist'
2017-12-06 22:54:00.127 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'sonoff_01'.
2017-12-06 22:54:00.130 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'sonoff_02'.
2017-12-06 22:54:00.133 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'sonoff_01_status'.
2017-12-06 22:54:00.136 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'sonoff_02_status'.
2017-12-06 22:54:00.138 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'sonoff_03_status'.
2017-12-06 22:54:00.141 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'ile_otwarte'.
2017-12-06 22:54:00.144 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW1'.
2017-12-06 22:54:00.146 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW2'.
2017-12-06 22:54:00.149 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW3'.
2017-12-06 22:54:00.151 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW4'.
2017-12-06 22:54:00.154 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW5'.
2017-12-06 22:54:00.156 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW6'.
2017-12-06 22:54:00.159 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW7'.
2017-12-06 22:54:00.161 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW8'.
2017-12-06 22:54:00.164 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'DEMOSW9'.
2017-12-06 22:54:00.167 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'AirQuality'.
2017-12-06 22:54:00.172 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVac'.
2017-12-06 22:54:00.175 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVacStat'.
2017-12-06 22:54:00.179 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVacCons'.
2017-12-06 22:54:00.182 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVacDND'.
2017-12-06 22:54:00.184 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVacHist'.
2017-12-06 22:54:00.188 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'gVacNetwork'.
2017-12-06 22:54:00.190 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'actionCommand'.
2017-12-06 22:54:00.193 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'XAIR_autodetect'.
2017-12-06 22:54:00.196 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Unable to find table for query 'XAIR_commandchannel'.

Dodatkowo zauważyłem wzrost utylizacji procesora do 75%. Coś się musi dziać w tle.

OdpowiedzCytuj
Dodane : 06/12/2017 10:58 pm
adrian
(@adrian)
Prezes

Maciek, tak jak napisałem powyżej

Przy pierwszej zmianie wartości item w log'u powinien pojawić się bład, że nie może znaleźć w bazie tegoż item. To dobry znak, po tym błędzie tworzy w bazie odpowiednią tabelkę do przechowywania danych.

OdpowiedzCytuj
Dodane : 06/12/2017 11:14 pm
Maciek
(@tribon)
Brygadzista

Dziękuję za wielką pomoc! Będę obserwował log.

Próbuję skopiować Twoje ustawienie aby nauczyć się przygotowywania wykresów.

*.items

Number weather_temperature_chart_period "" <my_period>

*sitemap

Group item=weather_temperature label="Z Internetu [%.1f °C]" icon="temperature" valuecolor=[>35="red",>31="maroon",>27="orange",>20="green",>12="teal",>7="olive",>0="navy",<=0="blue"] {
                    Switch item=weather_temperature_chart_period mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"]
                    Chart item=weather_temperature period=h refresh=600 visibility=[weather_temperature_chart_period==0]
                    Chart item=weather_temperature period=4h refresh=600 visibility=[weather_temperature_chart_period==1]
                    Chart item=weather_temperature period=8h refresh=600 visibility=[weather_temperature_chart_period==2]
                    Chart item=weather_temperature period=D refresh=3600 visibility=[weather_temperature_chart_period==3]
                    Chart item=weather_temperature period=3D refresh=10800 visibility=[weather_temperature_chart_period==4]
                    Chart item=weather_temperature period=W refresh=21600 visibility=[weather_temperature_chart_period==5]
                    Chart item=weather_temperature period=M refresh=43200 visibility=[weather_temperature_chart_period==6]
                    Chart item=weather_temperature period=4M refresh=43200 visibility=[weather_temperature_chart_period==7]
                    Chart item=weather_temperature period=Y refresh=86400 visibility=[weather_temperature_chart_period==8]
            	}


Tylko zastanawiam się czy właściwe dane będą zbierane w bazie sql i wyświetlane w danym wykresie.
OdpowiedzCytuj
Dodane : 06/12/2017 11:41 pm
adrian
(@adrian)
Prezes

Możesz sprawdzić czy się tworzą tabelki - o ile pamietam to gdzieś tutaj powstają pliki per tabela

/var/lib/mysql/.....

te tabelki maja nazwy item1, Item2

Już leżę w wyrku i nie mam jak sprawdzić u siebie w kompie czy czegoś nie pokręciłem 

 

 

 

OdpowiedzCytuj
Dodane : 06/12/2017 11:48 pm
Maciek
(@tribon)
Brygadzista

Ja też już byłem w wyrku ale nie dałem rady i wstałem powalczyć. Czy możesz sprawdzić to co wkopiowałem w poprzedni post (oczywiści jak będziesz miał chwilkę)?

Utworzył się przełącznik 

Switch item=weather_temperature_chart_period mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"]

ale wykresu brak i po kliknięciu na 1H, 4H itd zawiesza aplikacje i z niej wychodzi.

OdpowiedzCytuj
Dodane : 06/12/2017 11:56 pm
adrian
(@adrian)
Prezes

a masz w *.items taki item

weather_temperature

?

OdpowiedzCytuj
Dodane : 07/12/2017 5:49 pm
Maciek
(@tribon)
Brygadzista

Tak mam i pokazuje prawidłową temperaturę.

Coś poprawiłem i nie wywala mnie z aplikacji ale wykresu nie widać.

*.items

Number weather_temperature "Temperatura [%.1f °C]" <temperature> {weather="locationId=home, type=temperature, property=current"}
Number weather_temperature_chart_period "" <my_period>

*.sitemap

Group item=weather_temperature label="Z Internetu [%.1f °C]" icon="temperature" valuecolor=[>35="red",>31="maroon",>27="orange",>20="green",>12="teal",>7="olive",>0="navy",<=0="blue"] {
Switch item=weather_temperature mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"]
Chart item=weather_temperature period=h refresh=600 visibility=[weather_temperature_chart_period==0]
Chart item=weather_temperature period=4h refresh=600 visibility=[weather_temperature_chart_period==1]
Chart item=weather_temperature period=8h refresh=600 visibility=[weather_temperature_chart_period==2]
Chart item=weather_temperature period=D refresh=3600 visibility=[weather_temperature_chart_period==3]
Chart item=weather_temperature period=3D refresh=10800 visibility=[weather_temperature_chart_period==4]
Chart item=weather_temperature period=W refresh=21600 visibility=[weather_temperature_chart_period==5]
Chart item=weather_temperature period=M refresh=43200 visibility=[weather_temperature_chart_period==6]
Chart item=weather_temperature period=4M refresh=43200 visibility=[weather_temperature_chart_period==7]
Chart item=weather_temperature period=Y refresh=86400 visibility=[weather_temperature_chart_period==8]
}

 

mysql.cfg w \openHAB-conf\services\

# the database url like 'jdbc:mysql://<host>:<port>/<database>' (without quotes)
url=jdbc:mysql://localhost:3306/openhab

# the database user
user=openhab

# the database password
password=openhab

mysql.persist w openHAB-conf\persistence\

Strategies {
default = everyChange, restoreOnStartup
}

Items {

* : strategy = everyChange, restoreOnStartup

/*
battery* : strategy = everyChange, restoreOnStartup
xbmc* : strategy = everyChange, restoreOnStartup
switch* : strategy = everyChange, restoreOnStartup
is* : strategy = everyChange, restoreOnStartup
temperature* : strategy = everyChange, restoreOnStartup
weather* : strategy = everyChange, restoreOnStartup
humidity* : strategy = everyChange, restoreOnStartup
luminance* : strategy = everyChange, restoreOnStartup
dimmer* : strategy = everyChange, restoreOnStartup
energy* : strategy = everyChange, restoreOnStartup
power* : strategy = everyChange, restoreOnStartup
volts* : strategy = everyChange, restoreOnStartup
amps* : strategy = everyChange, restoreOnStartup
gpio* : strategy = everyChange, restoreOnStartup
network* : strategy = everyChange, restoreOnStartup
presence* : strategy = everyChange, restoreOnStartup
motion* : strategy = everyChange, restoreOnStartup
avg* : strategy = everyChange, restoreOnStartup
sonoff* : strategy = everyChange, restoreOnStartup
lights* : strategy = everyChange, restoreOnStartup
panasonic_power : strategy = everyChange, restoreOnStartup
weather* : strategy = everyChange, restoreOnStartup
*/

}

Pojawił mi się jakiś wykres na sekundkę ale znikł. Poczekam trochę.

OdpowiedzCytuj
Dodane : 07/12/2017 7:16 pm
adrian
(@adrian)
Prezes

to wywal

/*
battery* : strategy = everyChange, restoreOnStartup
xbmc* : strategy = everyChange, restoreOnStartup
switch* : strategy = everyChange, restoreOnStartup
is* : strategy = everyChange, restoreOnStartup
temperature* : strategy = everyChange, restoreOnStartup
weather* : strategy = everyChange, restoreOnStartup
humidity* : strategy = everyChange, restoreOnStartup
luminance* : strategy = everyChange, restoreOnStartup
dimmer* : strategy = everyChange, restoreOnStartup
energy* : strategy = everyChange, restoreOnStartup
power* : strategy = everyChange, restoreOnStartup
volts* : strategy = everyChange, restoreOnStartup
amps* : strategy = everyChange, restoreOnStartup
gpio* : strategy = everyChange, restoreOnStartup
network* : strategy = everyChange, restoreOnStartup
presence* : strategy = everyChange, restoreOnStartup
motion* : strategy = everyChange, restoreOnStartup
avg* : strategy = everyChange, restoreOnStartup
sonoff* : strategy = everyChange, restoreOnStartup
lights* : strategy = everyChange, restoreOnStartup
panasonic_power : strategy = everyChange, restoreOnStartup
weather* : strategy = everyChange, restoreOnStartup
*/

Masz w /var/lib/mysql/openhab pliki ItemXY.frm?

OdpowiedzCytuj
Dodane : 07/12/2017 7:20 pm
Maciek
(@tribon)
Brygadzista

Nie mogę wejść do tego katalogu. Dokładnie do katalogu mysql. Nie mam uprawnień - "Permission denied".

OdpowiedzCytuj
Dodane : 07/12/2017 7:30 pm
adrian
(@adrian)
Prezes

zaloguj sie to linuxa jako root

na przykład wpisując w linię komend su 

i hasło roota

OdpowiedzCytuj
Dodane : 07/12/2017 7:34 pm
Maciek
(@tribon)
Brygadzista

Nic nie zmieniałem pojawia się wykres. Niestety wyniki są bardzo dziwne 5 lub 0. Nic po przecinku. Jak sprawdzam wykres to wartość zmienia się w tym momencie na 0. Na wykresie jest więc taka piła. Coś jest nadal nie tak...

OdpowiedzCytuj
Dodane : 07/12/2017 11:28 pm
Maciek
(@tribon)
Brygadzista

Wiem co się dzieje.

Zmieniając 1H, 4H itp zmieniam wartość czyli jak wciskam 1H to wykres = 0; Jak wciskam 1T=5

OdpowiedzCytuj
Dodane : 07/12/2017 11:37 pm
Maciek
(@tribon)
Brygadzista

Mam coś nie tak z pogodą...

Zrobię próbę na innym czujniku. Już wszystko ustawiłem na temperaturę i wilgotność. Muszę zebrać dane. HEJ.

Edit. Wszystko działa. Jednak moja pogoda jest wadliwa. Czujnik temperatury i wilgotności poprawnie rejestruje stany.

OdpowiedzCytuj
Dodane : 08/12/2017 12:09 am
Booster
(@booster)
Brygadzista

U mnie grafana wygląda tak i baza danych influxDB

OdpowiedzCytuj
Dodane : 08/12/2017 2:47 am
adrian polubień
Strona 1 / 3
Udostępnij:



Udostępnij
  • 1
    Share
  
Pracuję

Proszę Zaloguj Się lub Zarejestruj