Hallo zusammen,
ich grüble derzeit über den korrekten Regex - Ausdruck für das Extrahieren von Wetterdaten von WeatherLink.com (meine eigene Davis Wetterstation, da das VantagePro Modul Netzwerkprobleme verursacht).
Ich habe für z.B. Barometer folgende Regex, die auch laut regex101.com laufen sollte, am start:
(?s)Barometer.{43}([\d\.]+)
Der Buffer vom MOD sieht so aus:
HTTP/1.1 200 OK Content-Type: text/html Connection: close Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Date: Thu, 25 May 2017 20:31:38 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Server: Apache Set-Cookie: PHPSESSID=pvq81g666va9e7fu24qk0aljv2; path=/ Set-Cookie: AWSELB=F1E131E50EF091F2748F3BF05B2028E05203E1C49628C735EEB651B784DE68CF34396B7F5E298CD098FCB854BA0ED0EA18BBD4ECE2B32DDC0760A76BC0A81C6A30A9F01010972122550B7207D3C33B6E04A25A3D27;PATH=/ Vary: Accept-Encoding X-Cache: Miss from cloudfront Via: 1.1 b451ce1932d9b97c4ef54f2f37ecb931.cloudfront.net (CloudFront) X-Amz-Cf-Id: oJTCmaWpczT7NiBhj89B7oWeU0Db9glSKxYQs66F0ocZ9-xsW_qL5A== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head><title>Davis | WeatherLink - My Weather Page</title> <!-- Force IE8 into compatibility mode so our shadows display correctly --> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/> <meta http-equiv="refresh" content="300"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Keywords" content="Davis WeatherLinkIP WeatherLink"> <meta name="Author" content="Andy Schmidt, Jeremaih Jeffress"> <meta name="Robots" content="All"> <meta name="Content-Language" content="English"> <meta name="Copyright" content="© 2017 Davis Instruments"> <link type="image/x-icon" href="/favicon.ico" rel="Shortcut Icon"> <link type="text/css" href="/lib/css/wl2.css" rel="stylesheet"> <link type="text/css" href="/lib/css/colorbox.css" rel="stylesheet"> <link type="text/css" href="/lib/css/jquery-ui-1.8.4.custom.css" rel="stylesheet"> <script type="text/javascript" src="/lib/js/library/jquery-1.7.1.min.js?ver=20170525"></script> <script type="text/javascript" src="/lib/js/library/jquery-ui-1.8.17.custom.min.js?ver=20170525"></script> <script type="text/javascript" src="/lib/js/library/jquery.colorbox.js"></script> <script type="text/javascript" src="/lib/js/library/jquery.validate.min.js"></script> <script type="text/javascript" src="/lib/js/library/lodash.2.4.1.min.js?ver=20170525"></script> <script type="text/javascript" src="/lib/js/classes/Lib.js"></script> <script type="text/javascript" src="/lib/js/classes/FormValidator.js"></script> <script type="text/javascript" src="/lib/js/classes/Dialog.js"></script> <script type="text/javascript" src="/lib/js/classes/cAjaxHandler.js"></script> <script type="text/javascript" src="/lib/js/classes/cAjaxQueue.js"></script> <script type="text/javascript"> $(document).ready(function(){ // This will fade out the message box if there is one. //LIB.fadeOutMessageBox(); //Buttons set with attributes data-link=1 will make the button perform as a link and will look for //the attribruge data-href for the url location to link to. $('body').on('click', 'button[data-link=1]', function(){ window.location.href = $(this).attr('data-href'); }); }); </script> <script type="text/javascript"> //-------------------------------------- function changeUnits() { var oForm = document.forms['frmUnits']; var iType; iType = oForm.selUnits.options[oForm.selUnits.selectedIndex].value; document.location.href = "/user/stargazer/index.php?view=summary&headers=1&type=" + iType; return; } </script> </head> <body> <div id="outerContainer"> <div id="mainContainer"> <!-- Header --> <div style="float: left;"> <a href="http://www.weatherlink.com/"><img src="/images/wl_top.png" width="281" height="46" alt="WeatherLink Logo"></a> </div> <div style="float: left;"> <img src="/images/wl_top-mid.png" width="369" height="46" alt=""> </div> <div style="float: left;"> <a href="http://www.davisnet.com" target="_blank"><img src="/images/wl_top-davis.png" width="112" height="46" alt="Davis Logo"></a> </div> <br clear="all" /> <!-- START: TOP NAVIGATION --> <table align="center" width="760" class="header" border="0" cellspacing="0" cellpadding="0" summary=""> <tr> <td height="25" class="NavLeft"> <a href="http://www.davisnet.com/support/weather/faq/index.asp?ProdFam=15&submit=Get+Information" target="_blank">FAQ's</a> | <a href="http://www.davisnet.com/weather/products/weather_product.asp?pnum=06555#price" target="_blank">Order Now</a> | <a href="/register.php">Register</a> </td> <td height="25" class="NavRight"> <a href="/user/stargazer/index.php?view=main&headers=1">My Weather</a> | <a href="/user/stargazer/index.php?view=summary&headers=1">Summary</a> | <a href="/user/stargazer/index.php?view=summary&headers=0">No Headers</a> | <a href="/map.php?station=stargazer">Map</a> | <a href="/login.php">Login</a> </td> </tr> <tr> <td height="1" colspan="2" align="center"><img src="/images/dividing_line.gif" width="760" height="1" alt=""></td> </tr> <tr> <td height="10" colspan="2" align="center"><img src="/images/spacer.gif" width="1" height="10" alt=""></td> </tr> </table> <!-- END: TOP NAVIGATION --> <!-- START: PAGE CONTENT --> <table align="center" width="760" class="content" border="0" cellspacing="0" cellpadding="0" summary=""> <tr> <td valign="top" align="center"> <table align="left" width="100%" border="0" cellspacing="0" cellpadding="0" summary=""> <tr> <td align="left" valign="top"> <!-- START: SUMMARY WEATHER DISPLAY --> <table width="760" cellpadding="0" cellspacing="0" border="0" summary=""> <tr> <td align="left" valign="top" colspan="6"> <a href="http://www.weatherlink.com/" class="notext"><img src="/images/wl_network.png" alt="WeatherLink Network" width="431" height="43" border="0"></a> </td> </tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr><td colspan="6" class="summary_station_name">LangenGrss</td></tr> <tr><td colspan="6" class="summary_timestamp">Current Conditions as of 10:30 PM Thursday, May 25, 2017</td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Station Summary</td> <td width="170" class="summary_header">Current</td> <td width="200" colspan="2" class="summary_header">Today's Highs</td> <td width="200" colspan="2" class="summary_header">Today's Lows</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Outside Temp</td> <td width="170" class="summary_data">14.5 C</td> <td width="100" class="summary_data">21.6 C</td> <td width="100" class="summary_data">5:17 PM</td> <td width="100" class="summary_data">11.4 C</td> <td width="100" class="summary_data">5:33 AM</td> </tr> <tr> <td width="190" class="summary_data">Outside Humidity</td> <td width="170" class="summary_data">84%</td> <td width="100" class="summary_data">91%</td> <td width="100" class="summary_data">4:40 AM</td> <td width="100" class="summary_data">60%</td> <td width="100" class="summary_data">2:54 PM</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Inside Temp</td> <td width="170" class="summary_data">20.1 C</td> <td width="100" class="summary_data">20.3 C</td> <td width="100" class="summary_data">12:00 AM</td> <td width="100" class="summary_data">19.5 C</td> <td width="100" class="summary_data">9:21 AM</td> </tr> <tr> <td width="190" class="summary_data">Inside Humidity</td> <td width="170" class="summary_data">47%</td> <td width="100" class="summary_data">52%</td> <td width="100" class="summary_data">10:06 AM</td> <td width="100" class="summary_data">43%</td> <td width="100" class="summary_data">8:58 AM</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Heat Index</td> <td width="170" class="summary_data">14.4 C</td> <td width="100" class="summary_data">21.7 C</td> <td width="100" class="summary_data">5:15 PM</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr> <td width="190" class="summary_data">Wind Chill</td> <td width="170" class="summary_data">14.4 C</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data">10.6 C</td> <td width="100" class="summary_data">5:09 AM</td> </tr> <tr> <td width="190" class="summary_data">Dew Point</td> <td width="170" class="summary_data">11.7 C</td> <td width="100" class="summary_data">15.0 C</td> <td width="100" class="summary_data">4:16 PM</td> <td width="100" class="summary_data">10.0 C</td> <td width="100" class="summary_data">4:38 AM</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Barometer</td> <td width="170" class="summary_data">1022.7hPa</td> <td width="100" class="summary_data">1024.1hPa</td> <td width="100" class="summary_data">11:02 AM</td> <td width="100" class="summary_data">1022.2hPa</td> <td width="100" class="summary_data">8:39 PM</td> </tr> <tr> <td width="190" class="summary_data">Bar Trend</td> <td width="170" class="summary_data">Steady</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Wind Speed</td> <td width="170" class="summary_data">0.9 m/s</td> <td width="100" class="summary_data">7.2 m/s</td> <td width="100" class="summary_data">12:34 PM</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr> <td width="190" class="summary_data">Wind Direction</td> <td width="170" class="summary_data">NNW 331°</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">12 Hour Forecast</td> <td width="570" class="summary_data" colspan="5">Increasing clouds with little temperature change. Precipitation possible within 24 to 48 hours. </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Wind</td> <td width="170" class="summary_header">2 Minute</td> <td width="100" class="summary_header">10 Minute</td> <td width="100" class="summary_header"> </td> <td width="100" class="summary_header"> </td> <td width="100" class="summary_header"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Average Wind Speed</td> <td width="170" class="summary_data">1.1 m/s</td> <td width="100" class="summary_data">0.9 m/s</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr> <td width="190" class="summary_data">Wind Gust Speed</td> <td width="170" class="summary_data"> </td> <td width="100" class="summary_data">2.2 m/s</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Rain</td> <td width="170" class="summary_header">Rate</td> <td width="100" class="summary_header">Day</td> <td width="100" class="summary_header">Storm</td> <td width="100" class="summary_header">Month</td> <td width="100" class="summary_header">Year</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Rain</td> <td width="170" class="summary_data">0.0mm/Hour</td> <td width="100" class="summary_data">0.0mm</td> <td width="100" class="summary_data">0.0mm</td> <td width="100" class="summary_data">36.8mm</td> <td width="100" class="summary_data">178.8mm</td> </tr> <tr> <td width="190" class="summary_data">Last Hour Rain</td> <td width="170" class="summary_data">0.0mm</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> </table> <!-- END: SUMMARY WEATHER DISPLAY --> <br> <!-- START: DISPLAY SELECTION --> <table width="760" cellpadding="0" cellspacing="0" border="0" summary=""> <tr> <td align="left" valign="top" width="50%"> <form name="frmUnits" method="post" action="/user/stargazer32584/index.php"> View page units as: <select name="selUnits" class="device" onChange="JavaScript:changeUnits();"> <option value="0" SELECTED>Station Defaults</option> <option value="1">Metric</option> <option value="2">US Imperial</option> </select> </form> </td> <td align="right" valign="top" width="50%"> </td> </tr> </table> <!-- END: DISPLAY SELECTION --> </td> </tr> </table> </td> </tr> </table> <br> <!-- END: PAGE CONTENT --> <!-- START: FOOTER --> <div class="Footer"> <div class="FooterLinks"> <a href="http://www.davisnet.com/about/index.asp" target="_blank">About Davis</a> | <a href="privacy_corporate.php" target="_blank">Privacy</a> | <a href="http://www.davisnet.com/support/weather/faq/">FAQ's</a> | <a href="http://www.davisnet.com/contact/index.asp" target="_blank">Contact Us</a> | <a href="http://www.davisnet.com/support/index.asp" target="_blank">Support</a> | <a href="mailto:support@weatherlink.com?subject=WeatherLink+Website+Issue">Report Problems</a> </div> <div class="FooterText"> Copyright © 2017 - Davis Instruments, Corp. - All Rights Reserved - ver 1.15.0 </div> </div> <!-- END: FOOTER --> <br><br><br> <!-- START: Google Analytics --> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> <script type="text/javascript"> _uacct="UA-3010397-2"; urchinTracker("/user/index.php"); </script> <!-- END: Google Analytics --> </div><!-- mainContainer --> </div><!-- outerContainer --> </body> </html>
Leider bekomme ich kein Reading :-\.
Die Attribute im Modul sehen wie folgt aus:
attr WeatherLink readingsName_Barometer Barometer
attr WeatherLink readingsRegex_Barometer (?s)Barometer.{43}([\d\.]+)
Woran kann das liegen ?
Viele Grüße und besten Dank
André
Das (?s) brauchst Du nw. nicht.
Ich weiss aber nicht, ob Fhem mit {} in den Regexp klar kommt, dann evtl. ".{43}" durch 43 Punkte ersetzen.
Barometer...........................................([\d.]+)
Du sagst nicht, was Du für ein Modul nutzt, aber wenn es HTTPMOD ist, lautet es:
attr WeatherLink reading01Name Barometer
attr WeatherLink reading01Regex Barometer...........................................([\d.]+)
Hallo amenomade,
Jau...bin ich irgendwie drüber hinweg gekommen.
Klar...ich meinte das HTTPMOD-MODUL.
Ich werde das dann mal mit den 43 Punkten probieren.
Besten Dank !
VG
André
Hallo zusammen,
ich hatte das Mal mit den 43 Punkten gemacht.
Funktioniert aber leider nicht.
Das ist doch echt blöd. Man hat einen Ausdruck, der eigentlich funktioniert, denn aber doch nicht.
VG
André
Hast Du auch die Readingsnamen geändert, wie ich geschrieben habe?
readingsName.* und readingsRegex.* sind "deprecated". Richtig ist reading[0-9]+Name und reading[0-9]+Regex.
Ansonsten post mal bitte ein kompletes "list" von deinem HTTPMOD (wenn Usernamen und Passwörter o.ä. bitte im Vorfeld ggf. anonymisieren)
Hallo amenomade !
ich habe das mit den Attributen nochmals geändert. Leider ohne Erfolg.
Hier mal das List:
Internals:
BUSY 0
CHANGED
DEF http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1 60
Interval 60
LASTSEND 1496262068.9881
MainURL http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
ModuleVersion 3.3.9 - 23.3.2017
NAME WeatherLink
NR 368
STATE ???
TRIGGERTIME 1496262128.98771
TRIGGERTIME_FMT 2017-05-31 22:22:08
TYPE HTTPMOD
addr http://www.weatherlink.com:80
buf HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Wed, 31 May 2017 20:21:09 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache
Set-Cookie: PHPSESSID=u2e5ohhjrbgdc2php8jmikt; path=/
Set-Cookie: AWSELB=F1E131E50EF091F2748F3BF05B2028E05203E1C496BA0DBB6E148C798E4D5BA284C5E674DE6D7EB80BAA3F2CCD8F0CBF0DFDF55ED9B32DDC0760A76BC0A81C6A30A9F010107753D4E25DB0E82186FA264;PATH=/
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 a418a5add122000ef61af1637f885.cloudfront.net (CloudFront)
X-Amz-Cf-Id: dMPU1K9MoPcZtJK4KrxLf6XxHagVeDYKFvmKgETu_M_PsrtR7UQVoA==
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head><title>Davis | WeatherLink - My Weather Page</title>
<!-- Force IE8 into compatibility mode so our shadows display correctly -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta http-equiv="refresh" content="300">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Keywords" content="Davis WeatherLinkIP WeatherLink">
<meta name="Author" content="Andy Schmidt, Jeremaih Jeffress">
<meta name="Robots" content="All">
<meta name="Content-Language" content="English">
<meta name="Copyright" content="© 2017 Davis Instruments">
<link type="image/x-icon" href="/favicon.ico" rel="Shortcut Icon">
<link type="text/css" href="/lib/css/wl2.css" rel="stylesheet">
<link type="text/css" href="/lib/css/colorbox.css" rel="stylesheet">
<link type="text/css" href="/lib/css/jquery-ui-1.8.4.custom.css" rel="stylesheet">
<script type="text/javascript" src="/lib/js/library/jquery-1.7.1.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/library/jquery-ui-1.8.17.custom.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/library/jquery.colorbox.js"></script>
<script type="text/javascript" src="/lib/js/library/jquery.validate.min.js"></script>
<script type="text/javascript" src="/lib/js/library/lodash.2.4.1.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/classes/Lib.js"></script>
<script type="text/javascript" src="/lib/js/classes/FormValidator.js"></script>
<script type="text/javascript" src="/lib/js/classes/Dialog.js"></script>
<script type="text/javascript" src="/lib/js/classes/cAjaxHandler.js"></script>
<script type="text/javascript" src="/lib/js/classes/cAjaxQueue.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// This will fade out the message box if there is one.
//LIB.fadeOutMessageBox();
//Buttons set with attributes data-link=1 will make the button perform as a link and will look for
//the attribruge data-href for the url location to link to.
$('body').on('click', 'button[data-link=1]', function(){
window.location.href = $(this).attr('data-href');
});
});
</script>
<script type="text/javascript">
//--------------------------------------
function changeUnits() {
var oForm = document.forms['frmUnits'];
var iType;
iType = oForm.selUnits.options[oForm.selUnits.selectedIndex].value;
document.location.href = "/user/stargazer/index.php?view=summary&headers=1&type=" + iType;
return;
}
</script>
</head>
<body>
<div id="outerContainer">
<div id="mainContainer">
<!-- Header -->
<div style="float: left;">
<a href="http://www.weatherlink.com/"><img src="/images/wl_top.png" width="281" height="46" alt="WeatherLink Logo"></a>
</div>
<div style="float: left;">
<img src="/images/wl_top-mid.png" width="369" height="46" alt="">
</div>
<div style="float: left;">
<a href="http://www.davisnet.com" target="_blank"><img src="/images/wl_top-davis.png" width="112" height="46" alt="Davis Logo"></a>
</div>
<br clear="all" />
<!-- START: TOP NAVIGATION -->
<table align="center" width="760" class="header" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td height="25" class="NavLeft">
<a href="http://www.davisnet.com/support/weather/faq/index.asp?ProdFam=15&submit=Get+Information"
target="_blank">FAQ's</a> |
<a href="http://www.davisnet.com/weather/products/weather_product.asp?pnum=06555#price" target="_blank">Order Now</a> |
<a href="/register.php">Register</a>
</td>
<td height="25" class="NavRight">
<a href="/user/stargazer/index.php?view=main&headers=1">My Weather</a> |
<a href="/user/stargazer/index.php?view=summary&headers=1">Summary</a> |
<a href="/user/stargazer/index.php?view=summary&headers=0">No Headers</a> |
<a href="/map.php?station=stargazer">Map</a> |
<a href="/login.php">Login</a>
</td>
</tr>
<tr>
<td height="1" colspan="2" align="center"><img src="/images/dividing_line.gif" width="760" height="1" alt=""></td>
</tr>
<tr>
<td height="10" colspan="2" align="center"><img src="/images/spacer.gif" width="1" height="10" alt=""></td>
</tr>
</table>
<!-- END: TOP NAVIGATION -->
<!-- START: PAGE CONTENT -->
<table align="center" width="760" class="content" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td valign="top" align="center">
<table align="left" width="100%" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td align="left" valign="top">
<!-- START: SUMMARY WEATHER DISPLAY -->
<table width="760" cellpadding="0" cellspacing="0" border="0" summary="">
<tr>
<td align="left" valign="top" colspan="6">
<a href="http://www.weatherlink.com/" class="notext"><img src="/images/wl_network.png" alt="WeatherLink Network" width="431" height="43" border="0"></a>
</td>
</tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr><td colspan="6" class="summary_station_name">LangenGraß</td></tr>
<tr><td colspan="6" class="summary_timestamp">Current Conditions as of 10:20 PM Wednesday, May 31, 2017</td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Station Summary</td>
<td width="170" class="summary_header">Current</td>
<td width="200" colspan="2" class="summary_header">Today's Highs</td>
<td width="200" colspan="2" class="summary_header">Today's Lows</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Outside Temp</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data">22.9 C</td>
<td width="100" class="summary_data">4:28 PM</td>
<td width="100" class="summary_data">12.8 C</td>
<td width="100" class="summary_data">3:01 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Outside Humidity</td>
<td width="170" class="summary_data">71%</td>
<td width="100" class="summary_data">92%</td>
<td width="100" class="summary_data">3:04 AM</td>
<td width="100" class="summary_data">51%</td>
<td width="100" class="summary_data">4:03 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Inside Temp</td>
<td width="170" class="summary_data">21.8 C</td>
<td width="100" class="summary_data">22.2 C</td>
<td width="100" class="summary_data">11:31 AM</td>
<td width="100" class="summary_data">21.7 C</td>
<td width="100" class="summary_data">6:16 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Inside Humidity</td>
<td width="170" class="summary_data">50%</td>
<td width="100" class="summary_data">55%</td>
<td width="100" class="summary_data">12:00 AM</td>
<td width="100" class="summary_data">48%</td>
<td width="100" class="summary_data">5:14 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Heat Index</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data">23.3 C</td>
<td width="100" class="summary_data">3:57 PM</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Chill</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data">12.8 C</td>
<td width="100" class="summary_data">2:50 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Dew Point</td>
<td width="170" class="summary_data">8.9 C</td>
<td width="100" class="summary_data">16.1 C</td>
<td width="100" class="summary_data">9:49 AM</td>
<td width="100" class="summary_data">8.3 C</td>
<td width="100" class="summary_data">10:17 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Barometer</td>
<td width="170" class="summary_data">1021.4hPa</td>
<td width="100" class="summary_data">1021.4hPa</td>
<td width="100" class="summary_data">10:19 PM</td>
<td width="100" class="summary_data">1016.6hPa</td>
<td width="100" class="summary_data">12:00 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Bar Trend</td>
<td width="170" class="summary_data">Rising Slowly</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Wind Speed</td>
<td width="170" class="summary_data">1.3 m/s</td>
<td width="100" class="summary_data">8.5 m/s</td>
<td width="100" class="summary_data">12:27 PM</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Direction</td>
<td width="170" class="summary_data">N 5°</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">12 Hour Forecast</td>
<td width="570" class="summary_data" colspan="5">Mostly clear with little temperature change. </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Wind</td>
<td width="170" class="summary_header">2 Minute</td>
<td width="100" class="summary_header">10 Minute</td>
<td width="100" class="summary_header"> </td>
<td width="100" class="summary_header"> </td>
<td width="100" class="summary_header"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Average Wind Speed</td>
<td width="170" class="summary_data">0.9 m/s</td>
<td width="100" class="summary_data">0.9 m/s</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Gust Speed</td>
<td width="170" class="summary_data"> </td>
<td width="100" class="summary_data">1.8 m/s</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Rain</td>
<td width="170" class="summary_header">Rate</td>
<td width="100" class="summary_header">Day</td>
<td width="100" class="summary_header">Storm</td>
<td width="100" class="summary_header">Month</td>
<td width="100" class="summary_header">Year</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Rain</td>
<td width="170" class="summary_data">0.0mm/Hour</td>
<td width="100" class="summary_data">0.0mm</td>
<td width="100" class="summary_data">0.0mm</td>
<td width="100" class="summary_data">47.2mm</td>
<td width="100" class="summary_data">189.2mm</td>
</tr>
<tr>
<td width="190" class="summary_data">Last Hour Rain</td>
<td width="170" class="summary_data">0.0mm</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
</table>
<!-- END: SUMMARY WEATHER DISPLAY -->
<br>
<!-- START: DISPLAY SELECTION -->
<table width="760" cellpadding="0" cellspacing="0" border="0" summary="">
<tr>
<td align="left" valign="top" width="50%">
<form name="frmUnits" method="post" action="/user/stargazer/index.php">
View page units as:
<select name="selUnits" class="device" onChange="JavaScript:changeUnits();">
<option value="0" SELECTED>Station Defaults</option>
<option value="1">Metric</option>
<option value="2">US Imperial</option>
</select>
</form>
</td>
<td align="right" valign="top" width="50%"> </td>
</tr>
</table>
<!-- END: DISPLAY SELECTION -->
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<!-- END: PAGE CONTENT -->
<!-- START: FOOTER -->
<div class="Footer">
<div class="FooterLinks">
<a href="http://www.davisnet.com/about/index.asp" target="_blank">About Davis</a> |
<a href="privacy_corporate.php" target="_blank">Privacy</a> |
<a href="http://www.davisnet.com/support/weather/faq/">FAQ's</a> |
<a href="http://www.davisnet.com/contact/index.asp" target="_blank">Contact Us</a> |
<a href="http://www.davisnet.com/support/index.asp" target="_blank">Support</a> |
<a href="mailto:support@weatherlink.com?subject=WeatherLink+Website+Issue">Report Problems</a>
</div>
<div class="FooterText">
Copyright © 2017 - Davis Instruments, Corp. - All Rights Reserved
- ver 1.15.0 </div>
</div>
<!-- END: FOOTER -->
<br><br><br>
<!-- START: Google Analytics -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct="UA-3010397-2";
urchinTracker("/user/index.php");
</script>
<!-- END: Google Analytics -->
</div><!-- mainContainer -->
</div><!-- outerContainer -->
</body>
</html>
code 200
conn
data
displayurl http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
header
host www.weatherlink.com
httpheader HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Wed, 31 May 2017 20:21:09 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache
Set-Cookie: PHPSESSID=u2e5ohhjrbgdc2iktg91; path=/
Set-Cookie: AWSELB=F1E131E50EF091F2748F3BF05B2028E05203E1C496BA0DBB6E148C798E4D5BA284C5E674DE6D7EB80BAA3F2CCD8F0CBF0DFDF55ED9B32DDC0760A76BC0A81C6A30A9F01DB0E82E03089D2C186FA264;PATH=/
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 a418a5add122000ef61afe8a165.cloudfront.net (CloudFront)
X-Amz-Cf-Id: dMPU1K9MoPcZtJK4KrxLf6XxHmKgETu_M_PsrtR7UQVoA==
httpversion 1.0
hu_blocking 0
hu_filecount 2
hu_portSfx
ignoreredirects 0
loglevel 4
path /user/stargazer/index.php?view=summary&headers=1
protocol http
redirects 0
timeout 2
url http://www.weatherlink.com/user/stargazer32584/index.php?view=summary&headers=1
value 0
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
value 0
Sslargs:
Attributes:
reading01Name Barometer
reading01Regex Barometer...........................................([\d\.]+)
room Wetter
userattr reading01Name reading01Regex
Viele Grüße und vielen Dank
André
Das Problem ist: die Standard Regex Option matcht nicht über mehrere Zeilen
Probier mal so attr reading01Name Barometer
attr reading01Regex Barometer...............................................([\d\.]+)
attr reading01RegOpt s
(Vorsicht, Anzahl von Punkten wurde geändert).
Ich sehe gar keine 43 Punkte in deinem buffer, oder stehe ich da auf dem Schlauch?
Gesendet von iPad mit Tapatalk Pro
Nicht 43 sondern 47 jetzt (da Zeilenumbrüche mitgezählt werden müssen).
Vielleicht siehst Du die nicht in Tapatalk, aber die sind doch da ;)
Ok ;-) und geht nicht /n bei regex?
Gesendet von iPhone mit Tapatalk Pro
<EDIT> Jetzt sitze ich am Rechner. Ich sehe da immer noch keine .... Meint Ihr damit etwa beliebige Zeichen? Warum nehmt Ihr nicht einfach hPA im Regex, das kommt auch nur vor den Zahlen vor? So was wie ([\d]*)hPA oder so?
Zitatund geht nicht /n bei regex?
Geht doch: mit \n oder \r\n kann man schon Zeilenumbrüche matchen. Aber erst wenn die Regex alle Zeilen auf einmal durchsucht. Standardmässig sucht er aber Zeile nach Zeile, und "." matcht kein Umbruch
Mit Regopt "s" wird das gesamte als eine einzige Zeile bewertet.
Hallo,
habe jetzt mal den Ausschnitt aus der fhem.cfg angehängt.
Es will leider immer noch nicht :(.
##WeatherLink HTTPMOD - Abfrage
define WeatherLink HTTPMOD http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1 60
attr WeatherLink userattr readings01Name readings01Regex
attr WeatherLink reading01Name Barometer
attr WeatherLink reading01Regex Barometer...........................................([\d\.]+)
attr reading01RegOpt s
attr WeatherLink room Wetter
Man...bin ich echt zu blöd..?
VG
André
Stell mal attr verbose 5 auf dem HTTPMOD ein, und poste bitte die Log.
Ahja: du hast immer noch:
Barometer...........................................([\d\.]+)
Ich hatte das geändert (mit Anmerkung: Vorsicht, Anzahl Punkte wurde geändert)
Barometer...............................................([\d\.]+)
Zitat von: Stargazer am 01 Juni 2017, 10:39:50
##WeatherLink HTTPMOD - Abfrage
define WeatherLink HTTPMOD http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1 60
attr WeatherLink userattr readings01Name readings01Regex
attr WeatherLink reading01Name Barometer
attr WeatherLink reading01Regex Barometer...........................................([\d\.]+)
attr reading01RegOpt s
attr WeatherLink room Wetter
nur mal so geraten:
attr WeatherLink reading01Regex Barometer...........................................([\d\.]+)
attr
WeatherLink reading01RegOpt s
attr WeatherLink room Wetter
code-tags bewusst weggelassen wegen markierung :)
Stimmt, hatte ich übersehen...
Hi,
so. Verbose auf 5 mit folgendem Eintrag:
2017.06.01 13:14:32 5: WeatherLink: ExtractSid called, context reading, num
2017.06.01 13:14:32 4: WeatherLink: CheckAuth decided no authentication required
2017.06.01 13:14:32 5: WeatherLink: Read starts parsing response to update with defined readings: 01
2017.06.01 13:14:32 5: WeatherLink: ExtractReading Barometer with regex /Barometer...............................................([\d\.]+)/...
2017.06.01 13:14:32 5: WeatherLink: ExtractReading Barometer did not match
2017.06.01 13:14:32 3: WeatherLink: Read response to update didn't match any Reading
2017.06.01 13:14:32 5: WeatherLink: HandleSendQueue called, qlen = 0
Das kam nach dem Aufführen des buffers im Log.
Hatte jetzt vor dem Log die Passage mit dem Barometer noch angepasst. Warum er im Log hinter ([\d\.]+) noch die Punkte macht, weiß ich nicht. Die stehen da so im Modul nicht hinter.
VG und besten Dank
André
Die "/" und "/..." sind nw da, um die gesamte Regex in Standardform darzustellen: nw. ist eine vollständige Regex nicht nur Barometer..(blabla) sondern
/Barometer..(blabla)/s
wo "s" die Regopt ist
Was genau in unserem Fall passiert muss ich noch im Modul investigieren.
Es interessiert mich aber, ob Fhem die {} in der Regex versteht.
Kannst Du wieder bitte ein Test machen?
Barometer.{43,49}([\d.]+)
Anscheinend hat er regopt nicht mitberücksichtigt da im Modul folgendes steht:
if ($regopt) {
Log3 $name, 5, "$name: ExtractReading $reading with regex /$regex/$regopt ...";
Hast Du es korrigiert wie oben gesagt?
Hallo Stargazer,
der Buffer wird nicht 1:1 beim Regex im Modul verwendet. Im Buffer fehlen z.B. Zeilenumbrüche und damit passt das ".{43}" wahrscheinlich nicht. Nimm besser den Quelltext der Webseite für den regex tester wie regex101.com, den Du direkt aus dem Browser kopierst. Verbose 5 funktioniert auch, allerdings musst Du dann die Seite in fhem einmal laden.
Ohne den tatsächlichen Inhalt zu kennen würde ich es so versuchen:
(?s)Barometer.+?>([\d\.]+)
Viele Grüße
Manfred
Hallo zusammen,
ich habe noch beide Expressions getestet. Manfred seine
läuft perfekt.
Alles sehr interessant... .
Trotzdem erstmal vielen Dank für eure Hilfe !!
Ich hatte das letztens schonmal, dass bei 101regex alles gut war und FHEM das nicht akzeptierte.
Nun kann ich die anderen Werte auch noch versuchen zu extrahieren.
VG
André
Danke @ares! Das "lazy" vergesse ich immer. Ich muss noch mit Regex üben ;)
(?s) sollte aber ähnlich sein wie regopt "s", oder?
Zitat von: Stargazer am 01 Juni 2017, 15:52:53
Ich hatte das letztens schonmal, dass bei 101regex alles gut war und FHEM das nicht akzeptierte.
101regex unterstützt leider kein PERL, HTTPMOD dagegen nur PERL.
Ersetze mal
(?s)Barometer.+?>([\d\.]+)
in fhem durch
Barometer\p{Any}+?>([\d\.]+)
und wenn es funktioniert versuch Dein Glück danach mal mit 101regex. Und nach dem Test vergisst Du das "\p{Any}" statt dem "." sofort wieder, das sollte nur als Gegenbeweis dienen dass fhem auch Sachen kann die 101regex nicht versteht. Nicht alles das funktioniert muss man auch verwenden, Stellen abzählen gehört meiner Meinung nach dazu. Besser ist die erste Anweisung, die sprachunabhängiger ist.
Und bleib trotzdem bei 101regex!. Öffne aber die gewünschte Seite (z.B. http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1) aber im Browser und kopier den Quelltext der Seite von dort (Rechtklick - Seitenquelltext anzeigen) und nicht aus dem buf von fhem, da der nicht 1:1 gespeichert werden kann. Und sobald ein Zeilenumbruch im Text ist setzt Du meist einfach ein (?s) davor, dann deckst Du die allermeisten Fälle ab.
Viele Grüße
Manfred
Darf ich nochmal fragen, wieso Ihr nicht
([\d\.]*)hPa</td>
nehmt? HektoPascal kommt nur zweimal vor und es geht doch um die Höhe des Luftdrucks, oder?
Aus Performance Gründe ist es immer besser vorwährst als rückwährst zu suchen.
([\d\.]*)hPa<\/td>
3 matches, 57183 steps, 36ms
Barometer<\/td> <td width="170" class="summary_data">([\d\.]*)
1 match, 100 steps, < 1ms
wieder was gelernt 8)
@Stargazer: Wenn deine Frage damit beantwortet ist, bitte noch [Gelöst] vor das Subject des ersten Posts
Hallo zusammen,
ich melde mich trotzdem noch einmal, da es noch ein kleines Problem gibt.
Ich habe den Rat von Manfred befolgt und habe den direkten Quelltext in 101regex.com eingesetzt und dann das Barometer-Argument daran getestet. Da findet er nix. Nutze ich den Buffer des HTTPMOD-Moduls, so wird alles korrekt angezeigt *kopfkratz*.
Nun wollte ich gerne noch die Windrichtung anzeigen lassen. Wenn es ginge, mit dem Ausdruck der dann z.B. das "ENE" und die Gradzahl anzeigt.
Hier nochmal ein Mitschnitt des Buffers:
class="summary_data">Wind Direction</td> <td width="170" class="summary_data">ENE 72°</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">12 Hour Forecast</td> <td width="570" class="summary_data" colspan="5">Increasing clouds with little temperature change. </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Wind</td> <td width="170" class="summary_header">2 Minute</td> <td width="100" class="summary_header">10 Minute</td> <td width="100" class="summary_header"> </td> <td width="100" class="summary_header"> </td> <td width="100" class="summary_header"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Average Wind Speed</td> <td width="170" class="summary_data">3.5 m/s</td> <td width="100" class="summary_data">3.6 m/s</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr> <td width="190" class="summary_data">Wind Gust Speed</td> <td width="170" class="summary_data"> </td> <td width="100" class="summary_data">4.5 m/s</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Rain</td>
Bei dem regulären Code nimmt er die 12, von "12 Stunden Vorhersage".
Man man...mittlerweile habe ich den Eindruck, ich hätte es nie gemacht... :-[
Viele Grüße
André
ZitatBei dem regulären Code
Welches?
(?s)Wind Direction.*?data\">(.*?)&
(?s)Wind Direction.*?data\">.*?([\d]+)
Für die erste (Direction) kann man auch spezifischer sein:
(?s)Wind Direction.*?data\">([NWES]+)
Hallo,
ach klar. Vergessen !
Das Regex heißt natürlich : (?s)Wind Direction.+?>([\d\.]+)
Trotzdem schon einmal vielen Dank für deine Hilfe !
VG
André
Hast Du den Vorschlag von amenomade schon getestet?
(?s)Wind Direction.*?data\">([NWES]+)
(?s)Wind Direction.*?data\">.*?([\d]+)
Hi,
Jepp. Gerade den zweiten getestet. Die laufen beide Perfekt !!
Ein fettes DANKESCHÖN! nochmal dafür.
Jetzt muss ich das für die Regenmenge noch korrigieren.
Da setze ich derzeit folgendes Regex ein:
(?s)Rain.+?>([\d\.]+)
Der Code-Teil sieht folgendermaßen aus:
<tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr> <tr> <td width="190" class="summary_header_label">Rain</td> <td width="170" class="summary_header">Rate</td> <td width="100" class="summary_header">Day</td> <td width="100" class="summary_header">Storm</td> <td width="100" class="summary_header">Month</td> <td width="100" class="summary_header">Year</td> </tr> <tr><td colspan="6"><hr class="ThinLine"></td></tr> <tr> <td width="190" class="summary_data">Rain</td> <td width="170" class="summary_data">0.0mm/Hour</td> <td width="100" class="summary_data">5.6mm</td> <td width="100" class="summary_data">5.6mm</td> <td width="100" class="summary_data">14.2mm</td> <td width="100" class="summary_data">203.4mm</td> </tr> <tr> <td width="190" class="summary_data">Last Hour Rain</td> <td width="170" class="summary_data">0.4mm</td> <td width="100" class="summary_data"> </td> <td width="100" class="summary_data"> </td> <td width="100"
Wenn ich das Regex von oben nehme, so bekomme ich immer den Wert von "mm/hour" angezeigt. Leider noch nicht die Tagesregenmenge. Da werde ich nochmal nachforschen. Müsste jetzt ja gehen... ::).
VG
André
Und wo ist die Tagesregenmenge?
Wenn das die erste 5.6 ist, dann überleg wie folgendes (ich will nicht unbedingt zukünftig alle deine Regex selbst schreiben ;) ) :
- match Rain
- dann match so wenig wie möglich Zeichen bis
- match Hour
- dann match so wenig wie möglich Zeichen bis match > dann
- capturing group with digit oder punkt
Die rechte Spalte in regex101 detailliert das ganze.
Wenn "mm/Hour" nur einmal in der ganze Seite kommt, noch einfacher:
- match mm/Hour
- dann match so wenig wie möglich Zeichen bis match > dann
- capturing group with digits oder punkt
Hi amenomade !
das stimmt schon. Ich möchte da auch selber gerne bei und lernen. Darum versuche ich das derzeit. Nur habe ich ja das Problem, dass ich mit dem jetzigen Auswerten doch etwas zu hoch für mein Wissen bin.
Das Kernproblem liegt eigentlich darin, dass sich zig Zeilen des Quelltextes gleichen.
Siehe hier:
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Rain</td>
<td width="170" class="summary_data">0.8mm/Hour</td>
<td width="100" class="summary_data">8.6mm</td>
<td width="100" class="summary_data">8.6mm</td>
<td width="100" class="summary_data">17.2mm</td>
<td width="100" class="summary_data">206.4mm</td>
</tr>
<tr>
<td width="190" class="summary_data">Last Hour Rain</td>
<td width="170" class="summary_data">3.0mm</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
Das derzeitige Regex ist:
<td width="100" class="summary_data">([0-9.]*)
Hätte das "...width=100" eine andere Nummer, z.B., könnte ich das sofort alleine lösen.
Da bin ich derzeit noch dran. Schön wäre ja noch, wenn es mit abzählen der Zeichen im Regex funktionieren
würde. So wie auf Seite 1 dieses Threads beschrieben.
Viele Grüße und besten Dank
André
PS.: Man müsste versuchen, die Zeilen vom einfachen >Rain< bis zu dem Wert mit in die Regex einzufügen.
Zitat<td width="100" class="summary_data">
ist aber weit von eindeutig!
Such dir eindeutige Kriterien.
Eben,
und da bin ich derzeit noch für mich am Knobeln... .
VG
André
Zitat von: Stargazer am 09 Juni 2017, 22:37:37
Eben,
und da bin ich derzeit noch für mich am Knobeln... .
VG
André
Hast Du denn schon die Hilfestellung von amenomade gelesen und versucht zu verstehen?
Test string:
Internals:
BUSY 0
CHANGED
DEF http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1 60
Interval 60
LASTSEND 1496262068.9881
MainURL http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
ModuleVersion 3.3.9 - 23.3.2017
NAME WeatherLink
NR 368
STATE ???
TRIGGERTIME 1496262128.98771
TRIGGERTIME_FMT 2017-05-31 22:22:08
TYPE HTTPMOD
addr http://www.weatherlink.com:80
buf HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Wed, 31 May 2017 20:21:09 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache
Set-Cookie: PHPSESSID=u2e5ohhjrbgdc2php8jmikt; path=/
Set-Cookie: AWSELB=F1E131E50EF091F2748F3BF05B2028E05203E1C496BA0DBB6E148C798E4D5BA284C5E674DE6D7EB80BAA3F2CCD8F0CBF0DFDF55ED9B32DDC0760A76BC0A81C6A30A9F010107753D4E25DB0E82186FA264;PATH=/
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 a418a5add122000ef61af1637f885.cloudfront.net (CloudFront)
X-Amz-Cf-Id: dMPU1K9MoPcZtJK4KrxLf6XxHagVeDYKFvmKgETu_M_PsrtR7UQVoA==
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head><title>Davis | WeatherLink - My Weather Page</title>
<!-- Force IE8 into compatibility mode so our shadows display correctly -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta http-equiv="refresh" content="300">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Keywords" content="Davis WeatherLinkIP WeatherLink">
<meta name="Author" content="Andy Schmidt, Jeremaih Jeffress">
<meta name="Robots" content="All">
<meta name="Content-Language" content="English">
<meta name="Copyright" content="© 2017 Davis Instruments">
<link type="image/x-icon" href="/favicon.ico" rel="Shortcut Icon">
<link type="text/css" href="/lib/css/wl2.css" rel="stylesheet">
<link type="text/css" href="/lib/css/colorbox.css" rel="stylesheet">
<link type="text/css" href="/lib/css/jquery-ui-1.8.4.custom.css" rel="stylesheet">
<script type="text/javascript" src="/lib/js/library/jquery-1.7.1.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/library/jquery-ui-1.8.17.custom.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/library/jquery.colorbox.js"></script>
<script type="text/javascript" src="/lib/js/library/jquery.validate.min.js"></script>
<script type="text/javascript" src="/lib/js/library/lodash.2.4.1.min.js?ver=20170531"></script>
<script type="text/javascript" src="/lib/js/classes/Lib.js"></script>
<script type="text/javascript" src="/lib/js/classes/FormValidator.js"></script>
<script type="text/javascript" src="/lib/js/classes/Dialog.js"></script>
<script type="text/javascript" src="/lib/js/classes/cAjaxHandler.js"></script>
<script type="text/javascript" src="/lib/js/classes/cAjaxQueue.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// This will fade out the message box if there is one.
//LIB.fadeOutMessageBox();
//Buttons set with attributes data-link=1 will make the button perform as a link and will look for
//the attribruge data-href for the url location to link to.
$('body').on('click', 'button[data-link=1]', function(){
window.location.href = $(this).attr('data-href');
});
});
</script>
<script type="text/javascript">
//--------------------------------------
function changeUnits() {
var oForm = document.forms['frmUnits'];
var iType;
iType = oForm.selUnits.options[oForm.selUnits.selectedIndex].value;
document.location.href = "/user/stargazer/index.php?view=summary&headers=1&type=" + iType;
return;
}
</script>
</head>
<body>
<div id="outerContainer">
<div id="mainContainer">
<!-- Header -->
<div style="float: left;">
<a href="http://www.weatherlink.com/"><img src="/images/wl_top.png" width="281" height="46" alt="WeatherLink Logo"></a>
</div>
<div style="float: left;">
<img src="/images/wl_top-mid.png" width="369" height="46" alt="">
</div>
<div style="float: left;">
<a href="http://www.davisnet.com" target="_blank"><img src="/images/wl_top-davis.png" width="112" height="46" alt="Davis Logo"></a>
</div>
<br clear="all" />
<!-- START: TOP NAVIGATION -->
<table align="center" width="760" class="header" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td height="25" class="NavLeft">
<a href="http://www.davisnet.com/support/weather/faq/index.asp?ProdFam=15&submit=Get+Information"
target="_blank">FAQ's</a> |
<a href="http://www.davisnet.com/weather/products/weather_product.asp?pnum=06555#price" target="_blank">Order Now</a> |
<a href="/register.php">Register</a>
</td>
<td height="25" class="NavRight">
<a href="/user/stargazer/index.php?view=main&headers=1">My Weather</a> |
<a href="/user/stargazer/index.php?view=summary&headers=1">Summary</a> |
<a href="/user/stargazer/index.php?view=summary&headers=0">No Headers</a> |
<a href="/map.php?station=stargazer">Map</a> |
<a href="/login.php">Login</a>
</td>
</tr>
<tr>
<td height="1" colspan="2" align="center"><img src="/images/dividing_line.gif" width="760" height="1" alt=""></td>
</tr>
<tr>
<td height="10" colspan="2" align="center"><img src="/images/spacer.gif" width="1" height="10" alt=""></td>
</tr>
</table>
<!-- END: TOP NAVIGATION -->
<!-- START: PAGE CONTENT -->
<table align="center" width="760" class="content" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td valign="top" align="center">
<table align="left" width="100%" border="0" cellspacing="0" cellpadding="0" summary="">
<tr>
<td align="left" valign="top">
<!-- START: SUMMARY WEATHER DISPLAY -->
<table width="760" cellpadding="0" cellspacing="0" border="0" summary="">
<tr>
<td align="left" valign="top" colspan="6">
<a href="http://www.weatherlink.com/" class="notext"><img src="/images/wl_network.png" alt="WeatherLink Network" width="431" height="43" border="0"></a>
</td>
</tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr><td colspan="6" class="summary_station_name">LangenGraß</td></tr>
<tr><td colspan="6" class="summary_timestamp">Current Conditions as of 10:20 PM Wednesday, May 31, 2017</td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Station Summary</td>
<td width="170" class="summary_header">Current</td>
<td width="200" colspan="2" class="summary_header">Today's Highs</td>
<td width="200" colspan="2" class="summary_header">Today's Lows</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Outside Temp</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data">22.9 C</td>
<td width="100" class="summary_data">4:28 PM</td>
<td width="100" class="summary_data">12.8 C</td>
<td width="100" class="summary_data">3:01 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Outside Humidity</td>
<td width="170" class="summary_data">71%</td>
<td width="100" class="summary_data">92%</td>
<td width="100" class="summary_data">3:04 AM</td>
<td width="100" class="summary_data">51%</td>
<td width="100" class="summary_data">4:03 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Inside Temp</td>
<td width="170" class="summary_data">21.8 C</td>
<td width="100" class="summary_data">22.2 C</td>
<td width="100" class="summary_data">11:31 AM</td>
<td width="100" class="summary_data">21.7 C</td>
<td width="100" class="summary_data">6:16 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Inside Humidity</td>
<td width="170" class="summary_data">50%</td>
<td width="100" class="summary_data">55%</td>
<td width="100" class="summary_data">12:00 AM</td>
<td width="100" class="summary_data">48%</td>
<td width="100" class="summary_data">5:14 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Heat Index</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data">23.3 C</td>
<td width="100" class="summary_data">3:57 PM</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Chill</td>
<td width="170" class="summary_data">13.9 C</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data">12.8 C</td>
<td width="100" class="summary_data">2:50 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Dew Point</td>
<td width="170" class="summary_data">8.9 C</td>
<td width="100" class="summary_data">16.1 C</td>
<td width="100" class="summary_data">9:49 AM</td>
<td width="100" class="summary_data">8.3 C</td>
<td width="100" class="summary_data">10:17 PM</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Barometer</td>
<td width="170" class="summary_data">1021.4hPa</td>
<td width="100" class="summary_data">1021.4hPa</td>
<td width="100" class="summary_data">10:19 PM</td>
<td width="100" class="summary_data">1016.6hPa</td>
<td width="100" class="summary_data">12:00 AM</td>
</tr>
<tr>
<td width="190" class="summary_data">Bar Trend</td>
<td width="170" class="summary_data">Rising Slowly</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Wind Speed</td>
<td width="170" class="summary_data">1.3 m/s</td>
<td width="100" class="summary_data">8.5 m/s</td>
<td width="100" class="summary_data">12:27 PM</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Direction</td>
<td width="170" class="summary_data">N 5°</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">12 Hour Forecast</td>
<td width="570" class="summary_data" colspan="5">Mostly clear with little temperature change. </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Wind</td>
<td width="170" class="summary_header">2 Minute</td>
<td width="100" class="summary_header">10 Minute</td>
<td width="100" class="summary_header"> </td>
<td width="100" class="summary_header"> </td>
<td width="100" class="summary_header"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Average Wind Speed</td>
<td width="170" class="summary_data">0.9 m/s</td>
<td width="100" class="summary_data">0.9 m/s</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr>
<td width="190" class="summary_data">Wind Gust Speed</td>
<td width="170" class="summary_data"> </td>
<td width="100" class="summary_data">1.8 m/s</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr><td colspan="6"><img src="/images/spacer.gif" width="10" height="11" border="0" alt=""></td></tr>
<tr>
<td width="190" class="summary_header_label">Rain</td>
<td width="170" class="summary_header">Rate</td>
<td width="100" class="summary_header">Day</td>
<td width="100" class="summary_header">Storm</td>
<td width="100" class="summary_header">Month</td>
<td width="100" class="summary_header">Year</td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
<tr>
<td width="190" class="summary_data">Rain</td>
<td width="170" class="summary_data">0.0mm/Hour</td>
<td width="100" class="summary_data">0.0mm</td>
<td width="100" class="summary_data">0.0mm</td>
<td width="100" class="summary_data">47.2mm</td>
<td width="100" class="summary_data">189.2mm</td>
</tr>
<tr>
<td width="190" class="summary_data">Last Hour Rain</td>
<td width="170" class="summary_data">0.0mm</td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
<td width="100" class="summary_data"> </td>
</tr>
<tr><td colspan="6"><hr class="ThinLine"></td></tr>
</table>
<!-- END: SUMMARY WEATHER DISPLAY -->
<br>
<!-- START: DISPLAY SELECTION -->
<table width="760" cellpadding="0" cellspacing="0" border="0" summary="">
<tr>
<td align="left" valign="top" width="50%">
<form name="frmUnits" method="post" action="/user/stargazer/index.php">
View page units as:
<select name="selUnits" class="device" onChange="JavaScript:changeUnits();">
<option value="0" SELECTED>Station Defaults</option>
<option value="1">Metric</option>
<option value="2">US Imperial</option>
</select>
</form>
</td>
<td align="right" valign="top" width="50%"> </td>
</tr>
</table>
<!-- END: DISPLAY SELECTION -->
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<!-- END: PAGE CONTENT -->
<!-- START: FOOTER -->
<div class="Footer">
<div class="FooterLinks">
<a href="http://www.davisnet.com/about/index.asp" target="_blank">About Davis</a> |
<a href="privacy_corporate.php" target="_blank">Privacy</a> |
<a href="http://www.davisnet.com/support/weather/faq/">FAQ's</a> |
<a href="http://www.davisnet.com/contact/index.asp" target="_blank">Contact Us</a> |
<a href="http://www.davisnet.com/support/index.asp" target="_blank">Support</a> |
<a href="mailto:support@weatherlink.com?subject=WeatherLink+Website+Issue">Report Problems</a>
</div>
<div class="FooterText">
Copyright © 2017 - Davis Instruments, Corp. - All Rights Reserved
- ver 1.15.0 </div>
</div>
<!-- END: FOOTER -->
<br><br><br>
<!-- START: Google Analytics -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct="UA-3010397-2";
urchinTracker("/user/index.php");
</script>
<!-- END: Google Analytics -->
</div><!-- mainContainer -->
</div><!-- outerContainer -->
</body>
</html>
code 200
conn
data
displayurl http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
header
host www.weatherlink.com
httpheader HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Wed, 31 May 2017 20:21:09 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache
Set-Cookie: PHPSESSID=u2e5ohhjrbgdc2iktg91; path=/
Set-Cookie: AWSELB=F1E131E50EF091F2748F3BF05B2028E05203E1C496BA0DBB6E148C798E4D5BA284C5E674DE6D7EB80BAA3F2CCD8F0CBF0DFDF55ED9B32DDC0760A76BC0A81C6A30A9F01DB0E82E03089D2C186FA264;PATH=/
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 a418a5add122000ef61afe8a165.cloudfront.net (CloudFront)
X-Amz-Cf-Id: dMPU1K9MoPcZtJK4KrxLf6XxHmKgETu_M_PsrtR7UQVoA==
httpversion 1.0
hu_blocking 0
hu_filecount 2
hu_portSfx
ignoreredirects 0
loglevel 4
path /user/stargazer/index.php?view=summary&headers=1
protocol http
redirects 0
timeout 2
url http://www.weatherlink.com/user/stargazer32584/index.php?view=summary&headers=1
value 0
QUEUE:
Readings:
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url http://www.weatherlink.com/user/stargazer/index.php?view=summary&headers=1
value 0
Sslargs:
Attributes:
reading01Name Barometer
reading01Regex Barometer...........................................([\d\.]+)
room Wetter
userattr reading01Name reading01Regex
Zitat von: amenomade am 09 Juni 2017, 16:41:05
Wenn das die erste 5.6 ist, dann überleg wie folgendes (ich will nicht unbedingt zukünftig alle deine Regex selbst schreiben ;) ) :
- match Rain
(?s)Rain
Zitat von: amenomade am 09 Juni 2017, 16:41:05
- dann match so wenig wie möglich Zeichen bis
.+?
Zitat von: amenomade am 09 Juni 2017, 16:41:05
- match Hour
Hour
Zitat von: amenomade am 09 Juni 2017, 16:41:05
- dann match so wenig wie möglich Zeichen bis
.+?
Zitat von: amenomade am 09 Juni 2017, 16:41:05
match > dann
>
Zitat von: amenomade am 09 Juni 2017, 16:41:05
- capturing group with digit oder punkt
([\d.]+)
gibt zusammen:
(?s)Rain.+?Hour.+?>([\d.]+)
Zitat von: amenomade am 09 Juni 2017, 16:44:20
Wenn "mm/Hour" nur einmal in der ganze Seite kommt, noch einfacher:
- match mm/Hour
- dann match so wenig wie möglich Zeichen bis match > dann
- capturing group with digits oder punkt
(?s)mm\/Hour.+?data">([\d.]+)
Viele Grüße
Manfred
Hallo Manfred,
DANKE ! Du hast mir erstmal den Kopf gewaschen !
Jetzt hat es "Klick" gemacht.
Ich nehme nun für die Monatsregenmenge folgenden Ausdruck:
(?s)mm\/Hour.+?data">([\d.][\d]+..)
Und für die Jahresregenmenge dann natürlich:
(?s)mm\/Hour.+?data">([\d.][\d][\d]+..)
Vielen Dank und beste Grüße
André
PS.: Hatte heute erst wieder Zeit, an dem Projekt zu arbeiten.
Hallo André,
(?s)mm\/Hour.+?data">([\d.][\d]+..)
funktioniert leider nicht mehr für den Monat sobald es an einem Tag 10.0mm oder mehr regnet.
Day: (?s)mm\/Hour.+?">([\d.]+)
Storm:(?s)mm\/Hour.+?">.+?">([\d.]+)
Month:(?s)mm\/Hour.+?">.+?">.+?">([\d.]+)
Year: (?s)mm\/Hour.+?">.+?">.+?">.+?">([\d.]+)
Das geht sicher auch einfacher, sollte aber erstmal zuverlässiger funktionieren und ist so hoffentlich auch ohne Erklärung verständlich.
Viele Grüße
Manfred