Hallo,
ich habe hier ein HTTPMOD-Device, das nicht mehr komplett funktioniert ? Es hat bis vor ein paar Tagen noch richtig funktioniert. Ich habe in der zwischenzeit "nur" ein update von Fhem gemacht.
Es werden die Werte "Raumtemperatur 1" und "Raumtemperatur 2" richtig abgefragt. Der Wert "Aussentemperatur" jedoch gar nicht mehr !?
Das ist doch irgendwie komisch ? Das REGEX habt ich online getestet und dort funktioniert es.
Nun weis ich nicht, wo ich da weitersuchen oder proieren soll.
Danke, Jens
WEBSEITE:
BSB-LAN Web
Heizungsfunktionen Sensoren Ausgabe Logdatei Prüfe auf neue Parameter
Einstellungen URL-Befehle HowTo FAQ
8700 Diagnose Verbraucher - Außentemperatur: 8.2 °C
8740 Diagnose Verbraucher - Raumtemperatur 1: 21.9 °C
8770 Diagnose Verbraucher - Raumtemperatur 2: 21.9 °C
DEVICE:
Internals:
BUSY 0
CHANGED
DEF http://192.168.6.23/1111/8700/8740/8770 300
FUUID 5c4cce18-f33f-9f49-e6bd-68230724554b5075
Interval 300
LASTSEND 1581847289.41915
MainURL http://192.168.6.23/1111/8700/8740/8770
ModuleVersion 3.5.22 - 7.2.2020
NAME BROETJETEMP
NOTIFYDEV global
NR 154
NTFY_ORDER 50-BROETJETEMP
STATE Aussentemperatur: 1.0 °C | HK1 Raumtemp: 21.9 °C | HK2 Raumtemp: 21.9 °C | HK2 Raumtemp_10001: 0.0 °C
TRIGGERTIME 1581847589.4173
TRIGGERTIME_FMT 2020-02-16 11:06:29
TYPE HTTPMOD
addr http://192.168.6.23:80
auth 0
code 200
compress 1
conn
data
displayurl http://192.168.6.23/1111/8700/8740/8770
header
host 192.168.6.23
httpheader HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
httpversion 1.0
hu_blocking 0
hu_filecount 149
hu_port 80
hu_portSfx
ignoreredirects 1
loglevel 4
path /1111/8700/8740/8770
protocol http
redirects 0
timeout 10
url http://192.168.6.23/1111/8700/8740/8770
value 0
CompiledRegexes:
Helper:
DBLOG:
Raumtemperatur 1:
impDbLog:
TIME 1581845760.34373
VALUE 21.9
Raumtemperatur 2:
impDbLog:
TIME 1581845760.34373
VALUE 21.9
QUEUE:
READINGS:
2020-02-15 09:37:23 Raumtemperatur 1 21.2
2020-02-16 11:01:30 Raumtemperatur 1 21.9
2020-02-16 11:01:30 Raumtemperatur 2 21.9
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.6.23/1111/8700/8740/8770
value 0
defptr:
readingBase:
Raumtemperatur 1 reading
Raumtemperatur 2 reading
readingNum:
Raumtemperatur 1 1
Raumtemperatur 2 2
readingOutdated:
requestReadings:
update:
Raumtemperatur 1 reading 1
Raumtemperatur 2 reading 2
sslargs:
Attributes:
enableControlSet 1
event-on-change-reading .*
reading0Name Aussentemperatur
reading0Regex 8700 .*:[ \t]+([-]?[\d\.]+)
reading1Name Raumtemperatur 1
reading1Regex 8740 .*:[ \t]+([-]?[\d\.]+)
reading2Name Raumtemperatur 2
reading2Regex 8770 .*:[ \t]+([-]?[\d\.]+)
room Heizung,x_Test
set00Name Raumtemperatur_HK2
set00URL http://192.168.6.23/1111/I10001=$val
stateFormat {sprintf("Aussentemperatur: %.1f °C | HK1 Raumtemp: %.1f °C | HK2 Raumtemp: %.1f °C | HK2 Raumtemp_10001: %.1f °C", ReadingsVal($name,"Aussentemperatur",1), ReadingsVal($name,"Raumtemperatur 1",1), ReadingsVal($name,"Raumtemperatur 2",1), InternalVal("BROETJETEMP","value", 21))}
timeout 10
userattr reading0Name reading0Regex reading1Name reading1Regex reading2Name reading2Regex set00Name set00URL set01Name set01URL set02Name set02URL set0Name set0URL
verbose 3
Falls deine Readings tatsächlich Namen wie "Raumtemperatur 1" haben, wundert mich das nicht - das Leerzeichen ist kein gültiges Zeichen in einem Reading-Name, und seit dem Update auf FHEM 6.0 kontrolliert FHEM die Namen strikter.
Zitat von: xenos1984 am 16 Februar 2020, 14:09:08
Falls deine Readings tatsächlich Namen wie "Raumtemperatur 1" haben, wundert mich das nicht - das Leerzeichen ist kein gültiges Zeichen in einem Reading-Name, und seit dem Update auf FHEM 6.0 kontrolliert FHEM die Namen strikter.
Ja, die beiden Raumtemperatur Namen sind wirklich so. Diese Info ist für mich neu, bzw. war mir nicht bewusst. Allerdings funktionieren diese aber auch.
Jedoch die "Aussentemperatur" funktioniert nicht mehr.
Was steht denn im Log?
Habe dsa nun nochmal nachgeschaut. Seit dem ich das Update gemacht habe fuktioniert der eine nicht mehr... Bei anderen HTTPMOD-Devices habe ich keine Fehler feststellen können. Die Leerstellen in den readings muss ich dann noch bereinigen, das hat aber mit dem nicht funktionierenden reading nichts zu tun.
Im Log greift das RegEx für die Aussentemperatur nicht. Wenn ich aber die Daten in den online RegEx Tester einfüge funktioniert es ?
2020.02.17 06:36:55 4: BROETJETEMP: Read response matched 2, unmatch 1 Reading(s)
2020.02.17 06:36:55 5: BROETJETEMP: Read response to update matched Raumtemperatur 1 Raumtemperatur 2
2020.02.17 06:36:55 5: BROETJETEMP: Read response to update did not match Aussentemperatur
Log vom Device bei Verbose=5
2020.02.17 06:36:54 5: BROETJETEMP: GetUpdate called (update)
2020.02.17 06:36:54 5: BROETJETEMP: update timer modified: will call GetUpdate in 300.0 seconds at 2020-02-17 06:41:54
2020.02.17 06:36:54 5: BROETJETEMP: AddToQueue adds type update to URL http://192.168.6.23/2201/8700/8740/8770, no data, no headers, retry 0, initial queue len: 0
2020.02.17 06:36:54 5: BROETJETEMP: HandleSendQueue called, qlen = 1
2020.02.17 06:36:54 4: BROETJETEMP: HandleSendQueue sends update with timeout 10 to http://192.168.6.23/2201/8700/8740/8770, No Data, No Header
2020.02.17 06:36:54 5: HttpUtils url=http://192.168.6.23/2201/8700/8740/8770
2020.02.17 06:36:54 4: IP: 192.168.6.23 -> 192.168.6.23
2020.02.17 06:36:54 5: HttpUtils request header:
GET /2201/8700/8740/8770 HTTP/1.0
Host: 192.168.6.23
User-Agent: fhem
Accept-Encoding: gzip,deflate
2020.02.17 06:36:55 4: http://192.168.6.23/2201/8700/8740/8770: HTTP response code 200
2020.02.17 06:36:55 5: HttpUtils http://192.168.6.23/2201/8700/8740/8770: Got data, length: 2478
2020.02.17 06:36:55 5: HttpUtils response header:
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2020.02.17 06:36:55 4: BROETJETEMP: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0, body length 2478
2020.02.17 06:36:55 5: BROETJETEMP: Read callback: body
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>BSB-LAN Web</title>
<style>A:link {color:blue;text-decoration: none;} A:visited {color:blue;text-decoration: none;} A:hover {color:red;text-decoration: none;background-color:yellow} A:active {color:blue;text-decoration: none;} A:focus {color:red;text-decoration: none;}
input {width: 100%; box-sizing: border-box;} select {width: 100%;}</style>
</head><body>
<script>function set(line){
var value = document.getElementById('value'+line).value.replace(":", ".");
if(isNaN(value)==false){
window.open(document.getElementById('main_link').href+'S'+line+'='+document.getElementById('value'+line).value,'_self');
}}
function setbit(line){
var x=document.getElementById('value'+line); var value=0;
for (var i=0; i<x.options.length; i++) {
if(x.options[i].selected){
value=value+eval(x.options[i].value);
}}
window.open(document.getElementById('main_link').href+'S'+line+'='+value,'_self');
}</script>
<font face='Arial'>
<center><h1><A ID=main_link HREF='/2201/'>BSB-LAN Web</A></h1></center>
<table width=80% align=center><tr bgcolor=#f0f0f0><td width=20% align=center><a href='/2201/K'>Heizungsfunktionen</a></td><td width=20% align=center><a href='/2201/T'>Sensoren</a></td><td width=20% align=center><font color=#000000>Ausgabe Logdatei</font></td><td width=20% align=center><a href='/2201/Q'>Prüfe auf neue Parameter</a></td></tr>
<tr bgcolor=#f0f0f0><td width=20% align=center><a href='/2201/C'>Einstellungen</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/command_ref/command_ref_DE.md'>URL-Befehle</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/HOWTO.md' target='new'>HowTo</a></td><td width=20% align=center><a href='http://github.com/fredlcore/bsb_lan/blob/master/FAQ.md' target='_new'>FAQ</a></td></tr></table><p></p><table align=center width=80%><tr><td>
<tr><td>
8700 Diagnose Verbraucher - Außentemperatur: 11.0 °C
</td><td>
<input type=text id='value8700' VALUE='11.00'></td><td></td></tr>
<tr><td>
8740 Diagnose Verbraucher - Raumtemperatur 1: 21.5 °C
</td><td>
<input type=text id='value8740' VALUE='21.50'></td><td></td></tr>
<tr><td>
8770 Diagnose Verbraucher - Raumtemperatur 2: 21.5 °C
</td><td>
<input type=text id='value8770' VALUE='21.50'></td><td></td></tr>
</td></tr></table>
</body>
</html>
2020.02.17 06:36:55 4: BROETJETEMP: Read found no charset header (bodyDecode was set to auto)
2020.02.17 06:36:55 5: BROETJETEMP: GetCookies is looking for Cookies
2020.02.17 06:36:55 5: BROETJETEMP: ExtractSid called, context reading, num
2020.02.17 06:36:55 4: BROETJETEMP: checking for redirects, code=200, ignore=0
2020.02.17 06:36:55 4: BROETJETEMP: no redirects to handle
2020.02.17 06:36:55 5: BROETJETEMP: CheckAuth decided no authentication required
2020.02.17 06:36:55 5: BROETJETEMP: Read starts parsing response to update with defined readings: 0,1,2
2020.02.17 06:36:55 5: BROETJETEMP: ExtractReading for context reading, num 0 - no individual parse definition
2020.02.17 06:36:55 5: BROETJETEMP: GetRegex found precompiled Regex for reading1 as (?^:8740 .*:[ \t]+([-]?[\d\.]+))
2020.02.17 06:36:55 5: BROETJETEMP: ExtractReading Raumtemperatur 1 with regex /(?^:8740 .*:[ \t]+([-]?[\d\.]+))/...
2020.02.17 06:36:55 5: BROETJETEMP: 1 matches, matchlist = 21.5
2020.02.17 06:36:55 5: BROETJETEMP: ExtractReading for reading1-1 sets Raumtemperatur 1 to 21.5
2020.02.17 06:36:55 5: BROETJETEMP: GetRegex found precompiled Regex for reading2 as (?^:8770 .*:[ \t]+([-]?[\d\.]+))
2020.02.17 06:36:55 5: BROETJETEMP: ExtractReading Raumtemperatur 2 with regex /(?^:8770 .*:[ \t]+([-]?[\d\.]+))/...
2020.02.17 06:36:55 5: BROETJETEMP: 1 matches, matchlist = 21.5
2020.02.17 06:36:55 5: BROETJETEMP: ExtractReading for reading2-1 sets Raumtemperatur 2 to 21.5
2020.02.17 06:36:55 4: BROETJETEMP: Read response matched 2, unmatch 1 Reading(s)
2020.02.17 06:36:55 5: BROETJETEMP: Read response to update matched Raumtemperatur 1 Raumtemperatur 2
2020.02.17 06:36:55 5: BROETJETEMP: Read response to update did not match Aussentemperatur
2020.02.17 06:36:55 5: BROETJETEMP: HandleSendQueue called, qlen = 0
funktioniert dieses regex?
reading0Regex 8700.+?([-]?[\d\.]+)
Ja, sieht Screenshoot
Sorry ich hatte es nur gelesen aber nicht bemerkt, dass es ja ein angepasstes regex ist.
Nun habe ich es ausprobiert. Aber es funktioniert auch nicht im device.
Jens
Habe das Device auch schon mal gelöscht und neu definiert, sowie die Reihenfolge der Readings geändert. Alles ohne Erfolg.
zeige ein aktuelles list.
Internals:
BUSY 0
CFGFN
CHANGED
DEF http://192.168.6.23/2201/8700/8740/8770 300
FUUID 5e4a7441-f33f-9f49-eb19-b4d82d86d256de98
Interval 300
LASTSEND 1581939231.35434
MainURL http://192.168.6.23/2201/8700/8740/8770
ModuleVersion 3.5.22 - 7.2.2020
NAME BROETJETEMP
NOTIFYDEV global
NR 15895
NTFY_ORDER 50-BROETJETEMP
STATE Aussentemperatur: 1.0 °C | HK1 Raumtemp: 22.0 °C | HK2 Raumtemp: 22.0 °C | HK2 Raumtemp_10001: 0.0 °C
TRIGGERTIME 1581939531.35295
TRIGGERTIME_FMT 2020-02-17 12:38:51
TYPE HTTPMOD
addr http://192.168.6.23:80
auth 0
code 200
compress 1
conn
data
displayurl http://192.168.6.23/2201/8700/8740/8770
header
host 192.168.6.23
httpheader HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
httpversion 1.0
hu_blocking 0
hu_filecount 6
hu_port 80
hu_portSfx
ignoreredirects 1
loglevel 4
path /2201/8700/8740/8770
protocol http
redirects 0
timeout 10
url http://192.168.6.23/2201/8700/8740/8770
value 0
CompiledRegexes:
QUEUE:
READINGS:
2020-02-17 12:33:52 Raumtemperatur 1 22.0
2020-02-17 12:33:52 Raumtemperatur 2 22.0
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.6.23/2201/8700/8740/8770
value 0
defptr:
readingBase:
Raumtemperatur 1 reading
Raumtemperatur 2 reading
readingNum:
Raumtemperatur 1 1
Raumtemperatur 2 2
readingOutdated:
requestReadings:
update:
Raumtemperatur 1 reading 1
Raumtemperatur 2 reading 2
sslargs:
Attributes:
DbLogExclude .*
enableControlSet 1
event-on-change-reading .*
reading0Name Aussentemperatur
reading0Regex 8700 .*:[ \t]+([-]?[\d\.]+)
reading1Name Raumtemperatur 1
reading1Regex 8740 .*:[ \t]+([-]?[\d\.]+)
reading2Name Raumtemperatur 2
reading2Regex 8770 .*:[ \t]+([-]?[\d\.]+)
room Heizung,x_Test
set00Name Raumtemperatur_HK2
set00URL http://192.168.6.23/2201/I10001=$val
stateFormat {sprintf("Aussentemperatur: %.1f °C | HK1 Raumtemp: %.1f °C | HK2 Raumtemp: %.1f °C | HK2 Raumtemp_10001: %.1f °C", ReadingsVal($name,"Aussentemperatur",1), ReadingsVal($name,"Raumtemperatur 1",1), ReadingsVal($name,"Raumtemperatur 2",1), InternalVal("BROETJETEMP","value", 21))}
timeout 10
userattr reading0Name reading0Regex reading1Name reading1Regex reading2Name reading2Regex set00Name set00URL set01Name set01URL set02Name set02URL set0Name set0URL
verbose 0
weder sind die leerzeichen aus den readings entfernt, noch benutzt du meinen regex vorschlag.
Sorry, hatte es einzeln schon probiert. Hier nun entsprechend umgesetzt:
Internals:
BUSY 0
CFGFN
DEF http://192.168.6.23/2201/8700/8740/8770 300
FUUID 5e4a7441-f33f-9f49-eb19-b4d82d86d256de98
Interval 300
LASTSEND 1581945531.43384
MainURL http://192.168.6.23/2201/8700/8740/8770
ModuleVersion 3.5.22 - 7.2.2020
NAME BROETJETEMP
NOTIFYDEV global
NR 15895
NTFY_ORDER 50-BROETJETEMP
STATE Aussentemperatur: 1.0 °C | HK1 Raumtemp: 22.3 °C | HK2 Raumtemp: 22.3 °C | HK2 Raumtemp_10001: 0.0 °C
TRIGGERTIME 1581945831.43288
TRIGGERTIME_FMT 2020-02-17 14:23:51
TYPE HTTPMOD
addr http://192.168.6.23:80
auth 0
code 200
compress 1
conn
data
displayurl http://192.168.6.23/2201/8700/8740/8770
header
host 192.168.6.23
httpheader HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
httpversion 1.0
hu_blocking 0
hu_filecount 27
hu_port 80
hu_portSfx
ignoreredirects 1
loglevel 4
path /2201/8700/8740/8770
protocol http
redirects 0
timeout 10
url http://192.168.6.23/2201/8700/8740/8770
value 0
CompiledRegexes:
OLDREADINGS:
QUEUE:
READINGS:
2020-02-17 14:18:52 Raumtemperatur1 22.3
2020-02-17 14:18:52 Raumtemperatur2 22.3
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.6.23/2201/8700/8740/8770
value 0
defptr:
readingBase:
Raumtemperatur 1 reading
Raumtemperatur 2 reading
Raumtemperatur1 reading
Raumtemperatur2 reading
readingNum:
Raumtemperatur 1 1
Raumtemperatur 2 2
Raumtemperatur1 1
Raumtemperatur2 2
readingOutdated:
requestReadings:
update:
Raumtemperatur 1 reading 1
Raumtemperatur 2 reading 2
Raumtemperatur1 reading 1
Raumtemperatur2 reading 2
sslargs:
Attributes:
DbLogExclude .*
enableControlSet 1
event-on-change-reading .*
reading0Name Aussentemperatur
reading0Regex 8700.+?([-]?[\d\.]+)
reading1Name Raumtemperatur1
reading1Regex 8740 .*:[ \t]+([-]?[\d\.]+)
reading2Name Raumtemperatur2
reading2Regex 8770 .*:[ \t]+([-]?[\d\.]+)
room Heizung,x_Test
set00Name Raumtemperatur_HK2
set00URL http://192.168.6.23/2201/I10001=$val
stateFormat {sprintf("Aussentemperatur: %.1f °C | HK1 Raumtemp: %.1f °C | HK2 Raumtemp: %.1f °C | HK2 Raumtemp_10001: %.1f °C", ReadingsVal($name,"Aussentemperatur",1), ReadingsVal($name,"Raumtemperatur1",1), ReadingsVal($name,"Raumtemperatur2",1), InternalVal("BROETJETEMP","value", 21))}
timeout 10
userattr reading0Name reading0Regex reading1Name reading1Regex reading2Name reading2Regex set00Name set00URL set01Name set01URL set02Name set02URL set0Name set0URL
verbose 0
Hallo Zusammen,
ich hab das Gleiche Problem.
Ich benutze das "alte" regex um 12 Werte hintereinander auszulesen.
reading0Regex 8510 .*:[ \t]+([-]?[\d\.]+)
Weil die einen Werte alle 60Sek und die anderen alle 3600Sek benötigt werden habe ich zwei HTTPMOD Definitionen angelegt.
Der Fehler titt bei beiden Definitionen au und zwar wird jedes erste Reading nicht gelesen.
Def1: http://192.168.xxx.x/<pw>/8003/8007/8010/8499/8700/8730/8760/8830/8950/8820/8000/8001
hier wird der Wert für 8003 nicht gelesen, alle Anderen sind da.
Def2:http://192.168.xxx.xx/<pw>/8510/8511/8512/8530/8531/8701/8702/6222
hier wird 8510 nicht gelesen.
Also entweder die geänderte HTTPMOD Definition oder das Zusammenspiel mit dem BSB_LAN.
Hallo,
ja, habe jetzt meine HTTPMODs nochmal genau durchgeschaut und es ist immer das erste Reading "reading0Regex" das bei allen nicht funktioniert.
Ich habe am BSB_LAN schon lange nichts mehr gemacht. Von daher gehe ich davon aus, dass in dem HTTPMOD-Modul eine unverträglichkeit aufgetaucht ist.
Jens
Edit: Für eine schnelle Abhilfe könnte es evtl. funktionieren mit dem reading0Regex irgend einen Parameter der nicht benötigt wird als Dummy abzufragen
und erst mit dem reading1Regex die benötigten Werte abzufragen.
Oder ich stelle um auf MQTT :-)
Ich habe auch alle HTTPMOD`s durchgesehen aber die laufen:
http://www.donnerwetter.de/pollenflug
http://www.clever-tanken.de/tankstelle_details z.B.
laufen ohne den Fehler.
Es kann also nur das Zusammenspiel BSB-LAN und HTTPMOD sein.
Grüße Wolfdieter
Hallo zusammen,
ich habe meine HTTPMOD Devices umgeschrieben und mit reading1Regex als erstes angefangen. Nun funktioniert wieder alles. Ich weis un nicht, welche Änderung das verursacht hat, denke aber es liegt am HTTPMOD-Modul.
https://forum.fhem.de/index.php/topic,29762.msg1024930.html#msg1024930
Grüsse, Jens
Kann ich bestätigen,
habe auch alle soeben umgeschrieben und es geht wieder.
Grüße Wolfdieter