HTML waarde inlezen

Forum over Homeseer scripts (DUTCH forum)

Moderators: TANE, Ruud

phoenixb
Advanced Member
Advanced Member
Posts: 512
Joined: Thu Jul 23, 2009 1:00 pm
Location: Netherlands

HTML waarde inlezen

Post by phoenixb »

Hallo,

Ik heb een vraag, is het mogelijk om vanuit een html opgebouwde site een statische waarde in te lezen in HS en deze te koppelen aan een virtueel device?

Dus voorbeeld in de HTML code staat de volgende code:

Code: Select all

 <td width="52%" height="31"><b><font face="Verdana" size="3">Setpoint:</font></b></td>
<td width="90%" height="31"><font size="3" face="Verdana"><b>22°C</b></font></td> 
Waarbij de waarde 22 een setpoint is die ik in wil lezen.

Dus nu is mijn vraag kan dat?
__________________
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by Alexander »

Ja gaat prima. Zo werkt mijn fritzbox script ook om de telefoonboek uit te lezen.
Alexander
evja78
Member
Member
Posts: 61
Joined: Mon Sep 28, 2009 4:05 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by evja78 »

Alexander,

Hoe ziet zo´n script er dan uit ? ben zelf niet echt script handig, maar ik neem aan dat je op een bepaalde tekstwaarde zoekt in de html en dan een x-aantal karakters kopieert naar een HS device ?

evja
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by Alexander »

Ik kan het script geven om dat deel waar DJ een quote over doet het resultaat in een device te geven, maar het is nuttiger om eerst even te weten hoe deze waarden uitgelezen moet worden. Er zijn namelijk een aantal mogelijkheden:


- Je weet zeker dat datgene dat je wilt "grabben" op een bepaalde regel staat
- Je gaat uit van een vaste positie in een regel waar datgene wat je wilt "grabben" getoond wordt
- Je zoekt op kenmerken in een regel die altijd plaats vindt, in dit voorbeeld op "<td width="90%" height="31"><font size="3" face="Verdana"><b>"
- De twee bovenstaande combineren waarbij je zeker weet dat datgene wat je wilt "grabben" een vast aantal posities heeft
- Je laat het script alle html tags verwijderen alvorens je de informatie "grabt". In dit voorbeeld zou je dus twee regels overhouden met "Setpoint:" en "22°C". Dan moet je alleen zeker weten welke regel je moet pakken, omdat een herkenning op 1 regel niet meer te vinden is (hooguit de "°C")

En deze logica verwerk je weer in een script. Ik zal het voorbeeld invullen als ik even de tijd vandaag heb. Kom er vandaag op terug. Anders inspecteer even mijn script. Dat leert ook veel beter.
Alexander
phoenixb
Advanced Member
Advanced Member
Posts: 512
Joined: Thu Jul 23, 2009 1:00 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by phoenixb »

Ik heb voor het gemak even de index.html online gezet op een andere server (converter draait namelijk lokaal hier)
http://www.djdive.com/Download/index.html

Zoals je kan zien is dit opgebouwd uit tabellen, de converter ververst deze index.html zodra er een waarde op de bediening (lokaal dus) veranderd.

ik zal proberen aan de hand van je script ook wat te maken.
__________________
Digit
Global Moderator
Global Moderator
Posts: 3388
Joined: Sat Mar 25, 2006 10:23 am
Location: Netherlands
Contact:

Re: HTML waarde inlezen

Post by Digit »

Voor dit soort uitpluiswerk gebruik ik altijd Regular Expressions
Errug handig en krachtig.
AshaiRey
Senior Member
Senior Member
Posts: 1310
Joined: Mon Feb 02, 2009 5:27 pm
Location: Netherlands
Contact:

Re: HTML waarde inlezen

Post by AshaiRey »

Hier staat een stukje script dat je opweg kan helpen
http://www.domoticaforum.eu/viewtopic.php?f=47&t=3416
Bram
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by Alexander »

Code: Select all

Sub Main(ByVal Params As String)
   Dim strData as String = hs.GetURL("http://www.djdive.com","/Download/index.html", True, 80)
   Dim strArray = Split(strData," ")
   hs.setDeviceString("H1", strArray(25))
   hs.setDeviceString("H2", strArray(37))
   hs.setDeviceString("H3", strArray(54))
   hs.setDeviceString("H4", strArray(66))
End Sub
Code verdient niet de schoonheidsprijs, maar het werkt ;-) De eerste regel haalt de pagina op en stript direct de html codes uit de ontvangen data. Vervolgens wordt de lange string opgesplitst in een array van strings op basis van een spatie. De volgende regels schrijven de waardes weg afhankelijk van de regel binnen de array. De nummers zijn zo hoog, omdat elke regel aangemaakt wordt als er een spatie in de string voorkomt.

De values zijn dus opvolgend:
22,5°C
22°C
3
Verwarmen
Alexander
phoenixb
Advanced Member
Advanced Member
Posts: 512
Joined: Thu Jul 23, 2009 1:00 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by phoenixb »

Hi,

Het valt me op dat het programmeren soms zo simpel kan zijn.
Ik was al veels te moeilijk aan het proberen gisteren waardoor je al snel het overzicht kwijt raak.

Ik denk dat die script workshop zeker wel een toegevoegde waarde zal hebben straks.
Gr,
__________________
Digit
Global Moderator
Global Moderator
Posts: 3388
Joined: Sat Mar 25, 2006 10:23 am
Location: Netherlands
Contact:

Re: HTML waarde inlezen

Post by Digit »

Tenzij je in full control bent over de inhoud van die html file (en dan hoef je dit dus vaak ook niet te doen) moet je dit (imo) nooit zo doen.
1 verandering in de html door de maker en je kunt opnieuw spaties tellen, dat moet je je wel realiseren.
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by Alexander »

@Digit: Dat geldt natuurlijk in alle situaties. Ik gaf al aan dat het niet de schoonheidsprijs verdient, maar het werkt met dit voorbeeld. Als ik regex ga gebruiken, dan krijg ik het helemaal niet uitgelegd. En dan nog kan het fout gaan natuurlijk. Maar goed, wellicht handig voor de mensen hier om je input te geven hoe (graag werkend voorbeeld) dit dan beter kan.
Alexander
Digit
Global Moderator
Global Moderator
Posts: 3388
Joined: Sat Mar 25, 2006 10:23 am
Location: Netherlands
Contact:

Re: HTML waarde inlezen

Post by Digit »

Een werkend voorbeeld produceren valt buiten de scope van mijn reactie (twijfels omtrent bestendigheid).
Ik ga dus geen HS script maken, daar zijn anderen trouwens ook veel beter in. En ik zal het net zo min uitgelegd krijgen toch. :)
Ik kan best een praktijkvoorbeeld geven maar dat zal dan alleen maar bladvulling worden, want niemand zal het kunnen gebruiken.
Kun je beter gaan googlen; voorbeelden te over.
phoenixb
Advanced Member
Advanced Member
Posts: 512
Joined: Thu Jul 23, 2009 1:00 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by phoenixb »

Gezien de uitgelegde situatie kan ik met de "strArray" functie in iedergeval uit de voeten zeker omdat de pagina om de x minuten opnieuw wordt opgebouwd vanuit die converter (wellicht dat er op de achtergrond iets draait maar waarom moeilijk doen als het makelijk kan :wink: ).

Ik ben het met robert eens dat er legio voorbeelden te vinden op het net, maar ik zie het voor nu even als een vreemde taal.
Ik heb niks aan de grammatica als ik de woorden nog niet ken (dat is het probleem waar ik nu tegen aanloop), ik hoop straks met de workshop in iedergeval een begin te hebben om op door te kunnen bouwen en zodoende in de toekomst zelf mooie scripts te kunnen maken.

(heb nog voldoende ideeën maar het moet nu nog op het beeld komen )
__________________
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by Alexander »

JFYI: Split is de functie. strArray is een variabele.
Alexander
evja78
Member
Member
Posts: 61
Joined: Mon Sep 28, 2009 4:05 pm
Location: Netherlands

Re: HTML waarde inlezen

Post by evja78 »

Ik ben ook een script newbie, maar dat met die array kan werken voor wat ik wil.

Hoe `tel je de spaties` nadat de html code is gestript zoals jullie aangegeven ? Kan je die array die gemaakt wordt ergens zien/opslaan om te bepalen welke regels je nodig hebt ?

Dit zijn misschien domme/basis vragen (kies zelf welke van toepassing is :) maar ben een script beginner zoals ik al zei....

Evja
Post Reply

Return to “Homeseer Scripts Forum”