Discussie forum over overige software. Voor vragen, specificaties, ervaringen etc..
Door jorissynaeve
#5855
Naar aanleiding van een bericht in een andere topic.

Vermits mijn pc geen 24/24 aan kan staan en ik werk met een TFA Nexus (dat geen eigen uploadsoftware heeft) geeft Weather Display veel complicatie. Voorbeeld is maar dagminima & dagmaxima. Incorrecte maandtotalen, neerslaghoeveelheden etc. Noem maar op. Ik heb er enkele maanden mee geprutst met verschillende instellingen maar dit hielp allemaal niet.

Daardoor had ik besloten om eigen software te schrijven. Vermits ik de kern van Weather display wel goed vond en dus zijn verscheidene "tags" (verschillende weervariabelen) was ik van plan om voor al deze variabelen zelf functies te schrijven.

Eerst even uitleggen hoe ik gegevens van de TFA Nexus ophaal. Alles werd geprogrammeerd tot voorheen met C#. Het ophalen van gegevens was is nogal gecompliceerd en houd in dat ik het standaard software pakket van TFA Nexus laat draaien. Die exporteert telkens een excellfile die door mijn C# programma ingelezen word. Die gegevens worden vervolgens geëxporteerd naar een mysql-server op mijn localhost.

Tot hier geen probleem. Mijn mysql-database heeft tot nu toe al gedurende de start van mijn weerstation (dikke anderhalf jaar) alle gegevens om de 10 minuten opgeslaan (reken maar uit hoeveel rijen deze al heeft :) ).

Nu ging ik met die gegevens in mijn database alle weervariabelen genereren. De functies zelf zijn allemaal correct geschreven, echter het totaalgeheel neemt enorm veel geheugen in beslag en het duurt soms enkele minuten eer de variabelen gegenereerd zijn. Die variabelen exporteer ik dan naar compatibele WDisplay files (vb clientraw.txt) alsook naar de weeractueelfile (openweerdata.htm).

Het programma op zich werkt. Enkel het probleem is dus de performance. Vooral de maximum waarden berekenen, waarden per uur bereken etc neemt veel tijd in beslag.
Ik vraag me af hoe Wdisplay op zo'n korte tijd al die variabelen kan genereren.

Nu had ik gedacht om het programma te herschrijven in java. Java is sneller dan C#. Vermits java nog niet mijn sterkste programmeertaal is gaat het programmeren er van gevoelig minder snel.

Indien er tips zijn, vragen, interesse voor het programma laat deze gerust weten. Desnoods maak ik alles binnenkort opensource zodat mensen zelf de code zien etc. Alleen heb ik nooit informatica gevolgd en dus zal de codestructuur soms de wensen over laten ;)
Door wslangerak
#5856
Klinkt heel interessant Joris!

Ik heb zelf ook de TFA Nexus in combinatie met WD draaien. En ik moet zeggen, WD verdient natuurlijk niet de schoonheidsprijs en het heeft mij in het begin (vanaf mei 2007) ook de nodige hoofdbrekens gekost om alles naar mijn zin te krijgen, momenteel ben ik er best tevreden over.
Vooral de zeer uitgebreide nevenfuncties van WD zijn natuurlijk ongeëvenaard (FTP, automatische METAR-download,MySQL, noem maar op).

Zelf gebruik ik weinig standaard-zaken van WD meer voor mijn website. Op grond van gegenereerde files zoals de clientraw*.txt en de formateddata.txt heb ik o.a. met PHP en SWF van alles geconstrueerd.

Dat het nu zoveel tijd kost bij jou om de benodigde data te genereren is inderdaad lastig. Zeker als je de boel iedere minuut (of nog sneller...) wilt laten verversen kom je al snel in de problemen denk ik.

Ik ben zeer geïnteresseerd in jouw experimenten met dit alles en volg dan ook de verdere berichten met belangstelling! Als je ooit eens iets wilt laten testen geef je maar een seintje. Zolang WD ondertussen gewoon door kan draaien (o.a. voor hetweeractueel) wil ik graag van alles proberen.

Groeten,
Kees.
Door Meteo Simpelveld
#5857
Goedemiddag Joris,

Door te doen leer je alleen maar.
Het uiteindelijke doel heb je bereikt, nu nog finetunen.

Groet Bert
Door hansmiv
#5861
Ik gebruik WD uitsluitend voor het updaten van de clientraw.txt, het txt bestand van HWA, Awekas en voor WDL, Voorts kieper ik ook alle data om de tien minuten in een database.
Ik heb alle gegevens. Voor de actuele informatie gebruik ik de queries uit de database. Ik maak geen maandoverzichten of jaaroverzichten, maar op zich is dat een fluitje van een cent.
Alle opvraagbare data worden "on-the-fly" uit de database opgehaald. De opvraagbare dingen doen dat in een fractie tot enkele seconden, zeker geen minuten.

Ik heb de indruk dat WD alles in hulptabelletjes vastlegt, zodat de data al panklaar beschikbaar zijn. Als je WD laat crashen kan je precies zien wat hij heeft onthouden en wat (nog) niet.
Maar zoals gezegd, ik gebruik WD alleen nog maar om data uit de hele brei te destilleren voor de genoemde toepassingen en verder kijk ik eigenlijk nooit naar de informatie die WD zelf allemaal ophoest. Evenmin maak ik webpagina's aan of overzichten of grafieken.

Het hele zooitje loopt op mijn pc, naast diverse internetapplicaties als webserver, mailserver/ -client, ftp-server/ -client. Voorts kan de pc heftig gebruikt worden voor beeldbewerking en soms ook geluidsbewerking. Spelletjes doe ik nooit, dat zijn ook nog al eens hoge belastingen. En ja, zoals inmiddels bij velen bekend staat mijn pc 24/7 aan, ook als ik vier weken op reis ben. Als u in de krant leest dat mijn huis is afgebrand, weet u alvast hoe dat is gekomen. Zelf maak ik mij daarover absoluut geen zorgen.
Door Luc
#5862
jorissynaeve schrijft:
Tot hier geen probleem. Mijn mysql-database heeft tot nu toe al gedurende de start van mijn weerstation (dikke anderhalf jaar) alle gegevens om de 10 minuten opgeslaan (reken maar uit hoeveel rijen deze al heeft :) ).

Nu ging ik met die gegevens in mijn database alle weervariabelen genereren. De functies zelf zijn allemaal correct geschreven, echter het totaalgeheel neemt enorm veel geheugen in beslag en het duurt soms enkele minuten eer de variabelen gegenereerd zijn. Die variabelen exporteer ik dan naar compatibele WDisplay files (vb clientraw.txt) alsook naar de weeractueelfile (openweerdata.htm).

Hoi Joris,

Als ik dit lees, dan vermoed ik dat er geen (of niet de juiste) indexen op de tabellen in de database zitten. Zelf heb ik al bijna 5 jaar elke 10 minuten records in de database zitten. Dat zijn dus ook de ettelijke records. Met deze aantallen heef MySQL echt geen problemen, mits de juiste indexen zijn aangemaakt.
Door jorissynaeve
#5864
Hey,

Ik denk niet dat het een mysql probleem is.

Ik las eerst alle query's uit uit de mysql database. Maar bij het runnen van mijn programma viel het op dat alles enorm traag ging.

Vervolgens heb ik de gehele database ingeladen in mijn programma waarna hij via linq (c# gelijkend op sql-query's) alle gegevens verwerkte. Ook dit ging traag.

Het ligt hem gewoon in de verwerking van alle gegevens (min/max/avg) bepalen enzo en dit per jaar/maand/dag...
Het zou goed kunnen dat ik niet met juiste indexen werk maar daar ken ik persoonlijk (nog) niets van.

Volgende week zal ik wat code online zetten voornamelijk de code waar het programma lang over doet.
Door Luc
#5866
Dus als ik het goed begrijp, lees je eerst alle data uit de MySQL database in het geheugen en dan ga je vandaar uit de berekeningnen doen?

In dat geval kan ik me voorstellen dat het traag wordt...

Ik weet niet welke gegevens je steeds moet berekenen, maar stel dat je de hoogste temp van deze dag nodig hebt, dan zou je dit met 1 query direct uit de database kunnen halen binnen een paar milliseconden, bijvoorbeeld:

SELECT Temp FROM WHERE DATE = ORDER BY TEMP DESC LIMIT 1

Deze query geeft 1 record terug met daarin de hoogste temperatuur van vandaag. De laagste temperatuur van vandaag zou bijvoorbeeld zijn:

SELECT Temp FROM WHERE DATE = ORDER BY TEMP ASC LIMIT 1

Er is slechts een klein verschil, de sort order.....

Met deze methode hoef je niet alle data eerst in het geheugen te laden, je haalt alleen op wat je nodig hebt.
Door Eckie76
#5874
Ik vind het prachtig om creatieve mensen te ontmoeten.
Echter, waarom zou je het wiel steeds weer moeten uitvinden?
De Nexus kan met WS Win probleemloos worden uitgelezen.
Als je dan met Weather Display niet tevreden bent, kan je toch overwegen om over te stappen op WS Win?

Je neemt dan een aparte upload-client ( in mijn geval het zeer stabiele en probleemloos draaiende Fling, van de firma NHC )
Instellen op welke interval dan ook, en klaar ben je.
Toch?

Werken met databases doe ik niet. Alle data van WS Win worden opgeslagen in DAT-bestanden. Hoe dat bij WD zit weet ik niet, maar ik vermoed bijna hetzelfde principe.

De pc wordt bij mij uitsluitend voor webdesign, tekstverwerking en het weerstation gebruikt.
Door jorissynaeve
#5880
Jah, maar ws-win is betalend en aan software geef ik geen geld uit ;) Misschien een beetje gierig er voor mja, als ik het zelf kan maken. En ws win heb ik nog nergens als crack (kweet het, tis illegaal) gevonden.

Nu ja, van de queries. Ik denk wel dat ik weet wat het probleem is. Ik werkte niet met buffers dus elke 10 minuten genereerde hij telkens alle minima & maxima dus ook bv de minima & maxima van gisteren. Dat zijn een hele boel heen en weer zendingen van data tussen programma en database dus het zal hem daaraan wel liggen denk ik.
Nu ja, ik ben nu bezig met een soort "buffer systeem" te maken zodat alles vlotter gaat :)