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.
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
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.
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.
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...
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
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.
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.
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.
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
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.
a masz w *.items taki item
weather_temperature
?
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ę.
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?
Nie mogę wejść do tego katalogu. Dokładnie do katalogu mysql. Nie mam uprawnień - "Permission denied".
zaloguj sie to linuxa jako root
na przykład wpisując w linię komend su
i hasło roota
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...
Wiem co się dzieje.
Zmieniając 1H, 4H itp zmieniam wartość czyli jak wciskam 1H to wykres = 0; Jak wciskam 1T=5
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.