httpmod.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 21 Februar 2019, 12:04:17

Vorheriges Thema - Nächstes Thema

yersinia

#165
Zitat von: Intruder1956 am 05 Dezember 2020, 09:18:03
guten morge, jau hab ich  :)
http://www.clever-tanken.de/tankstelle_details/28587
Diese Tankstelle hat kein Super E10. Zumindest nicht auf der clever-tanken webseite.

Zitat von: amenomade am 04 Dezember 2020, 23:28:46Danke für die interessante Diskussion.
Perfekt, Danke! :)
Zitat von: amenomade am 04 Dezember 2020, 23:28:46Ich habe eingecheckt (mit Korrektur in stateFormat von heizung24 - zu viele Semikola)
Kommen die nicht automatisch im RAW Modus dazu wenn, ich im stateFormat ein Semikolon verwende? Analog zum Perl-Befehlsende?
Demnach muss ein verwendetes   zu  ; werden - oder wird das im Attribut-Template anders gehandhabt?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

amenomade

Zitat von: yersinia am 05 Dezember 2020, 09:47:53
Kommen die nicht automatisch im RAW Modus dazu wenn, ich im stateFormat ein Semikolon verwende? Analog zum Perl-Befehlsende?
Demnach muss ein verwendetes   zu  ; werden - oder wird das im Attribut-Template anders gehandhabt?

Anscheinend müssen die im Template nicht verdoppelt sein, sonst landen 4 Semikola in RawDef. Ich vermute AnalyseCommand verdoppelt die schon.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

Im DEF Editor keine "Zeilenverbinder" \ und einzelne ;
Im Raw Def müssen "Zeilenverbinder" \ und doppelte ;
Im Template müssen "Zeilenverbinder" \ und einzelne ;

Und wenn man im Template FHEM Befehle mit mehreren Ebenen einbaut  ;D - braucht man irgendwas aus der "Drogerie" dazu ;) mindestens hochprozentiges Popcorn
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yersinia

#168
Zitat von: amenomade am 05 Dezember 2020, 19:06:51Anscheinend müssen die im Template nicht verdoppelt sein, sonst landen 4 Semikola in RawDef. Ich vermute AnalyseCommand verdoppelt die schon.
Zitat von: Otto123 am 05 Dezember 2020, 19:36:33Im DEF Editor keine "Zeilenverbinder" \ und einzelne ;
Im Raw Def müssen "Zeilenverbinder" \ und doppelte ;
Im Template müssen "Zeilenverbinder" \ und einzelne ;
:o DAS muss man auch erstmal wissen. Aber gut, man lernt nie aus. Auf zur sinnfrei-doppelte-Semikola-Eliminierung...

esyoil (ich hab das template von fuel_oil_check zu fuel_oil_check_esyoil umbenannt)
#Contributed by subseven & yersinia, see https://forum.fhem.de/index.php/topic,107189.msg1017754.html#msg1017754
name:fuel_oil_check_esyoil
filter:TYPE=HTTPMOD
desc: checks fuel oil prices via easyoil.com<br />Define a HTTPMOD device like<br>define heizoelpreis HTTPMOD https://www.esyoil.com/preisausgabe.php?pr-unloading-points=%%ENTLADESTELLEN%%&pr-product=8&pr-payment-type=2&%%ANHAENGER%%&pr-hose-length=%%SCHLAUCHLAENGE%%&pr-app=1&pr-zip=%%PLZ%%&pr-amount=%%MENGE%%&submit= 3600<br />Maintain Attributes for ZIP (PLZ), order volume (Bestellmenge), unloading points (Entladestellen), hose length (Schlauchlaenge) and truck trailer accessibility (mit Anhaenger moeglich) before senseful values can be retrieved.<br />Further information and documentation can be found in <a href="https://forum.fhem.de/index.php/topic,107189.msg1017754.html#msg1017754">this FHEM forum thread</a>
order:FUEL03
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
par:INTERVAL;Actual interval for updating, defaults to hourly (3600s); {InternalVal("DEVICE","Interval",3600)}
par:ZIPCODE;German ZIP Code / deutsche Postleitzahl; {AttrVal("DEVICE","replacement01Value",undef)}
par:ORDERVOLUME;fuel order volume in litre / Bestellmenge in Liter; {AttrVal("DEVICE","replacement02Value",undef)}
defmod DEVICE HTTPMOD https://www.esyoil.com/preisausgabe.php?pr-unloading-points=%%ENTLADESTELLEN%%&pr-product=8&pr-payment-type=2&%%ANHAENGER%%&pr-hose-length=%%SCHLAUCHLAENGE%%&pr-app=1&pr-zip=%%PLZ%%&pr-amount=%%MENGE%%&submit= INTERVAL
attr DEVICE userattr reading010Name reading010OExpr reading010Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value:1,2,3,4,5,6,7,8,9,10 replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value:40m,60m,80m replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value:pr-truck-type=,pr-truck-type=short_vehicle
attr DEVICE enableControlSet 1
attr DEVICE reading010Name Heizoelpreis
attr DEVICE reading010OExpr $val =~ s/,/\./; $val;
attr DEVICE reading010Regex ([\d\,]+)[\s]+€
attr DEVICE replacement01Mode text
attr DEVICE replacement01Regex %%PLZ%%
attr DEVICE replacement01Value ZIPCODE
attr DEVICE replacement02Mode text
attr DEVICE replacement02Regex %%MENGE%%
attr DEVICE replacement02Value ORDERVOLUME
attr DEVICE replacement03Mode text
attr DEVICE replacement03Regex %%ENTLADESTELLEN%%
attr DEVICE replacement03Value 1
attr DEVICE replacement04Mode text
attr DEVICE replacement04Regex %%SCHLAUCHLAENGE%%
attr DEVICE replacement04Value 40m
attr DEVICE replacement05Mode text
attr DEVICE replacement05Regex %%ANHAENGER%%
attr DEVICE replacement05Value pr-truck-type=
attr DEVICE room WHICHROOM
attr DEVICE stateFormat { my $price = 0.0;\
$price = (AttrNum($name,"replacement02Value",0)*ReadingsNum($name,"Heizoelpreis",0))/100;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\
my $ret = "<div style=\"text-align: left;;\">".$lastCheck.":";\
my $link = "https://www.esyoil.com/preisausgabe.php?";\
$link .= "pr-unloading-points=".AttrVal($name,"replacement03Value","");\
$link .= "&pr-product=8&pr-payment-type=2";\
$link .= "&".AttrVal($name,"replacement05Value","");\
$link .= "&pr-hose-length=".AttrVal($name,"replacement04Value","");\
$link .= "&pr-app=1&pr-zip=".AttrVal($name,"replacement01Value","");\
$link .= "&pr-amount=".AttrVal($name,"replacement02Value","");\
$link .= "&submit=";\
$ret .= "&nbsp;<a href=\"".$link."\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"font-weight:bold;\">";\
$ret .= ReadingsVal($name,"Heizoelpreis","-");\
$ret .= "&euro;</a>/100l";\
$ret .= "&nbsp;(".AttrVal($name,"replacement02Value","0")."l = ";\
$ret .= sprintf("%.2f",$price);\
$ret .= "&euro;)</div>";\
return $ret;\
}
attr DEVICE webCmd reread
attr DEVICE timeout 10
attr DEVICE model fuel_oil_check_esyoil
setreading DEVICE attrTemplateVersion 20201206


heizoel24:
#Contributed by yersinia, see https://forum.fhem.de/index.php/topic,107189.msg1055334.html#msg1055334
name:fuel_oil_check_heizoel24
filter:TYPE=HTTPMOD
desc: checks fuel oil prices via heizoel24.de<br />Define a HTTPMOD device like<br />https://www.heizoel24.de/heizoelpreise-direkt/%%PLZ%%/%%MENGE%%/%%ENTLADESTELLEN%% 3600<br />Maintain Attributes for ZIP (PLZ), order volume (Bestellmenge) and unloading points (Entladestellen) before senseful values can be retrieved.<br />Further information and documentation can be found in <a href="https://forum.fhem.de/index.php/topic,107189.msg1055334.html#msg1055334">this FHEM forum thread</a>
order:FUEL04
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
par:INTERVAL;Actual interval for updating, defaults to hourly (3600s); {InternalVal("DEVICE","Interval",3600)}
par:ZIPCODE;German ZIP Code / deutsche Postleitzahl; {AttrVal("DEVICE","replacement01Value",undef)}
par:ORDERVOLUME;fuel order volume in litre / Bestellmenge in Liter; {AttrVal("DEVICE","replacement02Value",undef)}
defmod DEVICE HTTPMOD https://www.heizoel24.de/heizoelpreise-direkt/%%PLZ%%/%%MENGE%%/%%ENTLADESTELLEN%% INTERVAL
attr DEVICE userattr reading010Name reading010OExpr reading010Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value:1,2,3,4,5,6,7,8,9,10
attr DEVICE enableControlSet 1
attr DEVICE reading010Name Heizoelpreis
attr DEVICE reading010OExpr $val =~ s/,/\./; $val;
attr DEVICE reading010Regex <span class="unitprice">([\d\,]+)[\s]+<span
attr DEVICE replacement01Mode text
attr DEVICE replacement01Regex %%PLZ%%
attr DEVICE replacement01Value ZIPCODE
attr DEVICE replacement02Mode text
attr DEVICE replacement02Regex %%MENGE%%
attr DEVICE replacement02Value ORDERVOLUME
attr DEVICE replacement03Mode text
attr DEVICE replacement03Regex %%ENTLADESTELLEN%%
attr DEVICE replacement03Value 1
attr DEVICE room WHICHROOM
attr DEVICE stateFormat { my $price = 0.0;\
$price = (AttrNum($name,"replacement02Value",0)*ReadingsNum($name,"Heizoelpreis",0))/100;\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\
my $ret = "<div style=\"text-align: left;;\">".$lastCheck.":";\
my $link = "https://www.heizoel24.de/heizoelpreise-direkt";\
$link .= "/".AttrVal($name,"replacement01Value","");\
$link .= "/".AttrVal($name,"replacement02Value","");\
$link .= "/".AttrVal($name,"replacement03Value","");\
$ret .= "&nbsp;<a href=\"".$link."\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"font-weight:bold;\">";\
$ret .= ReadingsVal($name,"Heizoelpreis","-");\
$ret .= "&euro;</a>/100l";\
$ret .= "&nbsp;(".AttrVal($name,"replacement02Value","0")."l = ";\
$ret .= sprintf("%.2f",$price);\
$ret .= "&euro;)</div>";\
return $ret;\
}
attr DEVICE timeout 10
attr DEVICE webCmd reread
attr DEVICE model fuel_oil_check_heizoel24
setreading DEVICE attrTemplateVersion 20201206


homematic-fw-check:
#Contributed by Pfriemler, mcp & yersinia, see https://forum.fhem.de/index.php/topic,78501.msg1104534.html#msg1104534
name:hm_fw_check_v2
filter:TYPE=HTTPMOD
desc: check for homematic firmware updates; based on new link provided by Pfriemler (switch from eq-3.de to update.homematic.com) and includes HmIP adaption provided by mcp<br />Define an HTTPMOD device like <br />define DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400<br />Further information and documentation can be found in <a href="https://forum.fhem.de/index.php/topic,78501.msg1106499.html#msg1106499">this FHEM forum thread</a>
order:TECHZ04
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
par:INTERVAL;Actual interval for updating, defaults to one day (86400s); {InternalVal("DEVICE","Interval",86400)}
defmod DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/\DEVICE INTERVAL
attr DEVICE userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no
attr DEVICE do_not_notify 1
attr DEVICE enableControlSet 1
attr DEVICE icon hm_ccu
attr DEVICE reading01AutoNumLen 3
attr DEVICE reading01Name hmfw-type
attr DEVICE reading01RegOpt g
attr DEVICE reading01Regex (?i)"type":"((?:\w+[-]*){1,})
attr DEVICE reading02AutoNumLen 3
attr DEVICE reading02Name hmfw-version
attr DEVICE reading02RegOpt g
attr DEVICE reading02Regex (?si)"version":"(\d+[.]\d+[.]\d+)
attr DEVICE readingMaxAge 10
attr DEVICE readingMaxAgeReplacementMode delete
attr DEVICE showError 1
attr DEVICE showMatched 1
attr DEVICE showNewFWOnly yes
attr DEVICE stateFormat {   my $ret ="";\
my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\
my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));\
my $cellstyle = "padding:3pt;border-bottom:1px dotted lightgray;";\
    $ret .= '<div style="text-align:left;">';\
    $ret .= '<div>last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html" rel="noopener noreferrer" target="_blank">homematic</a>-fw-check => '.$lastCheck;\
    $ret .= '</div>';\
    my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");\
    if($check eq "no fw-updates needed!") {\
      $ret .= '<div style="color:limegreen;font-weight:bold;">';\
      $ret .= $check;\
      $ret .= '</div>';\
    } elsif($check eq "error => no or wrong data from eq3-server!") {\
      $ret .= '<div style="color:red;font-weight:bold;">';\
      $ret .= $check;\
      $ret .= '</div>';\
    } else {\
$ret .= '<div style="display:table;width:100%;">';\
$ret .= '<div style="display:table-row;">';\
      $ret .= '<div style="display:table-cell;'.$cellstyle.'width:50%;font-weight:bold;">device</div>';\
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:40%;font-weight:bold;">model</div>';\
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:5%;font-weight:bold;">current</div>';\
  $ret .= '<div style="display:table-cell;'.$cellstyle.'width:5%;font-weight:bold;">new</div>';\
$ret .= '</div>'; #header\
      my @devices = split(',',$check);\
      foreach my $devStr (@devices) {\
my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;\
my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");\
my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));\
my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");\
        my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;\
$ret .= '<div style="display:table-row;">';\
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:50%;">';\
        $ret .= '<a href="/fhem?detail='.$dev.'" target="_blank">';\
$ret .= AttrVal($dev,"alias",$dev);\
        $ret .= '</a></div>';\
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:30%;font-weight:bold;color:lightgrey;">';\
        $ret .= $md;\
        $ret .= '</div>';\
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:10%;font-weight:bold;color:lightgrey;">';\
        $ret .= $ofw;\
        $ret .= '</div>';\
$ret .= '<div style="display:table-cell;'.$cellstyle.'width:10%;font-weight:bold;color:red;">';\
        $ret .= '<a title="download firmware file" href="'.$fw_link.'" rel="noopener noreferrer" target="_blank" style="color:red;">';\
        $ret .= $nfw;\
        $ret .= '</a></div>';\
        $ret .= '</div>'; #row\
      }\
  $ret .= '</div>'; #table\
    }\
$ret .= "<br \/><div style=\"text-align:left;\">(next check: ".$nextCheck.")</div>";\
    $ret .= '</div>';\
  return $ret;\
}
attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\
  my $ret = "";\
  my $newfwonly = AttrVal($name,"showNewFWOnly","yes");\
  if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
    my @eq3FwList = map { \
sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);\
} ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;\
\
foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\
my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));\
my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));\
        my ($h,$l) = split('\.',$v);\
        foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\
my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;\
my ($fwh, $fwl) = split('\.',$fwv);\
if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\
  $ret .= "," if($ret ne "");\
  $ret .= $dev." (".$idx.")";\
        }\
      }\
    }\
  } else {\
    $ret = "error => no or wrong data from eq3-server!";\
  }\
  return ($ret eq "")?"no fw-updates needed!":$ret;\
}
attr DEVICE webCmd reread
attr DEVICE room WHICHROOM
attr DEVICE model hm_fw_check_v2
setreading DEVICE attrTemplateVersion 20201206



Es funktioniert übrigens ganz gut, wenn man erst ein HTTMOD Device mit
define meinDevice HTTMOD none 0
definiert und dann das Template auswählt und mit [set] übernimmt. Mit den par: gefällt mir auch ganz gut. Topp.

Was ich noch nicht ganz verstanden habe, ist warum das dropdown im userAttr nicht zieht:
replacement04Value:40m,60m,80m
Im template steht es richtig drin, aber HTTPMOD generiert trotzdem noch ein replacement04Value was dann in etwa so aussieht im userAttr:
replacement04Value replacement04Value:40m,60m,80m
Einer eine Idee wie das kommt?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

amenomade

Das mit replacement04Value hängt an dem HTTPMOD Modul.
Machst du auf einem leeren HTTPMOD zuerst "userattr replacement04Value:40m,60m,80m", dann ist das Attribut in der Liste auswählbar, und die Werte können auch aus einer Liste ausgewählt werden

Sobald aber einmal gesetzt, kommt die Liste für Werte nicht mehr.

Ich vermute, es hängt an der Logik von HTTMOD mit "Wilcardattribute". Wäre eine Frage an StefanStrobel in einem neuen Thread

Sind andere Änderungen als doppelte Semikola in den Templates? Die störende hatte ich schon entfernt (zumindest glaube ich)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

yersinia

#170
Zitat von: amenomade am 06 Dezember 2020, 16:02:51Sind andere Änderungen als doppelte Semikola in den Templates? Die störende hatte ich schon entfernt (zumindest glaube ich)
Ja:
Zitat von: yersinia am 06 Dezember 2020, 15:43:08esyoil (ich hab das template von fuel_oil_check zu fuel_oil_check_esyoil umbenannt)
Darüberhinaus habe ich in allen drei templates in #168 alle doppelten Semikola entfernt. Also sowohl am Zeilenende (bleibt doppelt im stateFormat) als auch die HTML-Maskierungen - insbesondere bei esyoil, heizoel24 hattest du gut bereinigt. :)
Und die Template Version auf 20201206 geändert. Der Rest ist gleich geblieben.

Zitat von: amenomade am 06 Dezember 2020, 16:02:51Ich vermute, es hängt an der Logik von HTTMOD mit "Wilcardattribute". Wäre eine Frage an StefanStrobel in einem neuen Thread
Ich habs mal in den generellen HTTPMOD-Thread gepostet.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

amenomade

Ok, ich habe noch 3600 durch INTERVAL im defmod von heizoel24 ersetzt, und eingecheckt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

yersinia

Zitat von: amenomade am 06 Dezember 2020, 16:50:22
Ok, ich habe noch 3600 durch INTERVAL im defmod von heizoel24 ersetzt, und eingecheckt.
/_\ Ausgezeichnet, vielen Dank. :)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

artoffhem

Hallo!

es gab mal eine Frage betreffend ORF_weather template und dem ersetzen von "," durch "."

Ich habe es wie vorgeschlagen mit dem reading01OExpr gelöst, jedoch einen etwas anderen Ausdruck verwendet. Anbei meine funktionierende Lösung und eventuell findet es  ja den Weg in das Template.

- userattr mit "reading01OExpr" anlegen
attr ORF reading01OExpr {$val=~s/,/\./; return $val;}

Das Regex für die Wetterdaten liest leider nur die Zahlen ohne Vorzeichen aus, und somit werden negative Temperaturen in positive umgewandelt. Anbei ein Beispeil des html codes wie er von ORF ausgeliefert wird, wobei für negative Zahlen der html code "&minus;" verwendet wird. Dieses Problem habe ich leider nicht lösen können, aber vielleicht hat wer eine Idee.

     <div class="leftCol">
         <p class="offscreen">Beobachtung: stark bew�lkt.</p>
         <p>
            <span>Seeh�he</span><span class="offscreen">:</span>
            314 <abbr title="Meter">m</abbr>
         </p>
         <p>
            <span>Temperatur</span><span class="offscreen">:</span>
            &minus;1,3&thinsp;<abbr title="Grad Celsius">&deg;C</abbr>
         </p>
         <p>
            <span>Taupunkt</span><span class="offscreen">:</span>
            &minus;2,5&thinsp;<abbr title="Grad Celsius">&deg;C</abbr>
         </p>
         <p>
            <span>Wind</span><span class="offscreen">:</span>
            Ost, 7 <abbr title="Kilometer pro Stunde">km/h</abbr>
         </p>
         <p>
            <span>Windspitzen</span><span class="offscreen">:</span>
            Ost, 10 <abbr title="Kilometer pro Stunde">km/h</abbr>
         </p>
         <p class="snow">&nbsp;</p>
      </div>



amenomade

#174
ZitatDas Regex für die Wetterdaten liest leider nur die Zahlen ohne Vorzeichen aus, und somit werden negative Temperaturen in positive umgewandelt.

Hab ne Korrektur gerade eingecheckt.

Für das Ersetzen von "," durch "." gab es schon was im Template, das mMn funktioniert
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

artoffhem

habe gerade die Korrektur geprüft, und prinzipiell funktioniert Sie, wenn man den Code von 'readingOExpr' in einem 'reading01OExpr' anlegt.

Beim set des attrTemplates wird derzeit das 'readingOExpr' gar nicht angelgt obwohl es im Template vorhanden ist. Ohne eine Recherche gemacht zu haben vermute ich, dass das 'readingOExpr' dem jeweiligen Regex (01, 02, ..) zugeordnet werden muss.

danke für den schnellen fix.


amenomade

readingOExpr funktioniert auch. Dann gilt es für alle Readings, die nicht ein eigenes readingXXOExpr haben.

Hab gerade getestet: attr gelöscht und wieder set attrTemplate gemacht. Es wird wieder angelegt. Was sagt die Log bei dir, und zeig bitte ein "list" von deinem HTTPMOD nach "set attrTemplate". Vielleicht gibt es irgendeinen anderen Konflikt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

artoffhem

#177
anbei die Shritte die ich gemacht habe.

define ORFs HTTPMOD none 0
attr ORFs verbose 5

list ORFs
Internals:
   CFGFN     
   DEF        none 0
   FUUID      5ff44ea2-f33f-df76-6452-e1c8a4d91b9136ae
   Interval   0
   MainURL   
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       ORFs
   NOTIFYDEV  global
   NR         282
   NTFY_ORDER 50-ORFs
   STATE      ???
   TYPE       HTTPMOD
Attributes:
   room       Wetter
   verbose    5


set ORFs attrTemplate ORF_weather

Fehlermeldung: Please define ORF_Weather first

LOG
2021.01.05 12:33:54 3: ORFs: URL is none, periodic updates will be limited to explicit GetXXPoll attribues (if defined)
2021.01.05 12:33:54 3: ORFs: interval is 0, no periodic updates will done.
2021.01.05 12:33:54 3: ORFs: Defined without URL featurelevel 6
2021.01.05 12:35:52 5: ORFs: set called with attrTemplate ORF_weather
2021.01.05 12:36:10 5: ORFs: set called with attrTemplate ORF_weather MAINURL=https://wetter.orf.at/salzburg/ STATIONNAME=saalbach
2021.01.05 12:36:10 5: AttrTemplate replace DEVICE=>ORFs,MAINURL=>https://wetter.orf.at/salzburg/,STATIONNAME=>saalbach,WHICHROOM=>Wetter
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs userattr get01Name get01Poll:0,1 get01URL get02-1Name get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs enableControlSet 1
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist =
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get01Name Wetterdaten
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get01Poll:0,1 get01URL get02-1Name get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get01Poll 1
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get01URL get02-1Name get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get01URL https://wetter.orf.at/salzburg/saalbach/
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-1Name get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-1Name sunRise
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-2Name sunSet
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-3Name moonPhase
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-4Name moonRise
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-5Name moonSet
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-6Name dayLength
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-7Name dawn
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02-8Name dusk
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02Name Astro-Daten
2021.01.05 12:36:10 5: ORFs: ManageUserAttr updated userattr list to get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:10 5: ORFs: UpdateHintList called
2021.01.05 12:36:10 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:10 5: ORFs: UpdateHintList: getlist = Astro-Daten:noArg Wetterdaten:noArg
2021.01.05 12:36:10 5: AttrTemplate exec attr ORFs get02Poll 1
2021.01.05 12:36:11 5: ORFs: ManageUserAttr updated userattr list to get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:11 5: ORFs: UpdateHintList called
2021.01.05 12:36:11 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:11 5: ORFs: UpdateHintList: getlist = Astro-Daten:noArg Wetterdaten:noArg
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs get02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s\p{Any}*?Mondphase:\s?([^\.]+)[\w\W]*Mondaufgang um\s?<\/span>(\d\d:\d\d)<s[\w\W]*Monduntergang um <\/span>(\d\d:\d\d)<s[\w\W]*Tagesl[^>]+>(\d\d:\d\d)&[\w\W]*Morgen<\/span>: <\/span>(\d\d:\d\d)&[\w\W]*Abend:<\/span><\/span>(\d\d:\d\d)
2021.01.05 12:36:11 5: ORFs: ManageUserAttr updated userattr list to get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:11 5: ORFs: UpdateHintList called
2021.01.05 12:36:11 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:11 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg Astro-Daten:noArg
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs get02URL https://wetter.orf.at/salzburg/
2021.01.05 12:36:11 5: ORFs: ManageUserAttr updated userattr list to reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
2021.01.05 12:36:11 5: ORFs: UpdateHintList called
2021.01.05 12:36:11 5: ORFs: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2021.01.05 12:36:11 5: ORFs: UpdateHintList: getlist = Wetterdaten:noArg Astro-Daten:noArg
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>(−)?[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>(−)?[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
2021.01.05 12:36:11 5: ORFs: ManageUserAttr updated userattr list to reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs room Wetter
2021.01.05 12:36:11 5: AttrTemplate exec attr ORF_Weather readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};$val=~s/&minus\;/-/;$val
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs stateFormat W: wind, H: humidity%rH, T: temperature°C
2021.01.05 12:36:11 5: AttrTemplate exec attr ORFs model ORF_weather
2021.01.05 12:36:11 5: AttrTemplate exec setreading ORFs attrTemplateVersion 20201129


list ORFs readingOExpr scheint nicht auf
Internals:
   CFGFN     
   DEF        none 0
   FUUID      5ff44ea2-f33f-df76-6452-e1c8a4d91b9136ae
   Interval   0
   MainURL   
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       ORFs
   NOTIFYDEV  global
   NR         282
   NTFY_ORDER 50-ORFs
   STATE      W: wind, H: humidity%rH, T: temperature°C
   TYPE       HTTPMOD
   CompiledRegexes:
   READINGS:
     2021-01-05 12:36:11   attrTemplateVersion 20201129
Attributes:
   enableControlSet 1
   get01Name  Wetterdaten
   get01Poll  1
   get01URL   https://wetter.orf.at/salzburg/saalbach/
   get02-1Name sunRise
   get02-2Name sunSet
   get02-3Name moonPhase
   get02-4Name moonRise
   get02-5Name moonSet
   get02-6Name dayLength
   get02-7Name dawn
   get02-8Name dusk
   get02Name  Astro-Daten
   get02Poll  1
   get02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s\p{Any}*?Mondphase:\s?([^\.]+)[\w\W]*Mondaufgang um\s?<\/span>(\d\d:\d\d)<s[\w\W]*Monduntergang um <\/span>(\d\d:\d\d)<s[\w\W]*Tagesl[^>]+>(\d\d:\d\d)&[\w\W]*Morgen<\/span>: <\/span>(\d\d:\d\d)&[\w\W]*Abend:<\/span><\/span>(\d\d:\d\d)
   get02URL   https://wetter.orf.at/salzburg/
   model      ORF_weather
   reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>(&minus;)?[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>(&minus;)?[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
   room       Wetter
   stateFormat W: wind, H: humidity%rH, T: temperature°C
   userattr   reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name
   verbose    5


get ORFs Wetterdaten
list ORFs  Komma ersetzung fehlt, und minus korrektur funktioniert auch nicht
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      5ff44ea2-f33f-df76-6452-e1c8a4d91b9136ae
   Interval   0
   MainURL   
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       ORFs
   NOTIFYDEV  global
   NR         282
   NTFY_ORDER 50-ORFs
   STATE      W: West, 2, H: 88%rH, T: &minus;10,0°C
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HTTPCookieHash:
     HopSession;:
       Name       HopSession
       Options    Path=/; Domain=.orf.at; HttpOnly
       Path       
       Value      127.0.0.81.3.204.1p3r08gexej2s
   HttpUtils:
     NAME       
     addr       https://wetter.orf.at:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://wetter.orf.at/salzburg/saalbach/
     header     
     host       wetter.orf.at
     httpheader HTTP/1.1 200 OK
Date: Tue, 05 Jan 2021 11:40:49 GMT
Server: Jetty(6.1.22)
X-Cache: MISS from 127.0.0.1
ETag: "wQJRb89Ey8up6Lgkah1nxw=="
Content-Length: 22625
Content-Type: text/html; charset=utf-8
Set-Cookie: HopSession=127.0.0.81.3.204.1p3r08gexej2s; Path=/; Domain=.orf.at; HttpOnly
Strict-Transport-Security: max-age=600
Vary: Accept-Encoding
Connection: close
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /salzburg/saalbach/
     protocol   https
     redirects  0
     timeout    2
     url        https://wetter.orf.at/salzburg/saalbach/
     sslargs:
   QUEUE:
   READINGS:
     2021-01-05 12:36:11   attrTemplateVersion 20201129
     2021-01-05 12:40:49   humidity        88
     2021-01-05 12:40:49   luftdruck       896
     2021-01-05 12:40:49   messwerte       Messwerte von 12.00 Uhr
     2021-01-05 12:40:49   rain            0,0
     2021-01-05 12:40:49   sonne           0
     2021-01-05 12:40:49   taupunkt        &minus;11,7
     2021-01-05 12:40:49   temperature     &minus;10,0
     2021-01-05 12:40:49   wind            West, 2
     2021-01-05 12:40:49   windspitzen     West, 4
   REQUEST:
     context    get
     data       
     header     
     ignoreredirects 0
     num        01
     retryCount 0
     type       get01
     url        https://wetter.orf.at/salzburg/saalbach/
     value     
   defptr:
     readingBase:
       humidity   reading
       luftdruck  reading
       messwerte  reading
       rain       reading
       sonne      reading
       taupunkt   reading
       temperature reading
       wind       reading
       windspitzen reading
     readingNum:
       humidity   01
       luftdruck  01
       messwerte  01
       rain       01
       sonne      01
       taupunkt   01
       temperature 01
       wind       01
       windspitzen 01
     readingOutdated:
     requestReadings:
       get01:
         humidity   reading 01
         luftdruck  reading 01
         messwerte  reading 01
         rain       reading 01
         sonne      reading 01
         taupunkt   reading 01
         temperature reading 01
         wind       reading 01
         windspitzen reading 01
Attributes:
   enableControlSet 1
   get01Name  Wetterdaten
   get01Poll  1
   get01URL   https://wetter.orf.at/salzburg/saalbach/
   get02-1Name sunRise
   get02-2Name sunSet
   get02-3Name moonPhase
   get02-4Name moonRise
   get02-5Name moonSet
   get02-6Name dayLength
   get02-7Name dawn
   get02-8Name dusk
   get02Name  Astro-Daten
   get02Poll  1
   get02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s\p{Any}*?Mondphase:\s?([^\.]+)[\w\W]*Mondaufgang um\s?<\/span>(\d\d:\d\d)<s[\w\W]*Monduntergang um <\/span>(\d\d:\d\d)<s[\w\W]*Tagesl[^>]+>(\d\d:\d\d)&[\w\W]*Morgen<\/span>: <\/span>(\d\d:\d\d)&[\w\W]*Abend:<\/span><\/span>(\d\d:\d\d)
   get02URL   https://wetter.orf.at/salzburg/
   model      ORF_weather
   reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>(&minus;)?[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>(&minus;)?[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
   room       Wetter
   stateFormat W: wind, H: humidity%rH, T: temperature°C
   userattr   reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name
   verbose    5


attr ORFs userattr ... readingOExpr
attr ORFs readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};$val=~s/&minus\;/-/;$val
get ORFs Wetterdaten
list ORFs
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      5ff44ea2-f33f-df76-6452-e1c8a4d91b9136ae
   Interval   0
   MainURL   
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       ORFs
   NOTIFYDEV  global
   NR         282
   NTFY_ORDER 50-ORFs
   STATE      W: West, 2, H: 88%rH, T: -10.0°C
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HTTPCookieHash:
     HopSession;:
       Name       HopSession
       Options    Path=/; Domain=.orf.at; HttpOnly
       Path       
       Value      127.0.0.81.3.204.1plpx55t5uxi5
   HttpUtils:
     NAME       
     addr       https://wetter.orf.at:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://wetter.orf.at/salzburg/saalbach/
     header     Cookie: HopSession=127.0.0.81.3.204.1p3r08gexej2s
     host       wetter.orf.at
     httpheader HTTP/1.1 200 OK
Date: Tue, 05 Jan 2021 11:58:53 GMT
Server: Jetty(6.1.22)
X-Cache: MISS from 127.0.0.1
ETag: "wQJRb89Ey8up6Lgkah1nxw=="
Content-Length: 22625
Content-Type: text/html; charset=utf-8
Set-Cookie: HopSession=127.0.0.81.3.204.1plpx55t5uxi5; Path=/; Domain=.orf.at; HttpOnly
Strict-Transport-Security: max-age=600
Vary: Accept-Encoding
Connection: close
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /salzburg/saalbach/
     protocol   https
     redirects  0
     timeout    2
     url        https://wetter.orf.at/salzburg/saalbach/
     sslargs:
   QUEUE:
   READINGS:
     2021-01-05 12:36:11   attrTemplateVersion 20201129
     2021-01-05 12:58:53   humidity        88
     2021-01-05 12:58:53   luftdruck       896
     2021-01-05 12:58:53   messwerte       Messwerte von 12.00 Uhr
     2021-01-05 12:58:53   rain            0.0
     2021-01-05 12:58:53   sonne           0
     2021-01-05 12:58:53   taupunkt        -11.7
     2021-01-05 12:58:53   temperature     -10.0
     2021-01-05 12:58:53   wind            West, 2
     2021-01-05 12:58:53   windspitzen     West, 4
   REQUEST:
     context    get
     data       
     header     
     ignoreredirects 0
     num        01
     retryCount 0
     type       get01
     url        https://wetter.orf.at/salzburg/saalbach/
     value     
   defptr:
     readingBase:
       humidity   reading
       luftdruck  reading
       messwerte  reading
       rain       reading
       sonne      reading
       taupunkt   reading
       temperature reading
       wind       reading
       windspitzen reading
     readingNum:
       humidity   01
       luftdruck  01
       messwerte  01
       rain       01
       sonne      01
       taupunkt   01
       temperature 01
       wind       01
       windspitzen 01
     readingOutdated:
     requestReadings:
       get01:
         humidity   reading 01
         luftdruck  reading 01
         messwerte  reading 01
         rain       reading 01
         sonne      reading 01
         taupunkt   reading 01
         temperature reading 01
         wind       reading 01
         windspitzen reading 01
Attributes:
   enableControlSet 1
   get01Name  Wetterdaten
   get01Poll  1
   get01URL   https://wetter.orf.at/salzburg/saalbach/
   get02-1Name sunRise
   get02-2Name sunSet
   get02-3Name moonPhase
   get02-4Name moonRise
   get02-5Name moonSet
   get02-6Name dayLength
   get02-7Name dawn
   get02-8Name dusk
   get02Name  Astro-Daten
   get02Poll  1
   get02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s\p{Any}*?Mondphase:\s?([^\.]+)[\w\W]*Mondaufgang um\s?<\/span>(\d\d:\d\d)<s[\w\W]*Monduntergang um <\/span>(\d\d:\d\d)<s[\w\W]*Tagesl[^>]+>(\d\d:\d\d)&[\w\W]*Morgen<\/span>: <\/span>(\d\d:\d\d)&[\w\W]*Abend:<\/span><\/span>(\d\d:\d\d)
   get02URL   https://wetter.orf.at/salzburg/
   model      ORF_weather
   reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>(&minus;)?[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>(&minus;)?[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
   readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};$val=~s/&minus\;/-/;$val
   room       Wetter
   stateFormat W: wind, H: humidity%rH, T: temperature°C
   userattr   reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name


danke

amenomade

#178
Ok, Fehler im Template, danke.
Es steht:
attr ORF_Weather readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};$val=~s/&minus\;/-/;$val

Was nur funktioniert, wenn das Device ORF_Weather heisst

attr DEVICE readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};$val=~s/&minus\;/-/;$val
wäre besser ;)

EDIT: hab die Korrektur eingecheckt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

artoffhem

perfekt, das scheint die Lösung zu sein.
eventuell bitte noch das attrTemplateVersion aktualisieren.