Minimera antal rader i tabellen temps

http://karpero.mine.nu/ha

Moderators: Daniel, tom_rosenback, Telldus

aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Minimera antal rader i tabellen temps

Post by aryan »

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.
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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
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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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?
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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
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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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/
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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 :D

/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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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?
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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
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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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:

Code: Select all

"UPDATE devices SET description = "Golvvärme kök", WHERE id = 6 WHERE id = 6"
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:

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;
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

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
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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
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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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

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
PS Flyttade bort allt som hade hamnat i /usr/local/share/telldus/scripts/sensorevent/ så det är löst nu
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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
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
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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 :-)
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

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!
Daniel
Posts: 317
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by Daniel »

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!
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.

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
Post Reply