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

Re: Minimera antal rader i tabellen temps

Post by aryan »

Hittade nu problemet som verkar bero på en bugg i page=conf-sensors&action=edit

Bl a de tecken i fält serial (unikt id) blir html konverterade när de skrivs i databastabellen tempsensors i fältet serial, om man t ex har svenska tecken där blir de felkonverterade
Jag hade t ex ett id som heter
Sverige_Stockholm_Örby_windspeed
som alltså ändrades i seriel till
Sverige_Stockholm_Örby_windspeed
Fixar man det direkt databasen poppar sensorerna upp som de ska i logs-measurements

Det är kanske fel ställe att göra det på men jag ändrade i modules/configurator/sensors/action.save.php radera 31-33 i från

Code: Select all

	$data["name"] 	= $_POST["name"];
	$data["serial"] 	= $_POST["serial"];
	$data["sensortype"] = $_POST["sensortype"];
till:

Code: Select all

	$data["name"] 	= html_entity_decode($_POST["name"], ENT_COMPAT, 'UTF-8');
	$data["serial"] 	= html_entity_decode($_POST["serial"], ENT_COMPAT, 'UTF-8');
	$data["sensortype"] = html_entity_decode($_POST["sensortype"], ENT_COMPAT, 'UTF-8');
och nu blir det inte längre några fel.
tom_rosenback
Posts: 779
Joined: Fri Mar 17, 2023 9:45 am
Contact:

Re: Minimera antal rader i tabellen temps

Post by tom_rosenback »

aryan wrote:Hittade nu problemet som verkar bero på en bugg i page=conf-sensors&action=edit

Bl a de tecken i fält serial (unikt id) blir html konverterade när de skrivs i databastabellen tempsensors i fältet serial, om man t ex har svenska tecken där blir de felkonverterade
Jag hade t ex ett id som heter
Sverige_Stockholm_Örby_windspeed
som alltså ändrades i seriel till
Sverige_Stockholm_Örby_windspeed
Fixar man det direkt databasen poppar sensorerna upp som de ska i logs-measurements

Det är kanske fel ställe att göra det på men jag ändrade i modules/configurator/sensors/action.save.php radera 31-33 i från

Code: Select all

	$data["name"] 	= $_POST["name"];
	$data["serial"] 	= $_POST["serial"];
	$data["sensortype"] = $_POST["sensortype"];
till:

Code: Select all

	$data["name"] 	= html_entity_decode($_POST["name"], ENT_COMPAT, 'UTF-8');
	$data["serial"] 	= html_entity_decode($_POST["serial"], ENT_COMPAT, 'UTF-8');
	$data["sensortype"] = html_entity_decode($_POST["sensortype"], ENT_COMPAT, 'UTF-8');
och nu blir det inte längre några fel.
Gött, lägger till det i SVN också. Fixade för övrigt en parser för yr nu, ligger i SVN.
//Tom

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 »

tom_rosenback wrote:Fixade för övrigt en parser för yr nu, ligger i SVN.
Vad kul att se hur du löst det! Kollade lite snabbt och det ser bättre ut en min med cache funktion och snyggare kod. Verkar som du också lagt in en ny funktion readFileOrUrl() nånstans?

Jag såg inte direkt om det kommer att funka med vindhastighet och vinriktning, i forecast_hour_by_hour.xml ligger de inte i value men i deg och i mps
<windDirection deg="254.8" code="WSW" name="Vest-sørvest"/>
<windSpeed mps="6.9" name="Laber bris"/>

I min ”yr.php" gjorde jag en enkel funktion för överstning för molninghet från symbol <symbol number="4" numberEx="4" name="Skyet" var="04"/>
till okta skalan 0-8 som jag spar i databasen.

Om du vill kan jag skicka mina filer så kan du plocka ur de vad som kan vara användbart.
aryan
Posts: 89
Joined: Fri Mar 17, 2023 9:45 am

Re: Minimera antal rader i tabellen temps

Post by aryan »

Förresten så läser jag även in kommande värden i temps tabellen vilket naturligtvis ställer till det lite i logs-measurements eftersom senaste avläsningen då hamnar nånstans i framtiden.

Så jag ändrade i sensors/dbfunctions.php på rad 165 från

Code: Select all

$query = "SELECT MIN(date) AS first, MAX(date) AS last, COUNT(*) AS datapoints FROM temps LIMIT 1";
till

Code: Select all

$query = "SELECT MIN(date) AS first, MAX(date) AS last, COUNT(*) AS datapoints FROM temps WHERE date <= now()";
Post Reply