Minimera antal rader i tabellen temps
Moderators: Daniel, tom_rosenback, Telldus
Minimera antal rader i tabellen temps
Hej,
Jag kör fortfarande en lite modifierad version av HA 2.0.2 (på en Raspberry Pi B med Tellstick Duo) men tror att min fråga även gäller version 3.x
Ja såg med tdtool -l att temperatur sensorerna skickar en gång varannan minut och eftersom jag vill ha in senaste värdarna så fort som möjligt så körs parser.php varannan minut med ett cronjobb
*/2 * * * * /usr/bin/php /var/www/HomeAutomation/parser/parser.php
Det har nu som nackdel att jag får 30 ny rader per sensor i timme i temps tabellen, det blir rätt mycket data.
Skulle man inte kunna ändra databasanropet så att den bara skriver en ny rad i tabellen när värdet har ändrats sedan för-förra värdet och i annat fall bara uppdaterar date fältet?
Det skulle i mitt fall t ex minska ner ca 100 rader i temp tabellen till dessa 8:
1 mandolyn-temperaturehumidity-31 22.4 2015-12-09 10:11:58
3 mandolyn-temperaturehumidity-31 22.4 2015-12-09 10:13:58
5 mandolyn-temperaturehumidity-31 20.7 2015-12-09 11:19:58
7 mandolyn-temperaturehumidity-31 20.7 2015-12-09 11:53:58
9 mandolyn-temperaturehumidity-31 20.9 2015-12-09 11:55:58
11 mandolyn-temperaturehumidity-31 20.9 2015-12-09 13:47:58
13 mandolyn-temperaturehumidity-31 20.7 2015-12-09 13:49:58
14 mandolyn-temperaturehumidity-31 20.7 2015-12-09 14:49:58
Naturligtvis kan jag ändra så att man kör parser.php mera sällan men det tycker jag inte är någon bra lösning.
Ett alternativ kanske vore att övervaka tdtool -l med ett annat skript och bara köra parser.php när en sensor har ändrat sig men det kanske är mera komplicerad.
Jag kör fortfarande en lite modifierad version av HA 2.0.2 (på en Raspberry Pi B med Tellstick Duo) men tror att min fråga även gäller version 3.x
Ja såg med tdtool -l att temperatur sensorerna skickar en gång varannan minut och eftersom jag vill ha in senaste värdarna så fort som möjligt så körs parser.php varannan minut med ett cronjobb
*/2 * * * * /usr/bin/php /var/www/HomeAutomation/parser/parser.php
Det har nu som nackdel att jag får 30 ny rader per sensor i timme i temps tabellen, det blir rätt mycket data.
Skulle man inte kunna ändra databasanropet så att den bara skriver en ny rad i tabellen när värdet har ändrats sedan för-förra värdet och i annat fall bara uppdaterar date fältet?
Det skulle i mitt fall t ex minska ner ca 100 rader i temp tabellen till dessa 8:
1 mandolyn-temperaturehumidity-31 22.4 2015-12-09 10:11:58
3 mandolyn-temperaturehumidity-31 22.4 2015-12-09 10:13:58
5 mandolyn-temperaturehumidity-31 20.7 2015-12-09 11:19:58
7 mandolyn-temperaturehumidity-31 20.7 2015-12-09 11:53:58
9 mandolyn-temperaturehumidity-31 20.9 2015-12-09 11:55:58
11 mandolyn-temperaturehumidity-31 20.9 2015-12-09 13:47:58
13 mandolyn-temperaturehumidity-31 20.7 2015-12-09 13:49:58
14 mandolyn-temperaturehumidity-31 20.7 2015-12-09 14:49:58
Naturligtvis kan jag ändra så att man kör parser.php mera sällan men det tycker jag inte är någon bra lösning.
Ett alternativ kanske vore att övervaka tdtool -l med ett annat skript och bara köra parser.php när en sensor har ändrat sig men det kanske är mera komplicerad.
Re: Minimera antal rader i tabellen temps
Vi är faktiskt redan steget före dig. Detta är en av förbättringarna som vi har jobbat på i senaste utvecklingsversionen. Som det funkar där är att om det (oberoende av vilket system sensorn använder sig av) kommer tre eller fler värden som är identiska så sparas bara det första och det sista, dvs värdena däremellan sparas inte i databasen.
/Daniel
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
Tack för dit snabba svar, det precis så jag menade. Det låter helt prefekt!
Är det en för stor ändring eller skulle jag kunna byta ut några rader för att testa det redan nu?
Är det en för stor ändring eller skulle jag kunna byta ut några rader för att testa det redan nu?
Re: Minimera antal rader i tabellen temps
Nja, det är mer än bara ett par rader. Skulle tro att du behöver lägga till ett 50-tal rader på lite olika ställen. Jag skulle i så fall hellre rekommendera dig att helt enkelt testa utvecklingsversionen, jag skulle vilja påstå att den är tämligen stabil. Tyvärr når jag inte HomeAutomation-hemsidan här (paranoida nätverkstekniker på jobbet som blockerar alla "dynamiska" domäner), men jag tror att det finns beskrivet där hur man kommer åt den.
/Daniel
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
Tack för dit svar, jag testar gärna senaste utvecklingsversionen, är det v3.0.2? Vet dock inte hur man kommer åt den, kollade både på hemsidan http://karpero.mine.nu/ha/ och i svn://karpero.mine.nu/
Re: Minimera antal rader i tabellen temps
När jag säger utvecklingsversionen så menar jag den versionen som finns på svn. Ta hem den bara så har du funktionen där
/Daniel
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
Ok tack, ja nu ser jag att den version som ligger i svn://karpero.mine.nu/homeautomation skiljer sig en del från svn://karpero.mine.nu/tags/HomeAutomation_v3_0_1
Jag har nu version v2.0.2 med några ändringar som jag gjort, bl a anpassat motorvärme tiden till min snabba 1100W motorvärmare med pump som såklart inte behöver vara inkopplat lika länge som en vanlig motorvärmare och utökat inforutan med utomhustempeartur och väderprognos.
Jag förstår så klart att de försvinner med upgraderingen och i värsta fall kan ställa till det lite i uppgraderingen.
Kanske det bästa vara att först göra backupp på min gamla installation och databas och sedan återställa den till en standard instation av 2.0.2 innan uppgraderingen.
Jag antar att det är bäst att först göra en uppgradering till vanliga 3.0.1 och att uppgradera sedan till senaste utvecklingsversionen?
Eller är det säkraste att göra en helt nyinstallation av utvecklingsversionen from scratch och sedan ställa in den som jag hade det?
Jag har nu version v2.0.2 med några ändringar som jag gjort, bl a anpassat motorvärme tiden till min snabba 1100W motorvärmare med pump som såklart inte behöver vara inkopplat lika länge som en vanlig motorvärmare och utökat inforutan med utomhustempeartur och väderprognos.
Jag förstår så klart att de försvinner med upgraderingen och i värsta fall kan ställa till det lite i uppgraderingen.
Kanske det bästa vara att först göra backupp på min gamla installation och databas och sedan återställa den till en standard instation av 2.0.2 innan uppgraderingen.
Jag antar att det är bäst att först göra en uppgradering till vanliga 3.0.1 och att uppgradera sedan till senaste utvecklingsversionen?
Eller är det säkraste att göra en helt nyinstallation av utvecklingsversionen from scratch och sedan ställa in den som jag hade det?
Re: Minimera antal rader i tabellen temps
Det låter ju inte som att du har gjort någonting som påverkar databasen, så det ska nog bara vara att köra. Ta en backup på hela homeautomation-mappen först bara så kan du ju mecka in dina ändringar igen efter uppgraderingen. Men du kan ju för säkerhets skull göra en dump på mysql-databasen också innan.
Det ska gå lika bra att köra direkt ifrån 2.x som ifrån 3.x, uppgraderingen håller koll på vilken version det är innan så rätt saker uppgraderas.
/Daniel
Det ska gå lika bra att köra direkt ifrån 2.x som ifrån 3.x, uppgraderingen håller koll på vilken version det är innan så rätt saker uppgraderas.
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
Tack. Updetateringen gick i stort sätt bra. Det var ett litet problem med ett mysql anrop där det fanns ett komma för mkt:
men det kan ha haft att göra med felaktig teckenuppsättning i tabellen eller device namn i tdtool kanske och det löste sig efter att jag ändrade namnet på den.
Ett annat problem som jag ännu inte hittat orsaken till är att datum och tid inte längre kommer med i temps tabellen efter upgraderingen. Det kommer in nya värden men alla har nu "0000-00-00 00:00:00" som datum och tid.
Temps tabellen ser ut så här:
Jag har f.ö. även uppgraderat telduscore till 2.1.2_rc1 igår men det gav iaf inga problem med HA 2.0.2 så är väll inte orsaken. Om man ger kommandot tdool -l får men temperatur och luftfuktighetsvärden med rätt dat och tid.
Kan det vara något rättighetsproblem så att användare www-data inte kan komma åt datum och tid?
Ser nu även i syslog detta:
Code: Select all
"UPDATE devices SET description = "Golvvärme kök", WHERE id = 6 WHERE id = 6"
Ett annat problem som jag ännu inte hittat orsaken till är att datum och tid inte längre kommer med i temps tabellen efter upgraderingen. Det kommer in nya värden men alla har nu "0000-00-00 00:00:00" som datum och tid.
Temps tabellen ser ut så här:
Code: Select all
TABLE `temps` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sensor_serial` varchar(50) DEFAULT NULL,
`temp_c` float DEFAULT NULL,
`date` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`)
) ENGINE=MyISAM AUTO_INCREMENT=6957 DEFAULT CHARSET=utf8;
Kan det vara något rättighetsproblem så att användare www-data inte kan komma åt datum och tid?
Ser nu även i syslog detta:
Code: Select all
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core_2.1.2.orig.tar.gz (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/libtelldus-core2_2.1.2-1_armhf.deb (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core_2.1.2-1_armhf.deb (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/libtelldus-core-dev_2.1.2-1_armhf.deb (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core-2.1.2 (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core_2.1.2-1.debian.tar.gz (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core_2.1.2-1.dsc (13): Permission denied
Dec 13 21:34:58 ******* telldusd: Could not execute /usr/local/share/telldus/scripts/sensorevent/telldus-core_2.1.2-1_armhf.changes (13): Permission denied
Re: Minimera antal rader i tabellen temps
Skumt. Temps-tabellen är identisk med min, så det är inte det som är problemet. Kan du kopiera outputen ifrån en "tdtool --list-sensors" så vi kan kolla om det är någon skillnad där? Om jag inte minns fel så använde vi i 2.x output ifrån "tdtool --list" men ändrade i 3.x till "tdtool --list-sensors" vilket är lättare att parsa.
Behörighetsproblemen förstår jag inte riktigt. Du borde definitivt inte ha en massa .deb- och .gz-filer i den mappen, förstår inte riktigt vad de gör där. Där lägger man script som man vill att de ska anropas varje gång en sensor uppdateras. Mappen borde vara typ tom...
/Daniel
Behörighetsproblemen förstår jag inte riktigt. Du borde definitivt inte ha en massa .deb- och .gz-filer i den mappen, förstår inte riktigt vad de gör där. Där lägger man script som man vill att de ska anropas varje gång en sensor uppdateras. Mappen borde vara typ tom...
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
update:
Vet nu att raderna med date "0000-00-00 00:00:00" var gamla, jag tog bort de och det verkar inte komma in några nya rader i temps tabellen alls.
Sedan har jag upptäckt att den gamla parser/parser_conf.php inte finns kvar efter uppdateringen och inte heller parser/system_config/telldusduo.php
Jag trodde dessa instellningar hade flyttats till tabellen tempsensors men det verkar inte vara så?
/update
Här kommer outputten från tdtool --list och tdtool --list-sensors
PS Flyttade bort allt som hade hamnat i /usr/local/share/telldus/scripts/sensorevent/ så det är löst nu
Vet nu att raderna med date "0000-00-00 00:00:00" var gamla, jag tog bort de och det verkar inte komma in några nya rader i temps tabellen alls.
Sedan har jag upptäckt att den gamla parser/parser_conf.php inte finns kvar efter uppdateringen och inte heller parser/system_config/telldusduo.php
Jag trodde dessa instellningar hade flyttats till tabellen tempsensors men det verkar inte vara så?
/update
Här kommer outputten från tdtool --list och tdtool --list-sensors
Code: Select all
$ tdtool --list
Number of devices: 6
1 Vardagsrum1 ON
2 Vardagsrum2 ON
3 Vardagsrum3 ON
4 Hallslinga OFF
5 Golvvärme kök OFF
6 Gatulykta OFF
SENSORS:
PROTOCOL MODEL ID TEMP HUMIDITY RAIN WIND LAST UPDATED
fineoffset temperature 227 19.1° 2015-12-14 08:44:57
mandolyn temperaturehumidity 31 19.3° 36% 2015-12-14 08:44:58
Code: Select all
$ tdtool --list-sensors
type=sensor protocol=fineoffset model=temperature id=227 temperature=19.1 time=2015-12-14 08:45:45 age=11
type=sensor protocol=mandolyn model=temperaturehumidity id=31 temperature=19.3 humidity=36 time=2015-12-14 08:44:58 age=58
Re: Minimera antal rader i tabellen temps
Sorry. Grävde lite i koden nu och inser att outputten ifrån tdtool är helt irrelevant. Vi använder helt enkelt nuvarande tidpunkt vid skrivningen till databasen. Det som körs mot databasen borde i ditt fall bli typ "INSERT INTO temps(sensor_serial, temp_c, date) VALUES('fineoffset-temperature-227', 19.1, now());". Du kan ju testa att köra det manuellt mot mysql och se hur det blir. Blir det noll då också så känns det som att det är något jätteskumt med din mysql...
/Daniel
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Minimera antal rader i tabellen temps
Tack igen har fått det att funka nu. De rader utan datumet visade sig inte vara problemet.
Problemet var alltså bara att varken parser/parser_conf.php och parser/system_config/telldusduo.php fanns kvar efter uppdateringen.
När jag fixade dessa så funkar det nu
Problemet var alltså bara att varken parser/parser_conf.php och parser/system_config/telldusduo.php fanns kvar efter uppdateringen.
När jag fixade dessa så funkar det nu
Re: Minimera antal rader i tabellen temps
Men det ser ut som att jag fortfarande får en rad per sensor varannan minut, även om det fler än 3st gånger med samma värde!
Re: Minimera antal rader i tabellen temps
Märkligt... Kan du köra parsern manuellt ("php <ha_sökväg>/parser/parser.php") och klistra in output här? Vad som ska hända är att om detta är tredje likadana avläsningen borde value_id ha id på den rad i databasen som ska uppdateras (vad vi gör då är bara att ändra timestamp på den förra avläsningen så man ska kunna se hur länge temperaturen har legat stabilt), annars ska den vara -1 vilket gör att det istället skapas en ny rad i databasen.aryan wrote:Men det ser ut som att jag fortfarande får en rad per sensor varannan minut, även om det fler än 3st gånger med samma värde!
Om du vill leta själv i koden så är det funktionen writeSensorReading längst ner i dbfuntions.php som är viktig här.
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha