OpenHab i parsowanie HTML

  • 1 Odpowiedzi
  • 3943 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

OpenHab i parsowanie HTML
« dnia: Czerwiec 12, 2016, 10:09:32 pm »
Witam
Mam prośbę o pomoc w temacie OpenHab/automatyka budynkowa.
Chciałbym wyłączyć lub włączyć  sobie przy pomocy OpenHab'a matę elektryczną grzewczą podłogową i zakupiłem u chińczyka przekaźnik ethernetowy

http://www.sainsmart.com/relay-1/sainsmart-rj45-tcp-ip-remote-controller-board-with-8-channels-relay-integrated.html
 
OpenHab pelnilby rolę termostatu (dane z dwóch termometrow podlaczonych do ESP8622-12- jeden pod plytkami a drugi metr nad podlogą) ...Chciałbym również mieć mozliwosc  recznego wlaczenia  sobie ogrzewanie a nie przy pomocy np tylko komórki z aplikacji HABdroid ...akurat ten przekaźnik chiński ma wejścia GND i IN i jak się zewrze je to załączy lub rozłączy odpowiedni przekaźnik...problem w tym że musi o tym także widzieć OpenHab(tak mi się wydaje).Jedynym chyba sposobem aby o tym wiedział jest odpytanie strony w chińskim urządzeniu gdzie jest status przekaznikow(zmienia się on dynamicznie w zaleznosci od zwarcia wejścia).Najprosciej bym to zrobil curl'em spod linuksa ale trzeba by parsowac z kilka sekund strone html ze stanem przekaznikow...i tutaj nie wiem jak to zrobić i mialbym prosbe o jakies sugestie ew. strony do poczytania o takim parsowaniu.

Z gory dzięki za pomoc.Pozdrawiam.

HTML po odpytaniu np. curl'em urządzenia wygląda tak(stan przekaźników od 5 do 8 - wyłączone)

<center><p>Relay-ALL &nbspON&nbsp&nbsp&nbsp<font color="#00FF00"> &nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/45"> ALL-ON</a><p><center><p>Relay-ALL OFF <font color="#FF0000"> &nbsp&nbsp&nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/44"> ALL-OFF</a><p><center><p> Relay-05: <font color="#FF0000"> OFF&nbsp&nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/09">ON/OFF-05</a><p><center><p> Relay-06: <font color="#FF0000"> OFF&nbsp&nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/11">ON/OFF-06</a><p><center><p> Relay-07: <font color="#FF0000"> OFF&nbsp&nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/13">ON/OFF-07</a><p><center><p> Relay-08: <font color="#FF0000"> OFF&nbsp&nbsp</font> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/15">ON/OFF-08</a><p><center><p> Change IP/Port:&nbsp&nbsp&nbsp&nbsp <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/41"> Enter</a><p> <small><a href="http://192.168.1.222/30000"></a></small><a href="http://192.168.1.222/30000/42">Next Page</a><p>
*

Offline Enc

  • ** 94
  • 3
  • Nazwa i wersja ID: OpenHab
Odp: OpenHab i parsowanie HTML
« Odpowiedź #1 dnia: Czerwiec 13, 2016, 08:10:51 am »
Ja bym pokombinował z http binding i regexp-ami:


http="<[http://host/url:60000:REGEX(.*?Relay-08: <font color="#FF0000">(O.*?)&nbsp;.*)]"

Ponieważ na jednej stronie wyświetlane jest kilka przekaźników to warto może użyć modułu cache aby ograniczyć ilość pobierań strony.

w openhab.conf:

http:relayCache.url=http://host/url
http:relayCache.updateInterval=60000

i w itemie:
[code]http="<[relayCache:30000:REGEX(.*?Relay-08: <font color="#FF0000">(O.*?)&nbsp;.*)]"[/code]
... vendor agnostic ...