[Linux-Biella] arduino e html parsing

Leonardo leonardo.buffa a bilug.it
Ven 8 Feb 2019 09:26:42 CET


ciao

sto cercando di fare un telecomando secondario per l'antifurto che posso 
pilotare via http

la parte incriminata del codice HTTP che gira sull'antifurto e' la seguente:

---------------
<fieldset>
<legend>Stato sistema</legend>
<div class="ctr"><span>Arma/Disarma sistema</span>:
   <select id="SysCtr"  style="width:120px;"  name="SysCtr" 
onchange="CtrlPartSubmit('Ctrl','SysCtr')">
     <option value="1" selected="selected">Arma</option>
     <option value="2" >Parziale</option>
     <option value="3" >Disarma</option>
     <option value="4">Cancella allarme</option>
   </select>
</div>
</fieldset>
-------------------


necessito quindi di

- poter leggere lo stato dell'antifurto (armato, parziale, disarmato) 
che normalmente leggo in python in questo modo:

page = requests.get(url,auth=requests.auth.HTTPBasicAuth(username, 
password))
tree = html.fromstring(page.content)
Status = tree.xpath('//select/option[@selected]/text()')[0]

dove Status assume il valore impostato in selected



- poter cambiare lo stato dell'antifurto conm cosa che con python faccio 
in questo modo:

r = requests.post(url, data={'Ctrl':Command, 'BypassNum':"00", 
'BypassOpt':"0"},auth=requests.auth.HTTPBasicAuth(username, password))
print(r.status_code)

anche qui ho: 1 arma, 2 parziale, 3 disarma


vorrei riuscire a replicare la cosa con un ESP8266 quindi Arduino... ho 
provato a fare un po' di tentativi ma non ci sono riuscito.. qualcuno ha 
qualche idea?
attualmente sto usando solo le librerie ESP8266HTTPClient.h e ovviamente 
ESP8266WiFi.h




PS: molto teoricamente potrei fare un parsing con un simil "grep 
selected -tail -n 1 (la pagina e' piu' complessa e ha piu' selected) con 
il comando:

grep selected RemoteCtr.htm |head -n 1

otterrei:

		    <option value="1" selected="selected">Arma</option>

che poi posso ulteriormente parsare ed estrarre la voce "Arma" pero' se 
ci fosse qualcosa di meglio preferirei


Maggiori informazioni sulla lista Linux