HTTPMOD - OPENWRT/LEDE

Begonnen von Rampler, 22 September 2017, 18:23:00

Vorheriges Thema - Nächstes Thema

Rampler

Hallo zusammen,
habe es erfolgreich geschafft mich an meinem OPENWRT Router anzumelden via HTTPMOD.
Doch scheitere ich an regexp.
Im buf steht:  (Auszug)
   <td width="33%">Model</td><td>TP-Link Archer C7 v2</td>

Ich dachte ich könnte jetzt einfach das Model als Reading auslesen mit:
attr dev reading1Name Model
attr dev reading1Regex Model([\d\.]+)

Doch leider bekommt das Reading nur "r".
Ich glaube, da bin ich gänzlich auf dem Holzweg oder ?

VG
Klaus
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

StefanStrobel

Hallo Rampler,

Mit Deiner Regex suchst Du nach "Model" direkt gefolgt von einer Folge von Ziffern oder Punkten, die dann als Reading verwendet werden.
So kann das nicht funktionieren. Nach Model kommt ja erst einmal </td> etc. und die Modellbezeichnung besteht auch nicht nur aus Ziffern.
Schau doch mal das an: http://perldoc.perl.org/perlretut.html

Gruss   
   Stefan

Rampler

Danke für die Info, habs mittlerweile gecheckt !

Leider besteht der Stream auch aus Java Script, d. h. die eigentlich wichtigen Informationen sind im buf nicht ersichtlich.
Gibst da Lösungsansätze ?

VG
Klaus
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

StefanStrobel

Hallo Klaus,

wenn die Werte in der Seite nicht enthalten sind sondern per JavaScript weitere Inhalte nachgeladen werden, dann müsstest Du mit HTTPMOD genau diese URLs auch abrufen...

Gruss
   Stefan

Rampler

Ich möchte mich nochmal für die Unterstützung und dem Modul bedanken.
Ich kann jetzt die gewünschten Werte aus meinem OpenWrt/LEDE Router auslesen, und sogar das Gast-WLAN ein/ausschalten. Ich poste mal die Config, evtl. hilft es jemanden..

define WZ.router HTTPMOD http://192.168.1.4/cgi-bin/luci/?status=1 600
attr WZ.router userattr get01CheckAllReadings:0,1 get01Name get01Poll:0,1 get01PollDelay get01PollDelay:0,1 get01URL get02CheckAllReadings:0,1 get02ExtractAllJSON:0,1 get02JSON get02Name get02URL get03CheckAllReadings:0,1 get03ExtractAllJSON:0,1 get03Name get03URL get2Name getCheckAllReadings:0,1 getPoll:0,1 reading01MaxAge reading01Name reading01Regex reading01XPath reading01XPath-Strict reading02MaxAge reading02Name reading02Regex reading03MaxAge reading03Name reading03Regex reading04JSON reading04Map reading04MaxAge reading04Name reading05Name reading05Regex reading06JSON reading06MaxAge reading06Name reading06OExpr reading07JSON reading07MaxAge reading07Name reading07OExpr reading08JSON reading08MaxAge reading08Name reading08OExpr reading09Format reading09JSON reading09MaxAge reading09Name reading09OExpr reading10Format reading10JSON reading10MaxAge reading10Name reading10OExpr reading11Format reading11JSON reading11MaxAge reading11Name reading11OExpr readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,reading,internal,expression,delete replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value set01Data set01Header1 set01Header2 set01Header3 set01IMap set01Name set01URL set03ParseResponse:0,1 sid1Data sid1Header1 sid1Header2 sid1IgnoreRedirects:0,1 sid1URL sid2Header1 sid2ParseResponse:0,1 sid2URL
attr WZ.router enableControlSet 1
attr WZ.router enableCookies 1
attr WZ.router get01Name static_data
attr WZ.router get01Poll 1
attr WZ.router get01PollDelay 86400
attr WZ.router get01URL http://192.168.1.4/cgi-bin/luci/
attr WZ.router get02ExtractAllJSON 0
attr WZ.router get02Name hosts
attr WZ.router get02URL http://192.168.1.4/cgi-bin/luci/?hosts=1
attr WZ.router get03ExtractAllJSON 0
attr WZ.router get03Name dynamic_data
attr WZ.router get03URL http://192.168.1.4/cgi-bin/luci/?status=1
attr WZ.router icon it_router
attr WZ.router reAuthRegex .*Forbidden.*
attr WZ.router reading01MaxAge 86400
attr WZ.router reading01Name Model
attr WZ.router reading01Regex Model</td><td>(.*)(?><\/td>)
attr WZ.router reading02MaxAge 86400
attr WZ.router reading02Name Firmware
attr WZ.router reading02Regex Firmware Version<\/td><td>[^\S]+[^\S](.*) \/
attr WZ.router reading03MaxAge 86400
attr WZ.router reading03Name Hostname
attr WZ.router reading03Regex Hostname</td><td>(.*)(?><\/td>)
attr WZ.router reading04JSON wifinets_02_networks_02_up
attr WZ.router reading04Map true:on,  false:off
attr WZ.router reading04MaxAge 1200
attr WZ.router reading04Name Gast-WLAN-Status
attr WZ.router reading05Name token
attr WZ.router reading05Regex token: '(.*)'
attr WZ.router reading06JSON uptime
attr WZ.router reading06MaxAge 1200
attr WZ.router reading06Name Uptime
attr WZ.router reading06OExpr my $hours=$val/3600;; my $d=int($hours/24);; my $h=int(($hours/24-$d)*24);; my $m=int((($hours/24-$d)*24-$h)*60);; "$d"."d"."  $h"."h"." $m"."m";;
attr WZ.router reading07JSON wifinets_01_networks_01_assoclist_08:96:D7:7B:89:BA_rx_rate
attr WZ.router reading07MaxAge 1200
attr WZ.router reading07Name WAN_rx_rate
attr WZ.router reading07OExpr my $rate=$val/1000;; "$rate"." Mbit/s";;
attr WZ.router reading08JSON wifinets_01_networks_01_assoclist_08:96:D7:7B:89:BA_tx_rate
attr WZ.router reading08MaxAge 1200
attr WZ.router reading08Name WAN_tx_rate
attr WZ.router reading08OExpr my $rate=$val/1000;; "$rate"." Mbit/s";;
attr WZ.router reading09Format %.2f
attr WZ.router reading09JSON loadavg_0
attr WZ.router reading09MaxAge 1200
attr WZ.router reading09Name load_01m
attr WZ.router reading09OExpr $val/65535
attr WZ.router reading10Format %.2f
attr WZ.router reading10JSON loadavg_1
attr WZ.router reading10MaxAge 1200
attr WZ.router reading10Name load_05m
attr WZ.router reading10OExpr $val/65535
attr WZ.router reading11Format %.2f
attr WZ.router reading11JSON loadavg_2
attr WZ.router reading11MaxAge 1200
attr WZ.router reading11Name load_15m
attr WZ.router reading11OExpr $val/65535
attr WZ.router readingMaxAgeReplacement "outdated - was " . $val
attr WZ.router readingMaxAgeReplacementMode expression
attr WZ.router replacement05Mode reading
attr WZ.router replacement05Regex %token%
attr WZ.router replacement05Value token
attr WZ.router room ToDo
attr WZ.router set01Data token=%token%
attr WZ.router set01Header2 Content-Type: application/x-www-form-urlencoded
attr WZ.router set01IMap wireless_shutdown:off, wireless_reconnect:on
attr WZ.router set01Name gast_wlan
attr WZ.router set01URL http://192.168.1.4/cgi-bin/luci/admin/network/$val/radio1.network2
attr WZ.router sid1Data luci_username=root&luci_password=xxxxxxxx
attr WZ.router sid1Header1 Accept: */*
attr WZ.router sid1Header2 Content-Type: application/x-www-form-urlencoded
attr WZ.router sid1IgnoreRedirects 1
attr WZ.router sid1URL http://192.168.1.4/cgi-bin/luci/
attr WZ.router sid2Header1 Accept: text/html,application/xhtml+xml,application/xml;;q=0.9,*/*;;q=0.8 Accept-Language: de,en-US;;q=0.7,en;;q=0.3 Accept-Encoding: gzip, deflate
attr WZ.router sid2ParseResponse 1
attr WZ.router sid2URL http://192.168.1.4/cgi-bin/luci/admin/network/wireless
attr WZ.router stateFormat <div style="text-align:left">MO: &nbsp Model </div>\
<div style="text-align:left">HN: &nbsp Hostname</div>\
<div style="text-align:left">FW: &nbsp Firmware</div>\
<div style="text-align:left">UP: &nbsp Uptime</div>\
<div style="text-align:left">RX: &nbsp WAN_rx_rate</div>\
<div style="text-align:left">TX: &nbsp WAN_tx_rate</div>\
<div style="text-align:left">LO: &nbsp load_01m load_05m load_15m</div>\
<div style="text-align:left">GW: &nbsp Gast-WLAN-Status </div>\

attr WZ.router verbose 2
attr WZ.router webCmd gast_wlan on:gast_wlan off
define Set_status_guest_wlan_wz_router notify WZ.router.gast_wlan.* { \
if ($EVTPART1 eq "on") \
{fhem "setreading WZ.router Gast-WLAN-Status on"} \
elsif ($EVTPART1 eq "off") \
{fhem "setreading WZ.router Gast-WLAN-Status off"}};;
attr Set_status_guest_wlan_wz_router icon message_attention
attr Set_status_guest_wlan_wz_router room ToDo


VG
Klaus
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

FhemPiUser

#5
Hallo Rampler,

erstmal vielen Dank für das Sharen des sehr interessanten RAW codes zur Steuerung eines OPENWRT routers! 

Leider läuft es bei mir noch nicht ganz. Das Abfragen der uptime etc funktioniert bei mir zwar mit Deinem Code, jedoch nicht das Schalten des WLANs mit dem set-Befehl.

Ich habe zwei wireless devices:
1. ein radio0 mit Master "hauptwlan" (wlan0)
2. ein radio0 mit Master "guestwlan" (wlan0-1)

Ich möchte beide separat per fhem an- und ausschalten können. Ich habe es mit


set01URL http://192.168.1.x/cgi-bin/luci/admin/network/$val/radio0.network1


für hauptwlan bzw.


set02URL http://192.168.1.x/cgi-bin/luci/admin/network/$val/radio0.network2


für guestwlan probiert, leider ohne Erfolg.

Eine Idee, woran das liegt? Kann es sein, dass sich die URLs durch eine neue Openwrt-Version geändert haben? Ich hab die aktuelle OpenWrt 18.06.1, welche Du?

FhemPiUser

Habe es gelöst mit Hilfe des openwrt forums:

Die genannten URLs gibt es in neuen Openwrt Versionen nicht mehr. Stattdessen kann mit luci-app-commands Kommandos definiert werden, die per URL vom fhem aufgerufen werden können. Siehe https://forum.openwrt.org/t/how-to-enable-disable-wlan-remotely-using-http-fhem/25823/3