NexaHome:s webbserver - hur sätta Request Timeout?

Moderators: hekj, Telldus

Post Reply
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Jag behöver (tillfälligt) ändra Request Timeout på webbservern (kör NexaHome 3.7.0 på en Raspbian Pi) men jag hittar inget av de konfigurationsfiler jag hade trott skulle finnas. Jag blir inget klokare av response headern från NexaHome heller. Några ledtrådar?

Edit: Anledningen till att jag vill öka Request Timeout är att det tar väldigt lång tid för Raspan att generera PNG-graferna och servern hinner göra en time-out innan dom är klara...
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Jag har gått runt problemet genom att generera graferna på en annan dator tills vidare men jag blir ändå inte riktigt klok på webbservern. Är den integrerad med NexaHome eller är det en "standard-webbserver"? Den verkar inte släppa igenom vad som helst från källfilen - ett test med HTML5, CSS3 och diverse javascript ville sig inget vidare...
RH_Dreambox
Posts: 69
Joined: Fri Mar 17, 2023 9:45 am
Location: Södra Säm, Västra Götaland
Contact:

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by RH_Dreambox »

Tellstick - Tellstick Duo - Tellstick Net - Oregon TNGN132N - Raspberry - Z-Wave (RaZberry) - Fibaro HC2 http://www.temp.swedenroots.se/
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by hekj »

brusan wrote:Jag har gått runt problemet genom att generera graferna på en annan dator tills vidare men jag blir ändå inte riktigt klok på webbservern. Är den integrerad med NexaHome eller är det en "standard-webbserver"? Den verkar inte släppa igenom vad som helst från källfilen - ett test med HTML5, CSS3 och diverse javascript ville sig inget vidare...
Det är en standard java webbserver utan några som helst tillägg, det är anledningen till att den inte släpper igenom vad som helst, jag hanterar varje request om att få html sidor och bilder manuellt.

Jag har lagt upp nåt exempel här i forumet som använder sig av javascript - "Tips: Definition av popup menyer i egendefinierad websida"
http://www.telldus.com/forum/viewtopic.php?f=23&t=2091

Har lite funderingar på att göra en extern lösning med spring, nackdelen med en sådan är att det då fordras lite mer kunskap hos användarna.
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

RH_Dreambox wrote:Kan det här hjälpa?
http://httpd.apache.org/docs/2.2/mod/mo ... meout.html
Jag tror inte det; av response headern att döma så är det ingen Apache-server vi pratar med (om).
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Tack till RH_Dreambox & Henrik för era svar. Jag har kollat vidare och måste erkänna att jag fattar mindre ju mer jag kollar - men jag är kanske förvirrad på en högre nivå :wink:

Exempelvis berodde mina problem med att få med bilder på att webbserverns rot inte har något med katalogstrukturen på raspan att göra - inte mycket i alla fall. Exempelvis ligger filerna (*.HTML, *.PNG etc) till min webbserver på "/home/pi/nexahome/mywebserver" och jag har satt My server directory i Config-fliken till samma "/home/pi/nexahome/mywebserver". Så långt allt väl.

Men: om jag i HTML-filen refererar till en bild som ligger i "/home/pi/nexahome/mywebserver" på "vanligt" sätt exempelvis som
<img style="position:absolute;top:0px;left:0px" src="energiSchema.png"> så kommer det ingen bild på webbsidan.

Om jag däremot skriver image-taggen som:
<img style="position:absolute;top:0px;left:0px" src="/nexahome/energiSchema.png"> så funkar allt perfekt!? Men vad har /nexahome/ överhuvud med saken att göra, skall man verkligen använda det som någon sort rot?? Det är änna här jag känner att det blir lite halt under fötterna :-)

Ok, att varje request hanteras manuellt, det förklarar kanske varför index.html inte verkar ha så mycket att göra med vad som kommer ut till klienten. Som upplägget är på index-sidan nu, så får jag med mätvärden från ett dussin sensorer på min värmepump, solfångare och diverse annat som jag egentligen inte vill visa upp för den som bara skall reglera belysningen. Kan jag påverka det på något sätt? Eller kanske hellre, kan jag göra requests från en egen webbsida mot NexaHome och därmed bygga informationen på ett lite annat sätt? Dvs jag skulle vilja hantera NexaHome som en datakälla/provider till min webbserver.

Om man kunde hantera requests mot NexaHome på ett sådant sätt blir det t.ex möjligt att göra beräkningar med hjälp av värdena som NexaHome levererar.
På sidan på min Raspberry-server där jag har min värmepump och solfångarna (http://casabrusan.dyndns-home.com:8080/ ... varmtogott) skulle jag då kunna visa momentaneffekt från solfångarna, energiuttag ur borrhålet osv...

Många frågor blir det, hoppas ni orkar med mig :-)

PS: jag låter lösenordet vara "varmtogott" några dagar - stressa inte ihjäl min lilla Raspberry Pi bara och ge tusan i att leka med lamporna är ni snälla, inte så säker på att kvinnan i huset skulle uppskatta det till fullo :roll: Vissa av mätvärdena torde vara uppåt väggarna - håller på att dra om ledningarna till 1-wire-nätet för temperatursensorarna...
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Henrik,

om det är så att du funderar på en annan serverlösning så är kanske Apache2 det man först kommer att tänka på. Med tanke på att Raspberry Pi inte direkt har stora muskler CPU-mässigt så kan följande artiklar vara intressant för dig: http://www.whisperdale.net/11-nginx-vs- ... httpd.html och http://raspberry.arctics.se/2013/04/14/ ... webserver/
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by hekj »

brusan wrote:Exempelvis berodde mina problem med att få med bilder på att webbserverns rot inte har något med katalogstrukturen på raspan att göra - inte mycket i alla fall. Exempelvis ligger filerna (*.HTML, *.PNG etc) till min webbserver på "/home/pi/nexahome/mywebserver" och jag har satt My server directory i Config-fliken till samma "/home/pi/nexahome/mywebserver". Så långt allt väl.

Men: om jag i HTML-filen refererar till en bild som ligger i "/home/pi/nexahome/mywebserver" på "vanligt" sätt exempelvis som
<img style="position:absolute;top:0px;left:0px" src="energiSchema.png"> så kommer det ingen bild på webbsidan.

Om jag däremot skriver image-taggen som:
<img style="position:absolute;top:0px;left:0px" src="/nexahome/energiSchema.png"> så funkar allt perfekt!? Men vad har /nexahome/ överhuvud med saken att göra, skall man verkligen använda det som någon sort rot?? Det är änna här jag känner att det blir lite halt under fötterna :-)
Det är inte alls konstigt att du inte fick till det vid första försöket, av någon anledning som jag inte kommer ihåg nu valde jag att använda /nexahome/ som en sorts rot.
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Har ramlat på ett litet problem: Googles robotar har tydligen förälskat sig i webbservern på min Raspberry Pi där alla mätdata från huset presenteras och där styrningen också ligger. Trots att roboten rimligen inte kan komma åt de enskilda sidorna på servern så initierar den av något obegripligt skäl ständiga uppdateringar av alla graferna vilket resulterar i att CPU:n är i stort sett konstant överbelastad och inte har tid med så mycket annat...

För att få Google att sluta indexera sajten har jag lagt in en robots.txt-fil i /home/pi/nexahome och en kopia i /home/pi/nexahome/mywebserver. Detta hjälpte inte så testade jag själv att accessa robots.txt från utsidan min brandvägg.

Att lägga <meta name="robots" content="noindex"> i headers hjälper inget; dels kan jag inte påverka innehållet i index.html och dels är tydligen skadan redan skedd i och med att filerna accessas. Det enda som kan hjälpa mig (förutom att spärra ut Google i brandväggen, vilket jag inte vill/kan av andra skäl) är en robots.txt som verkligen returneras till roboten.

Problemet: Oavsett vad jag skriver för URL så får jag inte webbservern i NexaHome att skicka ut robots.txt och Google fortsätter. Vad göra?
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by hekj »

brusan wrote:Har ramlat på ett litet problem: Googles robotar har tydligen förälskat sig i webbservern på min Raspberry Pi där alla mätdata från huset presenteras och där styrningen också ligger. Trots att roboten rimligen inte kan komma åt de enskilda sidorna på servern så initierar den av något obegripligt skäl ständiga uppdateringar av alla graferna vilket resulterar i att CPU:n är i stort sett konstant överbelastad och inte har tid med så mycket annat...

För att få Google att sluta indexera sajten har jag lagt in en robots.txt-fil i /home/pi/nexahome och en kopia i /home/pi/nexahome/mywebserver. Detta hjälpte inte så testade jag själv att accessa robots.txt från utsidan min brandvägg.

Att lägga <meta name="robots" content="noindex"> i headers hjälper inget; dels kan jag inte påverka innehållet i index.html och dels är tydligen skadan redan skedd i och med att filerna accessas. Det enda som kan hjälpa mig (förutom att spärra ut Google i brandväggen, vilket jag inte vill/kan av andra skäl) är en robots.txt som verkligen returneras till roboten.

Problemet: Oavsett vad jag skriver för URL så får jag inte webbservern i NexaHome att skicka ut robots.txt och Google fortsätter. Vad göra?
Lägg in nedanstående i html filen.

Code: Select all

<meta name="robots" content="noindex">

Byt sedan till fliken 'Web' samt klicka på 'Reload' knappen. Därefter laddar du om sidan i din webläsare.

Har lagt in robots noindex på defaultsidan.
http://nexahome.se/NexaHome_3.7.3.jar
http://nexahome.se/NexaHome_RPi_3.7.3.jar
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Tack för hjälpen, Henrik. Jag har installerat den nya versionen men tyvärr hjälper meta-taggarna inte så mycket för det här problemet.

Spindlarna accessar filerna i vilket fall som helst (även om dom sedan inte indexeras) och då drar NexaHome igång och genererar grafer; se nedanstående exempel på vad som händer i brandväggen och vad som händer på Raspberry Pi:en. Det enda sättet (som jag känner till) att få spindlarna att låta sajten i sin helhet vara ifred är via robots.txt.

I exemplet nedan så har NexaHome genererat om mySensorChart_temp_energi.png fem gånger på några minuter - det innebär en tämligen upptagen Raspberry Pi :cry: Konsekvensen blir att NexaHome inte "kommer åt" att köra köade events, läsa av sensorer osv på grund av att processorn är helt överlastad med att generera bilder åt Google :oops:

Jag tror dessvärre att den enda lösningen är att NexaHome:s webbserver kan leverera en robots.txt när spindeln accessar serverns rot.

Trafik i brandväggen:
Image

Katalogen där bilderna genereras på Raspberry Pi och CPU-lasten i nedre högra hörnet:
Image

Tror du att det finns en möjlighet att lägga in en robots.txt (den kan vara tom eller så kan den ha User-Agent: * Allow: / som man kan modifiera vid behov?

Mvh /Brus-Per
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by hekj »

Har lagt upp en ny version som om allt fungerar returnerar följande som svar på robots.txt

Code: Select all

User-agent: *
Disallow: /
http://nexahome.se/NexaHome_3.7.4.jar
http://nexahome.se/NexaHome_RPi_3.7.4.jar
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Du är helt fantastisk - TACK! Skall installera den och ta bort "Google-reglerna" ur min brandvägg nu, Återkommer med respons!
brusan
Posts: 47
Joined: Fri Mar 17, 2023 9:45 am
Location: Stora Dyrön

Re: NexaHome:s webbserver - hur sätta Request Timeout?

Post by brusan »

Sammanfattning av robots.txt-modden: SUCCCÉ :clap:

Nu hackar visserligen Googlebots på som förut men dom åstadkommer ingen större last på systemet. Se grafen nedan och kommentarer:

Image

När CPU-lasten på Raspberry Pi:en är uppe ikring 2 så är den praktiskt taget oanvändbar vilket var läget innan jag installerade v3.7.4 som Henrik fixade igår kväll. Fram till cirka 22:30 är NexaHome i princip bara upptagen med att generera grafer åt Googlebot :( Jag la då in regler i brandväggen som förhindrade Googlebot att accessa mitt nätverk och CPU-lasten sjunker omedelbart till rimliga nivåer. Innan installationen av v3.7.4 så tog jag bort reglerna i brandväggen som stoppade Googlebot och lasten ökar succesivt över några minuter. När jag startar upp den nya versionen (cirka 23:15) så går CPU-lasten omedelbart ner (gula kurvan). Den röda kurvan är ett medelvärde över 15 minuter så den laggar såklart. Under natten fortsätter Googlebot att accessa servern ungefär var 30:e sekund men dom åstadkommer bara spikar i CPU-belastningen (se bild nedan).

Image

Min slutsats av det hela är:
1. robots.txt fungerar utmärkt, i vilket fall respekterar Googlebots den informationen - att det sedan finns ett antal mindre "well behaved" spindlar ute på nätet går liksom inte att göra något åt förutom i brandväggen.
2. Raspberry Pi räcker helt klart i normalfallet till för att köra NexaHome inklusive webbserver men ibland är det på håret. När upprepade requests som resulterar i att det skall genereras/skickas grafer kommer till webbservern med relativt täta intervall (<1minut) blir CPU:n hårt belastad och det är risk att andra event inte tas omhand. I vilket fall blir väntetiderna på att få en graf (t.ex en plott på temperatur vs tid) upp emot en minut.
3. Ett sätt att få loss lite mer resurser ur Raspberry Pi:en är att köra den utan GUI, att fördela om minnesallokeringen mellan GPU och CPU samt såklart att överklocka.
4. Jag skulle föredra att köra webb-delen av NexaHome på en separat Raspberry Pi och helst då med en standard-webbserver typ Nginx eller Apache där man kan jobba med JS, CSS och HTML5 lite friare. Jag vet inte hur Henrik ser på den möjligheten. Troligen blir det lite utmaningar med passning av parametervärden?

Sist, men inte minst - TACK till Henrik för suverän hjälp!
Post Reply